top of page

跨越重洋

御剑飞往地平线

Project Pitch.

以关卡和技术设计为重点的项目

项目推介

玩家体验目标:
  • 快节奏的第一人称射击体验
  • 感受到紧迫的推进节奏
  • 被帅气的转场惊艳到
主要职责:
  • 设计和搭建关卡白盒
  • ​设计和实现关卡的交互物体
  • 设计关卡中的敌人生成位置
  • 实现敌人和玩家的伤害系统和UI
  • 设计并实现敌人的技能、行为树和EQS系统
  • 设计并实现转场的关卡序列

项目信息

《跨越重洋》是一款使用虚幻 5引擎历时三周开发的多人第一人称射击关卡。在这个关卡中,玩家将从一个山洞出发,探索附近的神殿,寻找一把灵魂之剑,帮助渡过海洋。然而,神殿被神秘的生物占据,这些生物极其危险,它们守护着封印灵魂之剑的能量水晶。

 

该关卡的游戏玩法和移动系统类似于Apex Legend和Borderlands 。所有敌人都具有脚本实现的技能,并由AI行为树和 EQS控制。该关卡包含以下脚本实现的功能:

  • 拥有技能的敌人(近战、远程)

  • 玩家移动系统(冲刺、滑行、攀爬、跳跃)

  • 伤害系统(生命值、弹药、装弹)

  • AI行为树和EQS系统

  • 随机掉落

  • 关卡互动物体(由关卡序列控制的漂浮平台)

  • 保存并加载系统

开发引擎:虚幻5
游戏环境:可执行文件
工作时间: 2024年1月10日-2024年1月24日
团队规模
: 个人
游戏时间: 5 - 10 分钟
亮点:

  • 快节奏的射击游戏和移动系统

  • 由AI行为树和EQS控制的敌人

  • 御剑飞行的转场动画

​核心技术展示

运动

climb.gif

攀爬

玩家运动系统包括行走、冲刺、滑行、攀爬和跳跃。所有这些都是UE 5的增强输入动作,其逻辑由 UE 蓝图实现。

管理玩家移动状态的方法 - 我定义了4种玩家的移动状态,并使用枚举器来记录玩家在游戏过程中状态的变化。这 4 种状态如下所示,它们由两个不同的方法管理

  • 步行

  • 短跑

  • 蹲伏

  • 滑动

当玩家的移动状态发生改变时,执行会触发对应的方法,并根据玩家的输入动作更新为新的状态。

滑行 - 当玩家冲刺时,按下蹲伏键将使角色开始滑行。然后,将执行以下步骤来处理从开始到结束的滑行:

  1. 通过使用TimeLine来控制玩家相机的旋转。

  2. 向玩家角色添加由地面坡度计算得出的力,以保持其速度直到斜坡末端。坡度的计算方式如下:

    1. 得到与斜面平行的单位向量

    2. 获取确定斜面是否结束的参数

    3. 将单位向量、参数和缩放倍数相乘。

  3. 当玩家的速度过大时,将其缩小至其最大冲刺速度。

  4. 滑行计时器结束时或斜坡变平时结束滑动

攀爬 - 攀爬涉及不断检查玩家是否面对可攀爬的物体。此检查由从玩家脚开始的射线处理。如果玩家面对可攀爬的物体,则当按下跳跃按钮时,射线命中将决定玩家能进行攀爬。

AI行为

TokensCombat.gif

基于Token的战斗AI

该关卡包含基于UE行为树开发的AI系统,涉及树的继承、Tasks、Decorators和Services。所有敌人都使用相同的 AI 控制器处理感知。所有行为树任务都采用相同的接口,以增加模块化并减少耦合。

AI 控制器 -我为该项目中的所有敌人实现了AI控制器。该控制器处理以下事项:

  • 初始化

  • 感知

    • 视觉

    • 声音

    • 损害

  • 忘记仇恨

  • 寻找攻击来源

  • 向盟友通报威胁

行为树 - 我设计并实现了该关卡中近战敌人和远程敌人的行为树。此行为树涉及以下技术点:

  • 子树

  • Services

  • Tasks

  • EQSs

  • Decorator

伤害系统和存读档系统

damage system.gif

伤害系统 - 伤害系统类似《毁灭公爵》中的伤害系统。AI 必须拥有token才能开始攻击。否则,它将更偏向采取保守防御策略并在目标附近徘徊。

基于token的战斗系统 - 除了处理受到伤害和治疗的方法外,伤害系统还使用token授予AI执行攻击的权限。否则AI将徘徊并等待新分配的token。执行攻击后,token将被回收,以供战斗中其他敌人获取。

respawn.gif

玩家将会在阵亡后复活

保存和加载系统 - 该关卡包含一个简单的保存和加载系统,允许玩家在退出游戏后恢复进度、重新开始关卡并通过检查点保存进度。保存涉及异步保存和正常异步,尽管在本项目的规模下内它们差别不大。

保存系统 - 保存系统由以下部分构成:

  • 游戏实例(保存并加载执行逻辑)

  • 保存游戏类(包含所有信息结构的对象)

  • 两个存储需要保存和加载的信息的结构(包括所有应本地保存的敌人的信息)

  • 检查点对象

  • 保存游戏界面

当玩家触碰检查点碰撞体或完成战斗时,游戏将会保存。游戏将在启动时和玩家死亡时加载最后一个保存文件。玩家也可以主动加载或重新开始关卡。

加载系统 - 这个关卡中的加载系统与玩家角色耦合。初始化玩家的角色后,上次保存的玩家属性将覆盖当前属性。此过程包括生成和恢复保存时拥有的武器和对应数量的弹药。

Level Desgin Goal.

关卡设计目标。

释放

逃离封闭环境的兴奋感

​快节奏

登场、杀光、搜光、捡光

​惊艳瞬间

以御剑飞行结束关卡

关卡概述与关卡设计图

Desig Process.
Design Goal 1.

#1 释放

逃离封闭环境的兴奋感。

cave1.gif

使用封闭隧道进一步增加战斗后的紧张感

通过封闭空间增加紧张感 - 在玩家完成洞穴区域尽头的艰苦战斗后,我让他们穿过一条黑暗的隧道,进一步增加了他们的紧张感。由于不确定性,玩家的紧张感会在这个黑暗、狭窄、潮湿的隧道中逐渐增加。

cave2.gif

通过突然急速的视野范围变化释放玩家的紧张和压力

化紧张为兴奋 - 当玩家抵达隧道尽头时,眼前突然出现一片开阔的地平线。从封闭到开放、从黑暗到明亮、从潮湿到清新,这种突然而巨大的转变将使之前积累的所有紧张和疲劳急剧转化为放松和兴奋。

Design Goal 2.

#2 快节奏

登场、杀光、搜光、捡光

Push Forward 1.png

呈现多条路线 - 此关卡计划兼容 3 - 4 名玩家的团队。因此,我设计了多条动线。所有玩家都可以快速顺利地进入战斗,清除挡路的敌人,打开所有宝箱收集战利品,然后前往下一个地点。此外,为了让玩家找到不同的路线,我策略性地将补给品作为“面包屑”放置在每条路线上。

Framing.png

通过巡逻来展示引人注目的战利品并展示即将面对的敌人

推动玩家前进 —— 为了让玩家继续前进,我使用了一些关卡设计的技巧来帮助玩家跟随关卡动线:

  • 框聚焦

  • 前映射

  • 面包屑

  • 聚焦

  • 光对比

Design Goal 3.

#3 惊艳瞬间

以御剑飞行结束关卡。

图片.png

令人惊喜且华丽 ——为了让玩家以一个意想不到的方式结束关卡,我设计并实现了了一个关卡序列。玩家解锁的剑会突然放大并变成一辆载着玩家穿越海洋的交通工具。

Postmortem.

反思

什么是
  做得好的?

  • 技术成功

    • 尽管我的时间有限,我还是完成了所有快节奏射击游戏的游戏玩法和AI行为树。

  • 流程和玩家视角的成功

    • 从幽闭到开放的突然转变很好地释放了玩家战斗后的紧张和疲惫。

    • 山洞后紧接的山丘是展现下一个任务目标和让玩家观察接下来的敌人的好地方。

  • 结局很酷

    • 业内人士试玩反馈称,这种华丽出人意料的结局太酷、太刺激了。

什么是
  ​做错了的?

  • 资产选择

    • 大部分资产的色彩都比较相似,导致出现一些重要的关卡元素与附近的环境融为一体的情况。

  • 有Bug

    • 攀爬动作存在严重BUG,有概率导致玩家无法结束攀爬

  • 玩家的身高

    • 我在设计的时候没有考虑到玩家的身高,导致洞穴尽头的斜坡在玩家靠近悬崖边缘之前地面都挡住了玩家的视线。

我学到了
 什么?

  • 更清楚我独特的工作流程

    • 一个简单的草图就足以快速规划出整个关卡

  • AI和行为树

    • 我之前没有接触过UE中的AI和行为树,这是我第一次在短时间内提升我的UE技术技能的尝试

  • 如何设计团队冒险游戏的关卡

    • 这是一个 3-4 人团队的项目。最初,我在决定关卡尺度和玩家参数时有很多不确定的地方。通过计算类似的游戏中玩家的速度和空间大小的比例,我确定了一个好的比例尺。

Gallery.

画廊

bottom of page