# Juliet Engine: 3D Platformer Todo List This TODO list outlines the tasks required to build a simple 3D platformer game in the Juliet Engine. ## [ ] 1. Gameplay Entities & Transform System (3D Integration) - [ ] Extend `Game::Entity` in [Entity.h](file:///c:/Dev/Classified/Juliet/Game/Entity/Entity.h) to support 3D transforms (`Vector3 Position`, `Vector3 Scale`, and Euler/Quaternion `Rotation`). - [ ] Add `bool IsGrounded` to the player/entity state. - [ ] Link entities to renderable visual mesh IDs (`MeshID` in the graphics system). - [ ] Define helper function to set/update visual transforms based on entity state. ## [ ] 2. Physics & 3D Bounding Box (Collision System) - [ ] Define `AABB` (Axis-Aligned Bounding Box) struct. - [ ] Implement constant downward gravity acceleration applied to player velocity. - [ ] Implement AABB vs AABB collision detection. - [ ] Implement collision resolution: push-back along the shortest axis of separation, resetting vertical velocity when grounded or hitting ceilings, and allowing sliding along walls. ## [ ] 3. Player Control & Locomotion - [ ] Calculate camera-relative movement vectors based on player's yaw. - [ ] Map movement input keys (`W`, `A`, `S`, `D`) to player horizontal velocity with smooth acceleration and friction. - [ ] Map jump input (`Space`) to apply upward vertical impulse, allowed only when player is grounded. ## [ ] 4. Third-Person Follow Camera System - [ ] Implement follow camera logic orbiting the player entity. - [ ] Handle mouse delta to update camera pitch/yaw orbit angles. - [ ] Implement view matrix computation targeting the player's position. ## [ ] 5. Level Setup & Collision Mapping - [ ] Implement static platform mesh spawner (e.g. ground floor, raised blocks, gaps). - [ ] Map platform meshes to static colliders in the physics update list. ## [ ] 6. Game Loop Update Hook - [ ] Implement an entity update tick `UpdateEntities(float deltaTime)` in [game.cpp](file:///c:/Dev/Classified/Juliet/Game/game.cpp). - [ ] Integrate input, physics step, collision checks/resolution, and visual sync into the tick. ## [ ] 7. Gameplay Rules & State Management - [ ] Define `GameState` struct (Score, Player Life/Health, Game Status). - [ ] Implement fall-out-of-bounds check (e.g. `Z < -10.0f` resets player to spawn/checkpoint). - [ ] Implement collectibles (coins) with overlap triggers that update score and deactivate themselves. - [ ] Implement level-end goal flag/portal trigger. ## [ ] 8. UI Overlay (HUD) - [ ] Render a gameplay overlay using ImGui showing score, time elapsed, status, and control instructions.