← 返回项目列表

Grey Waves《灰色的海浪》

一款 3D 叙事解谜游戏:一位中学老师被困在地震当天的校园时间循环里。玩家在 96 秒的循环中寻找救出所有人的最佳方案,并在无时限的废墟“记忆宫殿”中探索线索、拼出每个角色的故事。

时间
2026.01 – 2026.04
团队
CMU ETC 研究生小组项目 · 6 人
引擎
Unreal Engine 5 · Blueprint · Level Sequence
我的角色
玩法程序 / 系统设计 · 客户端架构 · 部分特效
Grey Waves
Grey Waves
实机录屏:校园废墟中的探索(Unreal Engine 5)

项目概述

《灰色的海浪》是 CMU ETC 2026 春季学期的研究生小组项目,一款 Unreal Engine 5 叙事解谜游戏。主角是一位中学老师,在一次小地震触发创伤后,被困在地震当天的校园里不断重复。游戏由三个空间组成:

  • 现实 / 开场:温暖、安全、写实的校园,一次小地震触发了主角的创伤。
  • 96 秒时间循环:地震发生的教学楼。每轮只有 96 秒,目标是找到最佳方案、救出所有人。时间耗尽即重置。
  • 废墟 / 记忆宫殿:灰白、模糊、悲伤的废墟世界,没有时间限制。玩家在这里发现线索、了解每个角色的故事,再把线索带回循环里使用。

团队 6 人,包括导演(项目提出人,负责整体剧情)、叙事设计、3D 美术、技术美术和程序。我作为玩法程序与系统设计,负责核心玩法系统的实现;玩法由我与导演共同设计。

三个空间的结构:现实 → 96 秒循环 → 废墟记忆宫殿(最终汇报)
三个空间的结构:现实 → 96 秒循环 → 废墟记忆宫殿(最终汇报)
时间循环(限时、求最优解)与记忆宫殿(无时限、探索故事)
时间循环(限时、求最优解)与记忆宫殿(无时限、探索故事)

同一所学校的三种状态:现实(暖、写实)与废墟(灰白、模糊)。场景美术由团队美术同学完成。

救援设计:线索如何改变 96 秒

循环里有两位被困的学生:郑浩受伤无法行走,王旭被锁在房间里。每个人都有两种救法,这是整个玩法的核心矩阵:

郑浩(受伤)王旭(被锁)
蛮力解法
耗时,96 秒内很难两个都救
找材料做一个夹板,把他背出去——
剧情解法
需要先在废墟里找到线索
阻止他回到教学楼弄清他为什么被锁,再找到钥匙

设计意图是让“了解角色的故事”成为可玩的收益:玩家在废墟里发现的线索,决定了他在 96 秒里能触发哪些事件、能走多短的路线。线索 → 事件状态 → 场景变化与演出,这条链路就是我在技术层面要打通的东西。

救援方案矩阵(最终汇报)
救援方案矩阵(最终汇报)
早期纸面原型:用便签在平面图上推演 96 秒内的路线与事件
早期纸面原型:用便签在平面图上推演 96 秒内的路线与事件
教学楼平面图与玩家出生点
教学楼平面图与玩家出生点
概念图:灰色的海浪
概念图:灰色的海浪

我负责的部分

我负责

  • 整套 96 秒限时循环系统(独立实现):循环计时、重置,以及关键节点完成后对 96 秒场景的对应改变
  • NPC 救援玩法(与导演共同设计)
  • 依据玩家已探索的线索,动态触发废墟世界中的 Level Sequence,把剧情演出做成游戏内事件而不是预渲染过场
  • 事件触发器与玩家交互逻辑、物品栏与物品合成、叙事检视(Inspect)系统的一部分,以及试玩后新增的笔记本
  • 客户端架构(GameMode / GameInstance 等框架层)
  • 部分特效与叙事演出的系统层支持

团队其他成员负责

  • 整体剧情与导演(项目提出人)
  • 叙事设计
  • 基础 NPC 交互与 NPC 头顶文字系统
  • 3D 美术:模块化场景、道具、角色
  • 技术美术:地震的 Chaos 破碎、Niagara 灰浪与粉尘、材质与后处理

限时循环与场景变化

96 秒循环是游戏的骨架。我把它实现为一套独立的系统:倒计时、到时重置、每个救援关键节点完成后在 96 秒场景中触发对应的变化。导演可以在这套系统上挂新的节点和演出,而不用改循环本身。

循环场景与废墟场景之间通过传送门切换;下面是两个空间的切换录屏,以及关键节点触发的实机片段。

场景切换:从循环中的教学楼进入灰白的废墟世界
事件触发器:进入区域后触发角色对话与演出
由事件状态触发的 Level Sequence 过场
循环中的废墟校园
编辑器中的触发区域与事件体积
编辑器中的触发区域与事件体积
Level Sequence 过场在 Sequencer 中的组织
Level Sequence 过场在 Sequencer 中的组织

物品、检视与合成

蛮力解法需要玩家在 96 秒内找材料做夹板。我实现了物品栏、物品检视和合成:在安全公告栏上可以检视到“简易夹板的做法”,再在场景里找到布和尺子,合成出夹板。物品用数据表配置(名称、描述、图标、数量),新增物品不用改逻辑。

布+尺子→夹板
布 + 尺子 → 夹板(游戏内道具)
检视系统:查看公告栏上的夹板制作说明
线索与钥匙:根据对话找到被锁的学生
物品栏
救援互动:为受伤的学生上夹板

可交互物件与提示:公告栏、课桌、上锁的柜子、门上的交互提示;右下为物品数据表。

试玩问题 → 笔记本

试玩暴露了三个问题:玩家捡到关键物品后几分钟就忘了它是干什么的;看完废墟里的过场后记不住说了什么、下一步该做什么;单个线索能看懂,但跨场景、跨循环之后线索断了。

我们的解决方案是给玩家一个笔记本:把分散在场景、物品和过场里的信息收敛到一个可以随时回看的入口,顺便承担引导的职责。这是我在学期后段实现的系统。

试玩中发现的三个问题
试玩中发现的三个问题
笔记本界面(按 N 打开)
笔记本界面(按 N 打开)

技术证据

物品栏:编辑器中的结构
物品栏:编辑器中的结构
物品栏相关 Blueprint
物品栏相关 Blueprint
交互系统:可交互物件与提示图标
交互系统:可交互物件与提示图标
笔记本方案(最终汇报)
笔记本方案(最终汇报)

主菜单、角色与模块化资产由美术同学制作;地震破碎(Chaos)由技术美术同学制作。

回顾

这学期我们只完成了原定范围的大约三分之一,但做出了一个能玩的原型,把一个抽象的想法变成了可以试玩、可以被推翻的东西。我自己最大的收获是对叙事游戏的看法变了:故事不需要一开始就定死,它应该和玩法一起长出来——交互设计、玩家行为和系统约束会不断改写叙事的方向。另外一个教训是范围控制:我更习惯埋头实现,下次要更早把技术风险和制作周期对上。