cub3D — moteur 2.5 D en C
« Le raycasting est à la 3D ce que le trait de lumière est au cinéma :
il fait tenir tout un monde avec un seul rayon. »
Présentation
cub3D est un moteur de rendu 2.5 D codé en C avec la MiniLibX, librement inspiré de Wolfenstein 3D.
La scène est définie dans un fichier .cub
décrivant : résolution, textures, couleurs de sol/plafond et carte ASCII.
Au lancement, un parser :
- valide la syntaxe (dimensions, fichiers de textures, couleurs RGB),
- s’assure que la carte est fermée et qu’un seul point de spawn existe,
- charge le tout en mémoire.
Rendu & algorithmes
- Raycasting DDA : pour chaque colonne d’écran, un rayon part du joueur jusqu’au premier mur ; la distance renvoie la hauteur du mur, avec correction du fisheye.
- Texture mapping : choix automatique de la texture (N, S, E, O) et calcul précis des coordonnées.
Jouabilité
- Contrôles fluides : WA (avant/arrière) et rotation clavier.
- Collisions fines : blocage lorsqu’un mouvement entraînerait un passage à travers un mur.
Points clés
- Parsing robuste : détection d’erreurs avant le rendu.
- Modularité :
parser
,raycaster
. - Qualité C : zéro fuite mémoire (Valgrind) et respect strict de la Norminette.