Repository navigation
GeneralsX - 1.0.2
If you run into any problems, please open an issue so we can investigate.
Getting Started
GeneralsX lets you play Command & Conquer: Generals and Zero Hour natively on modern systems with cross-platform online multiplayer.
📦 Which file should I download?
- macOS (Apple Silicon): Download
macOS-GeneralsXZH.zip(Zero Hour) ormacOS-GeneralsX.zip(Generals). - Linux: Download
Linux-GeneralsXZH.flatpak(Zero Hour) orLinux-GeneralsX.flatpak(Generals). - Windows: Download
Windows-GeneralsXZH.zip(Zero Hour) orWindows-GeneralsX.zip(Generals).
👉 Follow the Installation & Setup Guide on our Wiki to set up your original game data files.
🌐 Cross-Platform Multiplayer
Zero Hour includes built-in online lobbies via GeneralsOnline (NGMP). Players on macOS, Linux, and Windows can host, join, and play together without GameSpy, Hamachi, or third-party VLAN tools.
What's New
🌐 Cross-Platform Multiplayer & Networking
- QuickMatch Map Pack Notice & Direct Guide Link: Added a notice in the QuickMatch status window informing players about the official multiplayer map pack requirement, featuring a clickable short link (https://generalsx.org/maps) directing straight to the installation guide (#340 by @fbraz3).
- OS Brand Glyphs in Online Lobby: Render Font Awesome 6 Brands glyphs (Apple, Windows, Linux) in the multiplayer lobby roster instead of text tags (
[MAC],[WIN],[LNX]), including fallback font verification and robust unprofiled tooltip / right-click name resolution (#338 by @fbraz3).
🎯 Engine, Gameplay & Determinism
- Decoupled General's Challenge Framerate Limit: Decoupled rendering FPS in General's Challenge mode from the legacy hardcoded 30 FPS cap, standardizing it to the global rendering limit (default 60 FPS or user-configured
SagePatch.ini) with smooth frame pacing while maintaining 30 Hz simulation logic (#342 by @fbraz3). - Upstream Sync with TheSuperHackers: Synchronized latest upstream changes from
thesuperhackers/main(27-09-2026), resolving 36 merge conflicts across platform device layers, game logic, memory pools, tools, and build definitions while preserving cross-platform determinism and platform isolation (#341 by @fbraz3). - Saturate Out-of-Range INI Integers for Mod Compatibility: Saturated out-of-range integer tokens to type limits instead of throwing errors, restoring retail mod compatibility for mods like Shockwave 1.201 that specify extreme values (e.g.
9999999999999999999) for infinite delays (#330 by @fbraz3). - Fix Replay Frame 0 Desync and Completion Loop: Deferred replay command processing until after initial map initialization and frame 0 script execution finish, preventing AI group ID divergence on scripted maps and fixing infinite simulation loops in automated replay tests (#325 by @fbraz3).
🖥️ UI & Quality of Life
- Universal Font Resolution & Bundled Liberation Fonts: Bundled SIL OFL-licensed Liberation Fonts (Sans, Serif, Mono) and Font Awesome Brands with multi-tier font resolution fallback, eliminating missing text or crashes on clean systems without system Microsoft fonts or Fontconfig (#336 by @fbraz3).
- Interactive Browser Opening & Platform Isolation: Implemented
Platform::OpenBrowserURL()across SDL3 and Windows to safely open external links (like wiki guides and discord auth) without leaking OS headers into game UI menus (#340 by @fbraz3).
🎨 Graphics & Visuals (DXVK / Vulkan)
- Restored Animated Cloud Shadows & D3DX Matrix Parity: Replaced GLM helper matrix translations and multiplications in
d3dx8math.cppwith direct row-major DirectX implementations, restoring animated sliding cloud shadows (UseCloudMap) across terrain on macOS and Linux (#339 by @fbraz3).
🔊 Audio & Video Subsystems (MiniAudio / OpenAL / FFmpeg)
- Audio & Video Parity & Upstream Unification: Preserved strict feature parity across OpenAL and MiniAudio backends and maintained video subsystem stability during upstream display and audio unifications (#341 by @fbraz3).
🚀 Platform, Packaging & CI (macOS, Linux, Windows)
- Windows CI Build Acceleration & vcpkg Caching: Fixed a vcpkg binary cache invalidation trap by adding custom triplets with compiler tracking disabled and optimizing cache keys, reducing Windows CI build time from ~40 minutes down to ~6 minutes (#327 by @fbraz3).
- Workspace Reference & Submodule Cleanup: Removed internal git submodules in favor of clean workspace-level sibling repositories and modernized
cmake/dx8.cmakelocal fork detection (#331 by @fbraz3). - Packaging & Deployment Scripts Parity: Updated macOS application bundling, Linux Flatpak manifests, and deployment scripts to package bundled fonts and license files (#336 by @fbraz3).
📱 Ecosystem & Community Ports
If you enjoy GeneralsX, check out these community ports powered by the engine:
- Generals-Mac-iOS-iPad - iOS port by @ammaarreshi
- Generals-Android - Android port by @fadi-labib
- wasm-generals - Browser port by @ebellumat, playable at generals.wasm.com.br
Changelog
- fix(recorder): defer replay commands until map load finishes by @fbraz3 in #325
- ci(windows): fix vcpkg binary cache invalidation and update wiki docs by @fbraz3 in #327
- fix(ini): saturate out-of-range integers to match retail mod behavior by @fbraz3 in #330
- chore(build): remove submodules and relocate references to workspace by @fbraz3 in #331
- feat(fonts): implement universal font resolution with bundled liberation fonts by @fbraz3 in #336
- feat(lobby): render os brand glyphs for players using font awesome by @fbraz3 in #338
- fix(graphics): correct D3DX row-major matrix operations to restore animated cloud shadows by @fbraz3 in #339
- feat(quickmatch): add map pack notice and clickable wiki guide link by @fbraz3 in #340
- chore(sync): merge thesuperhackers/main (27-09-2026) by @fbraz3 in #341
- fix(engine): decouple general's challenge render fps from legacy 30 fps cap by @fbraz3 in #342
Full Changelog: 1.0.1...1.0.2