Contenu du renducontact(at)guillaumelevieux.com :: « Home

Valentin Legeay

Programmeur Enjmin



Lien YT (Qualité supérieure) :
https://www.youtube.com/watch?v=goA59PrQOb0&feature=youtu.be
Lien Github :
https://github.com/valentin4311/YetAnotherMinecraftClone

Il s'agit d'un moteur Voxel cross-plateform écrit from scratch. Il intègre les mécaniques de base d'un minecraft like dans un monde infini sur les 3 axes (on peut creuser et faire des colonnes sans limite).

En interne il dispose :
- D'un moteur de rendu permettant de charger facilement des VBO, des EBO et de les utiliser avec un VAO
- D'un moteur de rendu d'interface permettant d'interargir et de concevoir facilement des GUI tels que le menu pause ou l'inventaire a l'aide de composants
- D'un moteur de texte a base d'atlas de lettres et d'un fichier fnt indiquant les offsets
- D'un moteur de chargement des texture utilisant la librairie stb_image pour charger ces derrnière
- Utilisation de GLFW (fenetre, clavier, souris et contexte OpenGL)
- Moteur d'input semblable a celui d'unity avec possibilité de rammapage des touches (avec une ui dédié non incluse)
- Moteur de chargement des shaders ainsi qu'une interface pour mieux les utiliser (uniforms, paramètres...)
- Section de gestion des blocs pour créer des blocs de manière extrêmement simple avec des propriétés variés (visibilité, taille, rendu..)
- Section de gestion des entités gérant les collisions et la vie en générale (bien qu'absente dans le jeu)
- Section de gestion du monde infini découpage des chunks en 2 parties. Les chunks aeriens (Vide, consomme moins de mémoire) et les chunks complexes (non vide)
- Génération du monde sur un thread a part
- Génération du maillage du monde sur un thread a part
- Frustum culling
- AABB collisions
- Boucle de jeu de type Fixed Time Step
- RBO et Post process (SSAO)
- Des specular maps
- Moteur de son utilisant PortAudio (Equivalent d'OpenAL) et libsndfile pour décoder les formats de fichiers
- Génération des bruits de perlin en SIMD avec FastNoiseSIMD
- Hashmap encore plus rapide avec Sparse++
- GLM pour les math

Possibles bugs :
- Chunks invisibles (Fréquent)
- Crash du jeu (Très très rare)
Ces bugs sont causés par un soucis de synchronisation des threads.

Notes :
- Certains fichiers dates d’août 2017 en effet la partie shader VBO camera et texture est plus ancienne.

Ressources principales :

- https://learnopengl.com/Introduction
- https://www.giawa.com/

En créant ce moteur (qui n'est pas mon premier moteur voxel, mais le plus abouti en tous cas) j'ai appris énormément de choses sur la gestion de la mémoire en C++ et sur les bonnes pratiques en général. J'ai aussi beaucoup appris sur les techniques de rendu modernes notamment le deferred. Enfin je remercie mes collègues programmeur de l'enjmin avec qui j'ai pu comparer mon travail et recevoir des conseils et surtout de la motivation a pousser le projet toujours plus loin et ce jusqu'au début des projet M1.