Releases
weekly-2026-08-21
Compare
Sorry, something went wrong.
No results found
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::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 )
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 )
refactor: Remove the W3DMPO class to remove clutter and unnecessary vtables (TheSuperHackers#2607 )
refactor: Split preserve retail behavior flags (TheSuperHackers#2691 )
unify(ww3d2): Merge dx8fvf, dx8indexbuffer, dx8vertexbuffer (TheSuperHackers#2690 )
refactor: Add override keyword to virtual function overrides in Core code (2) (TheSuperHackers#2603 )
fix(heightmap): Properly draw larger terrain area on low camera pitch (TheSuperHackers#2677 )
chore(heightmap): Implement HeightMapRenderObjClass::setTerrainDrawSize() to set custom draw sizes (TheSuperHackers#2677 )
perf(heightmap): Update terrain tiles only if the terrain draw origin has really changed (TheSuperHackers#2677 )
bugfix(heightmap): Do full terrain update after new origin position was set (TheSuperHackers#2677 )
chore(heightmap): Remove useless logic in HeightMapRenderObjClass::updateCenter() (TheSuperHackers#2677 )
tweak(view): Align the camera far clip plane with the actual terrain draw size (TheSuperHackers#2677 )
refactor: Add override keyword to virtual function overrides in Zero Hour code (2) (TheSuperHackers#2605 )
refactor: Add override keyword to virtual function overrides in Generals code (2) (TheSuperHackers#2604 )
bugfix(gamelogic): Modules now cease updating when disabled by non-whitelisted disabled types (TheSuperHackers#2458 )
fix(lookat): Fix mouse anchor and direction issue for camera pitch (TheSuperHackers#2681 )
bugfix(controlbar): Show shortcut special powers in Generals again (TheSuperHackers#2680 )
bugfix(veterancy): Disable audiovisual cues for ejected veteran pilots (TheSuperHackers#2643 )
bugfix(player): Fix transferred in-progress upgrades (TheSuperHackers#2396 )
tweak(gamemessage): Remove unused MSG_AREA_SELECTION message from game logic (TheSuperHackers#2667 )
build(docker): Set correct targets in docker-build.sh (TheSuperHackers#2678 )
unify(gadget): Move Gadget files to Core (TheSuperHackers#2672 )
unify(gadget): Merge Gadget and related code from Zero Hour (TheSuperHackers#2672 )
bugfix(watertracks): Correct the path handling for .wak files in the WaterTracksRenderSystem (TheSuperHackers#2634 )
fix(aiupdate): Fix XFER and CRC of AIUpdateInterface::m_guardTargetType (TheSuperHackers#2662 )
chore(player): Remove unused GameMessage argument from Player member functions (TheSuperHackers#2669 )
bugfix(aiplayer): Preserve scaffold health when AI building completes (TheSuperHackers#1768 )
chore(filesystem): Implement getExtension() and TheFileSystem::removeExtension() functions (TheSuperHackers#2635 )
chore(string): Implement find() and reverseFind() functions in UnicodeString (TheSuperHackers#2635 )
chore(string): Remove unused removeExtension() function from GameState.cpp (TheSuperHackers#2635 )
tweak(gamemessage): Remove unused argument of MSG_DESTROY_SELECTED_GROUP (TheSuperHackers#2664 )
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 )
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 )
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 )
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 )
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 )
bugfix(battleplan): Multiple battle plans are now always applied correctly (TheSuperHackers#2256 )
chore: Remove debug code for KRIS_BRUTAL_HACK_FOR_AIRCRAFT_CARRIER_DEBUGGING (TheSuperHackers#2478 )
perf(pathfinder): Implement conditional reverse insertion sorting algorithm to reduce cost of long pathfinding by 50-66% (TheSuperHackers#2450 )
fix(pathfinder): Remove invalid retail compatible compilation conditional (TheSuperHackers#2477 )
refactor(bitflags): Simplify functions in BitFlags class (TheSuperHackers#2472 )
refactor(bitflags): Simplify conditions with testForAny, testForAll and remove unexpected assert in BitFlags::testForAll (TheSuperHackers#2476 )
feat(headless): Implement ParticleSystemManagerDummy (TheSuperHackers#2247 )
feat(headless): Implement ViewDummy (TheSuperHackers#2246 )
feat(headless): Implement GhostObjectManagerDummy (TheSuperHackers#2244 )
feat(rendering): Add support for multi sample anti-aliasing (MSAA) (TheSuperHackers#2454 )
ci(actions): Update GitHub Actions to latest versions and fixed hashes (TheSuperHackers#2377 )
feat(texturefilter): Extend texture filter with new filtering modes; none, point, bilinear, trilinear, anisotropic (TheSuperHackers#2423 )
chore(texturefilter): Cleanup code formatting and remove commented blocks (TheSuperHackers#2423 )
refactor: Add override keyword to virtual function overrides in GameEngine (2) (TheSuperHackers#2392 )
fix(docker): Fix docker WORKDIR ownership (TheSuperHackers#2459 )
bugfix(contain): Occupants killed by their containers now kill their occupants (TheSuperHackers#2239 )
fix(logic): Improve validation of MSG_SET_RALLY_POINT in GameLogicDispatch (TheSuperHackers#2441 )
fix(logic): Improve validation of MSG_NEW_GAME in GameLogicDispatch (TheSuperHackers#2440 )
fix(logic): Improve handling of ENABLE_RETALIATION_MODE in GameLogicDispatch (TheSuperHackers#2408 )
fix(logic): Improve validation of MSG_DO_SPECIAL_POWER and variants in GameLogicDispatch (TheSuperHackers#2380 )
bugfix(rallypoint): Make healed units follow building rally point on exit (TheSuperHackers#1822 )
bugfix(supply): Implement proportional supply bonus scaling to fix too generous money deposits for partial supply drops (TheSuperHackers#2431 )
bugfix(smudge): Fix Microwave Heat Haze blackout on forced AA (TheSuperHackers#2374 )
refactor: Add override keyword to virtual function overrides in GameEngine (TheSuperHackers#2391 )
unify(logic): Merge game loading related variables and functions from Zero Hour (TheSuperHackers#2444 )
fix(pathfinder): Implement robust forward insertion sort for PathfindCell::putOnSortedOpenList() (TheSuperHackers#2432 )
refactor(netpacket): Simplify NetPacket functions for packet buffer writes and size tests (TheSuperHackers#2329 )
refactor(netcommandmsg): Rename NetCommandMsg::getPackedByteCount to NetCommandMsg::getSizeForNetPacket (TheSuperHackers#2329 )
refactor(netcommandmsg): Simplify net messages NetAckBothCommandMsg, NetAckStage1CommandMsg, NetAckStage2CommandMsg (TheSuperHackers#2329 )
chore(network): Add new NetAckCommandMsg (TheSuperHackers#2329 )
fix(network): Fix constness around NetCommandMsg (TheSuperHackers#2329 )
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 )
You can’t perform that action at this time.