C++20 · SFML · 开源

小巧组件。
让可能性动起来。

Awesome Engine 是按场景组织的 2D 引擎。共享上下文汇集每个游戏从输入到最后一帧所使用的系统。

探索已审查的代码 ↗
关于项目

一个你能
理解的基础。

Awesome Engine 由 Carlos Cortina 开发,将 C++ 游戏逻辑与基于 SFML 的可复用服务结合。内置七个场景展示了如何在小而完整的游戏中连接图形、输入、音频和界面。

其设计偏向组合:场景接收一个 EngineContext ,并使用职责明确的管理器。MIT 许可代码允许学习、修改和扩展这一基础。

仓库尚未公布创作历程或正式目标。这里介绍可观察到的设计和已验证的能力。

整体架构

一个上下文。
相互连接的系统。

管理器按值存在于 EngineContext 中。SceneFactory 通过 unique_ptr 构造并拥有场景。

程序入口main() → EngineProcessEvent → Update → Render
共享上下文

EngineContext

RenderResource音频InputParticleTimeSceneGuiCursorSaveRandomScreenshotClipboard
生命周期

SceneFactory → Scene

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

StartUpdateRenderOnEventOnPauseOnCleanup
已实现代码的概念图 · 查看参考与职责 ↗

一帧画面的旅程

01场景Scene::Render()
02RenderTexture离屏绘制
03Bloom + MonitorGLSL 后处理
04窗口GUI + 光标 + display

界面和光标在场景后处理后绘制。Glitch 与颜色反转代码存在,但在已审查的效果链中未启用。

引擎技术栈

具体工具。
明确版本。

查看 CMakeLists.txt ↗
C++20

引擎与游戏场景的实现语言。

标准草案
SFML3.1.0

窗口、事件、2D 图形、输入和音频。

查看仓库
TGUI1.13.0

使用 SFML_GRAPHICS 后端的图形界面。

查看仓库
CMake3.28+

通过 FetchContent 配置、编译和下载依赖。

查看仓库
nlohmann/json3.12.0

JSON 文件配置与持久化。

查看仓库
spdlog1.16.0

事件记录与诊断。

查看仓库
magic_enum0.9.8

C++ 枚举反射工具。

查看仓库
GLSL着色器

Bloom、Glitch、颜色反转和 Monitor 效果。

规范
当前范围

同样重要的是
了解边界。

发现的开发配置使用 Windows、MinGW、Ninja 和 GDB。Linux 与 macOS 尚未验证,路径大小写差异需要检查。

引擎不包含可视化编辑器、ECS、通用物理引擎、脚本系统或网页及移动端导出。游戏中的碰撞与物理逻辑由各场景单独实现。

已知限制: 覆盖层请求的“Menu”场景未注册。文档详细说明了该情况及其他已确认的问题。
查看限制与解决方法 →