一、本周结论
在一块空白的文件夹上,从零搭出一套可编译、可运行的 Unreal Engine 5.8 第三人称游戏工程:环境工具链打通,玩法 v0.1 完整落地,首次编译一次通过(0 错误)。
- 实际投入 2 天(10-08、10-09),完成度:骨架 100% / 玩法 v0.1 100% / 编译验证 100%。
- 唯一未验证项是手感与视觉——代码编译无报错,但还没在编辑器里真正试玩一局。这是下周第一件事。
二、关键成果
| # | 成果 | 说明 | 产出 |
|---|---|---|---|
| 1 | 工具链从 0 打通 | 定位并解决「VS 只装了本体、缺 C++ 游戏开发工作负载」这一硬门槛 | MSVC 14.51 + Windows SDK 10.0.26100 + UE 5.8 全线可用 |
| 2 | 首次编译成功 | YxGame/YxGameEditor两模块链接通过,Result: Succeeded | Binaries\Win64\UnrealEditor-YxGame.dll(364.5 KB) |
| 3 | 玩法 v0.1 落地 | 收缩安全区 + 共鸣值 + 分档碎片 + 结算的完整一局循环 | 代码 +Docs\玩法设计-v0.1.md |
| 4 | 技术栈完成迁移 | 由 Unity 转向 UE 5.8,旧工程整体归档不删除 | Source\(14 个 C++ 文件)+UnityArchive\ |
| 5 | 工程可交付化 | 纯文本工程(无.umap/.uasset二进制),带自检脚本与验收清单 | Tools\verify_project.py、Docs\上手与验收.md |
三、工作明细(时间线)
| 日期 | 工作内容 | 产出 | 状态 |
|---|---|---|---|
| 10-08 | 立项:确认做全新 3D 项目,搭出第一版工程骨架(Unity 版,15 个 C# 脚本 + 代码生成场景) | 可运行的 Unity 骨架 | 完成 |
| 10-08 | 转向 Unreal:确认本机装的是 UE 5.8,Unity 从未安装。旧版整体归档,同步重建 C++ 骨架(26 文件 / 53 KB) | YxGame.uproject+Source\+Config\ | 完成 |
| 10-08 | UE 启动排障:启动器报LS-0019-IS-0001,定位为前置检查卡住而非引擎损坏,确认绕过启动器直启编辑器 | 排障结论写入文档 | 完成 |
| 10-09 | 工具链补齐:VS 2026 Community 本体已装但缺 C++ 工作负载,补齐后 MSVC / Windows SDK 就位 | 编译前置条件达成 | 完成 |
| 10-09 | 玩法 v0.1 落地:世界收缩、共鸣值、碎片分档解锁、结算与重开、演示模式 | 4 个核心类改写 + 玩法设计文档 | 完成 |
| 10-09 | 首次完整编译:暴露并修复 3 处 UE 5.8 API 差异,两模块链接成功 | UnrealEditor-YxGame.dll | 完成 |
| 10-09 | 工程复核:自检脚本扩到 20 项玩法连线检查 | 问题数 0,源码非 ASCII 行 0 | 完成 |
四、关键决策与依据
| 决策 | 依据 |
|---|---|
| 主力引擎定为UE 5.8 + C++,Unity 版归档 | 本机 Unity 从未安装,而 UE 5.8 已就位(29.9 GB);不为开工再承担一次数十 GB 的安装 |
不手写.umap/.uasset,世界由YxGameMode::BuildWorld()代码生成 | 二进制资源易坏、无法 diff、版本敏感;纯文本工程可以直接提交、比对、回滚,也让"空关卡按 Play 就能跑"成立 |
| 输入映射在 C++ 运行时构造,不产出资源文件 | 同上;且把全部输入收敛到YxPlayerController.cpp一个文件,换输入方案只改一处 |
| 循环与玩法解耦:时钟只计时、只广播阶段、只提供安全半径 | 调「1800 秒 / 3 阶段 / 半径曲线」不会牵动任何玩法代码 |
| 调试 HUD 走引擎内置的屏上文本,不依赖 UMG | 工程首次打开不会因缺资源报红,零资产依赖 |
| 玩法定为收缩安全区 + 共鸣值 + 分档碎片 | 让「越界」有代价也有回报:越晚解锁的碎片越远、越值钱,把"贪一点"变成核心决策 |
五、问题与解决
| 问题 | 现象 | 解决 |
|---|---|---|
| VS 工作负载缺失 | UBT 报「Visual Studio is installed, but is out of date or missing a valid C++ toolchain」 | 补勾「使用 C++ 的游戏开发」工作负载,cl.exe与 SDK 落盘后编译放行 |
| 引擎未注册到系统 | 双击.uproject无关联程序 | 直接运行D:\UE_5.8\Engine\Binaries\Win64\UnrealEditor.exe绕过启动器 |
| UBA 权限报错 | 命令行编译时 UBA 子进程被拦,报Access is denied导致 PCH 打不开 | 编译命令固定加-NoUBA(已写入文档) |
| UE 5.8 API 差异(3 处) | 首次编译报错 | ①AGameModeBase已无bDelayedStart成员 → 删除;②ULightComponent无SetBrightness()→ 改用SetIntensity();③Target.cs的DefaultBuildSettings须用 V7 → 已改 |
| 沙箱环境限制 | 提权安装、启动 GUI 进程均被拦 | 改为由人工点击完成,命令与路径已备好 |
六、量化指标
| 指标 | 数值 |
|---|---|
| 有效工作日 | 2 天 |
| C++ 源码 | 14 个文件(7 个.h+ 7 个.cpp),另 4 个构建脚本 |
| 静态自检项 | 20 项玩法连线检查,问题数 0 |
| 源码编码合规 | 非 ASCII 行0(规避 MSVC 乱码) |
| 编译结果 | 2 个模块链接成功,Result: Succeeded,主模块 DLL 364.5 KB |
| 交付体积 | 工程全文本,不含引擎缓存 |
七、下周计划(10-12 ~ 10-16)
| 优先级 | 事项 | 验收标准 |
|---|---|---|
| P0 | 实机 Play 一局(本项目唯一未验证项) | 编辑器内跑完整一局,无崩溃、无报错 |
| P0 | 手感调优:共鸣消耗/恢复速率、安全区收缩曲线、移动速度 | 出一版调参记录(改前 → 改后 → 主观感受) |
| P1 | v0.2「三扇门」:封锁墙(只闪现可穿)/ 脆弱平台(只冲刺可破)/ 隐藏碎片(只扫描可见) | 「能力是钥匙」从文档变成可玩手感 |
| P2 | 美术替换:接入骨骼网格体 + 动画蓝图,替换占位方块 | 角色不再是方块 |
| P2 | 结算界面:由屏上文本升级为正式面板 | 一局结束后有完整结果呈现 |
| P3 | 提交清理:删除Binaries/、Intermediate/、Saved/、UnityArchive/、Preview/ | 按验收清单逐项打勾 |
八、风险与需要的支持
- 手感仍是未知数。编译通过只证明代码没错,不证明好玩。下周实机试玩后可能需要一轮较大的数值返工,需预留时间。
- 提权操作需人工介入。本机环境不允许自动化拉起提权安装与 GUI 进程,涉及软件安装的环节必须由我手动点击,可能造成等待。
- 美术资源缺口。目前全部是引擎自带的占位方块与基础材质,正式美术(模型 / 动画 / 材质)尚未开始,属于后续独立工作项。
- 引擎注册未修复。双击
.uproject打开工程的体验仍依赖手工路径,属环境整洁度问题,不影响开发。
九、交付物清单
| 类别 | 路径 |
|---|---|
| 工程入口 | YxGame.uproject |
| 运行时代码 | Source\YxGame\ |
| 构建配置 | Config\DefaultEngine.ini/DefaultGame.ini/DefaultInput.ini |
| 设计文档 | Docs\玩法设计-v0.1.md |
| 上手与验收 | Docs\上手与验收.md |
| 自检脚本 | Tools\verify_project.py |
| 工程说明 | README.md |
| 旧版留底 | UnityArchive\、Preview\(可删) |