C++20 · SFML · CÓDIGO ABERTO

Pequenas peças.
Possibilidades em movimento.

Awesome Engine é um motor 2D organizado em cenas. Um contexto compartilhado reúne os sistemas usados por cada jogo, da entrada ao último quadro.

Explorar o código auditado ↗
Sobre o projeto

Uma base que
você pode entender.

Desenvolvido por Carlos Cortina, Awesome Engine reúne lógica de jogo em C++ e serviços reutilizáveis sobre SFML. Suas sete cenas incluídas mostram como conectar gráficos, entrada, som e interface em jogos pequenos e completos.

Seu projeto favorece a composição: as cenas recebem um EngineContext e usam gerenciadores com responsabilidades específicas. O código MIT permite estudar, modificar e ampliar essa base.

O repositório ainda não publica uma história de criação nem objetivos formais. Aqui descrevemos seu projeto observável e suas capacidades verificadas.

Arquitetura geral

Um contexto.
Sistemas conectados.

Os gerenciadores ficam por valor no EngineContext. O SceneFactory constrói e possui as cenas por meio de unique_ptr.

PONTO DE ENTRADAmain() → EngineProcessEvent → Update → Render
CONTEXTO COMPARTILHADO

EngineContext

RenderResourceÁudioInputParticleTimeSceneGuiCursorSaveRandomScreenshotClipboard
CICLO DE VIDA

SceneFactory → Scene

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

StartUpdateRenderOnEventOnPauseOnCleanup
Visão conceitual do código implementado · Ver referências e responsabilidades ↗

O percurso de um quadro

01CenaScene::Render()
02RenderTextureDesenho fora da tela
03Bloom + MonitorPós-processamento GLSL
04JanelaGUI + cursor + display

A interface e o cursor são desenhados após o pós-processamento da cena. Glitch e inversão existem no código, mas não estão ativos na cadeia auditada.

Stack do motor

Ferramentas concretas.
Versões explícitas.

Ver CMakeLists.txt ↗
C++20

Linguagem do motor e das cenas de jogo.

Rascunho do padrão
SFML3.1.0

Janela, eventos, gráficos 2D, entrada e áudio.

Consultar repositório
TGUI1.13.0

Interface gráfica com o backend SFML_GRAPHICS.

Consultar repositório
CMake3.28+

Configuração, compilação e download de dependências com FetchContent.

Consultar repositório
nlohmann/json3.12.0

Configuração e persistência em arquivos JSON.

Consultar repositório
spdlog1.16.0

Registro de eventos e diagnóstico.

Consultar repositório
magic_enum0.9.8

Utilitários de reflexão para enumerações de C++.

Consultar repositório
GLSLShaders

Efeitos de bloom, glitch, inversão de cor e monitor.

Especificação
Escopo atual

Também importa
conhecer os limites.

A configuração de desenvolvimento encontrada usa Windows com MinGW, Ninja e GDB. Linux e macOS não foram verificados; há diferenças de maiúsculas e minúsculas nos caminhos que exigem revisão.

O motor não inclui editor visual, ECS, motor de física geral, scripting nem exportação web ou móvel. As colisões e a física dos jogos são específicas de cada cena.

Uma limitação conhecida: a sobreposição solicita uma cena “Menu” que não está registrada. A documentação detalha esse caso e outros problemas verificados.
Consultar limitações e soluções →