Releases: DevGeniusCode/GeneralsGameCode
Releases · DevGeniusCode/GeneralsGameCode
weekly-2026-05-01
Changelog
- perf: Remove superfluous null tests in iterateObjects callbacks (TheSuperHackers#2658)
- chore(controlbar): Add asserts to verify special power templates and buttons (TheSuperHackers#2657)
- unify(controlbar): Merge ControlBar and related code from Zero Hour (TheSuperHackers#2655)
- feat: Implement game exit with ALT+F4 and game window close button (TheSuperHackers#2336)
- fix(view): Prevent the camera from clipping under terrain (TheSuperHackers#2652)
- docs(readme): Add section about profiling (TheSuperHackers#2202)
- feat(profiling): Add trace zones and frame marks to Tracy profiling (TheSuperHackers#2202)
- feat(profiling): Add messages on game start and game end to Tracy profiling (TheSuperHackers#2202)
- feat(profiling): Add plots for logical frame number and pathfinding cells/paths to Tracy profiling (TheSuperHackers#2202)
- feat(profiling): Add frame image capturing to Tracy profiling (TheSuperHackers#2202)
- feat(profiling): Include Tracy profiler library in the solution (TheSuperHackers#2202)
- refactor(profiling): Move rts/profile.h include into WWCommon.h (TheSuperHackers#2202)
- refactor(profiling): Rename RTS_PROFILE to RTS_PROFILE_LEGACY (TheSuperHackers#2202)
- refactor(profiling): Rename legacy profile library target (TheSuperHackers#2202)
- bugfix(view): Set camera far z to acceptable distance (TheSuperHackers#2653)
- tweak(view): Implement smooth terrain sampling for camera positioning (TheSuperHackers#2651)
- refactor: Eliminate macro-split assignments (TheSuperHackers#2641)
- feat(view): Save position and view direction of player camera in MSG_SET_REPLAY_CAMERA (TheSuperHackers#2631)
- feat(options): Implement game options for texture filter mode and anisotropy level (TheSuperHackers#2482)
- feat(options): Implement game option to set MSAA level (TheSuperHackers#2482)
weekly-2026-04-24
Changelog
- bugfix(gui): Remove slider bounds checks to prevent unexpected reset of custom settings (TheSuperHackers#2624)
- unify(client): Move GameClient display and system files to Core (TheSuperHackers#2616)
- docs: Amend code generation guidelines to CONTRIBUTING.md (TheSuperHackers#2628)
- perf(gui): Significantly reduce cost of 2d render elements (TheSuperHackers#2514)
- fix: Fix unused variables in WW3D (TheSuperHackers#2629)
- chore(dx8fvf): Remove unused vertex_size parameter from FVFInfoClass (TheSuperHackers#2615)
- bugfix(view): Fix ground level of bookmarks, replay camera and game world microphone (TheSuperHackers#2595)
- style(guiedit): Adjust indentation for combo box data output in save function (TheSuperHackers#2625)
- refactor: Remove superfluous returns at the end of functions (TheSuperHackers#2594)
- bugfix: Delay creation of object bound particle emitters until ParticleSystemManager is xfer-loaded (TheSuperHackers#2333)
- bugfix(input): Block all button presses except ESC during scripted camera scenes (TheSuperHackers#2621)
- bugfix(connection): Remove incorrect magic byte check for map transfers (TheSuperHackers#2614)
- refactor(metaevent): Move meta event type asserts from key event update to engine initialization (TheSuperHackers#2590)
- bugfix(water): Fix river borders appearing darkened under shroud (TheSuperHackers#2592)
- refactor: Remove redundant void argument from functions (2) (TheSuperHackers#2609)
- unify(ww3d2): Merge dx8renderer, dx8rendererdebugger (TheSuperHackers#2600)
- fix: Fix assertion format argument for non-trivial types (TheSuperHackers#2606)
- refactor(ini): Simplify token related INI code (TheSuperHackers#2596)
- refactor(recorder): Remove code duplications related to file write and logging in RecorderClass (TheSuperHackers#2543)
- bugfix(dumbprojectile): Fix in-flight DumbProjectile detonating instantly on save load (TheSuperHackers#2591)
- bugfix(input): Fix touchpad upward scrolling in UI list boxes (TheSuperHackers#2586)
- unify(ww3d2): Move dx8wrapper, dx8caps to Core (TheSuperHackers#2599)
- fix(view): Improve setup of default camera pitch and angle (TheSuperHackers#2546)
- fix(ini): Support plus sign prefix in INI integer parse (TheSuperHackers#2576)
- fix(ini): Replace unsafe uses of INI::getNextTokenOrNull (TheSuperHackers#2593)
- bugfix(audiomanager): Fix dummy audio manager implementation for failing audio length script conditions in headless mode (TheSuperHackers#2313)
- bugfix(money): Fix undefined behavior for starting cash combo box (TheSuperHackers#2582)
- bugfix(view): Prevent overshooting camera zooming or pivoting on low frame rates (TheSuperHackers#2588)
- bugfix(view): Fix malformed camera area constraints during cutscenes (TheSuperHackers#2587)
- fix(pathfinder): Fix CRC computation of PathFinder::m_wallPieces (TheSuperHackers#2575)
- bugfix(energy): Don't apply power production bonus for disabled power plants on save game load (TheSuperHackers#2509)
- bugfix(energy): Don't increase power production for disabled power plants on save game load (TheSuperHackers#2508)
weekly-2026-04-17
Changelog
- bugfix(input): Use time-based double tap for unit group centering (TheSuperHackers#2545)
- refactor: Add override keyword to virtual function overrides in Tools and set compile option -Wsuggest-override (TheSuperHackers#2394)
- unify(ww3d2): Merge dx8wrapper, dx8caps, shdlib (TheSuperHackers#2499)
- fix(view): Introduce PRESERVE_RETAIL_SCRIPTED_CAMERA and fix or improve camera offset and zoom calculations (TheSuperHackers#2524)
- bugfix(dx8): Improve display mode transition reliability (TheSuperHackers#2539)
- ci: Disable vcpkg build (TheSuperHackers#2544)
- fix: Resolve macro redefinition warnings (TheSuperHackers#2525)
- refactor(ini): Simplify some INI code (TheSuperHackers#2541)
- tweak(radar): Suppress under attack radar notification spam (TheSuperHackers#2540)
- bugfix(treebuffer): Fix crash in W3DTreeBuffer::updateVertexBuffer() (TheSuperHackers#2526)
- fix(actionmanager): Improve validation of Sneak Attack placement legality (TheSuperHackers#2533)
weekly-2026-04-10
Changelog
- fix(skirmish): Improve determinism for restarted games by resetting slot values (TheSuperHackers#2373)
- perf(ini): Improve INI parsing performance by using std::from_chars (TheSuperHackers#2532)
- fix(targa): Fix TGA2 footer signature truncation by using strncpy (TheSuperHackers#2527)
- refactor(ini): Clean up INI type table and its search logic (TheSuperHackers#2511)
- fix(connection): Implement file content validation for map transfers (TheSuperHackers#1819)
- fix(refcount): Fix compile warning in constructors of RefCountClass (TheSuperHackers#2521)
- refactor: Remove string conversion code for MessageBox (TheSuperHackers#2523)
- refactor: Remove superfluous extern keyword from variable declarations (TheSuperHackers#2522)
- refactor(view): Remove friends from ViewLocation class (TheSuperHackers#2516)
- bugfix(object): Guard GameLogic xfer version bump with RETAIL_COMPATIBLE_XFER_SAVE (TheSuperHackers#2418)
- refactor(ww3d2): Simplify dx8wrapper's frame statistics with struct (TheSuperHackers#2507)
- refactor(object): Replace explicit local player checks with Object::isLocallyControlled (TheSuperHackers#2512)
- chore: Remove unused code in dx8wrapper (TheSuperHackers#2504)
- chore: Remove all code related to _XBOX (TheSuperHackers#2505)
- bugfix(view): Fix and improve camera pivoting (TheSuperHackers#2506)
- bugfix(view): Fix and improve camera area constraints behavior (TheSuperHackers#2506)
- bugfix(smudge): Decouple smudge time step from render update (TheSuperHackers#2484)
- bugfix(contain): Restore retail compatibility after crash fix in OpenContain::killAllContained (TheSuperHackers#2439)
- bugfix(contain): Restore retail compatibility after crash fix in OpenContain::processDamageToContained (TheSuperHackers#2427)
- fix(smudge): Align smudges Y offset range with X offset range (TheSuperHackers#2498)
- bugfix(globaldata): Fix the handling of documents folder redirection by using SHGetKnownFolderPath() (TheSuperHackers#2479)
weekly-2026-04-03
Changelog
- refactor: Add override keyword to virtual function overrides in GameEngineDevice (TheSuperHackers#2393)
- refactor: Add override keyword to virtual function overrides in Libraries (TheSuperHackers#2390)
- fix(headless): Set DX8Wrapper_IsWindowed to false to suppress assertion dialogs during shutdown (TheSuperHackers#2298)
- bugfix(logic): Fix broken camera edge scroll after loading a savegame from the ingame menu (TheSuperHackers#2000)
- bugfix(pathfinder): Improve initialization of uninitialized variable in Pathfinder::classifyFence (TheSuperHackers#2460)
- fix(logic): Add nullptr check to msgPlayer in GameLogic::logicMessageDispatcher (TheSuperHackers#2383)
- refactor(logic): Rename thisPlayer to msgPlayer in GameLogic::logicMessageDispatcher (TheSuperHackers#2383)
- fix(smudge): Fix minor errors in W3DSmudge (TheSuperHackers#2483)
- tweak(gui): Enable minimize button for game app window (TheSuperHackers#2473)
- bugfix(battleplan): Battle plans are now transferred to the new owner on capture (TheSuperHackers#2257)