Skip to content

Releases: TheSuperHackers/GeneralsGameCode

weekly-2025-11-14

14 Nov 09:12
6cfcc7b

Choose a tag to compare

Changelog

  • fix: Fix incorrect argument used for isInSaveDirectory() (#1849)
  • tweak(network): Add file extension validation to network map transfer (#1818)
  • fix(font): Fix font scaling for large resolutions and implement new font scaling methods (#1466)
  • perf(mapcache): Simplify and improve implementation of MapCache to prevent expensive reoccurring redundant map cache reads (#1775)
  • unify(network): Move most GameNetwork and GameSpy files to Core (#1733)
  • build(memory): Add missing REF macros to always.h for null memory manager (#1830)
  • fix(font): Handle malformed fonts without crashing the game (#1826)
  • fix: Replace strcpy with strlcpy to prevent potential buffer overflows (#1808)
  • build(cmake): Add status message for missing game install path (#1820)
  • refactor: Simplify some if-else condition chains (#1683)
  • fix(debug): Implement reference counter and thread safety in DbgHelpLoader to allow for independent users (#1804)
  • refactor: Remove wrong WWDefines.h file (#1814)
  • tweak(scrolling): Prevent far camera jumps when scrolling while the game stalls (#1661)
  • bugfix(module): Fix missing horde condition of Nationalism and Fanaticism weapon bonuses (#1582)
  • refactor(module): Improve and simplify the implementation of HordeUpdate and related code (#1582)
  • unify(module): Merge HordeUpdate and related code (#1813)

weekly-2025-11-07

07 Nov 09:12
c5d839e

Choose a tag to compare

Changelog

  • bugfix(replay): Fix unrecognized replay files in Generals (#1815)
  • build: Add static_assert's near relevant strcpy calls to prevent buffer overflows (#1806)
  • refactor: Remove superfluous string buffer copies (#1800)
  • fix: Replace strcpy with strlcpy and update length asserts (#1796)
  • build(weekly): Enable complete debug symbols for VC6 weekly builds (#1803)
  • refactor(w3dview): Replace duplicate reference count macros with core library equivalents (#1784)
  • build: Move refcount.h include into WWCommon.h (#1798)
  • refactor(network): Assign name to type enum in LANMessage (#1801)
  • fix(script): Improve string handling of 'Fundamentalist' code hacks (#1797)
  • refactor: Fix misspelled word in comments (#1795)
  • fix(debug): Replace NDEBUG preprocessor with RTS_DEBUG or RTS_RELEASE (#1791)
  • bugfix(gui): Fix incorrect Replay incompatibility messages (#1745)
  • refactor: Replace custom strrchr implementations with standard function (#1782)
  • bugfix(gui): Fix crash when RenderFpsFontSize is set to 0 (#1788)
  • build: Add RETAIL_COMPATIBLE_BUG as build prerequisite for the tunnel healing fix (#1783)
  • tweak(gui): Track money per minute for every player (#1773)
  • refactor(gui): Break up and simplify map list related code in MapUtil (#1758)
  • perf(gui): Eliminate expensive and unnecessary processing when populating the replay and map lists after they are full (#1758)
  • refactor(maputil): Remove unused variables in MapUtil (#1767)
  • unify(maputil): Merge MapUtil code (#1771)
  • unify(imagecollection): Merge ImageCollection code (#1771)
  • bugfix(system): Prevent AMD/ATI driver crash on game launch by front loading the system dbghelp.dll (#1066)
  • feat(gui): Implement money per minute display for local player (#1481)
  • refactor: Normalize all file extensions to lowercase (#1765)
  • refactor: Simplify path string formatting in World Builder (#1759)

weekly-2025-10-31

31 Oct 09:09
5dff203

Choose a tag to compare

Changelog

  • bugfix(weapon): Fix unreliability of historic bonus weapons (#1727)
  • unify(network): Merge GameSpy and related code (#1735)
  • unify(network): Merge GameNetwork and related code (#1735)
  • build: Use more precompiled headers to reduce build time by around 50% (#1740)
  • feat(gui): Implement replay info tooltips in Replay Menu (#1720)
  • bugfix(gui): Always show correct teams for players in the observer control bar (#1753)
  • bugfix(filesystem): Tentatively fix hang in file exist cache (#1751)
  • ci: Update Windows Version for Replay Checker (#1746)
  • refactor: Remove superfluous include guards (#1741)
  • refactor: Simplify string.h includes (#1743)
  • refactor: Simplify stdio.h includes (#1742)
  • bugfix(object): Check whether a bike still has a rider before sniping it to prevent crashing the game (#1537)
  • feat(recorder): Implement replay archive feature (#1703)
  • refactor: Replace all header include guards with pragma once (#1722)
  • refactor: Remove superfluous defines from Language.h (#1739)

weekly-2025-10-24

24 Oct 09:09
84017ea

Choose a tag to compare

Changelog

  • feat(observer): Add button mapping for toggling Replay Observer (#1718)
  • fix(observer): Reset observed player when switching teams (#1715)
  • feat(radar): Save Radar hidden and forced status for each Player to show correct radar states when switching teams (#1715)
  • refactor(scene): Clean formatting, comments in W3DScene (#1710)
  • bugfix(scene): Fix translucent objects drawn without translucency when no occluders are in the scene (#1710)
  • bugfix(anim): Fix elapsed time of object animations (#1656)
  • bugfix: Fix global-buffer-overflow in WorldBuilder (MapObjectProps class) (#1725)
  • bugfix(script): Fix global-buffer-overflow in WorldBuilder scripts (#1724)
  • bugfix(client): Fix crash in WorldBuilder scene (#1723)
  • refactor: Remove _MSC_VER guards around #pragma once (#1726)
  • bugfix(drawable): Fix duplicated terrain decals applied after call to W3DModelDraw::replaceModelConditionState (#1569)
  • bugfix(radar): No longer show hero radar icons in shroud (#1569)
  • bugfix(radar): Refresh radar objects without delay when changing player (#1569)
  • bugfix(ghostobject): Properly keep ghosted and shrouded objects hidden when taking a ghost snapshot or changing the local player (#1569)
  • bugfix(ghostobject): Properly refresh real and ghost objects when changing the local player in the Ghost Object Manager (#1569)
  • fix(ghostobject): Add additional tests in W3DRenderObjectSnapshot::addToScene, W3DGhostObject::removeParentObject for robustness (#1569)
  • bugfix(ghostobject): Fix crash in W3DGhostObjectManager::updateOrphanedObjects (#1569)
  • bugfix(ghostobject): Fix incorrect snapshot update in W3DGhostObject::snapShot (#1569)
  • tweak(ghostobject): Decouple DEBUG_FOG_MEMORY from tracking ghost object states for all players when required (#1569)
  • bugfix(ghostobject): No longer try to restore ghosted objects for a non-local player and simplify code in W3DGhostObject::freeSnapShot, W3DGhostObject::freeAllSnapShots (#1569)
  • feat(client): Enable shroud for observed players (#1569)
  • build(ghostobject): Fix compile error when enabling DEBUG_FOG_MEMORY (#1569)
  • refactor(ghostobject): Simplify code and style in GhostObject, W3DGhostObject (#1569)
  • fix: Revert strlcat on pointer arguments (#1713)
  • feat(filesystem): Recover 481 higher resolution textures in Zero Hour by re-prioritizing textures by size (#1484)
  • refactor: Remove redundant CppMacros.h includes (#1706)

weekly-2025-10-17

17 Oct 09:09
6748e68

Choose a tag to compare

Changelog

  • feat(filesystem): Implement access to shadowed files inside archives (#1483)
  • bugfix(lan): Fix LANAPI init error (#1704)
  • bugfix(behavior): Fix unexpected propaganda influence from contained units with direct Propaganda Tower behavior modules (#1545)
  • bugfix(object): Reward unit experience for kills caused by OCL objects (#1634)
  • bugfix(anim): Fix single animation updates (#1702)
  • fix: Replace wcsncpy with wcslcpy for robustness (#1676)
  • tweak(tree): Decouple tree sway, topple and sink time step from render update (#1652)
  • tweak(shadow): Double 3D shadow buffers in W3DBufferManager (#1691)
  • fix: Replace strncat with strlcat for robustness (#1677)
  • fix: Replace strcat with strlcat for robustness (#1685)
  • build(memory): Add placement new for VC6 compat with GameMemoryNull (#1701)
  • fix: Replace strncpy with strlcpy for robustness (#1533)
  • tweak(lan): Hide computer identity in LAN lobby (#1693)
  • refactor(lan): Simplify LAN player tooltip related code (#1693)
  • refactor(gui): Remove duplicate code in score screen (#1699)
  • bugfix(fps): Fix crashes and ww3d updates in tools (#1688)
  • refactor(gameengine): Move game time related code into new FramePacer class (#1688)
  • tweak(gamelod): Disable changing display settings when clicking the Default button in Options Menu (#1632)
  • refactor(gamelod): Simplify texture reduction code (#1631)
  • bugfix(gamelod): Disable the recommended static lod level for texture reduction to prevent low texture resolution with 'Medium' and 'High' specs (#1630)
  • feat(gamelod): Implement 'Very High' system spec (#1629)
  • tweak(gamelod): Simplify game detail setup for Options Menu (#1628)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::moveAllies (#1645)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::checkForMovement (#1645)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::examineCellsCallback (#1645)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::snapClosestGoalPosition (#1645)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::checkDestination (#1645)

weekly-2025-10-10

10 Oct 09:09
fbb1ca4

Choose a tag to compare

Changelog

  • refactor(utils): Move STLUtils.h to WWLib (#1679)
  • refactor(quotedprintable): Simplify and modernize code in QuotedPrintable (#1659)
  • fix(quotedprintable): Fix assert in AsciiStringToQuotedPrintable during map cache generation (#1659)
  • refactor(network): Extract magic NetPacket character literals into named constants (#1672)
  • bugfix(tunnel): Fix stacked unit healing time inside multiple GLA Tunnel Networks (#1626)
  • tweak(module): Add 'TransferSelection' field to CreateObjectDie INI module to allow transfer selection on object creation (#1665)
  • fix(debug): Fix wrong assert condition in W3DTreeDraw::addToTreeBuffer() (#1663)
  • tweak(fps): Simplify function W3DDisplay::updateAverageFPS() and remove its frame spike filter (#1662)
  • tweak(drawable): Decouple tint update step from render update (#1651)
  • bugfix(network): Fix clearing remote player commands in Connection::clearCommandsExceptFrom() to prevent local player left hanging in game over screen (#1638)
  • bugfix(jetaiupdate): Fix pairs of Jets not waiting for each other before takeoff (#1617)
  • refactor(jetaiupdate): Rename variable in JetPauseBeforeTakeoffState (#1617)

weekly-2025-10-03

03 Oct 09:08

Choose a tag to compare

Changelog

  • refactor(pathfinder): Simplify and improve readability of Pathfinder::getMoveAwayFromPath (#1620)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::findAttackPath (#1620)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::validLocomotorSurfacesForCellType (#1620)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::internalFindPath (#1620)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::internal_findHierarchicalPath (#1619)
  • refactor(pathfinder): Extract functionality Pathfinder::checkCellOutsideExtents (#1619)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::examineNeighboringCells (#1619)
  • refactor(pathfinder): Simplify and improve readability of Pathfinder::checkChangeLayers (#1619)
  • refactor(pathfinder): Simplify and improve readability of PathfindCell::releaseInfo (#1619)
  • feat(ui): Implement simple Latency and FPS display (#1546)
  • tweak(water): Decouple wave movement time step from render update (#1654)
  • tweak(water): Decouple water movement time step from render update (#1653)
  • bugfix(camera): Decouple camera zoom update from logic time (#1655)
  • refactor(terrain): Simplify cloud movement clamping (#1648)
  • refactor: Remove obsolete pragma optimize directives (#1649)
  • bugfix(network): Fix Network stalling state (#1650)
  • bugfix(lan): Always allow players to join a LAN room if there is an open slot (#1637)
  • bugfix(debug): Fix missing toggle for DEMO_TOGGLE_NO_DRAW (#1633)
  • bugfix(buildassistant): Fix Network game mismatch by using the correct player index to check shroud status when placing structures (#1646)
  • fix(shadow): Fix counting of W3DProjectedShadowManager::m_numDecalShadows (#1568)
  • tweak(w3dview): Decouple WWAudioClass update from logic step (#1579)
  • tweak(ww3d): Decouple render update from logic step in DazzleRenderObjClass::Render, TexProjectClass::Pre_Render_Update (#1579)
  • tweak(ww3d): Decouple render update from logic step in RingRenderObjClass::animate, SphereRenderObjClass::animate (#1579)
  • bugfix(drawable): Fix locked color in Drawable::colorTint, EMPUpdate::update (#1579)
  • tweak(heightmap): Decouple cloud render update from logic step (#1579)
  • tweak(anim): Enable interpolation for raw animation updates and couple the legacy non interpolated updates to the ww3d sync (#1579)
  • refactor(anim): Cleanup and simplify animation code a bit (#1579)
  • bugfix(ww3d): Bind the ww3d sync step to the game logic step (#1579)
  • tweak(anim): Decouple anim object render update from logic step (#1579)
  • bugfix(anim): Fix calling Animatable3DObjClass::Single_Anim_Progress more than once a frame (#1579)
  • tweak(segline): Decouple segline render update from logic step (#1579)
  • tweak(snow): Decouple snow render update from logic step (#1579)
  • bugfix(draw): Fix tank draw update logic step time is smaller than render frame time (#1579)
  • refactor(ww3d): Rename WW3D::Get_Frame_Time to WW3D::Get_Sync_Frame_Time (#1579)
  • bugfix(input): Fix cargo units selection hack (#1635)
  • tweak(options): Simplify user options for Cursor Capture (#1541)
  • bugfix(contain): Fix unit attachments being visible in fog after exiting a GLA Tunnel Network (#1522)

weekly-2025-09-26

26 Sep 09:09
5ba1741

Choose a tag to compare

Changelog

  • bugfix(module): GLA Battle Bus can no longer be subdued indefinitely (#1604)
  • bugfix(gui): Consistently show blue health bars for disabled objects (#1622)
  • bugfix(buildassistant): Prevent showing the invalid placement indicator for shrouded objects (#1543)
  • perf(behavior): Optimize loops in ParkingPlaceBehavior (#1618)
  • bugfix(tree): Fix 1 in 10 trees not swaying (#1613)
  • refactor(tree): Simplify W3DTreeDraw related code (#1614)
  • bugfix(input): Fix broken single click command after right mouse double click (#1605)
  • bugfix(module): Fix damage calculation for determining the initial death of GLA Battle Bus (#1603)

weekly-2025-09-22

22 Sep 09:42
1875dbf

Choose a tag to compare

Changelog

  • bugfix(input): Double-clicking to place a building no longer performs double-click selection logic (#1608)
  • refactor(pathfinder): Remove superfluous whitespace and commented code in Pathfinder (#1611)
  • feat(client): Make opacity and shadows of build placement preview objects customizable (#1592)
  • fix(shadow): Fix initial shadow states of draw modules (#1591)
  • bugfix(shadow): Fix missing tree shadow decals when no object shadow decals exist (#1590)
  • bugfix(input): Force stop camera inputs after game end (#1602)
  • bugfix(view): Prevent moving the camera with most user inputs during camera playback in Replay playback (#1599)
  • bugfix(view): Fix camera terrain height adjustment during camera playback in Replay playback (#1598)
  • bugfix(view): Fix camera terrain height adjustment in Replay playback (#1597)
  • bugfix(fps): Fix mouse wheel zoom speed and decouple zoom update from logic step (#1587)