flora-engine/README.md

🌸 Flora Engine

Work In Progress

Moteur de gΓ©nΓ©ration procΓ©durale de mondes en voxels

2026 - En cours Projet personnel C#, .NET, OpenGL
$ cat contexte.md

Contexte & ProblΓ©matique

Passionné par les jeux comme Minecraft et les systèmes de génération procédurale, j'ai voulu comprendre comment créer des mondes cohérents à partir d'algorithmes.

Question centrale : Comment gΓ©nΓ©rer un terrain infini qui reste cohΓ©rent gΓ©ographiquement tout en restant performant ?
$ tail -f ./devlog.md

Journal de dΓ©veloppement

# Chronologie du développement, des premiers tests aux dernières avancées

Octobre 2025 Setup

Apprentissage de OpenGL

CrΓ©ation du projet .NET, configuration de Silk.NET pour les bindings OpenGL. Premiers tests : afficher un quad (rectangle) colorΓ© Γ  l'Γ©cran.

Affichage des cubes dans la scène 3D

Le fameux "Hello World" du rendu 3D avec Silk.NET

πŸ’‘ Ce que j'ai appris :

Le pipeline OpenGL de base : shaders, VAO, VBO, et pourquoi tout Γ§a est nΓ©cessaire.

Novembre 2025 3D

Premiers cubes

"Implémentation" de la 3D et d'une caméra pouvant se déplacer et explorer la scène.

Affichage des cubes dans la scène 3D

Premiers cubes

Vue des triangles composant les cubes

Vue wireframe des cubes

πŸ’‘ Ce que j'ai appris :

L'utilisation de matrices pour la transformation de la 3D Γ  un rendu 2D.

Novembre 2025 Terrain

Ajout de relief avec la fonction sinus

GΓ©nΓ©ration d'un chunk de terrain avec l'utilisation de la fonction sinus pour le relief.

Chunk avec relief

Chunk avec son terrain

Terrain modΓ©lisΓ© avec DESMOS

ModΓ©lisation du terrain sur DESMOS

Decembre 2025 Terrain Rendu

Bruit de perlin et occlusion ambiante

Utilisation de bruit de perlin pour la génération et première tentative d'ajout d'effets de lumière sur le terrain (spoiler : ça ne sera pas la seule).

Terrain avec bruit de perlin

Rendu du terrain avec l'utilisation de bruit de perlin (Projet Lizard est l'ancien nom de Flora).

πŸ’‘ Ce que j'ai appris :

Utilisation de bruit de perlin, meshing dit "naΓ―f", occlusion ambiante.

Janvier 2026 Optimisation

Meshing et frustum

Amélioration du système de rendu en implémentant du greedy meshing et du frustum culling (Les images sont sans occlusion ambiante).

Terrain avec mesh naif

Culled meshing (naΓ―f) : 130k triangles (avec frustum).

Terrain avec greedy meshing

Greedy meshing : 58k triangles (avec frustum aussi), soit moitiΓ© moins.

πŸ’‘ Ce que j'ai appris :

Algorithme de greedy meshing, frustum culling.

FΓ©vrier 2026 Blocs

Ajouts de d'autres blocs

CrΓ©ation d'un atlas de texture et ajout de plusieurs types de blocs diffΓ©rents (donc texture diffΓ©rentes).

Terrain avec de belles textures

Terrain avec des textures prises depuis un pack Minecraft (ne sont pas sur le GitHub Γ  cause des licences).

Terrain avec des textures de dev

Terrain avec les texture de dΓ©veloppement (celles sur le GitHub).

$ ls ./screenshots/ | head -6

Galerie

Terrain avec plusieurs milliers de chunks

Grand rendu du terrain pour voir le nouveau gΓ©nΓ©rateur (Flora utilise le mΓͺme, mais les textures sont diffΓ©rentes).

Sphere de test

Sphere pour tester l'occlusion ambiante et le meshing.

Terrain avec uniquement le rendu des normals

Rendu des normals (calcul de lumière).

Terrain avec uniquement le rendu des UVs

Rendu des UVs (calcul des textures) en culled meshing.

$ cat requirements.txt

Stack technique

Langage & Runtime

  • C# 12 β€” Langage principal
  • .NET 8 β€” Runtime cross-platform

Graphismes

  • Silk.NET β€” Bindings OpenGL
  • OpenGL β€” API de rendu
  • GLSL β€” Shaders

Algorithmes

  • Simplex Noise β€” GΓ©nΓ©ration de terrain
  • Greedy Meshing β€” Optimisation
$ cat TODO.md

Prochaines Γ©tapes (pas d'ordre)

☐ Refactorisation du projet
☐ Meilleures textures
☐ Γ‰clairage dynamique / colorΓ© / bloom
☐ Skybox
☐ Système de biomes
☐ Système de détails de terrains (arbres, petits lacs, etc.)
☐ Sauvegarde et lecture des mondes sur le disque
$ ls ./bugs/ --hall-of-shame

Hall of Shame

# Les bugs les plus mΓ©morables