Conversation
…ards - NetworkConnection: add m_replicationMutex lock when iterating m_replicatedEntities in HandleDisconnect and CheckConnectionTimeouts; move m_clientAddresses.erase inside m_clientsMutex scope - FBXImporter: add sanity limits on string length (16 MB) and array count (64M elements) to prevent OOM from malformed files; use size_t casts for multiplication to prevent overflow - EditorTheme: add exception logging to ExportTheme/ImportTheme catch blocks instead of silently returning false - JSONSceneSerializer: remove partial file on write failure and log error - ScriptSandbox: add default case to security level switch (falls back to Strict with a warning) - AnimationSystem: add default case to IK type switch with warning - FormationSystem: add default case to formation type switch with warning - MaterialConsoleOps: replace .at() with .find() to prevent std::out_of_range exception https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
- Profiler: check HRESULT return values from CreateQuery; reset query ComPtrs and return early on failure to prevent null pointer dereference - GamepadInput: guard NormalizeTrigger against division by zero when trigger threshold equals 1.0 https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
- SparkPakWriter: check all fwrite() return values via writeBytes helper; log and close file on any write failure to prevent silent archive corruption (disk full, permission errors, etc.) - Terrain: validate seekg/read success when loading heightmap BMP data; log and return E_FAIL on failure instead of using garbage data - PrefabAsset: check file.good() after write sequence to detect stream errors before reporting success https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
Contributor
Code Coverage (GCC + lcov) |
New system that periodically scans ECS entities for impossible state combinations — analogous to MMO server-side movement validation that detects desync bugs (e.g., "swimming on land"). Follows the existing detector pattern (singleton, Init/Update/Shutdown, console commands, config struct, shipping-safe macro). 18 validation rules across 7 categories: - Health: isDead vs health, deathProcessed consistency, AI death sync - Physics: static body velocity, dynamic body zero mass - AI: combat/fleeing without target, dead AI with target - Interaction: destroyed with uses, expired cooldown state - Network: duplicate networkIDs - Ragdoll: animated mode with blend weight - Destructible: health/stage desync, cover point over-occupancy Timer-based checks (default 1s interval, not per-frame). Game modules can register additional domain-specific rules via AddRule(). Console commands: state.status, state.rules, state.violations, state.config https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
Each game module now registers domain-specific state validation rules during initialization via InvalidStateDetector::AddRule(): - SparkGameFPS (2): dead entity moving, dead AI in combat/alert - SparkGameMMO (2): dead network entity unprocessed, health over max - SparkGameRPG (2): dead NPC patrolling, negative health - SparkGameARPG (2): dead mob with target, dead entity high-speed - SparkGameRTS (2): dead unit attacking, idle unit with target - SparkGameRacing (1): static body with velocity - SparkGamePlatformer (1): dead entity moving horizontally - SparkGameOpenWorld (2): dead wildlife patrolling, zero maxHealth - SparkGame (1): health significantly exceeding maxHealth - SparkGameVisualScript (1): dead entity with unprocessed death Total: 16 game-module rules + 18 core engine rules = 34 rules https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
Replace em-dash with comma in RTS.IdleWithTarget rule description to avoid rendering issues in diff views. https://claude.ai/code/session_014UVmjuGivyfHqgF5UhWKei
Contributor
Code Coverage (GCC + lcov) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.