AWESOME ENGINE / 技术指南

简介

了解 Awesome Engine 的组成、可以从源码中学习的内容,以及各个系统状态的含义。

本页内容

可以深入探索的 2D 引擎

Awesome Engine 是使用 C++20 编写、基于 SFML 构建的游戏引擎。其核心把场景与渲染、资源、输入、音频、界面和持久化服务连接起来。仓库中的游戏展示了如何通过 C++ 代码使用这些服务。

本文档以 提交 5a6dfac 为参考,描述该修订包含的功能。仅在本地工作树中发现的改动会标为开发中。

包含哪些内容

  • 七个游戏场景: Bounce、Clicker、MemoryCard、TicTacToe、MineSweeper、Runner 和 Tetris。
  • 2D 渲染: SFML 可绘制对象、中间纹理,以及 Bloom 和 Monitor 后处理。
  • 基于动作的输入: 支持键盘、鼠标和手柄,同一动作可绑定多个输入。
  • 共享服务: 资源、时间、音频、粒子、JSON 存档和 PNG 截图。
  • TGUI 界面: 与窗口事件集成的控件和暂停覆盖层。

这些系统通过 EngineContext 连接。每个游戏实现 Scene 接口,并维护自己的对象和规则。本文档所述修订没有 ECS 架构或可视化编辑器。

建议的阅读顺序

  1. 安装并编译项目。
  2. 检查运行配置。
  3. 了解引擎循环及其依赖关系。
  4. 阅读场景接口约定。
  5. 探索渲染、资源以及输入与音频。

如何理解状态

状态 在本站中的含义
已实现 参考修订中存在具体代码,但不代表已认证所有平台或所有使用场景。
开发中 本地工作树中存在尚未包含在参考提交中的实现或改动。
实验性 代码已经存在,但集成被禁用,或不参与本文描述的常规流程。
已计划 需要项目提供明确记录的计划依据。没有证据时,不会把功能归为此状态。

AudioGroup、SpriteAnimator、SweptAabb 和用于冷却计时的共享时钟是在本地改动中发现的。克隆参考修订时,不应期待其中包含这些 API。

平台范围

仓库包含适用于 Windows、MinGW、Ninja 和 GDB 的开发配置。本次审查未验证 Linux、macOS、移动设备或浏览器上的编译和运行情况。仅凭所用库支持这些平台,不能认定整个引擎完全兼容。

引擎代码采用 MIT 许可证。历史记录中的条目对应真实提交,并非虚构的发行版本。

源码参考

基于已验证的源码。发现问题了吗? →