46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Build Commands
|
|
|
|
- **Build the game**: `make`
|
|
- **Clean build artifacts**: `make clean`
|
|
- **Run the game**: `./ghostland`
|
|
|
|
## Architecture Overview
|
|
|
|
This is a C++ OpenGL 3D game called "ghostland-game" - a continuation of a previous Go-based project. The player navigates a maze-like environment while being pursued by ghosts.
|
|
|
|
### Core Components
|
|
|
|
- **ghostland.cpp**: Main game loop, OpenGL setup, window management, and input handling
|
|
- **Player**: First-person camera system with mouse look, movement physics (including jumping), and flashlight mechanics
|
|
- **Ghost**: Enemy entities that move autonomously within defined boundaries and face the player
|
|
- **Shader system**: OpenGL shader loading and uniform management for different rendering passes
|
|
- **Text rendering**: FreeType-based text rendering system for UI elements like FPS display
|
|
- **Collision detection**: Ray-triangle intersection testing for wall collisions
|
|
|
|
### Key Systems
|
|
|
|
- **Maze loading**: The `maze.txt` file contains vertex data for walls parsed at runtime
|
|
- **Lighting**: Dynamic lighting system with player-controlled flashlight that responds to mouse movement
|
|
- **Rendering pipeline**: Separate shaders for different object types (walls, ghosts, text, trails)
|
|
- **Physics**: Simple gravity-based jumping with collision detection against maze geometry
|
|
|
|
### Dependencies
|
|
|
|
- OpenGL 3.3+ with GLAD loader
|
|
- GLFW for window management and input
|
|
- GLM for math operations
|
|
- FreeType for text rendering
|
|
- stb_image for texture loading
|
|
|
|
### File Structure
|
|
|
|
- Header files (.h) define class interfaces
|
|
- Implementation files (.cpp) contain the logic
|
|
- Shader files (.glsl) define rendering programs
|
|
- Object files (.o) are generated during build
|
|
- `maze.txt` contains level geometry data
|
|
- `fonts/` contains TrueType fonts for text rendering |