Skip to content

Project Tree

cub3D/
├── include/
│ ├── cub3d.h
│ ├── cub3d_bonus.h
│ ├── defines.h
│ ├── defines_bonus.h
│ ├── structs.h
│ └── structs_bonus.h
├── srcs/ # Mandatory/core runtime
│ ├── core/
│ │ ├── main.c
│ │ ├── init_app.c
│ │ ├── init_mlx.c
│ │ ├── window_resize.c
│ │ └── shutdown.c
│ ├── parsing/
│ │ ├── parse_file.c
│ │ ├── parse_read.c
│ │ ├── parse_split.c
│ │ ├── parse_config.c
│ │ ├── parse_textures.c
│ │ ├── parse_colors.c
│ │ ├── parse_map.c
│ │ └── parse_utils.c
│ ├── validation/
│ │ ├── validate_map.c
│ │ ├── validate_map_player.c
│ │ ├── validate_map_chars.c
│ │ ├── validate_map_closed.c
│ │ ├── validate_closed_setup.c
│ │ └── validate_bfs.c
│ ├── input/
│ │ ├── input_keys.c
│ │ ├── input_mouse.c
│ │ ├── input_update.c
│ │ ├── move_player.c
│ │ ├── move_collision.c
│ │ └── rotation.c
│ ├── render/
│ │ ├── render_frame.c
│ │ ├── raycast.c
│ │ ├── raycast_draw.c
│ │ └── draw_vignette.c
│ └── tools/
│ ├── error.c
│ ├── memory.c
│ └── image.c
├── srcs_bonus/ # Bonus systems
│ ├── retro/ # Retro framebuffer, minimap, walls, shading
│ ├── doors/ # Door state machine + queries + interaction
│ ├── pickups/ # Pickup discovery/update/effects
│ ├── sprites/ # Sprite storage/sort/projection/render
│ ├── hud/ # HUD panels, glyphs, face/weapon/status
│ ├── levels/ # Level list, current path, reload/transfer
│ └── noop/ # Mandatory-safe fallbacks for bonus APIs
├── maps/
│ ├── mandatory/
│ └── bonus/
├── tests/
│ ├── parser/
│ ├── validation/
│ ├── render/
│ ├── bonus/
│ ├── init/
│ ├── run.sh
│ └── run_bonus.sh
├── textures/
│ ├── mandatory/
│ └── bonus/
├── tools/
├── libft/
├── minilibx/
├── Makefile
└── README.md
  • srcs/ contains mandatory runtime flow and shared engine logic.
  • srcs_bonus/ contains all optional systems isolated by domain.
  • srcs_bonus/noop/ allows mandatory build to compile without real bonus logic.
  • Parsing, validation, input, render, and shutdown are explicitly separated for defendable architecture.
  • Level progression and retro rendering are bonus extensions integrated through draw_frame() and input hooks.
  • obj/ and obj_bonus/ are generated build directories, not source directories.