How juanp95m/cub3d_public works
Cub3D is a raycasting game that accepts a .cub map, validates its configuration and walkable map, initializes graphics, and runs an interactive movement-and-render loop. Its main domain stages are parsing, map validation, player control, raycasting, and drawing. MLX42 supplies the graphics runtime; libft and get_next_line provide supporting utilities. Several internal calls are not visible in the excerpts, so links beyond the main entry point and README-documented behavior are omitted or marked unverified.
Main entry points: parsing.c Config parsing · main.c Game entry · src MLX42 runtime · graphics.c Graphics setup
Components 24
Game runtime
- Game entry
src/core/main.c - Game lifecycle
src/core - Player controls
src/player/player_move.c - Camera rotation
src/player/player_rotate.c - Ray setup
src/raycast/raycast_init.c - DDA traversal
src/raycast/raycast_dda.c - Wall rendering
src/raycast/raycast_draw.c
Map input
- Config parsing
src/parse/parsing.c - Color parsing
src/parse/save_color.c - Texture parsing
src/parse/save_texture.c - Map loading
src/parse/save_map.c - Map validation
src/map/map_validation.c - Map padding
src/map/map_padding.c
Graphics runtime
- Graphics setup
src/graphics/graphics.c - Texture setup
src/graphics/init_textures.c - Render loop
src/graphics/render_loop.c - MLX42 runtime
MLX42/src - MLX42 API
MLX42/include/MLX42/MLX42.h - PNG decoder
MLX42/lib/png/lodepng.c - OpenGL loader
MLX42/lib/glad/glad.c
C support
- Line reader
Get_next_line/get_next_line.c - Libft utilities
libft/libft.h
Other components
- Player
- Map file
Connections 24
- Player → Game entry: starts with
README.md - Map file → Game entry: supplies map
README.md - Game entry → Config parsing: calls
src/core/main.c - Game entry → Graphics setup: initializes
src/core/main.c - Game entry → MLX42 runtime: runs loop
src/core/main.c - Game entry → Game lifecycle: frees state
src/core/main.c - Config parsing → Color parsing: reads colors
- Config parsing → Texture parsing: reads textures
- Config parsing → Map loading: reads map
- Map loading → Map validation: validates
- Map validation → Map padding: pads map
- Player → Player controls: moves
README.md - Player → Camera rotation: rotates view
README.md - Render loop → Ray setup: sets up rays
- Render loop → DDA traversal: casts rays
README.md - Render loop → Wall rendering: draws walls
- Graphics setup → Texture setup: loads textures
- Graphics setup → Render loop: starts rendering
- Graphics setup → MLX42 runtime: uses runtime
- MLX42 API → MLX42 runtime: defines API
MLX42/include/MLX42/MLX42.h - MLX42 runtime → PNG decoder: decodes PNG
- MLX42 runtime → OpenGL loader: loads OpenGL
- Config parsing → Line reader: reads lines
- Config parsing → Libft utilities: uses utilities