一个你能
理解的基础。
Awesome Engine 由 Carlos Cortina 开发,将 C++ 游戏逻辑与基于 SFML 的可复用服务结合。内置七个场景展示了如何在小而完整的游戏中连接图形、输入、音频和界面。
其设计偏向组合:场景接收一个 EngineContext ,并使用职责明确的管理器。MIT 许可代码允许学习、修改和扩展这一基础。
仓库尚未公布创作历程或正式目标。这里介绍可观察到的设计和已验证的能力。
现在就能探索的内容。
渲染与视图
在 sf::RenderTexture 上绘制精灵、形状和文字。使用 sf::View 的视图及 Bloom + Monitor 后处理。
已实现02场景与生命周期
Start、Update、Render、OnEvent、OnPause 和 OnCleanup。延迟场景切换与重启。
已实现03资源与内存
纹理、声音和字体缓存。RAII、标准容器以及 unique_ptr 所有权。
已实现04输入与音频
支持多重绑定的动作。键盘、鼠标和手柄;音乐、音效与全局音量。
已实现05界面与工具
TGUI、暂停覆盖层、自定义光标、F12 PNG 截图和 spdlog 诊断。
已实现06配置与存档
通过 JSON 配置窗口、时间和音频。本地持久化得分与状态。
已实现一个上下文。
相互连接的系统。
管理器按值存在于 EngineContext 中。SceneFactory 通过 unique_ptr 构造并拥有场景。
EngineContext
SceneFactory → Scene
Bounce · Clicker · MemoryCard · TicTacToe · MineSweeper · Runner · Tetris
一帧画面的旅程
界面和光标在场景后处理后绘制。Glitch 与颜色反转代码存在,但在已审查的效果链中未启用。
具体工具。
明确版本。
同样重要的是
了解边界。
发现的开发配置使用 Windows、MinGW、Ninja 和 GDB。Linux 与 macOS 尚未验证,路径大小写差异需要检查。
引擎不包含可视化编辑器、ECS、通用物理引擎、脚本系统或网页及移动端导出。游戏中的碰撞与物理逻辑由各场景单独实现。