Retour aux projets

Projet 42

Cub3D

Un moteur de rendu inspiré de Wolfenstein 3D pour explorer le raycasting, les textures et la représentation 3D.

Stack

  • C
  • Raycasting
  • MiniLibX
  • Graphics

Skills acquis

  • Implémenter un rendu en raycasting
  • Manipuler des textures, couleurs et projections
  • Parser et valider une carte de jeu
  • Comprendre les bases mathématiques d’un rendu pseudo-3D

Liens

Cub3D est un projet graphique inspiré des premiers FPS comme Wolfenstein 3D. L’objectif est de créer un rendu en pseudo-3D à partir d’une carte 2D, en utilisant le raycasting pour calculer les murs, les distances, les textures et la perspective.

01 — Carte

Un monde en deux dimensions.

Le projet commence par la lecture et la validation d’une carte 2D. Cette carte devient la base du monde affiché à l’écran : murs, espaces, position du joueur et orientation initiale doivent être correctement interprétés.

Illustration d’une carte 2D utilisée pour générer un monde en pseudo-3D
Fig. 01
Tout commence avec une grille de caractères qui se prend pour un niveau de jeu.

02 — Raycasting

Lancer des rayons.

Le raycasting permet de simuler une vision en 3D à partir d’un environnement 2D. Chaque rayon mesure une distance jusqu’au mur le plus proche, puis cette distance est transformée en hauteur de colonne à afficher à l’écran.

Illustration du principe de raycasting dans un moteur graphique
Fig. 02
Techniquement ce n’est pas vraiment de la 3D, mais l’illusion fait très bien son travail.

03 — Rendu

Construire l’illusion.

Textures, couleurs, collisions et déplacements rendent le rendu plus vivant. Cub3D m’a permis de mieux comprendre la relation entre mathématiques, perception visuelle et programmation graphique bas niveau.

Illustration d’un rendu pseudo-3D avec textures
Fig. 03
Quand des maths, des pixels et un peu d’obstination deviennent un couloir en 3D.