cub3D is a project focused on creating a 3D graphical representation of a maze from a first-person perspective using Ray-Casting principles and the miniLibX library.
Version: 1.0
- Chapter I - Introduction
- Chapter II - Common Instructions
- Chapter III - Mandatory Part
- Chapter IV - Bonus Part
- Chapter V - Submission and Peer-evaluation
cub3D allows you to create a 3D maze visualization with realistic rendering techniques using Ray-Casting. It's an introductory project into graphical programming and game development concepts.
- Your project must be written in C.
- Adhere to the Norm for coding style and conventions.
- Functions should handle errors gracefully without crashing.
- All dynamically allocated memory must be freed appropriately to avoid leaks.
- Use a Makefile to compile your project with flags
-Wall -Wextra -Werror
. - Makefile must include:
all
,clean
,fclean
,re
,bonus
. - Include a
bonus
rule in Makefile for additional functionalities. - If applicable, include a
libft
folder with its Makefile to compile the library. - Create test programs to validate project functionality (not graded but useful for defense).
- Submit your work to the assigned git repository. Only contents of the repository are graded.
Program name: cub3D
- All your files
all
,clean
,fclean
,re
,bonus
- A map in format
*.cub
open
,close
,read
,write
,printf
,malloc
,free
,perror
,strerror
,exit
,gettimeofday
- All functions of the math library (
-lm
)
Yes
cub3D functionalities:
- Create a 3D representation of a maze using Ray-Casting techniques.
- Use miniLibX for graphical output.
- Display different wall textures based on orientation.
- Set floor and ceiling colors.
- Allow user interaction:
- Use arrow keys to look left/right.
- Use W, A, S, D keys to move through the maze.
- ESC key and window closing to exit the program.
- Parse scene description from a
.cub
file specifying textures, colors, and map layout.
Ensure the program handles all specified functionalities correctly and gracefully handles errors.
- Implement additional functionalities if the mandatory part is perfect:
- Wall collisions.
- Minimap system.
- Interactive doors.
- Animated sprites.
- Mouse-based point of view rotation.
Bonus part evaluated only if mandatory part is perfect.
Submit your work to the assigned git repository. Peer evaluations may follow before final grading.