diff --git a/README.md b/README.md index 67f77e0..8a3e001 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,59 @@ ## Description +cub3D is a graphical project inspired by early 3D games such as *Wolfenstein 3D*. +Its goal is to render a 3D representation of a maze from a 2D map using the **raycasting technique**, written entirely in C using MLX graphics library. + +This project renders a 3D view of a 2D map described in a '.cub' file. +The player can move inside the map, rotate the camera and see textures walls, floor and ceiling. + +This rendering is possible duo to classic **raycasting algorithm**, where one ray is cast per screen column to calculate wall distance and draw it correctly. + +--- + ## Instructions +### Requirements + - Linux or macOS + - MLX / MLX42 + - 'gcc' or 'clang' + +### Compilation +```bash +make +``` + +### Execution +```bash +./cub3D assets/maps/example.cub +``` + +### Controls + +Use W, A, S and D to mover the player. +Use UP, DOWN, LEFT and RIGHT arrows to rotate camera. +Use ESC for exit the program. + + +### Map configuration (.cub) + +A **.cub** file contains: +- Wall textures (NO, SO, WE, EA) +- Floor and ceiling colors (RGB format) +- Map layout, composed of: + - 1 for walls + - 0 for empty space + - N, S, E or W for the player start position + +The map is strictly validated: +- Exactly one player position +- Fully closed by walls +- Only valid characters +- RGB values between 0 and 255 + ## Resources -g \ No newline at end of file +