AWESOME ENGINE / 技术指南

故障排查

针对编译、资源、控制、存档及已审查修订限制的具体诊断方法。

本页内容

CMake 无法配置项目

确认当前位于正确的仓库根目录,且 cmake --version 显示 3.28 或更高版本。如果选择了 -G Ninja,请确认终端中可以使用 Ninja 和编译器。

CMake 使用 FetchContent 下载依赖项。连接、代理或 Git 错误可能在编译引擎之前就中断该阶段。请保留原始错误消息,以区分下载失败和 C++ 错误。

如果需要更换生成器或编译器,请在新目录中配置,不要复用其他工具生成的缓存。

编译器找不到 C++20 功能

项目要求 C++20,并使用 std::format 等标准库功能。选择语言标准不会为旧版编译器库补充缺失功能。请同时检查编译器及其标准库版本。

.vscode 中的路径来自作者的电脑。这些选项中的路径无效,并不意味着你必须把工具安装到同一位置。

可执行文件找不到 Config.json 或资源

从 Content 所在的根目录运行:

.\Build\AwesomeEngine.exe

不要先切换到 Build 目录。配置、着色器、纹理、字体和音效都使用相对路径。还要确认名称与当前副本中的文件完全一致。

无效的 JSON 或缺少必填键可能阻止启动。请对照参考文件,并保持预期的数据类型。

区分大小写的系统上出现错误

已审查修订中的 Git 路径与代码使用的路径存在差异。例如,目录树中是 Engine/Include/utils,但一些 include 使用 Utils。

Windows 的常见配置可能允许这种差异,其他系统则可能拒绝。本文档没有认证 Linux/macOS 兼容性,也没有声称已验证在这些系统上构建。

Engine 请求名为 Menu 的场景,但 SceneFactory 没有注册该名称。Debug 配置下可能触发断言,其他配置下的映射查询也可能失败。

在此修订中,请避免使用 Menu 按钮、M 和手柄 Select。使用 Escape 继续、R 重启或 Quit 关闭。本文档无法推荐一个可正常工作的场景选择器。

切换窗口时游戏暂停

这是已定义的行为:Engine 在失去焦点时暂停场景。没有焦点时,循环停止渲染但持续更新时钟。如果切回后覆盖层仍然可见,请使用 Resume 或 Escape。

在公开参考修订中,每个场景自行控制暂停响应。在电脑上发现的共享冷却时钟重构当时仍属于本地改动。

效果未出现,或调整窗口尺寸后外观改变

只有 sf::Shader::isAvailable() 为真时才会配置效果链。创建后 Bloom 和 Monitor 启用;Glitch 和颜色反转没有连接到常规流程。

渲染纹理按配置尺寸构建。尺寸调整回调不会重建纹理,因此不应期待完整的动态分辨率系统。

手柄响应异常

按钮映射识别 Microsoft 厂商,并为其他手柄使用另一张表。请检查 InputBindings.cpp 以及 SFML 提供的设备标识。没有发现通用控制器数据库或通过界面持久保存重新映射的功能。

调用 Clear 后存档未删除

SaveManager 会清空内存数据,但只有析构时仍有数据才会写入。因此,Clear 不一定删除之前的文件。测试改动前,请备份 Content/Save.json,并在应用关闭时检查内容。

对于 JSON 无效的存档文件,也没有通用恢复机制。

截图没有保存

F12 将截图保存在 Content/Screenshots。请检查写入权限和可用空间。ScreenshotManager 会记录保存是否成功;只有保存操作返回成功时才播放截图提示音。

报告可复现的问题

在仓库创建问题时,请提供所用提交、操作系统、编译器、执行命令、工作目录、错误消息和复现步骤。说明副本是否包含本地改动,以便区分已发布代码和仍在开发中的工作。

源码参考

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