How lian1998/threejs-cube-gunman works
This repository is a browser-based Three.js first-person shooter. Its main runtime loads game resources, initializes registered gameplay and view-layer objects, then calls their frame updates. The principal play flow runs from keyboard/mouse input through player movement and weapon firing to raycast hit processing and visual effects, which are rendered as layered scenes. The README also documents inventory, weapon variants, and multiple firing and impact effects. Some modules were not sampled, so links are limited to wiring shown in source or explicitly described by the README.
Main entry points: main.ts Runtime Bootstrap · LayerEventPipe.ts Layer Events · GameContext.ts Game Context · WeaponSystem.ts Weapon System
Components 27
Runtime Core
- Runtime Bootstrap
src/main.ts - Game Context
src/core/GameContext.ts - Resource Loading
src/core/GameResources.ts - Object Registry
src/core/GameObjectMap.ts
Gameplay
- Input System
src/gameplay/input/UserInputSystem.ts - DOM Event Pipe
src/gameplay/pipes/DomEventPipe.ts - Input Event Pipe
src/gameplay/pipes/UserinputEventPipe.ts - FPS Camera
src/gameplay/input/controllers/FPSCameraController.ts - Movement Controller
src/gameplay/input/controllers/MovementController.ts - Local Player
src/gameplay/player/LocalPlayer.ts - Mirage Level
src/gameplay/levels/LevelMirage.ts - Inventory System
src/gameplay/Inventory/InventorySystem.ts
Combat
- Weapon System
src/gameplay/weapon/WeaponSystem.ts - Weapon Variants
src/gameplay/weapon/instances/AK47.ts - Game Logic Events
src/gameplay/pipes/GameLogicEventPipe.ts
Rendering
- Layer Events
src/gameplay/pipes/LayerEventPipe.ts - Viewport Renderer
src/viewlayers/GLViewportLayer.ts - DOM Layer
src/viewlayers/DomLayer.ts - Shell Ejection
src/viewlayers/weapon/ChamberBulletShellLayer.ts - Chamber Smoke
src/viewlayers/weapon/ChamberSmokeLayer.ts - Muzzle Flash
src/viewlayers/weapon/MuzzleFlashLayer.ts - Bullet Hole
src/viewlayers/scene/BulletHoleLayer.ts - Impact Flash
src/viewlayers/scene/BulletHoleFlashLayer.ts - Impact Ash
src/viewlayers/scene/BulletHoleAshLayer.ts - Sky Layer
src/viewlayers/SkyLayer.ts - Crosshair UI
src/viewlayers/ui/CrosshairLayer.ts
Other components
- Player
Connections 37
- Player → Input System: provides controls
- Input System → Input Event Pipe: dispatches input
- Player → DOM Event Pipe: moves mouse
- DOM Event Pipe → FPS Camera: dispatches pointer events
- Input Event Pipe → Movement Controller: delivers key events
- FPS Camera → Game Context: uses camera state
- Movement Controller → Game Context: reads camera and collision state
- Movement Controller → Local Player: updates movement
- Local Player → Weapon System: equips and uses weapons
- Input Event Pipe → Weapon System: delivers trigger input
- Weapon System → Weapon Variants: selects weapon behavior
- Weapon System → Game Logic Events: dispatches fire events
- Game Logic Events → Weapon System: delivers fire events
- Weapon System → Layer Events: dispatches hit effects
- Layer Events → Bullet Hole: delivers impact events
- Layer Events → Impact Flash: delivers impact events
- Layer Events → Impact Ash: delivers impact events
- Layer Events → Shell Ejection: delivers firing events
- Layer Events → Chamber Smoke: delivers firing events
- Layer Events → Muzzle Flash: delivers firing events
- Runtime Bootstrap → Resource Loading: loads resources
- Runtime Bootstrap → Object Registry: loads registered objects
- Runtime Bootstrap → Game Context: initializes and updates
- Runtime Bootstrap → Viewport Renderer: runs frame updates
- Runtime Bootstrap → Movement Controller: runs frame updates
- Runtime Bootstrap → Weapon System: runs frame updates
- Runtime Bootstrap → Shell Ejection: runs frame updates
- Runtime Bootstrap → Chamber Smoke: runs frame updates
- Runtime Bootstrap → Bullet Hole: runs frame updates
- Runtime Bootstrap → Impact Ash: runs frame updates
- Runtime Bootstrap → Mirage Level: initializes level
- Mirage Level → Game Context: sets scene and octree
- Viewport Renderer → Game Context: renders configured scenes
- DOM Layer → Game Context: uses game view
- Sky Layer → Game Context: uses sky scene
- Crosshair UI → Game Context: uses UI scene
- Inventory System → Local Player: manages player inventory