Projets

Cub3D

Algo
3D
C

Projet réalisé dans le cadre de 42, qui m'a permis de consolider mes compétences en C, mathématiques 3D et gestion d’événements temps réel.

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 :

  1. valide la syntaxe (dimensions, fichiers de textures, couleurs RGB),
  2. s’assure que la carte est fermée et qu’un seul point de spawn existe,
  3. 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.