*This project has been created as part of the 42 curriculum by amikhail and aortigos.* # cub3d ## 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