A community-driven cross-platform port of Command & Conquer: Generals and Zero Hour, enabling the classic RTS to run natively on Linux, macOS, and Windows under a single modern codebase: SDL3 (windowing/input) + DXVK (DirectX 8 β Vulkan graphics) + OpenAL (audio) + 64-bit.
Current Status:
- Linux build: Functional with a few issues
- macOS build: Functional with minor issues
- Windows build: Planned
This repository targets a single codebase that builds and runs on all three major desktop platforms, replacing the original Windows-only DirectX 8 / Miles Sound System stack with portable open-source equivalents.
To stay up to date on project status, visit our Dev Blog.
The excellent work from TheSuperHackers focuses on stability and bug fixes while maintaining compatibility with original game binaries. Our goal is to deliver cross-platform support, even when that may break retail compatibility.
There are two reasons for this name:
- X = Cross - reflects the cross-platform efforts
- I am a big fan of the Mega Man X franchise, so this is also a tribute to that classic series.
For official releases and instructions, visit:
Cross-platform game development requires significant time, resources, and technical expertise. If GeneralsX has been valuable to you or the Command & Conquer community, consider supporting continued development:
Your support helps with:
- Development Time - Hundreds of hours invested in cross-platform porting
- Testing Infrastructure - Multiple platforms, hardware configurations, and tools
- Documentation - Comprehensive guides and technical resources
- Community Support - Maintaining issues, discussions, and contributions
Every contribution, no matter the size, makes a difference in keeping classic games alive across all platforms!
Native ELF builds with minor issues.
# Clone and build with Docker
git clone https://github.com/fbraz3/GeneralsX.git
cd GeneralsX
./scripts/docker-build-linux-zh.sh linux64-deploy
# Or build natively on Linux
cmake --preset linux64-deploy
cmake --build build/linux64-deploy --target z_generalsModern 64-bit Windows build using the same SDL3 + DXVK + OpenAL stack. Separate branch - Planned
Native macOS builds with minor issues.
Quick start:
# Install prerequisites once: brew install cmake ninja meson
# + LunarG Vulkan SDK: https://vulkan.lunarg.com/sdk/home#mac
git clone https://github.com/fbraz3/GeneralsX.git
cd GeneralsX
./scripts/build-macos-zh.sh
./scripts/deploy-macos-zh.sh
./scripts/run-macos-zh.sh -winComplete documentation is available in the docs/ directory:
- docs/ETC/MACOS_BUILD_INSTRUCTIONS.md - Complete macOS build instructions and troubleshooting
- docs/ETC/LINUX_BUILD_INSTRUCTIONS.md - Linux port status and contribution guidelines
- docs/DEV_BLOG/ - Technical development diary organized by month
- docs/WORKDIR/ - Phase planning, implementation notes, and strategic decisions
- CONTRIBUTING.md - Guidelines for contributing to cross-platform development
GeneralsX supports running binaries and game assets from different directories. This is useful for package/distribution formats like .deb, .rpm, and .app bundles.
Asset root resolution order:
- Environment variables
Options.ini- Default install path resolution (registry/platform fallback)
- Current working directory (last fallback)
Environment variables:
CNC_GENERALS_PATH: Base Generals asset rootCNC_GENERALS_ZH_PATH: Zero Hour asset root
Optional Options.ini overrides:
[Paths]
AssetPath=/path/to/assets/current-game
GeneralsAssetPath=/path/to/assets/base-generalsNotes:
AssetPathis used for the current game executable.GeneralsAssetPathis used by Zero Hour when it needs base Generals data.- Environment variables have higher priority than
Options.ini.
For documented limitations and known bugs, check the issues page.
The repository uses a vcpkg manifest (vcpkg.json) paired with a lockfile (vcpkg-lock.json). Key dependencies:
- SDL3 - Cross-platform windowing and input handling (all platforms)
- DXVK - DirectX 8 β Vulkan translation layer (all platforms)
- Vulkan SDK - Modern graphics rendering backend
- OpenAL - Cross-platform audio system (replacing Miles Sound System)
- CMake - Build system with per-platform presets
For dependency management details, see vcpkg.json.
Approach: Single codebase, SDL3 + DXVK + OpenAL on all platforms. Native Vulkan, NOT Wine emulation.
See docs/DEV_BLOG/ and docs/WORKDIR/phases/ for detailed phase progress.
Future initiative to leverage multi-core CPUs while preserving deterministic gameplay. High-level plan:
- Start with low-risk tasks (parallel asset/INI loading, background audio/I/O)
- Evolve to moderate threading (AI batches, object updates with partitioning)
- Consider advanced loop decoupling (producerβconsumer) once stable
Contributions are welcome! We're particularly interested in:
Current Priority Areas:
- Runtime Testing - Validate Linux and macOS binary smoke tests and gameplay
- Cross-Platform Testing - Validate functionality across Linux distributions and macOS versions
- macOS Port - ARM64 native working, Phase 2 audio pending
- Windows Modern Port - SDL3 + DXVK + OpenAL 64-bit build (TBD)
- Performance Optimization - Identify and fix bottlenecks
- Documentation - Improve build guides and technical resources
How to Contribute:
- Check current issues and GitHub discussions
- Read platform-specific build guides (Windows, macOS, Linux)
- Follow CONTRIBUTING.md guidelines
- Submit issues or pull requests with detailed information
- Xezon and contributors for maintaining the GeneralsGameCode project
- Fighter19 for developing the SDL3 and OpenAL solution that inspired this project
- Westwood Studios for creating the legendary Command & Conquer series
- EA Games for Command & Conquer: Generals, which continues to inspire gaming communities
- All contributors and sponsors helping to make this game truly cross-platform and accessible worldwide
See the LICENSE file for details.
EA has not endorsed and does not support this product. All trademarks are the property of their respective owners.