Peng's Portfolio
诗灵外传
独立游戏项目
完成于2024

此项目介绍已得到公司批准可用于我的个人网站。
简介
诗灵是我在上海独立游戏工作室 SugarDark Studio 工作期间参与的项目。这款游戏在后期遇到了很多挑战,但最终还是顶住了压力登陆了 Steam。虽然团队规模很小,但与大公司不同,每个人都可以自由表达自己的想法。人少,我有机会充分展示自己的所有技能,就像参加一个延长版的 Game Jam 一样。在这个团队中,我担任技术游戏设计师,负责使用蓝图设计和实现所有怪物(包括小兵和 Boss)的技能和 AI,尤其是 GAS(游戏能力系统)。我还独立完成了第二章的关卡设计,以及第一章和第二章(共三章)的游戏机制实现。
战斗介绍
首先,我想简单介绍一下我们的战斗系统。虽然我没有实现玩家的战斗机制,但它们与许多怪物的能力密切相关。玩家的战斗系统允许通过按一下键来实现时间停 止。在此时间停止期间,玩家可以使用鼠标左键或右键单击、拖动和创建各种形状。每种形状都有不同的效果——一些用于战斗,另一些用于解谜。
当怪物攻击或处于某些特殊状态时,玩家可以使用特定的鼠标手势将它们击倒在“虚弱”状态。在这种状态下,它们很脆弱,允许玩家造成重大伤害。有些 Boss 需要这种方法才能被击败;否则,它们将不受攻击伤害。
我独立实现了怪物状态变化和击倒的动画混合,以及将这些状态集成到 AI 行为树中。


怪物设计
在这个项目中,我们总共创建了 9 个仆从。其中,一个专门设计用于在战斗开始前追逐玩家。此外,无人机仆从有 4 种不同的形态,因此它们合计为 4 个不同的仆从。至于 Boss,总共有 3 个,每个都有 2 个阶段。当过渡到下一阶段时,Boss 模型会发生变化,并添加新能力。这些怪物的所有能力、AI、动画系统设置和配置均由我独自实现(艺术资产除外)。












在设计能力时,我会创建一个 Excel 表格,以简化管理并方便与同事讨论。点击下面的链接可以查看具体表格。

小怪设计示例 - 狼
在设计狼时,我将它们设想为凶猛、狡猾且善于团队合作的生物。我开发了一个系统,当一只狼攻击玩家时,其他狼会围成一圈,等待最佳攻击时机,展现它们谨慎狡猾的天性。此外,如果一只狼与玩家交战了一段时间,它会突然后退,让另一只狼接手攻击。

狼注视着玩家,保持警惕

当玩家接近狼时,它有时会跳开
因为我们的动画师还没有制作狼慢慢转头看玩家的动画,所以我利用虚幻引擎的动画系统来实现我们想要的效果。通过使用 Transform Bone 节点并将其与运动动画混合,我动态调整了狼的头部方向。这种方法帮助我们节省了动画制作成本,同时让狼的目光锁定在玩家身上。

其他怪物攻击展示







BOSS Design Example Dragon
龙的主要战斗循环
龙的BOSS叫应龙,是中国神话中的传奇生物。龙的主要战斗循环包括它的咆哮,使岩石从天而降。如果被石头击中,玩家会受到伤害;然而,这些石头也是避免龙的风攻击的一种手段。站在石头后面,玩家就不会被吹下平台。在龙的风攻击期间,玩家会被锁定在原地。此时,如果玩家使用时间停止和武艺能力来攻击将他们固定在原地的激光,他们就可以恢复移动并跑到岩石后面以避免风攻击。

石头开始掉落

未能躲避风的攻击
成功躲过石头后 面的风攻击

成功切断绑定线

龙的普通攻击和火球攻击交织在这个循环中,为玩家创造了额外的挑战。

龙的普通攻击

龙火球爆炸
作为 Boss,巨龙有两个阶段。最初,我计划为每个阶段设计完全不同的能力。然而,我们意识到这种方法会让两个阶段显得脱节,并会延长我们的制作时间。经过一番讨论,我们决定第 2 阶段将保留第 1 阶段的能力,增加其威力和频率,并引入一项全新的能力。
在设计第一阶段技能时,我并不想让战斗太具挑战性。因此,我给每个技能设置了比第二阶段相对较长的冷却时间,让玩家可以通过简单的动作躲避。第二阶段开始后,boss 会获得一项召唤蛇形小兵的新技能,为战斗增添一丝混乱和紧迫感。作为最终 Boss 的最终阶段,我的目标是让玩家感受到一丝紧张感,但又不会感到太难。

Dragon Phase 2 Attack
由于游戏倾向于 以叙事为主导的体验,因此我们并没有打算将战斗或谜题设计得特别困难。我们的目标是让玩家以舒适的节奏享受故事和游戏体验。

蓝图
在这个项目中,我使用蓝图来实现各种功能。我将重点介绍如何利用游戏能力系统 (GAS) 创建怪物能力、技能选择功能以及巡逻系统的开发。

Gameplay Ability System(GAS)
什么是 GAS?
虚幻引擎中的游戏能力系统 (GAS) 是一个强大的技能系统框架,主要用于管理游戏中的角色能力、属性、效果和交互。GAS 框架通过一系列类和接口将各种角色能力组织成可重复使用的组件,简化了游戏逻辑的编写和维护。


初始 GAS 设置
在项目启动的时候,我与程序员同事设置了GAS,包括玩家状态和属性,怪物属性等。


怪物属性数据设置
在实现怪物技能时,我主要创建游戏效果(GE)和游戏能力(GA),使用了许多与 GAS 相关的蓝图节点。这些节点帮助我在不同的蓝图文件之间传输数据。例如,通过使用“添加松散游戏标记”节点,我可以将玩家的攻击效果应用于怪物,为其添加新状态——这实现了不同蓝图之间的直接数据传输。


创建自定义标签
将闪光状态应用于怪物
对于所有与怪物相关的 GAS,我总共创建了 62 个游戏能力 (GA) 和 52 个游戏效果 (GE)。除了攻击能力之外,我还使用 GAS 实现了怪物防御、防御突破、受到打击和死亡等功能。

62 Gameplay Abilities (GA)
AI行为树和技能选择(工具)
我还独立完成了所有怪物的AI,分为两种:Minions和Boss。Minions的AI更加灵活,因为它们需要根据玩家或地形做出不同的反应。相比之下,Boss的AI相对简单,因为我们决定让它们按照既定的模式在不同的能力之间交替。

Minion Wolf AI Behavior Tree

Boss 龙的AI行为树
虽然Boss的技能释放模式很简单,但我还是创建了一个组件来管理技能的选择。将这个组件附加到Boss上后,Boss在选择技能时会遵循以下规则:它会从所有可用选项中随机选择一个技能,然后在释放该技能后,它会从剩余的未使用技能中随机选择下一个技能,依此类推,直到所有技能都使用完。当所有技能都释放完后,就会开始新一轮的技能选择。这确 保了每个技能的使用不会重复,同时又保留了随机性。

Boss 技能选择器组件

组件实现示图案例
巡逻系统(工具)


我用蓝图为自己和其他设计师制作了一个巡逻工具,设计师只需要在需要巡逻的怪物上添加这个组件,并进行一些设置,怪物就可以开始巡逻了。

具体蓝图实施
设计师可以通过这套巡逻系统来控制场景内的巡逻距离、巡逻位置等。如下图所示,怪物会沿着设计师设定的点定义的路径进行巡逻。

直线巡逻

曲线巡逻
设定好巡逻路线后,设计师还可以配置AI的巡逻类型。巡逻类型有两种:第一种是怪物到达最后一个点后,下一个点成为起点,怪物完成一次“循环”。第二种我称之为“返回”,怪物到达最后一个点后,会按照原路返回。此外,设计师还可以设定怪物在每个点的等待时间。这些功能让设计师在设置怪物巡逻时,这个工具变得极为方便。

额外巡逻设置