C++20 · SFML · OPEN SOURCE

De petites pièces.
Des possibilités en mouvement.

Awesome Engine est un moteur 2D organisé en scènes. Un contexte partagé rassemble les systèmes utilisés par chaque jeu, de l’entrée à la dernière image.

Explorer le code audité ↗
À propos du projet

Une base que
vous pouvez comprendre.

Développé par Carlos Cortina, Awesome Engine réunit une logique de jeu en C++ et des services réutilisables sur SFML. Ses sept scènes incluses montrent comment relier graphismes, entrées, son et interface dans de petits jeux complets.

Sa conception favorise la composition : les scènes reçoivent un EngineContext et utilisent des gestionnaires aux responsabilités précises. Le code sous licence MIT permet d’étudier, de modifier et d’étendre cette base.

Le dépôt ne publie pas encore d’historique de création ni d’objectifs formels. Nous décrivons ici sa conception observable et ses capacités vérifiées.

Architecture générale

Un contexte.
Des systèmes connectés.

Les gestionnaires sont stockés par valeur dans EngineContext. SceneFactory construit et possède les scènes via unique_ptr.

POINT D’ENTRÉEmain() → EngineProcessEvent → Update → Render
CONTEXTE PARTAGÉ

EngineContext

RenderResourceAudioInputParticleTimeSceneGuiCursorSaveRandomScreenshotClipboard
CYCLE DE VIE

SceneFactory → Scene

Bounce · Clicker · MemoryCard · TicTacToe · MineSweeper · Runner · Tetris

StartUpdateRenderOnEventOnPauseOnCleanup
Vue conceptuelle du code implémenté · Voir les références et responsabilités ↗

Le parcours d’une image

01ScèneScene::Render()
02RenderTextureDessin hors écran
03Bloom + MonitorPost-traitement GLSL
04FenêtreGUI + curseur + affichage

L’interface et le curseur sont dessinés après le post-traitement de la scène. Glitch et l’inversion existent dans le code, mais ne sont pas actifs dans la chaîne auditée.

Technologies du moteur

Des outils concrets.
Des versions explicites.

Voir CMakeLists.txt ↗
C++20

Langage du moteur et des scènes de jeu.

Brouillon du standard
SFML3.1.0

Fenêtre, événements, graphismes 2D, entrées et audio.

Consulter le dépôt
TGUI1.13.0

Interface graphique avec le backend SFML_GRAPHICS.

Consulter le dépôt
CMake3.28+

Configuration, compilation et téléchargement des dépendances avec FetchContent.

Consulter le dépôt
nlohmann/json3.12.0

Configuration et persistance dans des fichiers JSON.

Consulter le dépôt
spdlog1.16.0

Journalisation et diagnostic.

Consulter le dépôt
magic_enum0.9.8

Utilitaires de réflexion pour les énumérations C++.

Consulter le dépôt
GLSLShaders

Effets de bloom, glitch, inversion des couleurs et moniteur.

Spécification
Portée actuelle

Il importe aussi de
connaître les limites.

La configuration de développement observée utilise Windows avec MinGW, Ninja et GDB. Linux et macOS ne sont pas vérifiés ; les différences de casse dans les chemins nécessitent une révision.

Le moteur ne comprend ni éditeur visuel, ni ECS, ni moteur physique général, ni scripting, ni export web ou mobile. Les collisions et la physique des jeux sont propres à chaque scène.

Une limite connue : le panneau demande une scène « Menu » qui n’est pas enregistrée. La documentation détaille ce cas et d’autres problèmes vérifiés.
Consulter les limites et solutions →