C++20 · SFML · OPEN SOURCE

Small pieces.
Possibilities in motion.

Awesome Engine is a 2D engine organized into scenes. A shared context brings together the systems each game uses, from input to the final frame.

Explore the audited code ↗
About the project

A foundation
you can understand.

Developed by Carlos Cortina, Awesome Engine brings together C++ game logic and reusable services on SFML. Its seven included scenes show how to connect graphics, input, sound, and interfaces in small, complete games.

Its design favors composition: scenes receive an EngineContext and use managers with specific responsibilities. The MIT-licensed code lets you study, modify, and extend that foundation.

The repository has not yet published an origin story or formal goals. Here we describe its observable design and verified capabilities.

General architecture

One context.
Connected systems.

Managers live by value in EngineContext. SceneFactory constructs and owns scenes through unique_ptr.

ENTRY POINTmain() → EngineProcessEvent → Update → Render
SHARED CONTEXT

EngineContext

RenderResourceAudioInputParticleTimeSceneGuiCursorSaveRandomScreenshotClipboard
LIFECYCLE

SceneFactory → Scene

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

StartUpdateRenderOnEventOnPauseOnCleanup
Conceptual view of the implemented code · View references and responsibilities ↗

A frame's journey

01SceneScene::Render()
02RenderTextureOff-screen drawing
03Bloom + MonitorGLSL post-processing
04WindowGUI + cursor + display

The interface and cursor are drawn after scene post-processing. Glitch and inversion exist in the code, but are not active in the audited chain.

Engine stack

Concrete tools.
Explicit versions.

View CMakeLists.txt ↗
C++20

The language of the engine and game scenes.

Standard draft
SFML3.1.0

Window, events, 2D graphics, input, and audio.

View repository
TGUI1.13.0

Graphical interface with the SFML_GRAPHICS backend.

View repository
CMake3.28+

Configuration, building, and dependency downloads with FetchContent.

View repository
nlohmann/json3.12.0

Configuration and persistence in JSON files.

View repository
spdlog1.16.0

Event logging and diagnostics.

View repository
magic_enum0.9.8

Reflection utilities for C++ enumerations.

View repository
GLSLShaders

Bloom, glitch, color inversion, and monitor effects.

Specification
Current scope

It also matters to
know the limits.

The development configuration found uses Windows with MinGW, Ninja, and GDB. Linux and macOS are not verified; path capitalization differences require review.

The engine does not include a visual editor, ECS, general physics engine, scripting, or web or mobile export. Game collisions and physics are specific to each scene.

A known limitation: the overlay requests a “Menu” scene that is not registered. The documentation explains this case and other verified issues.
View limitations and solutions →