BenJ Engine
BenJ Engine est un projet de moteur de jeu vidéo en 3D temps réelle. Ayant déjà utilisé précédement SDL2 puis Vulkan, j'ai décidé d'apprendre OpenGL pour découvrir une nouvelle API graphique. Mon objectif est également d'avoir une compréhension plus approfondie du fonctionnement d'un moteur de jeu.
Fonctionalités
- Rendu 3D temps réel avec OpenGL
- Architecture ECS : une scène possède plusieurs entités, une entité est un ensemble de composants.
- Interface utilisateur modulaire avec ImGui, ImGuizmo.
- Lecture des fichiers image avec la bibliothèque stb.
- Console de debug avec une macro pour écrire dans la console et dans le termina de l'IDE avec des couleurs pour les warnings ou les erreurs.
- Possibilité de jouer depusi l'éditeur ou de voir la simulation avec une caméra libre. Possibilité de mettre en pause et d'avancer frame par frame.
- Sauvegarde et ouverture de scènes qui sont sérialisées en json avec la bibliothèque nlohmann.
- Système de réflexion pour modifier les proriétés des composants dans un onglet de détails, ajouter des composants à une entité et sérialiser les propriétés des composants.
- Système d'input modulaire. Possibilité de bind des fonctions à des actions, chaque actions pouvant avoir plusieurs inputs. Prise en charge des actions sur deux ou trois axes comme les mouvements ainsi que les combo de touches.
A venir
- Ajout d'un moteur physique basée sur Jolt.
- Ajout d'un moteur audio.
- Ajout de data asset pour pouvoir ajouter des données facilement éditable comme les inputs.
- Ajout d'une classe PlayerControler pour pouvoir jouer.
- Sélection d'un objet à en cliquant dessus.
- Optimisation du moteur graphique.
- Possibilité de modifier les paramètres des shader depuis l'éditeur.
BenJ Engine
Mon objectif est aussi de comprendre le fonctionnement d'un moteur de jeu.BenJ Engine is a real-time 3D game engine project. Having previously worked with SDL2 and then Vulkan, I decided to learn OpenGL to explore a new graphic API. My goal is also to gain a deeper understanding of how a game engine works.
Features
- Real-time 3D rendering with OpenGL.
- ECS architecture: a scene contains multiple entities, and an entity is made up of a set of components.
- Modular user interface using ImGui and ImGuizmo.
- Image loading using the stb library.
- Debug console with a macro for writing to both the in-engine console and the IDE terminal, with colored warnings and errors.
- Play directly from the editor or preview the simulation using a free camera. The simulation can be paused and advanced frame by frame.
- Scene saving and loading using JSON serialization with the nlohmann library.
- Reflection system for editing component properties in a Details panel, adding components to entities, and serializing component properties.
- Modular input system. Functions can be bound to actions, with each action supporting multiple inputs. Supports two- or three-axis actions such as movement, as well as key combinations.
Coming Soon
- Integration of a physics engine based on Jolt.
- Integration of an audio engine.
- Data assets for easily editable data such as input configurations.
- Addition of a PlayerController class for player control.
- Object selection by clicking on objects in the viewport.
- Graphics engine optimizations.
- Ability to edit shader parameters directly from the editor.