Status: Active documentation Scope: GeneralsXZH primary, Generals secondary when shared Purpose: Consolidate the current project position on LAN readiness, accepted legacy behavior, and future online compatibility constraints before dedicated LAN testing begins.
Current repository evidence indicates that the LAN path is implemented and should be testable once unrelated runtime bugs are resolved.
At this stage, the project should document and preserve proven upstream networking behavior rather than treat every legacy limitation as an immediate blocker. The practical near-term goal is:
- Fix the current non-network bugs that block stable manual testing.
- Run focused two-machine LAN validation.
- Reassess only the issues that reproduce in real LAN sessions.
This means some previously flagged items remain known risks, but are not current blockers for beginning LAN validation.
The repository contains a real LAN implementation, not a stub:
- LAN broadcast discovery via
LANAPI - direct connect by IP
- lobby/game announce flow
- join/leave/start/chat handlers
- transport and frame-sync networking layers
Relevant code areas:
Core/GameEngine/Include/GameNetwork/LANAPI.hCore/GameEngine/Source/GameNetwork/LANAPI.cppCore/GameEngine/Source/GameNetwork/LANAPIhandlers.cppCore/GameEngine/Source/GameNetwork/LANAPICallbacks.cppCore/GameEngine/Source/GameNetwork/Network.cppCore/GameEngine/Source/GameNetwork/Transport.cpp
Several networking behaviors come directly from upstream/legacy assumptions. If upstream behaves correctly in real LAN and online-derived deployments, these should not be reclassified as blockers without a reproduced failure in GeneralsX.
This applies especially to:
- CRC join validation behavior in Zero Hour
- serial duplicate enforcement
- legacy IPv4 broadcast-based LAN discovery
GeneralsX should avoid taking shortcuts that unnecessarily remove GameSpy-related compatibility if that would make future Generals Online integration harder.
Current practical rule:
- If a legacy online component does not affect LAN validation, it is acceptable to defer it.
- If a change would permanently reduce compatibility with future online integration, it should be avoided unless explicitly approved.
The LAN join code shows that CRC mismatch denial exists as a concept, but the relevant Zero Hour join gate is not currently treated as a stop-ship issue for this project cycle.
Reasoning:
- The user reports that upstream behavior is already proven in real network use.
- Generals Online derives from the same upstream line.
- Without reproduced LAN failure in GeneralsX, changing this now would be speculative.
Current conclusion:
- Keep documented as a known inherited behavior.
- Revisit only if manual LAN testing shows a real compatibility or desync problem tied to version/content mismatch.
The duplicate serial gate is disabled in the LAN join flow.
For current LAN validation, this is accepted as non-essential and should not consume engineering time.
Current conclusion:
- Documented as intentionally non-blocking.
- No action required for LAN readiness.
Map availability handling exists and map-related CRC logic exists, but there is not yet enough evidence to justify treating current map validation semantics as broken for LAN.
Current conclusion:
- Treat as inherited upstream behavior unless manual LAN testing proves otherwise.
- If it becomes a real issue, handle it as a focused upstream-compatible patch or dedicated PR later.
The repository currently has smoke/build/runtime validation, but not dedicated two-machine LAN automation.
Current conclusion:
- Manual LAN validation is the correct next step.
- Automated LAN QA can be planned later if real regressions appear.
The build and deploy flows still package GameSpy runtime libraries.
Current conclusion:
- This is acceptable as long as LAN works independently.
- Do not remove or weaken GameSpy compatibility casually, because future Generals Online integration remains desirable.
The embedded WOL browser path is legacy online functionality and is not part of the LAN critical path.
Current conclusion:
- Accept for now as outside immediate LAN scope.
- Revisit when online integration work actually begins.
These items should stay documented, but they do not justify blocking initial LAN validation today.
Questions to answer later with evidence:
- What happens if players differ in map content?
- What happens if players differ in modded assets or INI data?
- Does the game fail early, desync later, or continue normally?
Questions to answer later with evidence:
- Does macOS host/join Linux successfully?
- Does the current transport/timing path behave identically enough in real play?
- Are there any platform-specific disconnects or stalls?
Questions to answer later with evidence:
- Which GameSpy-related pieces are still needed for future Generals Online connectivity?
- Which WOL/GameSpy UI paths can remain stubbed without harming that goal?
- Which legacy services are safe to isolate behind feature flags instead of removing?
Before LAN testing:
- Resolve the unrelated bugs currently blocking stable runtime testing.
- Keep networking code unchanged unless one of those bugs is clearly network-related.
- Preserve current upstream-aligned networking behavior during this stabilization period.
When ready to test LAN:
- Validate host discovery on local network.
- Validate direct connect by IP.
- Validate lobby synchronization.
- Validate game start and 10-15 minutes of gameplay.
- Validate disconnect/leave behavior.
- Intentionally try one mismatch scenario and record the real behavior.
Any future discussion about networking should distinguish clearly between these categories:
- Immediate LAN blockers: reproducible issues that prevent host/join/start/play on a local network.
- Accepted legacy behavior: inherited upstream behavior that is not currently proven broken in practice.
- Future online work: GameSpy/WOL/Generals Online compatibility concerns that should not derail LAN stabilization.
This distinction is necessary to avoid turning speculative cleanup into false blockers.
The current working assumption is:
- LAN should be functional enough to justify manual testing soon.
- Documentation clarity is more urgent than networking refactors right now.
- GameSpy compatibility should be preserved where practical for future online work.
- Real LAN test evidence should drive the next round of networking changes.