This commit addresses several critical issues reported by the user to improve the stability and synchronization of the Kingdoms and Castles multiplayer mod.
Key changes include:
- Improved Lobby Stability: Fixed NullReferenceException during lobby entry.
- Enhanced Session Cleanup: Refined disconnection logic to prevent Steamworks shutdown and enable seamless new game starts without client restarts.
- Optimized Building Synchronization: Implemented a throttling mechanism for building state updates to reduce network traffic.
- Resolved Villager Freezing: Introduced a null check for destroyed observed buildings to prevent synchronization cascades.
- Fixed Map Desynchronization: Ensured the host reliably sends the world seed to all clients before game start.
- Reliable Save Game Transfer: Switched save file chunk transfer to reliable messaging mode to prevent incomplete save loads.
- Addressed Compilation Issues: Resolved all compilation errors and warnings that arose from the implemented fixes.
Fixed issues:
1. Server now stops when host returns to menu (Main.cs:342-356)
- Notifies clients with "Host disconnected" modal
- Prevents server from running in background
2. PlayerAddBuildingHook NullReferenceException (Main.cs:762-806)
- Added comprehensive null checks for reflection fields
- Added array bounds validation for landMass index
- Added registry initialization checks
- Fixes 98% building placement failure rate
3. IndexOutOfRangeException in WorldPlace (WorldPlace.cs:167-183)
- LandMassNames array auto-expands when needed
- Defensive code prevents index out of bounds errors
Updated README.md:
- Removed fixed issues from bug tracker
- Added "Fixed Issues" section documenting changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
A README-ben leírt bugok pontos helyének és okának meghatározása
a kódbázisban, javítási javaslatokkal:
DOKUMENTÁLT HIBÁK:
1. Server nem áll le menüváltáskor
- Hely: KCServer.cs (hiányzó logika)
- Ok: OnApplicationQuit csak app bezáráskor hívódik
- Javítás: TransitionToHook-ban server.Stop() hívás
2. PlayerAddBuildingHook NullReferenceException (LEGKRITIKUSABB)
- Hely: Main.cs:764
- Ok: landMassBuildingRegistry.data[landMass] null/hibás indexelés
- Eredmény: 55/56 épület fail (98%!)
- Javítás: NULL check + array méret ellenőrzés
3. IndexOutOfRangeException WorldPlace-ben
- Hely: WorldPlace.cs:167-168
- Ok: LandMassNames tömb túl kicsi
- Okozó: #2 hiba miatt building nem adódik hozzá → tömb nem nő
- Javítás: Védekező kód + #2 javítása
ÖSSZEFÜGGÉSEK:
A három hiba cascade failure-t okoz: server fut menüben →
packeteket fogad → building placement fail (#2) →
IndexOutOfRange (#3) → 98% épület nem jelenik meg!
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Új szekció hozzáadva a dokumentációs hibák részletes leírásával:
- Nyelvtani hibák (hiányzó ékezetek 6 helyen)
- Strukturális hiányosságok (bevezető, útmutatók)
- Konzisztencia problémák
A hibák NEM lettek javítva, csak dokumentálva, hogy hol találhatók
és hogyan kell őket javítani. Prioritások meghatározva.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
KRITIKUS: 55/56 (98%) building placement FAILS!
- 56 BUILDING PLACEMENT START
- Only 1 BUILDING PLACEMENT END
- 55 "Error in add building hook" NullReferenceException
- 9 IndexOutOfRangeException
- 2 StartGame.Start() crashes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
KRITIKUS bugs added:
- Server nem all le amikor host kilep menube
- Kliens nem lesz kidobva host kilepesekor
- Packetek erkeznek menu-ben
Building placement errors:
- PlayerAddBuildingHook NullReferenceException (~50+ occurrences)
- IndexOutOfRangeException in WorldPlace
Added log analysis timeline from 15:39-15:56 session.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Multiple Keeps can be placed on same island, causing original player to lose their Keep.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>