Skip to content

chore(network): disable retail compatibility, move legacy submodules, and update docs#181

Merged
fbraz3 merged 7 commits into
mainfrom
feature/issue-86-lan-rework
Jun 29, 2026
Merged

chore(network): disable retail compatibility, move legacy submodules, and update docs#181
fbraz3 merged 7 commits into
mainfrom
feature/issue-86-lan-rework

Conversation

@fbraz3

@fbraz3 fbraz3 commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Description

This pull request brings multiple network stability, security, and cleanup changes to resolve LAN matchmaking and connectivity issues under macOS and Linux.

Details & Context

  • Issue Association: Related to LAN lobby discovery fails between Linux and macOS builds #86.
  • Network Improvements: Includes various network patches inspired by the https://github.com/GeneralsOnlineDevelopmentTeam/GameClient by @x64-dev repository (e.g., struct packing, buffer overflow checks, and cleaner latency calculation). Note that a deep comparison showed that GeneralsX has already integrated the core of these network stability improvements from upstream (TheSuperHackers) in a clean C++ modern form (using std::vector and std::accumulate), so we successfully avoided unnecessary downgrades.
  • Retail Compatibility: Disabled RETAIL_COMPATIBLE_NETWORKING by default in GameDefines.h, which removes legacy packet size limitations (increasing max UDP payload to 1100 bytes) and resolves command ID overflow disconnect bugs in long matches. An audit report of all such compatibility macros has been added to docs/WORKDIR/audit/RETAIL_COMPATIBILITY.md.
  • Submodule Cleanup: Moved historical reference submodules (fighter19-dxvk-port, jmarshall-win64-modern, and thesuperhackers-main) into references/old-refs/ to clean up the root references/ directory. All documentation cross-references have been updated to reflect their new locations.
  • CodeGraph: Added references/.codegraphignore to prevent code indexing tools from being bogged down by reference submodules.

Changes

  • Core/GameEngine/Include/Common/GameDefines.h: Disable RETAIL_COMPATIBLE_NETWORKING.
  • GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp: Fix CRC mismatch parameters.
  • .gitmodules: Move legacy reference submodules.
  • references/old-refs/: Location of historical reference submodules.
  • docs/WORKDIR/audit/RETAIL_COMPATIBILITY.md: Created macro audit documentation.

fbraz3 added 7 commits June 27, 2026 21:49
… and update docs

- Disables RETAIL_COMPATIBLE_NETWORKING in GameDefines.h.
- Fixes compiler error in GameLogic.cpp CRC mismatch logging.
- Moves fighter19-dxvk-port, jmarshall-win64-modern, and thesuperhackers-main to references/old-refs/.
- Updates documentation cross-references to the moved submodules.
- Adds .codegraphignore for references.
- Adds RETAIL_COMPATIBILITY.md audit report.
…tiplier

Initialize m_timeMultiplier to 1 in the W3DView constructor to prevent garbage memory from disabling FPS limits. Also fix the FrameRateLimit fast-path check to correctly identify UncappedFpsValue (1,000,000) as uncapped by changing the condition from > 1000000 to >= 1000000.
…nerals

Backport LAN lobby configured IP preference honoring and diagnostics from Zero Hour (GeneralsMD). Also backport CRC mismatch and timeout diagnostic logging to stderr to help diagnose network synchronization failures in Generals base game.
@fbraz3 fbraz3 merged commit 7e3ea1d into main Jun 29, 2026
8 checks passed
@fbraz3 fbraz3 deleted the feature/issue-86-lan-rework branch June 29, 2026 01:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant