113 lines
5.4 KiB
Markdown
113 lines
5.4 KiB
Markdown
# Implemented Features
|
|
|
|
This document lists features that are implemented in the current codebase.
|
|
|
|
## Scene
|
|
|
|
- Fullscreen React Three Fiber scene
|
|
- Main map scene loaded from `public/map.json` and matching `public/models/{name}/model.glb` or `model.gltf` assets
|
|
- Minimal fullscreen scene loading overlay for 3D scenes, with a global progress bar used by the production map, debug physics scene, and editor scene
|
|
- Debug physics test scene selectable from the debug panel, including grab/trigger tests, an animated model preview, and separate repair playground zones for `bike`, `pylone`, and `ferme`
|
|
- Rapier physics context available for production stage gameplay objects
|
|
- Ambient and directional lighting
|
|
- Environment background setup
|
|
|
|
## Player
|
|
|
|
- Player camera mode
|
|
- Pointer lock mouse look
|
|
- Movement with `ZQSD`
|
|
- Jumping
|
|
- Movement lock during active repair steps, with an on-screen indicator while keeping trigger interactions available
|
|
- Octree-based collision against dedicated map collision nodes, currently scoped to `terrain`
|
|
|
|
## Interactions
|
|
|
|
- Focus detection by distance and raycast
|
|
- Trigger interactions activated with `E`
|
|
- Grab interactions activated with the primary mouse button
|
|
- Physics-backed gameplay objects can be mounted inside stage content without replacing player octree collision
|
|
- Interaction prompt shown for trigger interactions
|
|
|
|
## Repair Gameplay
|
|
|
|
- Reusable production `RepairGame` mounted for `bike`, `pylone`, and `ferme` mission states
|
|
- Debug physics playground mounts the same reusable `RepairGame` in `Bike`, `Pylone`, and `Farm` zones so each state can be tuned with isolated positioning before moving placement into the production map
|
|
- Repair mission config shared through `src/data/gameplay/repairMissions.ts`, including per-mission broken nodes, placeholder targets, scan timing, and reassembly timing
|
|
- Repair-game flow supports `waiting -> inspected -> fragmented -> scanning -> repairing -> reassembling -> done -> next mission` with `.webm` prompts, repair case spawn/opening/exit, focused repair-case view, movement lock indicator during active repair, repair-case trigger interaction, case placeholder traversal, snap-to-placeholder placement, broken-part deposit feedback, `E`, two-fists hold input, exploded and inverse reassembly transitions, completion particles, per-part scan visuals, persistent red broken-part markers, centered broken-part UI videos, multiple grabbable replacement choices, correct-part install validation feedback, and mission completion
|
|
|
|
## Audio
|
|
|
|
- Category-based volumes for music, SFX, and dialogue
|
|
- Looped background music playback through `AudioManager`
|
|
- One-shot sound playback for SFX and dialogue, with simple per-sound pooling
|
|
- Optional stereo pan for one-shot sounds
|
|
|
|
## Dialogue And Subtitles
|
|
|
|
- Dialogue manifest in `public/sounds/dialogue/dialogues.json`
|
|
- Dialogue audio loaded from `public/sounds/dialogue/`
|
|
- One SRT subtitle file per voice and language
|
|
- French subtitle fallback when the selected language file is missing
|
|
- Runtime subtitle overlay with speaker-specific colors
|
|
- Timecoded dialogue trigger support for dialogue entries that define `timecode`
|
|
- Dialogue queueing to avoid overlapping dialogue playback
|
|
|
|
## Cinematics
|
|
|
|
- Cinematic manifest in `public/cinematics.json`
|
|
- Timecoded cinematic trigger support
|
|
- GSAP camera keyframe playback
|
|
- Optional dialogue cues synchronized to cinematic timelines
|
|
- Player input lock while a cinematic is active
|
|
|
|
## Game Options Menu
|
|
|
|
- `Esc` opens and closes the in-game options menu
|
|
- Music, SFX, and dialogue volume sliders
|
|
- Subtitle visibility toggle
|
|
- Subtitle language choice between French and English
|
|
- Repair runtime choice between local JavaScript and Python server mode
|
|
- Quit action that clears browser-accessible cookies and returns to `/`
|
|
|
|
## Debug Tooling
|
|
|
|
- `?debug` query param enables the debug panel
|
|
- `lil-gui` controls for camera mode, scene mode, `R3F Perf`, `Debug Overlay`, and interaction tuning
|
|
- Compact debug overlay for game state controls and hand tracking status
|
|
- Debug game-state mission switching unlocks locked repair missions at `waiting` for faster testing
|
|
- Debug scene helpers
|
|
- Free debug camera
|
|
- `r3f-perf` overlay
|
|
|
|
## Map Editor
|
|
|
|
- `/editor` route for inspecting and editing `public/map.json`
|
|
- Automatic loading of `public/map.json` when available
|
|
- Folder upload fallback when `map.json` is missing
|
|
- Rendering of available `public/models/{name}/model.glb` or `model.gltf` assets
|
|
- Fallback cubes for nodes whose model is missing
|
|
- Object selection by click
|
|
- Transform modes for translate, rotate, and scale
|
|
- Keyboard shortcuts for `T`, `R`, `S`, `Esc`, undo, and redo
|
|
- Player-style navigation mode with `WASD`, `ZQSD`, arrow keys, `Space`, and `Shift`
|
|
- JSON export for downloading the edited map
|
|
- Dev-server save endpoint for writing changes back to `public/map.json`
|
|
- SRT editor for dialogue subtitles
|
|
- Audio preview and timing helpers for SRT cues
|
|
- Dev-server save endpoint for SRT files
|
|
- Dialogue manifest editor with preview and assisted French SRT cue creation
|
|
- Cinematic manifest editor with camera keyframes, dialogue cues, and canvas preview
|
|
- Dialogue manifest validation from the editor UI
|
|
|
|
## Not Implemented Yet
|
|
|
|
- complete mission system
|
|
- zone system
|
|
- full cinematic system beyond current timecode prototype
|
|
- gameplay-triggered dialogue branches beyond current prototype triggers
|
|
- loading flow
|
|
- minimap and mission HUD
|
|
- full production separation between gameplay and debug scenes
|
|
- production backend persistence for editor saves
|