Skip to content

Releases: mirelle7/GeneralsGameCode

weekly-2026-09-18

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:20
a433c14

Changelog

  • bugfix(filesystem): Preserve write paths with missing directories (TheSuperHackers#3104)
  • fix(milesaudiomanager): Prevent heap-buffer-overflow read in MilesAudioManager::selectProvider() (TheSuperHackers#3281)
  • chore(pathfinder): Remove superfluous CPOP_STARTS_FROM_PREV_SEG macro (TheSuperHackers#3295)
  • fix(hash): Fix initialization of HashTableIteratorClass and make it work with an empty HashTableClass (TheSuperHackers#3284)
  • fix(audio): Copy SoundSceneObjClass state safely (TheSuperHackers#3247)
  • feat(recorder): Play a replay file from the command line (TheSuperHackers#3227)
  • bugfix(pathfinder): Restore Generals retail compatibility after crash fix changes to Pathfinder::findAttackPath (TheSuperHackers#3289)
  • chore(license): Add SPDX-License-Identifier to LICENSE.md (TheSuperHackers#3290)
  • chore: Remove trailing commas in braced initializers that break clang-format's compact layout (TheSuperHackers#3274)
  • ci: Restore CI workflow permission compatibility (TheSuperHackers#3286)
  • bugfix(meshmatdesc): Fix mesh material color processing (TheSuperHackers#3246)
  • build(cmake): Add retail compatibility option in CMake config (TheSuperHackers#2379)
  • refactor(basetype): Add utility functions to Region and Coord types (TheSuperHackers#3271)
  • ci(release): Stop requesting permissions from the reusable workflow (TheSuperHackers#3276)
  • refactor(particlesys): Parse IsGroundAligned as an enum instead of a boolean (TheSuperHackers#3265)
  • fix(gamefont): Ceil font glyph buffer size to the actual glyph size to prevent a buffer write overflow (TheSuperHackers#3268)
  • perf(gamememory): Remove unnecessary calls to preMainInitMemoryManager from delete and free functions and make freeBytes noexcept to get rid of EH frame (TheSuperHackers#3266)
  • chore(gamememory): Remove superfluous extern keywords from operator overloads (TheSuperHackers#3266)
  • perf(gamememory): Add overloads for the deletes with size_t argument (TheSuperHackers#3266)
  • perf(gamememory): Inline preMainInitMemoryManager (TheSuperHackers#3266)
  • perf(gamememory): Early exit delete and free functions on null pointer (TheSuperHackers#3266)
  • chore(gamememory): Compile out the memory link tester in Release (TheSuperHackers#3266)
  • perf(productionupdate): Simplify and correct implementations of cancel functions in ProductionUpdate (TheSuperHackers#3270)
  • refactor(miles): Fix the written primitive types in mss.h and all its call sites; no ABI changes (TheSuperHackers#3272)
  • refactor(miles): Replace the Miles SDK stub with a Miles runtime loader (TheSuperHackers#3272)
  • refactor(bink): Replace the Bink SDK stub with a Bink runtime loader (TheSuperHackers#3272)
  • bugfix(milesaudiomanager): No longer use stopped audio in queries and updates (TheSuperHackers#3254)
  • bugfix(milesaudiomanager): Fix premature 2d and 3d sound cancellations from MilesAudioManager::stopAudioEvent() (TheSuperHackers#3254)
  • refactor(milesaudiomanager): Simplify MilesAudioManager::findLowestPrioritySound() (TheSuperHackers#3254)
  • refactor(milesaudiomanager): Simplify MilesAudioManager::notifyOfAudioCompletion() (TheSuperHackers#3254)
  • refactor(milesaudiomanager): Use consistent variable names for PlayingAudio in MilesAudioManager (TheSuperHackers#3254)
  • bugfix(dozeraiupdate): Fix issue where builders could resume completed tasks after being disabled (TheSuperHackers#2793)
  • bugfix(neutronmissile): Fix and improve Nuke Missile damage for large objects inside the outer blast radius (TheSuperHackers#3161)
  • feat(commandline): Add working directory command line options (TheSuperHackers#3149)
  • bugfix(gamewindow): Remove destroyed windows from the modal stack and prevent duplicate modals for the same window (TheSuperHackers#3224)
  • bugfix(productionupdate): Prevent cancelling and refunding a single production entry when a number of its units already finished production (TheSuperHackers#2399)
  • ci(release): Protect weekly-release against commit-subject injection (TheSuperHackers#3267)
  • bugfix(aiupdate): Contact weapons are no longer blocked by obstacles (TheSuperHackers#3194)
  • perf(particlesys): Batch same type particles to reduce cost of particle rendering by 15 to 30% (TheSuperHackers#3155)
  • docs: Update the AI code guidelines (TheSuperHackers#3249)
  • ci(release): Fix weekly release workflow permissions (TheSuperHackers#3256)
  • chore(lib): Implement Usp10Loader class (TheSuperHackers#3241)
  • tweak(gameaudio): Only update sound volumes if the volume has really changed (TheSuperHackers#3252)
  • fix(gameaudio): Remove the has3DSensitiveStreamsPlaying volume hack (TheSuperHackers#3252)
  • bugfix(tunnel): Restore retail compatibility after changes to TunnelTracker::onTunnelDestroyed() and TunnelContain::onCapture() (TheSuperHackers#3242)
  • tweak(gamestate): Support loading save files from absolute paths (TheSuperHackers#3226)
  • bugfix(audio): Apply configured volume to Bink movie audio (TheSuperHackers#3083)
  • build(vcpkg): Define FFmpeg as VCPKG feature, disabled by default (TheSuperHackers#3184)
  • fix(htree): Reject invalid W3D hierarchy pivot counts (TheSuperHackers#3195)
  • unify(gui): Move game window files to Core (TheSuperHackers#3197)
  • unify(gui): Merge game window files (TheSuperHackers#3197)
  • ci(vcpkg): Disable vcpkg metrics to stop random link failures (TheSuperHackers#3244)
  • bugfix(particlesys): Delay particle system destruction to prevent orphaning slaved finite-lifetime particle systems (TheSuperHackers#3238)
  • chore: Accept both path slashes for clang tidy (TheSuperHackers#3225)
  • refactor: Fix unnecessary copy initializations (TheSuperHackers#3202)
  • tweak(scorch): Increase scorch buffer limits to 16-bit maximum (TheSuperHackers#3186)
  • fix(scorch): Early return if scorch does not fit in buffer (TheSuperHackers#3186)
  • chore: Add override keywords to virtual function overrides (TheSuperHackers#3221)
  • bugfix(update): Resolve mismatch in Generals caused by updating AssistedTargetingUpdate for the initial frame (TheSuperHackers#3212)
  • fix(heightmapedit): Fix undefined behaviors in WorldHeightMapEdit::remapTextures, WorldHeightMapEdit::findBoundaryNear (TheSuperHackers#3201)
  • bugfix(object): Avoid potential crash when Troop Crawler is destroyed before reaching Reinforcement Pad (TheSuperHackers#3165)
  • Revert previous crash fixes when Troop Crawler is destroyed before reaching Reinforcement Pad (TheSuperHackers#3165)
  • refactor(ww3d2): Implement first bits for IRenderBackend interface (TheSuperHackers#2613)
  • ci(vcpkg): Repair the vcpkg CI path and move the binary cache to GitHub Packages (TheSuperHackers#2542)
  • tweak(particlesys): Cleanup volume particle depth handling and add INI field to control it (TheSuperHackers#3188)
  • fix(filesystem): Delay StdBIGFile allocation until after archive validation (TheSuperHackers#3196)
  • feat(saveload): Implement -loadsave command line option (TheSuperHackers#3001)
  • refactor(network): Clarify command list ordering (TheSuperHackers#3052)
  • bugfix(network): Sort fast path in NetCommandList by sort number (TheSuperHackers#3052)

weekly-2026-08-28

Choose a tag to compare

@github-actions github-actions released this 28 Aug 20:35
7ed4062

Changelog

weekly-2026-08-07

Choose a tag to compare

@github-actions github-actions released this 07 Aug 09:56
71d40c0

Changelog

weekly-2026-07-31

Choose a tag to compare

@github-actions github-actions released this 31 Jul 11:25

Changelog

weekly-2026-07-24

Choose a tag to compare

@github-actions github-actions released this 24 Jul 10:59
12f7de9

Changelog

weekly-2026-07-17

Choose a tag to compare

@github-actions github-actions released this 17 Jul 10:35
fa27613

Changelog

  • 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::Cast_Ray (TheSuperHackers#2836)
  • bugfix(mouse): Fix bad drag tolerances with high scroll speed factors (TheSuperHackers#2826)
  • chore(basetype): Add addition and subtraction functions to Coord2D, Coord3D, ICoord2D, ICoord3D (TheSuperHackers#2826)
  • refactor(selectionxlat): Split switch cases of SelectionTranslator::translateGameMessage into separate functions (TheSuperHackers#2819)
  • build: Fix compile error in Smudge.h with docker-build (TheSuperHackers#2701)

weekly-2026-07-10

Choose a tag to compare

@github-actions github-actions released this 10 Jul 11:48

Changelog

  • temp skip workflow
  • disable engine slowdown when not in focus
  • disable WM_INACTIVE audio mute
  • Enhance sync-upstream workflow comments and logging
  • Add workflow to sync fork with upstream repository
  • 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::Cast_Ray (TheSuperHackers#2836)
  • bugfix(mouse): Fix bad drag tolerances with high scroll speed factors (TheSuperHackers#2826)
  • chore(basetype): Add addition and subtraction functions to Coord2D, Coord3D, ICoord2D, ICoord3D (TheSuperHackers#2826)
  • refactor(selectionxlat): Split switch cases of SelectionTranslator::translateGameMessage into separate functions (TheSuperHackers#2819)
  • build: Fix compile error in Smudge.h with docker-build (TheSuperHackers#2701)

weekly-2026-07-03

Choose a tag to compare

@github-actions github-actions released this 03 Jul 11:31
46607a9

Changelog

  • refactor(basetype): Refactor functions of Coord3D, Region3D to take reference instead of pointer (TheSuperHackers#2830)
  • tweak(drawable): Decouple police car light time step from render update (TheSuperHackers#2829)
  • tweak(gui): Decouple GUI transition and world animation time step from render update (TheSuperHackers#2056)
  • bugfix(view): Fix view ray cast behavior for mouse picks and drawable occlusion (TheSuperHackers#2818)
  • unify(update): Parse template references in the AssistedTargetingUpdate module by name (TheSuperHackers#2809)
  • refactor(audio): Simplify available audio samples management (TheSuperHackers#2773)
  • unify(messagestream): Move all client message translator files to Core (TheSuperHackers#2805)
  • fix(update): Fix laser-to-target setup mistake in AssistedTargetingUpdate (TheSuperHackers#2817)
  • chore(sortingrenderer): Remove unused function Insert_VolumeParticle (TheSuperHackers#2816)
  • refactor(sortingrenderer): Replace custom doubly linked list with std::list in SortingNodeStruct (TheSuperHackers#2810)
  • bugfix(logic): Restore retail compatibility after change in CountermeasuresBehavior::calculateCountermeasureToDivertTo (TheSuperHackers#2808)
  • chore: Prevent conflict between clang-format and MSVC by wrapping inline assembly blocks in curly braces (TheSuperHackers#2811)
  • chore: Prevent conflict between clang-format and pre-C++11 nested template parsing (TheSuperHackers#2760)
  • bugfix(ai): Fix bugged unit behavior when attacked during guard mode (TheSuperHackers#2197)
  • bugfix(crc): Fix spurious mismatches for disconnected players at low CRC intervals (TheSuperHackers#2796)
  • bugfix(network): Improve compare method of command id's to keep network commands in chronological order when overflowing (TheSuperHackers#2736)
  • bugfix(pathfinder): Fix inaccurate single unit movement destinations when unobstructed (TheSuperHackers#2296)
  • bugfix(textureloader): Fix faulty implementations of texture reduction (TheSuperHackers#2789)
  • tweak(textureloader): Remove superfluous texture reduction code from TextureLoadTaskClass::Begin_Uncompressed_Load() (TheSuperHackers#2789)
  • refactor(textureloader): Simplify code in Texture Loader (TheSuperHackers#2789)
  • bugfix(textureloader): Lift hardcoded texture aspect ratio limit of 1:8 to allow loading all textures with modern gpu (TheSuperHackers#2788)
  • perf: Reduce cost of retrieving labels from Waypoint and PolygonTrigger by 90% (TheSuperHackers#2761)
  • unify(selectionxlat): Merge SelectionXlat (TheSuperHackers#2792)
  • unify(commandxlat): Merge CommandXlat and related code from Zero Hour (TheSuperHackers#2765)
  • unify(academystats): Move AcademyStats files to Core and merge related required code (TheSuperHackers#2765)
  • feat(options): Implement user option to toggle Right Mouse Scroll with Alternate Mouse (TheSuperHackers#2798)
  • unify(translator): Merge message translators from Zero Hour (TheSuperHackers#2794)
  • perf(pathfinding): Skip redundant path-exists check in Pathfinder::checkForAdjust() (TheSuperHackers#2791)
  • refactor(pathfinder): Simplify implementation of spiral cell search in Pathfinder::adjustDestination() (TheSuperHackers#2790)
  • fix(bitflags): Use UnsignedInt64 and %I64X to support VC6 compiler in BitFlags.h (TheSuperHackers#2759)
  • fix(milesaudiomanager): Fix audio request kill condition in MilesAudioManager::killAudioEventImmediately() (TheSuperHackers#2784)
  • fix(sortingrenderer): Prevent a crash when exceeding the 16-bit index buffer limit (TheSuperHackers#2783)
  • refactor(gamelogic): Split switch cases of GameLogic::logicMessageDispatcher into separate functions (TheSuperHackers#2702)
  • unify(ww3d2): Move SortingRenderer to Core (TheSuperHackers#2772)
  • unify(ww3d2): Merge SortingRenderer (TheSuperHackers#2772)
  • perf(gamemessage): Replace GameMessageArgument linked lists with vectors (TheSuperHackers#2700)
  • bugfix(contain): Prevent riders from being added to destroyed container object when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2746)
  • refactor(metaevent): Split MetaEventTranslator::translateGameMessage() into smaller functions (TheSuperHackers#2758)
  • fix(milesaudiomanager): Prevent multithread crashing in MilesAudioManager (TheSuperHackers#2718)
  • refactor(milesaudiomanager): Clean up and simplify MilesAudioManager (TheSuperHackers#2718)
  • bugfix(object): Avoid crash with dangling contain module in Object::onDestroy() when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2747)
  • fix(memory): Fix various memory leaks (2) (TheSuperHackers#2710)
  • unify(shroud): Merge W3DShroud code from Zero Hour and implicitly fix black terrain for one frame on far camera jumps (TheSuperHackers#2757)
  • fix(metaevent): Ignore order in which modifier keys are released to trigger meta events (TheSuperHackers#2577)
  • unify(message): Merge MessageStream, MetaEvent code (TheSuperHackers#2756)
  • bugfix(water): Fix river visuals in black shroud (TheSuperHackers#2749)
  • fix(memory): Fix audio event related memory leaks when pausing the game (TheSuperHackers#2731)
  • fix(particlesys): Simplify ParticleSystemManagerDummy setup (TheSuperHackers#2740)
  • fix(particlesys): Decouple particle systems from logic crc (TheSuperHackers#2742)
  • bugfix(gameengine): Fix logic in GameEngine::canUpdateRegularGameLogic() (TheSuperHackers#2707)
  • fix(recorder): Fix memory leak of RecorderClass::m_crcInfo (TheSuperHackers#2713)
  • bugfix(aigroup): Prevent game crash when a player is selected in Replay playback (2) (TheSuperHackers#2711)
  • perf(network): Replace extern global network variables with const ones (TheSuperHackers#2726)
  • refactor(network): Use switch cases in utility functions for network commands (TheSuperHackers#2725)
  • fix(particlesys): Add or simplify null-checks to createParticleSystem calls (TheSuperHackers#2724)
  • fix(network): Verify accepted type of incoming game messages (TheSuperHackers#2708)
  • bugfix(physics): Prevent building crash damage from dealing damage to other objects (TheSuperHackers#2723)
  • bugfix(physics): Prevent dead units from repeatedly dealing crash damage on collision with non-buildings (TheSuperHackers#2204)
  • fix(gameengine): Remove music tracks as prerequisite to initialize the game engine (TheSuperHackers#2737)
  • bugfix: Restore retail compatibility after retail behavior flags change (TheSuperHackers#2727)
  • refactor(netpacket): Simplify NetPacket functions for packet buffer reads (TheSuperHackers#2463)
  • fix(object): Prevent crash if Object::m_drawable is a nullptr on save load (TheSuperHackers#2712)
  • unify(ww3d2): Move dx8fvf, dx8indexbuffer, dx8vertexbuffer to Core (TheSuperHackers#2706)
  • bugfix(contain): Abort containee's AIExitState if its container object dies (TheSuperHackers#2513)
  • chore(gamemessage): Clean up GameMessage::getCommandTypeAsString (TheSuperHackers#2695)
  • unify(gamelogic): Move most GameLogic System files to Core (TheSuperHackers#2698)
  • unify(gamelogic): Merge GameLogicDispatch and related code (TheSuperHackers#2698)
  • bugfix(input): Revert changes to local group creation (TheSuperHackers#2694)

weekly-2026-06-26

Choose a tag to compare

@github-actions github-actions released this 26 Jun 11:44

Changelog

  • chore: Apply clang-format to entire codebase
  • refactor(audio): Simplify available audio samples management (TheSuperHackers#2773)
  • unify(messagestream): Move all client message translator files to Core (TheSuperHackers#2805)
  • fix(update): Fix laser-to-target setup mistake in AssistedTargetingUpdate (TheSuperHackers#2817)
  • chore(sortingrenderer): Remove unused function Insert_VolumeParticle (TheSuperHackers#2816)
  • refactor(sortingrenderer): Replace custom doubly linked list with std::list in SortingNodeStruct (TheSuperHackers#2810)
  • bugfix(logic): Restore retail compatibility after change in CountermeasuresBehavior::calculateCountermeasureToDivertTo (TheSuperHackers#2808)
  • chore: Prevent conflict between clang-format and MSVC by wrapping inline assembly blocks in curly braces (TheSuperHackers#2811)
  • chore: Prevent conflict between clang-format and pre-C++11 nested template parsing (TheSuperHackers#2760)
  • bugfix(ai): Fix bugged unit behavior when attacked during guard mode (TheSuperHackers#2197)
  • bugfix(crc): Fix spurious mismatches for disconnected players at low CRC intervals (TheSuperHackers#2796)
  • bugfix(network): Improve compare method of command id's to keep network commands in chronological order when overflowing (TheSuperHackers#2736)
  • bugfix(pathfinder): Fix inaccurate single unit movement destinations when unobstructed (TheSuperHackers#2296)
  • bugfix(textureloader): Fix faulty implementations of texture reduction (TheSuperHackers#2789)
  • tweak(textureloader): Remove superfluous texture reduction code from TextureLoadTaskClass::Begin_Uncompressed_Load() (TheSuperHackers#2789)
  • refactor(textureloader): Simplify code in Texture Loader (TheSuperHackers#2789)
  • bugfix(textureloader): Lift hardcoded texture aspect ratio limit of 1:8 to allow loading all textures with modern gpu (TheSuperHackers#2788)
  • perf: Reduce cost of retrieving labels from Waypoint and PolygonTrigger by 90% (TheSuperHackers#2761)
  • unify(selectionxlat): Merge SelectionXlat (TheSuperHackers#2792)
  • unify(commandxlat): Merge CommandXlat and related code from Zero Hour (TheSuperHackers#2765)
  • unify(academystats): Move AcademyStats files to Core and merge related required code (TheSuperHackers#2765)
  • feat(options): Implement user option to toggle Right Mouse Scroll with Alternate Mouse (TheSuperHackers#2798)
  • unify(translator): Merge message translators from Zero Hour (TheSuperHackers#2794)
  • perf(pathfinding): Skip redundant path-exists check in Pathfinder::checkForAdjust() (TheSuperHackers#2791)
  • refactor(pathfinder): Simplify implementation of spiral cell search in Pathfinder::adjustDestination() (TheSuperHackers#2790)
  • fix(bitflags): Use UnsignedInt64 and %I64X to support VC6 compiler in BitFlags.h (TheSuperHackers#2759)
  • fix(milesaudiomanager): Fix audio request kill condition in MilesAudioManager::killAudioEventImmediately() (TheSuperHackers#2784)
  • fix(sortingrenderer): Prevent a crash when exceeding the 16-bit index buffer limit (TheSuperHackers#2783)
  • refactor(gamelogic): Split switch cases of GameLogic::logicMessageDispatcher into separate functions (TheSuperHackers#2702)
  • unify(ww3d2): Move SortingRenderer to Core (TheSuperHackers#2772)
  • unify(ww3d2): Merge SortingRenderer (TheSuperHackers#2772)
  • perf(gamemessage): Replace GameMessageArgument linked lists with vectors (TheSuperHackers#2700)
  • bugfix(contain): Prevent riders from being added to destroyed container object when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2746)
  • refactor(metaevent): Split MetaEventTranslator::translateGameMessage() into smaller functions (TheSuperHackers#2758)
  • fix(milesaudiomanager): Prevent multithread crashing in MilesAudioManager (TheSuperHackers#2718)
  • refactor(milesaudiomanager): Clean up and simplify MilesAudioManager (TheSuperHackers#2718)
  • bugfix(object): Avoid crash with dangling contain module in Object::onDestroy() when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2747)
  • fix(memory): Fix various memory leaks (2) (TheSuperHackers#2710)
  • unify(shroud): Merge W3DShroud code from Zero Hour and implicitly fix black terrain for one frame on far camera jumps (TheSuperHackers#2757)
  • fix(metaevent): Ignore order in which modifier keys are released to trigger meta events (TheSuperHackers#2577)
  • unify(message): Merge MessageStream, MetaEvent code (TheSuperHackers#2756)
  • bugfix(water): Fix river visuals in black shroud (TheSuperHackers#2749)
  • fix(memory): Fix audio event related memory leaks when pausing the game (TheSuperHackers#2731)
  • fix(particlesys): Simplify ParticleSystemManagerDummy setup (TheSuperHackers#2740)
  • fix(particlesys): Decouple particle systems from logic crc (TheSuperHackers#2742)
  • bugfix(gameengine): Fix logic in GameEngine::canUpdateRegularGameLogic() (TheSuperHackers#2707)
  • fix(recorder): Fix memory leak of RecorderClass::m_crcInfo (TheSuperHackers#2713)
  • bugfix(aigroup): Prevent game crash when a player is selected in Replay playback (2) (TheSuperHackers#2711)
  • perf(network): Replace extern global network variables with const ones (TheSuperHackers#2726)
  • refactor(network): Use switch cases in utility functions for network commands (TheSuperHackers#2725)
  • fix(particlesys): Add or simplify null-checks to createParticleSystem calls (TheSuperHackers#2724)
  • fix(network): Verify accepted type of incoming game messages (TheSuperHackers#2708)
  • bugfix(physics): Prevent building crash damage from dealing damage to other objects (TheSuperHackers#2723)
  • bugfix(physics): Prevent dead units from repeatedly dealing crash damage on collision with non-buildings (TheSuperHackers#2204)
  • fix(gameengine): Remove music tracks as prerequisite to initialize the game engine (TheSuperHackers#2737)
  • bugfix: Restore retail compatibility after retail behavior flags change (TheSuperHackers#2727)
  • refactor(netpacket): Simplify NetPacket functions for packet buffer reads (TheSuperHackers#2463)
  • fix(object): Prevent crash if Object::m_drawable is a nullptr on save load (TheSuperHackers#2712)
  • unify(ww3d2): Move dx8fvf, dx8indexbuffer, dx8vertexbuffer to Core (TheSuperHackers#2706)
  • bugfix(contain): Abort containee's AIExitState if its container object dies (TheSuperHackers#2513)
  • chore(gamemessage): Clean up GameMessage::getCommandTypeAsString (TheSuperHackers#2695)
  • unify(gamelogic): Move most GameLogic System files to Core (TheSuperHackers#2698)
  • unify(gamelogic): Merge GameLogicDispatch and related code (TheSuperHackers#2698)
  • bugfix(input): Revert changes to local group creation (TheSuperHackers#2694)

weekly-2026-06-12

Choose a tag to compare

@github-actions github-actions released this 12 Jun 12:17
37e0407

Changelog

  • refactor(gamelogic): Split switch cases of GameLogic::logicMessageDispatcher into separate functions (TheSuperHackers#2702)
  • unify(ww3d2): Move SortingRenderer to Core (TheSuperHackers#2772)
  • unify(ww3d2): Merge SortingRenderer (TheSuperHackers#2772)
  • perf(gamemessage): Replace GameMessageArgument linked lists with vectors (TheSuperHackers#2700)
  • bugfix(contain): Prevent riders from being added to destroyed container object when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2746)
  • refactor(metaevent): Split MetaEventTranslator::translateGameMessage() into smaller functions (TheSuperHackers#2758)
  • fix(milesaudiomanager): Prevent multithread crashing in MilesAudioManager (TheSuperHackers#2718)
  • refactor(milesaudiomanager): Clean up and simplify MilesAudioManager (TheSuperHackers#2718)
  • bugfix(object): Avoid crash with dangling contain module in Object::onDestroy() when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2747)
  • fix(memory): Fix various memory leaks (2) (TheSuperHackers#2710)
  • unify(shroud): Merge W3DShroud code from Zero Hour and implicitly fix black terrain for one frame on far camera jumps (TheSuperHackers#2757)
  • fix(metaevent): Ignore order in which modifier keys are released to trigger meta events (TheSuperHackers#2577)
  • unify(message): Merge MessageStream, MetaEvent code (TheSuperHackers#2756)
  • bugfix(water): Fix river visuals in black shroud (TheSuperHackers#2749)
  • fix(memory): Fix audio event related memory leaks when pausing the game (TheSuperHackers#2731)