Skip to content

GeneralsX - 1.0.5

Choose a tag to compare

@github-actions github-actions released this 05 Nov 23:38
· 28 commits to main since this release
2d0b1b1

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) or macOS-GeneralsX.zip (Generals).
  • Linux: Download Linux-GeneralsXZH.flatpak (Zero Hour) or Linux-GeneralsX.flatpak (Generals).
  • Windows: Download Windows-GeneralsXZH.zip (Zero Hour) or Windows-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 / GameMath across all GameLogic, Locomotor, physics, and BezierSegment systems 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 TheFramePacer logic 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_OFFSET to 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 W3DWater while 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_STOPPED to prevent lingering hissing noise or looping speech lines on legacy OpenAL builds (#393 by @fbraz3).

🚀 Platform, Packaging & CI (macOS, Linux, Windows)

  • Unified generalsx.big Packaging: Bundled custom layouts, shaders, and INIs into an atomic generalsx.big archive staged cleanly by run.sh across macOS app bundles, Linux Flatpaks, and Windows builds without loose file pollution (#368 by @fbraz3).
  • Windows CI Optimization & Reproducibility: Pinned the vcpkg toolchain commit and bumped the binary cache key to v4, 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:


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