Skip to content

Releases: tintinhamans/GeneralsGameCode

weekly-2026-03-13

Choose a tag to compare

@github-actions github-actions released this 13 Mar 09:18
d195e3b

Changelog

  • bugfix(namekey): Remove hardcoded NameKeyIDs from dummy strings to work with modded files (TheSuperHackers#2349)
  • ci(validate): Update PR validation workflow and valid tags (TheSuperHackers#2426)
  • unify(pathfinder): Move AIPathfind.h and AIPathfind.cpp to Core (TheSuperHackers#2428)
  • chore(replays): Update GeneralsReplays reference to latest (TheSuperHackers#2424)
  • fix(lookat): Fix mouse anchor and direction issue for camera pitch (TheSuperHackers#2421)
  • bugfix(audio): Decouple Particle Cannon audio spawn point from visual beam to restore correct position and fix quiet beam audio (TheSuperHackers#2415)
  • unify(pathfinder): Merge Pathfinder::moveAllies and Pathfinder::findAttackPath from Zero Hour (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::moveAlliesDestinationCallback, ::processHierarchicalCell, ::findClosestPath, ::updateGoal (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::checkForPossible(), ::processPathfindQueue(), ::examineNeighboringCells(), ::buildHierarchicalPath() (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::clientSafeQuickDoesPathExist() and Pathfinder::clientSafeQuickDoesPathExistForUI() from Zero Hour (TheSuperHackers#2341)
  • refactor(random): Simplify code in RandomValue (TheSuperHackers#2370)
  • unify(pathfinder): Merge PathfindLayer::doDebugIcons(), Pathfinder::Classify functions, Pathfinder::checkDestination() and Pathfinder::checkForMovement() (TheSuperHackers#2414)
  • bugfix(heightmap): Fix zagged shapes on steep diagonal terrain (TheSuperHackers#2406)
  • refactor(view): Split contents of W3DView::buildCameraTransform(), W3DView::calcCameraAreaConstraints() (TheSuperHackers#2403)
  • bugfix(gunship): Select Spectre Gunship only on the client that controls the unit (TheSuperHackers#2402)
  • bugfix(ai): Reset jet locomotor to normal when attack locomotor timer expires (TheSuperHackers#2397)
  • build(cmake): Append RTS_BUILD_OUTPUT_SUFFIX to installable targets (TheSuperHackers#2378)
  • unify(pathfinder): Merge PathfindZoneManager() (TheSuperHackers#2404)
  • chore(pathfinder): Remove unused forced refresh calling in PathfindZoneManager::calculateZones() (TheSuperHackers#2404)
  • refactor: Add compatibility macros for override and final keywords and rename conflicting identifiers (TheSuperHackers#2389)
  • refactor(random): Reorder RandomValue function definitions (2) (TheSuperHackers#2405)
  • refactor(dozeraiupdate): Streamline dozer task cancellation logic (TheSuperHackers#2387)
  • refactor(random): Reorder RandomValue function definitions (TheSuperHackers#2384)
  • feat: Implement math CRC calculation utility for logic mismatch detection purposes (TheSuperHackers#2100)
  • bugfix(pathfinder): Fix uninitialized variable in Pathfinder::tightenPathCallback to prevent mismatches (TheSuperHackers#2309)
  • unify(pathfinder): Remove unused argument from PathfindZoneManager::markZonesDirty() (TheSuperHackers#2381)
  • unify(pathfinder): Merge PathfindCell class from Zero Hour (TheSuperHackers#2381)
  • unify(pathfinder): Merge CellTypes and CELL_BRIDGE_IMPASSABLE code from Zero Hour (TheSuperHackers#2381)
  • unify(pathfinder): Merge PathfindCell::setTypeAsObstacle() and PathfindCell::removeObstacle() from Zero Hour (TheSuperHackers#2381)
  • chore(pathfinder): Remove legacy Pathfind debug code from Generals (TheSuperHackers#2381)
  • bugfix(radar): Fix incorrect 2D distance calculation in Radar::tryEvent (TheSuperHackers#2368)
  • refactor(battleplan): Split data off of BattlePlanBonuses class (TheSuperHackers#2335)
  • bugfix(audio): Fix range volume fade of 3D sounds and make it configurable in AudioSettings.ini (TheSuperHackers#2369)
  • fix(view): Implement state for user controlled camera to properly distinguish between scripted and user camera (TheSuperHackers#2363)
  • fix(network): Move TransportMessageHeader to before it is used in NetworkDefs.h (TheSuperHackers#2382)
  • ci(vcpkg): Fix recurring binary cache invalidation from runner image updates (TheSuperHackers#2371)
  • unify(pathfinder): Merge local variable optimizations in PathfindZoneManager::calculateZones() from Zero Hour (TheSuperHackers#2367)
  • fix(pathfinder): Add missing logical block for zone type optimization in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Remove register variable and use member variable directly in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change while loops to for loops in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change open braces to be K&R style in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change leading spaces to leading tabs in PathfindZoneManager:calculateZones() (TheSuperHackers#2360)
  • tweak(menu): Show mouse and menu immediately when shellmap is disabled (TheSuperHackers#2356)
  • fix(logic): Fix potential null pointer deferences in GameLogicDispatch (TheSuperHackers#2354)
  • tweak(random): Replace InitGameLogicRandom with InitRandom for consistent client and audio seeds (TheSuperHackers#2339)
  • bugfix(audio): Fix particle cannon being inaudible after saveload (TheSuperHackers#2302)
  • fix(headless): Use ParticleSystemManager update instead of reset in headless replay (TheSuperHackers#2219)
  • refactor(view): Change scripted state booleans to enum flags in W3DView (TheSuperHackers#2357)
  • bugfix(partition): Fix inconsistent mine collision behaviour (TheSuperHackers#2208)
  • refactor(view): Simplify code to set location for Replay Camera (TheSuperHackers#2353)
  • fix(view): Call View::forceRedraw() instead of doing tricks to refresh the camera normally (TheSuperHackers#2352)
  • refactor(lookat): Simplify pitch, fov, zoom logic in LookAtTranslator (TheSuperHackers#2351)
  • fix(object): Save and load game object list in correct order (TheSuperHackers#2161)
  • bugfix(registry): Prioritize HKEY_CURRENT_USER registry reads and writes over HKEY_LOCAL_MACHINE to prevent inaccessible data (TheSuperHackers#1844)
  • refactor: Remove redundant void argument from functions (TheSuperHackers#2345)
  • refactor: Simplify unconditional asserts from DEBUG_ASSERTCRASH to DEBUG_CRASH (TheSuperHackers#2343)
  • refactor(preferences): Move OptionPreferences class into separate files (TheSuperHackers#1840)
  • refactor(language): Cleanup GlobalLanguage code and add function GlobalLanguage::getResolutionFontSizeScale() (TheSuperHackers#2338)
  • bugfix(skirmish): Prevent mismatch in Replay playback by restoring correct game seed after restarting a Skirmish game (TheSuperHackers#2270)
  • refactor(pathfinder): Remove unused function Pathfinder::pathDestination() (TheSuperHackers#2308)
  • unify(client): Move several GameClient files to Core (TheSuperHackers#2337)
  • unify(client): Merge DisplayString, GameText, GlobalLanguage, SelectionInfo code (TheSuperHackers#2337)
  • bugfix(player): Fix rounding inaccuracies with money awarded by Cash Bounty (TheSuperHackers#2330)
  • bugfix(behavior): Prevent fallen Angry Mob members from respawning at the Barracks after loading a save (TheSuperHackers#2314)
  • refactor(pathfinder): Cleanup retail compatible insertion sort code (TheSuperHackers#2331)
  • refactor(pathfinder): Implement PathfindCellList class for the pathfindcell closedList (TheSuperHackers#2327)
  • refactor(pathfinder): Implement PathfindCellList class for the pathfindcell openList (TheSuperHackers#2327)
  • bugfix(victory): Save victory status to prevent early exits from resulting in defeat in network matches (TheSuperHackers#2292)
  • fix(netpacket): Fix incorrect improbable return value in NetPacket::GetBufferSizeNeededForCommand() (TheSuperHackers#2328)
  • unify(gui): Move several GUI related files to Core (TheSuperHackers#2332)
  • unify(loadscreen): Merge LoadScreen and related code (TheSuperHackers#2332)
  • fix(loadscreen): Fix missing pointer initialization in constructors of MultiPlayerLoadScreen, GameSpyLoadScreen and remove superfluous code from destructors of LoadScreen classes (TheSuperHackers#2332)
  • unify(mouse): Move Mouse, Keyboard files to Core (TheSuperHackers#2334)
  • unify(mouse): Merge Mouse, Keyboard code (TheSuperHackers#2334)
  • bugfix(battleplanupdate): Prevent using the Bombardment Cannon while switching Battle Plans (TheSuperHackers#2324)
  • bugfix(behavior): Only detonate Bunker Busters if the missile reaches its destination (TheSuperHackers#2321)
  • tweak(commandline): Skip intro logo with -quickstart and enable -nologo, -noShellAnim in Release builds (TheSuperHackers#2266)
  • bugfix(radar): Show Hero Radar icons in Containers and Tunnels again (TheSuperHackers#2189)
  • fix(connection): Fix unsafe Player ID usage in ConnectionManager, DisconnectManager (TheSuperHackers#2305)
  • bugfix(particlesys): Restore Particle System IDs on save load before registering to ParticleSystemManager (TheSuperHackers#2316)
  • 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)
  • bugfix: Remove superfluous CD checks and related code (TheSuperHackers#2261)
  • refactor(netpacket): Simplify initialization of net packet field types (TheSuperHackers#2288)
  • refactor(netpacket): Streamline order of net packet fields (TheSuperHackers#2288)
  • fix(draw): Recover tread debris effects for W3DTankTruckDraw (TheSuperHackers#2251)
  • refactor(draw): Rename emitters functions in W3DTankDraw, W3DTankTruckDraw, W3DTruckDraw (TheSuperHackers#2251)
  • bugfix(worldbuilder): Fix script condition selection when editing newly created condition (TheSuperHackers#2289)
  • bugfix(view): Recalculate camera area constraints when toggling Control Bar or changing Pitch, FOV (TheSuperHackers#2291)
  • chore(gui): Implement function GadgetTextEntrySetMaxLen() (TheSuperHackers#2290)
  • bugfix(contain): Prevent undefined behaviour when a dead unit enters a container (TheSuperHackers#2258)
  • bugfix(ocl): Fix uninitialized variable in ObjectCreationList to avoid mismatches (TheSuperHackers#2096)
  • bugfix(projectile): Fix out-of-bounds access in DumbProjectile which causes mismatch with very high speed weapons at small hit distances (TheSuperHackers#2087)
  • bugfix(pathfinder): Fix uninitialized variable in Pathfinder::classifyFence() and possible source of mismatches in Retail-compatible builds (TheSuperHackers#1748)
  • fix(netpacket): Protect text length value from overflowing in NetPacketChatCommand, NetPacketDisconnectChatCommand (TheSuperHackers#2284)
  • fix(netcommandmsg): Fix new/delete mismatch in NetWrapperCommandMsg (TheSuperHackers#2287)
  • refactor(netpacket): Use more consistent names for packed net packet structs (TheSuperHackers#2283)
  • refactor(netpacket): Remove duplicate p...
Read more

weekly-2026-02-13

Choose a tag to compare

@github-actions github-actions released this 13 Feb 09:22
7ce6eeb

Changelog

  • feat(lanapi): Add LANAPI function to find LAN game with host IP address (TheSuperHackers#2249)
  • fix(update): Extend the height of the USA Particle Cannon laser beam for enormous camera heights (TheSuperHackers#2220)
  • tweak(pathfinder): Add audio event and message to announce pathfinding failover (TheSuperHackers#2242)
  • refactor(audio): Replace AudioManager's loseFocus/regainFocus with reason-based mute/unmute functions (TheSuperHackers#2236)
  • fix(update): Fix value initialization of ProjectileStreamUpdate::m_projectileIDs (TheSuperHackers#2248)
  • fix(draw): Replace ParticleSystem pointers with ParticleSystemID for safe particle lookups in W3DTrankDraw, W3DTankTruckDraw, W3DTruckDraw (TheSuperHackers#2235)
  • refactor(draw): Simplify particle effects code in W3DTankDraw, W3DTankTruckDraw, W3DTruckDraw (TheSuperHackers#2235)
  • feat(version): Add functions to get Git short hash string (TheSuperHackers#2243)
  • refactor(lanapi): Make LANMessage accessible in LANAPI (TheSuperHackers#2241)

weekly-2026-02-06

Choose a tag to compare

@github-actions github-actions released this 06 Feb 09:21
f58c2fd

Changelog

Read more

weekly-2025-12-26

Choose a tag to compare

@github-actions github-actions released this 26 Dec 09:11
5dba2a0

Changelog

weekly-2025-11-14

Choose a tag to compare

@github-actions github-actions released this 14 Nov 09:10
c5d839e

Changelog

weekly-2025-11-07

Choose a tag to compare

@github-actions github-actions released this 07 Nov 09:07
5dff203

Changelog

weekly-2025-10-31

Choose a tag to compare

@github-actions github-actions released this 31 Oct 09:08
87adc1a

Changelog

weekly-2025-10-24

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:08
d83c8c9

Changelog

  • bugfix(anim): Fix elapsed time of object animations (TheSuperHackers#1656)
  • bugfix: Fix global-buffer-overflow in WorldBuilder (MapObjectProps class) (TheSuperHackers#1725)
  • bugfix(script): Fix global-buffer-overflow in WorldBuilder scripts (TheSuperHackers#1724)
  • bugfix(client): Fix crash in WorldBuilder scene (TheSuperHackers#1723)
  • refactor: Remove _MSC_VER guards around #pragma once (TheSuperHackers#1726)
  • bugfix(drawable): Fix duplicated terrain decals applied after call to W3DModelDraw::replaceModelConditionState (TheSuperHackers#1569)
  • bugfix(radar): No longer show hero radar icons in shroud (TheSuperHackers#1569)
  • bugfix(radar): Refresh radar objects without delay when changing player (TheSuperHackers#1569)
  • bugfix(ghostobject): Properly keep ghosted and shrouded objects hidden when taking a ghost snapshot or changing the local player (TheSuperHackers#1569)
  • bugfix(ghostobject): Properly refresh real and ghost objects when changing the local player in the Ghost Object Manager (TheSuperHackers#1569)