Repository navigation
Releases: leex279/GeneralsGameCode
Releases · leex279/GeneralsGameCode
Release list
weekly-2026-08-21
Changelog
- refactor(particlesys): Cleanup retail smudge particle type identification (TheSuperHackers#3162)
- test(neutronmissile): Add debug draw for nuke missile radius (TheSuperHackers#3160)
- feat(string): Implement UTF-8 string conversion and validation functions (TheSuperHackers#2528)
- bugfix(object): The KINDOF_NO_SELECT flag now prevents an object from being selected (TheSuperHackers#3125)
- bugfix(scorch): Fix diffuse color calculation of scorches (TheSuperHackers#3153)
- perf(smudge): Early return W3DSmudgeManager::render when no smudges are present (TheSuperHackers#3140)
- bugfix(ai): Attacking infantry no longer attempt to path to their targets when force-evacuated from a vehicle (TheSuperHackers#3098)
- bugfix(selection): Fix group index range in SelectionTranslator::onMetaViewTeam() (TheSuperHackers#3139)
- bugfix(chinookaiupdate): Helicopter enter commands are now ignored if the target to enter is invalid or ourselves (TheSuperHackers#3115)
- bugfix(horde): Prevent dead units from being considered for horde membership (TheSuperHackers#3067)
- unify(shell): Move Shell to Core (TheSuperHackers#3070)
- unify(shell): Merge Shell from Zero Hour (TheSuperHackers#3070)
- perf(script): Reduce cost of ScriptEngine::findScript() by around 85% (TheSuperHackers#3096)
- bugfix(heightmap): Fix ray casting in BaseHeightMapRenderObjClass::Cast_Ray (2) (TheSuperHackers#2869)
- refactor: Simplify slot-to-player lookups (TheSuperHackers#3034)
- bugfix(scorch): Prevent volatile scorches from evicting static map scorches (TheSuperHackers#3114)
- bugfix(pathfinder): Prevent a retail crash where a pathfindCell has a dangling linked list pointer (TheSuperHackers#3113)
- bugfix(pathfinder): Prevent a retail crash where the head of the closed list has no associated m_info (TheSuperHackers#3113)
- bugfix(milesaudiomanager): Prevent dangling pointer to AudioEventRTS in PlayingAudio when handing it over to a new AudioRequest after a call to MilesAudioManager::startNextLoop() (TheSuperHackers#2774)
- refactor(audioevent): Add RefCountClass to DynamicAudioEventRTS (TheSuperHackers#2774)
- bugfix(scorch): Update scorch texture mip quality when changing texture quality setting (TheSuperHackers#3119)
- unify(drawable): Merge most of Drawable and Locomotor (TheSuperHackers#3097)
- ci(vcpkg): Limit setup to vcpkg presets (TheSuperHackers#3128)
- bugfix(jetaiupdate): Helicopters no longer land or remain landed at destroyed Airfields (TheSuperHackers#3080)
- tweak(gui): Move animated GUI window smoothly at higher than 30 frames per second (TheSuperHackers#3061)
- refactor(network): Remove dynamic allocations for NetPacket (TheSuperHackers#2866)
- refactor(baseheightmap): Extract scorch rendering from BaseHeightMap into new W3DScorch (TheSuperHackers#3017)
- bugfix(aiupdate): Don't process invalid exit commands (TheSuperHackers#3089)
- bugfix(jetaiupdate): Save helicopter landing position (TheSuperHackers#3077)
- bugfix(stickybomb): Allow Booby Traps to be placed on a previously booby-trapped object (TheSuperHackers#3060)
- fix(namekey): Canonicalize lowercase name keys (TheSuperHackers#3082)
- bugfix(contain): Allow passengers to exit immobilized Battle Buses (TheSuperHackers#3041)
- tweak(gui): Change LAN emote buttons to chat buttons and implement /me emote text command in LAN chats (TheSuperHackers#1821)
- refactor: Use slot indices for player conversions (TheSuperHackers#3033)
- chore: Remove unused W3DCustomEdging class (TheSuperHackers#3079)
- bugfix(jetaiupdate): Fix aircraft falling to their death if their Airfield is lost during their return flight (TheSuperHackers#3076)
- unify(w3ddevice): Move W3DDevice/Common to Core (TheSuperHackers#3073)
- unify(w3ddevice): Merge W3DModuleFactory from Zero Hour (TheSuperHackers#3073)
- unify(w3ddevice): Move W3DDevice/GameClient/GUI to Core (TheSuperHackers#3074)
- unify(gui): Move EstablishConnectionsMenu to Core (TheSuperHackers#3069)
- refactor(w3dview): Migrate raw pointers to RefCountPtr (TheSuperHackers#1763)
- unify(gui): Move GUICallbacks to Core (TheSuperHackers#3068)
- fix(client): Prevent movies from playing in headless mode (TheSuperHackers#3066)
- chore: Update retail behaviour preservation flags (TheSuperHackers#3065)
- feat(specialpower): Add INI option to start a special power without its initial reload time (TheSuperHackers#3054)
- refactor(refcountptr): Simplify RefCountPtr's Create_No_Add_Ref, Create_Add_Ref and add Assign_No_Add_Ref, Assign_Add_Ref (TheSuperHackers#3058)
- chore(refcountptr): Include ref_ptr.h in WWCommon.h (TheSuperHackers#3059)
- fix(spectregunship): Decouple particle system in SpectreGunshipUpdate::update from logic crc (TheSuperHackers#3055)
- bugfix(aiupdate): Prevent units from deploying when moving (TheSuperHackers#3016)
- tweak(gui): Decouple GUI window-move animations from the render frame rate (TheSuperHackers#2833)
- unify(win32device): Move Win32Device to Core (TheSuperHackers#3046)
- unify(win32device): Merge Win32GameEngine from Zero Hour (TheSuperHackers#3046)
- bugfix(gamefont): Lift the upper font point size limit of 100 (TheSuperHackers#3051)
- unify(precompiled): Move Precompiled to Core (TheSuperHackers#3050)
- unify(precompiled): Merge Precompiled from Zero Hour (TheSuperHackers#3050)
- feat(object): Implement KINDOF_NO_ATTACK_WARNING to suppress alarm events on object attacks (TheSuperHackers#2862)
- unify(bezier): Move Bezier to Core (TheSuperHackers#3047)
- bugfix(shroud): Fix texture access bounds in W3DShroud::getShroudLevel() (TheSuperHackers#3045)
- unify(commandline): Move CommandLine to Core (TheSuperHackers#3037)
- unify(common): Move DamageFX, Dict, DiscreteCircle, Language, MessageStream... to Core (TheSuperHackers#3038)
- chore: Correct the game title in Copyright headers of CommandLine source files (TheSuperHackers#3042)
- unify(ww3d2): Move ww3d to Core (TheSuperHackers#3012)
- unify(ww3d2): Merge ww3d (TheSuperHackers#3012)
- refactor(commandxlat): Split evaluateContextCommand into per-command handlers (TheSuperHackers#3008)
- chore: Restore full relative include visibility in WWVegas libraries (TheSuperHackers#3032)
- bugfix(debug): Skip system-modal crash dialogs in headless runs (TheSuperHackers#3030)
- refactor(smudge): Replace custom doubly linked list with std::deque in W3DSmudge (TheSuperHackers#3021)
- chore(network): Remove obsolete HTTP Proxy option (TheSuperHackers#3009)
- chore(network): Remove legacy Send Delay (TheSuperHackers#3007)
- chore: Remove redundant void argument from functions (3) (TheSuperHackers#3027)
- perf(terrain): Hoist global light ray computation out of per-vertex loop
- chore(string): Implement AsciiString::toUpper() (TheSuperHackers#3020)
- fix(string): Fix character length limit and unnecessary allocation in AsciiString::toLower() (TheSuperHackers#3020)
- fix(displaystring): Guard null bold font pointer in W3DDisplayString::setFont() (TheSuperHackers#2893)
- tweak(gui): Show Money Per Minute in Player Info List (TheSuperHackers#2738)
- unify(particlesys): Move W3DParticleSys to Core (TheSuperHackers#3014)
- unify(particlesys): Merge W3DParticleSys (TheSuperHackers#3014)
- bugfix(replay): Handle replay deletion during version mismatch prompt (TheSuperHackers#1837)
- bugfix(saveload): Fix aircraft carrier losing its order when saving (TheSuperHackers#2996)
- bugfix(savegame): Fix aircraft carrier ramp state serialized out of bounds (TheSuperHackers#2997)
- bugfix(texture): Fix Generals missing texture and vegetation at lowest texture resolution (TheSuperHackers#3013)
- perf(view): Cache only latest screen-to-terrain result (TheSuperHackers#2992)
- bugfix(contain): Restore retail compatibility after changes to Object::m_containedByID (TheSuperHackers#2868)
- perf(network): Reduce loop complexity for transport messages and remove unused static variables (TheSuperHackers#2659)
- bugfix(particlesys): Prevent accumulation of particle systems in headless mode (TheSuperHackers#3006)
- bugfix(fxlist): Fix unreliable terrain layer selection of particles using CreateAtGroundHeight (TheSuperHackers#3004)
- bugfix(behavior): Do not fire weapons via the InstantDeathBehavior module while under construction (TheSuperHackers#3002)
- bugfix(saveload): Serialize base state machine in TurretStateMachine and DozerActionStateMachine (TheSuperHackers#2896)
- bugfix(behavior): Allow multiple InstantDeathBehavior modules to be processed (TheSuperHackers#2990)
- bugfix(weapon): Sniper weapons can no longer fire upon empty Stinger Sites (TheSuperHackers#2822)
- tweak(intro): Implement intro skipping with ESC button (TheSuperHackers#2879)
- bugfix(gui): Fix black fade out at the end of the map load screen (TheSuperHackers#2889)
- chore: Use qualified include paths for WWVegas headers (2) (TheSuperHackers#2881)
- tweak(cmake): Use GameSpy SDK from TheSuperHackers repository (TheSuperHackers#2884)
- bugfix(gamelogic): Map player index to slot index for CRC validation (TheSuperHackers#2857)
- bugfix(heightmap): Prevent full terrain rebuild on every frame when DrawEntireTerrain is enabled (TheSuperHackers#2846)
- chore(heightmap): Remove remnants of unimplemented Stretch Terrain and Half Height Map (TheSuperHackers#2846)
- fix(bitflags): Prevent linker errors from multiple defined BitFlags::s_bitNameList (TheSuperHackers#2888)
- chore: Replace CPP_11(= delete) with FUNCTION_DELETE macro to help clang format (TheSuperHackers#2885)
- chore: Remove empty braces in macros to help clang format (TheSuperHackers#2883)
- chore: Use qualified include paths for WWVegas headers (1)
- feat(screenshot): Add threaded JPEG/PNG screenshots without game stalls (TheSuperHackers#1785)
- feat(intro): Add short Intro Logo for The Super Hackers team (TheSuperHackers#2267)
- tweak(intro): Remove superfluous legal page window from intro sequence (TheSuperHackers#2267)
- fix(intro): Remove non functional copyright string and simplify logo movie code (TheSuperHackers#2267)
- refactor(intro): Simplify the intro state machine in Intro class (TheSuperHackers#2267)
- refactor(intro): Move intro related code to new file and class (TheSuperHackers#2267)
- refactor(sphere): Zero initialize SphereClass by default and add Is_Valid function (TheSuperHackers#2855)
- tweak(gamemessage): Reduce number of MSG_DESTROY_SELECTED_GROUP messages (TheSuperHackers#2668)
- unify(ini): Move INI parser files to Core (TheSuperHackers#2863)
- unify(ini): Merge INIMultiplayer starting money parsing from Zero Hour (TheSuperHackers#2863)
- bugfix(gameengine): Prevent logic time accumulation while the game is halted (TheSuperHackers#2865)
- bugfix(commandxlat): Re-enable right mouse click move commands during camera scrolling (TheSuperHackers#2847)
- tweak(controlbar): Decouple the general promotion star blink from the render frame rate (TheSuperHackers#2835)
- bugfix(ini): Store every debris model name in GenericObjectCreationNugget::parseDebrisObjectNames (TheSuperHackers#2597)
- perf(sortingrenderer): Skip z-sorting for nodes without bounding info in SortingRenderer (TheSuperHackers#2854)
- bugfix(logic): Restore retail compatibility after change to frozen time check (TheSuperHackers#2803)
- unify(controlbar): Move ControlBar files to Core (TheSuperHackers#2849)
- unify(controlbar): Merge ControlBar and related code from Zero Hour (TheSuperHackers#2849)
- fix(gui): Pace whole-screen fade loop through the frame pacer (TheSuperHackers#2848)
- feat(gui): Implement user option to scale the game window transition speed (TheSuperHackers#2840)
- bugfix(pointgroup): Render ground-aligned particles without sorting (TheSuperHackers#2838)
- fix(textureloader): Simplify and fix faulty implementations of texture reduction (2) (TheSuperHackers#2814)
- bugfix(heightmap): Reduce ray cast lengths and fix ray casting in BaseHeightMapRenderObjClass...
weekly-2026-02-20
Changelog
- bugfix(worldbuilder): Fix incorrect access of empty list in ObjectOptions::_FindOrDont() (TheSuperHackers#2306)
- tweak: Put fixes that do affect gameplay behind PRESERVE_RETAIL_BEHAVIOR (TheSuperHackers#2319)
- build: Fix compile error when building without RETAIL_COMPATIBLE_CRC (TheSuperHackers#2318)
- bugfix(worldbuilder): Fix optimized trees not being shown in object placer preview window (TheSuperHackers#2312)
- bugfix(worldbuilder): Fix uncaught carriage return in CommandButton name when parsing from INI (TheSuperHackers#2300)
- feat(cratecollide): Add INI option to allow a crate to be picked up multiple times in one frame (TheSuperHackers#2297)
- build(docker): Add Linux LSP support by fixing compile_commands.json paths (TheSuperHackers#2303)
- tweak(worldbuilder): Remove EULA code and data (TheSuperHackers#2307)
- fix(netpacket): Fix undefined behavior with NetPacket buffer writes (TheSuperHackers#2304)
- bugfix(network): Increase message buffer and max packet sizes to reduce connection issues (TheSuperHackers#2277)