Add comprehensive XML documentation throughout the entire Spark Engine project#1
Merged
Krilliac merged 6 commits intoAug 8, 2025
Conversation
Co-authored-by: Krilliac <7993979+Krilliac@users.noreply.github.com>
…ut modules Co-authored-by: Krilliac <7993979+Krilliac@users.noreply.github.com>
Co-authored-by: Krilliac <7993979+Krilliac@users.noreply.github.com>
Co-authored-by: Krilliac <7993979+Krilliac@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add comprehensive XML documentation through out the entire project
Add comprehensive XML documentation throughout the entire Spark Engine project
Aug 8, 2025
Owner
|
@copilot change year in comments from 2024 to 2025 |
Krilliac
marked this pull request as ready for review
August 8, 2025 16:54
Co-authored-by: Krilliac <7993979+Krilliac@users.noreply.github.com>
Contributor
Author
Updated the year from 2024 to 2025 in all XML documentation headers across 20 header files throughout the entire Spark Engine project. Changes applied to @Date fields in Core, Graphics, Game, Camera, Input, Audio, Physics, Projectiles, and Utils modules. (8e38a65) |
Krilliac
pushed a commit
that referenced
this pull request
Mar 7, 2026
Updated recommendation #1 to focus on adding clang-tidy and CI enforcement (since .clang-format already exists). Updated #10 to focus on wiring up the existing settings.ini to engine initialization instead of creating a new config system. https://claude.ai/code/session_016WEGmnpixtBfgfUyUUPiu7
Krilliac
pushed a commit
that referenced
this pull request
Mar 20, 2026
Two parallelism/GPU-driven rendering features from the 11-engine analysis: 1. DrawIndirect/DispatchIndirect API — Add DrawInstancedIndirect, DrawIndexedInstancedIndirect, and DispatchIndirect to IRHICommandList. Implemented across all 6 backends (D3D11, D3D12, Vulkan, OpenGL, Metal, NullRHI) plus the RHIAdapter convenience wrapper. Enables GPU-driven rendering where a compute shader fills draw args (The Forge/bgfx pattern). 2. Parallel frustum culling — Add ParallelBatchCull to Frustum class that dispatches AABB visibility tests across JobSystem worker threads (Ogre-Next pattern). Falls back to single-threaded for small counts or when JobSystem is unavailable. WorkerThreadPool (#1) was already implemented as Spark::JobSystem — skipped. 17 new tests across 2 test files, all passing. https://claude.ai/code/session_011xuhYo3mDi9S4ajGdWZZ5K
This was referenced Mar 30, 2026
This was referenced Apr 6, 2026
This was referenced Apr 7, 2026
This was referenced Apr 9, 2026
This was referenced Apr 17, 2026
Krilliac
added a commit
that referenced
this pull request
Jul 6, 2026
…ct 1) Foundation for the Unity/Unreal-style editor effort: canonical engine-ECS scene model, reflection-driven scene serializer shared by editor+runtime, editor renders the real ECS World, Inspector/Hierarchy repointed to real components, full-fidelity save/load. Decomposes the larger effort into 4 sequenced sub-projects; this spec is #1 (the round-trip). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Krilliac
added a commit
that referenced
this pull request
Jul 6, 2026
…ehind enter-world (T6 + T4-review #1) Task 6 (WIRING) of the W5 onboarding plan: - TFGameContext (TFTypes.h, FROZEN/additive): add loginFlow pointer + inWorld bool/InWorld() accessor. - Main.cpp (FROZEN/additive): construct + publish + boot TFDatabase -> TFAccountSystem -> TFCharacterSystem -> TFLoginFlow after every W1-W4 system; TFDatabase::Open + SetDatabase wired directly since those three are plain core-logic classes with no uniform Initialize(ctx,events) lifecycle. OnImGui renders TFLoginFlow unconditionally and gates HUD/map/spawn/ scoreboard behind InWorld() in addition to HasLocalPlayer(). - TFClientNet: onboarding reply handlers (OnLoginReply/OnRegisterReply/ OnCharListReply/OnCharCreateReply/OnCharDeleteReply/OnWorldWelcome) now call m_ctx->loginFlow directly instead of stashing for a poll; OnWorldWelcome sets m_ctx->inWorld=true (WorldWelcome is the gated enter-world signal). Input suppression (uiOpen) now also honors loginFlow->IsOpen(). - TFLoginFlow: removed the T5 interim getter-poll (PollNetReplies + m_pendingTickElapsed) now that replies are pushed directly; reply sinks clear m_pending themselves. - TFSpawnScreen: auto-open gated behind InWorld() so it never races TFLoginFlow's login/char-select screens. - TFProgressionSystem: re-keyed persistence — SaveNow() additionally calls TFCharacterSystem::PersistProgress for every player with an active character (TFServerSim::ActiveCharacterOf), on top of its existing PlayerId-keyed in-session state. CRITICAL SECURITY FIX (T4-review #1): the enter-world gate previously only withheld TF_WorldWelcome; HandleClientInput/HandleSpawnRequest/ HandleFireEvent/HandleFactionSelect never verified the sender had entered the world, so a modified network client could send those directly and play as an unauthenticated ghost. Centralized the fix in TFServerSim::RouteClientMessage: ClientInput/SpawnRequest/FireEvent/ FactionSelect now require m_enteredWorld.contains(sender). Both the socket route (RegisterNetHandlers) and the listen-host/standalone loopback route (TFClientNet::RouteLoopback, under ENABLE_NETWORKING) now dispatch these four ids through RouteClientMessage instead of calling handlers/systems directly, so the gate applies identically to networked clients and the local host (kTFLocalHostPlayer) — local play now requires completing login -> enter-world via TFLoginFlow, same as a networked client. Bots (TFBotSystem) call TFPlayerSystem/TFServerSim/TFWeaponSystem directly and never go through RouteClientMessage, so they are unaffected. Disconnect cleanup flushes the departing session's active character's progress before erasing it. DESIGN.md gains a "W5 — Onboarding" section (corrected against the shipped code, not the stashed draft, notably: no uniform Initialize lifecycle for TFDatabase/TFAccountSystem/TFCharacterSystem, plus the security-gate and progression re-key notes). Build: SparkGameMMOFPS + SparkTests both green (0 errors). Full suite: 5819 passed / 0 failed / 1 known-flaky warned (5820 total, matching baseline), including TestTFOnboarding.cpp's 6 onboarding unit tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2CpjawAtFXB7GUu6nGSex
Krilliac
added a commit
that referenced
this pull request
Jul 6, 2026
… disconnect + gate vehicle/squad verbs (final-review #1,#2,#3) Wires up TFProgressionSystem::ServerLoadCharacter/ClearPlayer (added by a prior pass) into TFServerSim: HandleEnterWorld now seeds runtime xp/rank/flux from the durable TFCharacterRecord before any spawn/save can run, closing a silent data-loss bug where returning characters always restarted at rank 1/0xp/0flux. PollClientJoinsLeaves now clears the runtime record after its existing disconnect flush, closing a leak where a recycled PlayerId inherited the previous occupant's progression. VehicleEnter/VehicleExit/AegisDeploy/ SquadMsg were direct routes bypassing the RouteClientMessage enter-world gate; they now go through the same choke point (and gated switch) as the other gameplay ids, on both the socket path and the loopback path. Extends tf_selftest_onboarding with a disconnect/reconnect regression proof: award xp/flux, force-save, simulate a disconnect via a new TFServerSim::DebugSimulateDisconnect test hook (factored out of PollClientJoinsLeaves as CleanupPlayerSession so the test exercises the exact production cleanup path), re-login, re-enter the same character, and assert xp/rank/flux round-trip intact. 20/20 assertions pass (12 existing + 8 new). SparkTests stays green at 5823/0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2CpjawAtFXB7GUu6nGSex
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.
This PR addresses the requirement to add comprehensive XML documentation throughout the entire Spark Engine project by implementing professional-grade Doxygen-style documentation across all major engine systems.
Overview
The Spark Engine previously lacked consistent and comprehensive API documentation, making it difficult for developers to understand the codebase, maintain existing systems, and onboard new team members. This PR adds detailed XML documentation to all major header files using industry-standard Doxygen formatting.
Documentation Coverage
21+ header files documented across all major engine systems:
Core Infrastructure
Core/SparkEngine.h- Main engine header with global system declarationsCore/framework.h- Framework definitions and essential includesCore/resource.h- Windows resource definitions and identifiersCore/targetver.h- Platform version targeting configurationGraphics Pipeline
Graphics/GraphicsEngine.h- DirectX 11 rendering engine coreGraphics/Shader.h- HLSL shader management and compilation systemGraphics/Mesh.h- 3D mesh handling and primitive generationGame Systems
Game/Game.h- Main game loop controller and scene managementGame/GameObject.h- Base class for all interactive world objectsGame/Player.h- First-person player character controllerGame/Console.h- Debug console for runtime commands and loggingCamera and Input
Camera/SparkEngineCamera.h- First-person camera with smooth controlsInput/InputManager.h- Comprehensive keyboard and mouse input handlingAudio System
Audio/AudioEngine.h- XAudio2-based 3D spatial audio engineAudio/SoundEffect.h- Sound loading and procedural audio generationPhysics and Projectiles
Physics/CollisionSystem.h- 3D collision detection and physics utilitiesProjectiles/Projectile.h- Base class for all projectile objectsProjectiles/ProjectilePool.h- Object pool for efficient projectile managementProjectiles/WeaponStats.h- Weapon configuration and statistics systemUtilities
Utils/Timer.h- High-precision timing for frame rate calculationsDocumentation Standards
Each documented file includes:
@file,@brief,@param,@return,@note,@warningExample Documentation Quality
Benefits
This comprehensive documentation enables:
Implementation Approach
The documentation was implemented systematically across engine modules following a consistent pattern:
All documentation maintains consistency in style, depth, and technical accuracy while providing practical usage information for each component.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.