Repository navigation
GeneralsX - 1.0.5
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
🌟 GeneralsX Options Menu & Deterministic Simulation Math
This release introduces the dedicated GeneralsX Options Menu directly from the main menu, giving players on-the-fly control over camera height, terrain draw distance, advanced dynamic shadows, lighting pulses, and post-processing shaders. Under the hood, we have fully synchronized with upstream TheSuperHackers PR TheSuperHackers#2670, routing simulation math across all game logic through deterministic WWMath wrappers to guarantee bit-identical cross-platform play between macOS (Apple Silicon ARM64) and Linux/Windows (x86_64).
🌐 Cross-Platform Multiplayer & Networking
- Client Version Reporting & Update Check Gating: Transmit client version and platform details on all GeneralsOnline authentication requests (
CheckLogin,LoginWithToken, OAuth browser URLs), and actively gate the "Online" main menu button on update checker completion to ensure players run compatible versions before entering lobbies (#364 by @fbraz3). - NetPacket Command Hardening: Guarded packet processing against repeating corrupted command sequences and unhandled command packet structures (#398 by @fbraz3).
🎯 Engine, Gameplay & Determinism
- Cross-Platform Deterministic Simulation (PR TheSuperHackers#2670): Backported upstream deterministic single-precision math via
WWMath/GameMathacross allGameLogic,Locomotor, physics, andBezierSegmentsystems in both Generals and Zero Hour, eliminating floating point divergence and multiplayer SyncCrash desyncs across macOS ARM64 and Linux/Windows x86_64 (#389, #398 by @fbraz3). - Fixed General's Challenge Auto-Defeat: Prevented premature defeat during the intro cinematic when advancing to the next challenge mission or retrying after a loss by preserving slot setup and suppressing dormant menu re-initialization during shell transitions (#392 by @fbraz3).
- Fixed Simulation Speedup After Save Load: Re-evaluated
TheFramePacerlogic time scale when loading in-game savegames, preventing the simulation from running at double speed (60 FPS) instead of the intended 30 ticks/sec rate (#395 by @fbraz3, thanks to @Moortu). - 64-bit Memory Pool Alignment: Standardized
SINGLEBLOCK_USERDATA_OFFSETto 16 bytes for safe memory allocations on 64-bit platforms (#398 by @fbraz3). - Synchronized Upstream TheSuperHackers Core Fixes: Merged 163 upstream commits including path utility templates, 0-based
DeathTypeFlags, and core cleanup (#398 by @fbraz3).
🖥️ UI & Quality of Life
- Dedicated GeneralsX Options Menu: Accessible directly from the main menu, providing sliders for Max Camera Height and Terrain Draw Distance, plus toggles for Advanced Shadows, Dynamic Lighting, and Post-Processing shaders (#368 by @fbraz3).
- Main Menu Frame Expansion: Expanded main menu layout borders to cleanly accommodate all 7 menu items, eliminating border clipping and ensuring responsive mouse click hit-testing (#368 by @fbraz3).
🎨 Graphics & Visuals (DXVK / Vulkan)
- Volumetric Shadow Heap Overflow Fix: Fixed a buffer overflow in volumetric shadow edge list allocation that corrupted the DMA memory pool on complex meshes in mods like ShockWave (#383 by @elmeriniemela).
- Weapon Recoil List Out-of-Bounds Fix: Dynamically resized weapon recoil info vectors when weapon barrels are validated late during logic updates, resolving crashes during weapon fire in China mission 7 (#394 by @fbraz3, thanks to @Moortu).
- Rendering & Water Parity: Merged upstream reflection transforms in
W3DWaterwhile preserving oblique near clip planes and underwater depth transparency (#398 by @fbraz3).
🔊 Audio & Video Subsystems (MiniAudio / FFmpeg)
- MiniAudio Focus & Hardening: Focused core documentation, wrapper scripts, and Flatpak builds on the modern cross-platform MiniAudio backend (#377 by @fbraz3).
- OpenAL Stopped Stream Hiss Fix: Unqueued and dropped processed audio buffers when streams reach
AL_STOPPEDto prevent lingering hissing noise or looping speech lines on legacy OpenAL builds (#393 by @fbraz3).
🚀 Platform, Packaging & CI (macOS, Linux, Windows)
- Unified
generalsx.bigPackaging: Bundled custom layouts, shaders, and INIs into an atomicgeneralsx.bigarchive staged cleanly byrun.shacross macOS app bundles, Linux Flatpaks, and Windows builds without loose file pollution (#368 by @fbraz3). - Windows CI Optimization & Reproducibility: Pinned the
vcpkgtoolchain commit and bumped the binary cache key tov4, slashing Windows CI build and cache restore times and preventing workflow timeouts (#396 by @fbraz3).
❤️ Contributor Acknowledgements
A special thank you to our community contributors who made this release possible:
- @elmeriniemela for identifying and fixing the volumetric shadow heap overflow and memory pool corruption on Linux (#383)!
- @Moortu for diagnosing and providing the patches for the China mission 7 weapon recoil crash (#394) and the double-speed simulation pacing bug after loading savegames (#395)!
📱 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
- feat(ngmp): transmit client version on login and restore update check gating by @fbraz3 in #364
- feat(gui): implement generalsx options menu and archive packaging by @fbraz3 in #368
- chore(audio): focus documentation and CI pipelines on miniaudio by @fbraz3 in #377
- fix(shadow): fix volumetric shadow heap overflow that corrupted the memory pool by @elmeriniemela in #383
- feat(math): backport upstream deterministic math and route gamelogic via wwmath (TheSuperHackers#2670) by @fbraz3 in #389
- fix(challenge): prevent auto-defeat on next match and retry by @fbraz3 in #392
- fix(audio): drop processed buffers on stopped OpenAL stream by @fbraz3 in #393
- fix(graphics): resize recoil list when weapon barrels validated late by @fbraz3 in #394
- fix(gameplay): re-evaluate logic time scale after savegame load by @fbraz3 in #395
- ci(windows): pin vcpkg toolchain and bump binary cache to v4 by @fbraz3 in #396
- chore(sync): merge thesuperhackers/main into GeneralsX by @fbraz3 in #398
Full Changelog: 1.0.4...1.0.5