Skip to content

GeneralsX - 1.0.2

Choose a tag to compare

@github-actions github-actions released this 28 Sep 22:41
· 131 commits to main since this release
96cd64f

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

🌐 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.cpp with 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.cmake local 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:


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