Mandatory Checklist
0) Evaluation protocol
Section titled “0) Evaluation protocol”- Evaluate only the official Git repository content.
- Confirm repository and project identity.
- Ensure no alias or helper script hides the real program behavior.
- Do not edit project files during defense unless both sides agree.
- Treat any segfault or uncontrolled termination as blocking.
1) Build and executable name
Section titled “1) Build and executable name”-
makesucceeds. - running
makeagain does not relink unnecessarily. - the mandatory executable name is exactly
cub3D. - if runtime checks are performed, they are done in a real X11 session.
2) Configuration file coverage
Section titled “2) Configuration file coverage”-
NOtexture path works. -
SOtexture path works. -
WEtexture path works. -
EAtexture path works. -
Fcolor works. -
Ccolor works. - the map block is parsed correctly.
Invalid config behavior:
- unknown key returns a clean error.
- duplicate key returns a clean error.
- invalid texture path returns a clean error.
- wrong extension, not
.cub, returns a clean error and exits.
3) Technical display elements
Section titled “3) Technical display elements”- the window opens at launch.
- the maze interior is rendered in the window.
- hiding, minimizing, or restoring the window keeps display behavior coherent.
4) Basic user events
Section titled “4) Basic user events”- the red cross closes the window and exits cleanly.
-
ESCexits cleanly. - movement keys produce a visible result on screen.
-
F1,F2, andF3resize the window correctly.
5) Movement and orientation
Section titled “5) Movement and orientation”- spawn orientation matches the map for
N,S,E, andW. - left arrow rotates left.
- right arrow rotates right.
-
WorZ, thenS, moves forward and backward in a straight line. -
AorQ, thenD, strafes left and right in a straight line. - movement and rotation remain playable and smooth.
6) Walls, textures, and colors
Section titled “6) Walls, textures, and colors”- wall texture changes correctly by face orientation (
N,S,E,W). - changing a texture path in config changes the rendered texture.
- a non-existent texture path is rejected with an error.
- floor color
Fupdates correctly when changed. - ceiling color
Cupdates correctly when changed.
7) Error management and reliability
Section titled “7) Error management and reliability”- random or extra arguments do not create uncontrolled behavior.
- malformed usage does not cause a segfault.
- keyboard mashing does not break runtime unexpectedly.
- a valid map keeps the program stable.
- an invalid map is rejected cleanly.
8) Memory and FD hygiene
Section titled “8) Memory and FD hygiene”- no memory leaks on representative mandatory runs.
- no invalid free or double free on exit paths.
- file descriptors are clean at exit and only standard streams remain open.
Recommended command:
valgrind --leak-check=full --track-fds=yes ./cub3D <map.cub>Practical note:
- MLX/X11 may keep extra library-owned descriptors open, so the real target is “no project-owned FD leak”, not blindly “only 3 FDs” in every environment.
9) Norm and final gate
Section titled “9) Norm and final gate”- Norminette passes for the mandatory scope.
- no unexpected crash or uncontrolled termination occurs during the full demo flow.
- mandatory is flawless before discussing bonus.
10) Defense-ready run
Section titled “10) Defense-ready run”- one known-good mandatory map runs end-to-end.
- input, movement, textures, and exit are all demonstrated in one session.
- one invalid map case is demonstrated with clean error handling.