Genre : Moteur de jeu maison
Le Sekam Engine est un moteur de jeu maison réalisé en C# pur a des fins d'expérimentation et d'apprentissage.
Les seules librairies utilisées sont OpenTK pour OpenGL et Newtonsoft pour la sérialisation/désérialisation Json.
Les fonctionnalités principales sont les suivantes :
-
Gestion d'une fenêtre graphique à l'aide d'OpenTK
-
Gestion de la game loop (boucle d'update logique et boucle de rendu)
-
Gestion des inputs
-
Mathématiques de vector2, vector3, vector4 et matrices 4x4.
-
Organisation de scènes en arborescence contenant des entités qui peuvent elles-mêmes contenir des components qui leur donnent des fonctionnalités.
-
Gestion de shaders et materiaux. Avec entre autres :
-
Formattage spécial de fichier pour gérer le vertex shader et le fragment shader dans le même fichier (assez similaire à un surface shader dans Unity)
-
Textures et normal maps
-
Lighting (Ambiant, Specular, Diffuse) et Emissives
-
Textes
-
Et donc les buffers d'informations de caméra et lighting sont gérés.
-
Caméra orthographique et caméra perspective.
-
Pipeline de rendu type forward rendering : Affichage de modèles 3D, texte et interfaces avec leur matériaux vus par les caméras sur l'écran, en optimisant autant que possible les buffers pour éviter les draw calls.
-
Sérialisation et désérialisation de scènes pour sauvegarder des scènes de jeu.
-
Création d'un importeur de fichier bitmap font file pour gérer les polices d'écritures.
-
Créations de component textes qui génèrent des modèles 3D optimisés pour le rendu.
-
Création d'un importeur de fichiers .obj pour gérer les modèles 3D.
-
Création d'une librairie custom d'immediate mode GUI, gérant quad, textes, toggles, boutons et scrollbars.
-
Audio Player
-
Controller freecam basique pour tester les scènes