top of page

           阈值实验

​炮台 vs. 结群的怪物

Project Pitch.

以系统和技术设计重点的项目

项目推介

经验目标:
  • 为《辐射 4》玩家打造塔防体验
  • 上手容易但精通难
  • 鼓励思考针对不同类型敌人的策略。
  • 鼓励玩家确定最佳解决方案以获得最大奖励。
我的贡献:
  • 设计和搭建关卡白盒
  • 撰写设计文档并迭代关卡至可发布品质
  • 设计并编写塔防系统脚本
  • 设计并编写控制塔防系统的定制武器
  • 为塔防系统设计并编写特殊引导工具和反馈工具脚本
  • 设计并平衡击杀换取货币的经济系统
  • 将关卡装饰得美观

项目信息

阈值实验是一个《辐射4》的模组关卡,包含1个专门为塔防玩法设计的内部空间。该关卡的特点是利用3种不同类型的炮塔对抗10波特点不同的入侵敌人。同时,还引入了基于击杀数奖励玩家游戏币的经济系统。

在这个关卡中,玩家需要协助学院科研科技部门的科学家完成对他们的新炮塔系统的测试。从技术角度来看,该关卡包括一个完全完善的塔防玩法系统,该系统由以下由脚本实现的功能组成:

  • ​激活炮塔

  • ​切换炮塔

  • 升级炮塔

  • 波次生成器和逃生点

  • 入侵路线的引导工具

  • 下一次入侵运路线的引导工具

  • 基于弹药的击杀与奖励系统

开发引擎:创作套件:辐射 4
模组游戏:《辐射 4》
开发时间: 2023年6月4日-2023年7月17日
团队规模:
个人
游戏时间: 30 - 45 分钟
亮点:

  • 完全由脚本实现的炮塔防御系统,具有清晰的传达和反馈

  • 10组敌人不同,路线不同的波次

  • 随时结束挑战以获得最佳奖励

​核心技术展示

波次生成器

结构展示.png

Wave Spawner 通过结构体类型数组实现,该数组存储了被生成单位的 ActorBase 以及生成时间(波次索引)和地点(生成点的位置)。

一体化的系统管理器.png

此外,关卡中使用了一个公共数据集脚本来存储所有独立变量以供引用和调整。其他脚本在初始化时构造一个引用该数据集的本地变量。每当我想更改一个独立变量时,我都可以直接在公共数据集脚本中更改它,这使得该变量在其他脚本中的所有引用都会自动更新。这为我节省了后期数值平衡工作的时间。

每当玩家释放一个波次时,如果满足所有条件,执行将首先进入“工厂函数”,该函数会触发与“释放波次”功能相关的所有其他函数。

每当一个实体被生成时,它会将自己加入到一个全局公用的列表和注册广播全局“死亡事件”,以便系统可以追踪其死亡。此外,一些敌人被放大,以便玩家可以在竞技场中轻松看到它们。

与炮塔交互

为了开发塔防玩法系统,我在不开发新的控制器的情况下,为玩家提供三把枪:激活器、切换器和升级器来处理炮塔的建造、切换和升级。

这些枪的基本逻辑是相似的:

  1. 击中目标

  2. 通过脚本激活Magic Effect的效果脚本

  3. 广播反馈和视觉引导的更新到其他控件

引导与反馈

新系统需要新的传达和反馈方式。通过脚本实现了入侵路线变化、展示后续敌人波次、展示炮塔类型和提示敌人位置的控件。

Desgin Goal.

设计目标。

动态性

多维度的策略空间

动态的入侵路线

清晰性

清晰的引导 &

反馈

数值平衡

平衡的击杀与奖励经济系统

平衡的敌人与塔防系统

关卡概述与关卡设计图

Level Maps
Design Goal 1.

#1 动态性

多维度的策略空间

三种炮塔类型.gif

三种类型的炮塔

为了让玩家考虑每波攻击的炮塔策略选择,我设计并使用脚本制作了三种类型的炮塔:机枪炮塔、激光炮塔和冰冻炮塔。每种类型的炮塔都有自己的优点和缺点。

Turret Comparation.gif

  激光对付仿生人效果更佳

他们的特点:

  1. 机枪塔:更好地对付生物敌人

    • 3级时解锁在击中时附加燃烧DOT

  2. 激光炮塔:更擅长对付非生物敌人

    • 3级时解锁命中时能降低目标能量护甲

  3. 冰冻炮塔:几乎不造成伤害,但能大幅度减缓敌人的速度

    • 3级时解锁在命中时产生能短暂冻结范围敌人的新星

动态的入侵路线

第 1 - 4 波次

波形 1.gif
波形 2.gif
波次 3.gif
波次 4.gif
图片1.png
图片1_编辑后.png
图片1_编辑.png

为了避免用炮塔包围逃脱点的最优解,我设计了 10 波敌人,从不同的出生点生成并入侵,并沿着不同的路线前进。这也给玩家带来了如何分配放置不同类型的炮塔的策略挑战。

Design Goal 2.

#2 清晰的引导

炮塔交互的引导和反馈

Activate Turret.gif

  炮台指示灯指示目标炮塔的当前等级

挑战一:《辐射 4》是一款第一/三人称射击游戏,玩家控制器与塔防玩法系统不兼容,特别是提供引导和反馈的控件的方面。为了解决这个问题,我设计并使用脚本实现了几个特殊的引导工具以及炮塔的反馈效果。

每波次入侵路线的指示器

Route Caty.gif

  下一波入侵路线

挑战2:由于《辐射 4》是一款射击游戏,玩家很难俯瞰整个战场,因此我针对系统设计并制作了一下适配脚本:

  1. 在玩家每一波结束时点亮下一波的路线

  2. 制作了一个“展示笼”,用于展示当前和下一波的敌人

  3. 让玩家决定何时开始新一波挑战,让他们有更多时间观察路线并制定策略

​

Design Goal 3.

#3 数值平衡

平衡的敌人vs. 塔防系统

数值表格 1.jpg

我把所有炮塔武器和所有敌人的参数做成一个表格,这样我就可以分析它们之间的关系。有了这些数据,我制作了另外两个依赖值表,包含,DPS(每秒输出伤害), SPK(每次击杀耗时),等数据。

数值表格 2.jpg

后来,使用关卡设计文档中设计的数值表格,我成功地制作了第一版的平衡性良好的关卡,以供进一步测试和迭代。因此,在关卡发布日期之前的后续迭代中,我主要关注如何解决敌人的高移动速度导致炮台命中率低的问题

Postmortem.

反思

什么是
  做得好的?

  • 在《辐射》世界中创建塔防玩法系统

    • 使用游戏中已经存在的炮塔和生物成功建造塔防关卡​

    • 入侵的敌人、防御炮塔和经济系统之间保持良好的平衡

  • 系统强大且易于重复使用

    • 使用结构体和全局变量来处理波次,可以适应类似的关卡,方便后续开发

    • 大多数公共定义的参数都存储在单独的脚本中,这提供了一种简单的调整和复用方法

  • 引导和反馈控件运行良好

    • 很好地利用了生成小猫来照亮下一波入侵路线​

    • 良好的引导方式,传达炮塔的类型和特色、等级参数和特殊效果

    • 精心设计的展示笼告知玩家下一波将会出现什么样的敌人

什么是
  ​做错了的?

  • 设计了一个太过经典的塔防关卡

    • 由于《辐射》是一款第一/第三人称射击游戏,玩家很难俯视整个关卡

  • 这个关卡仍存在最优策略

    • 路线设计允许玩家采用最优解,即玩家仍然能集中在逃生点周围建立防线

  • 一开始的认知负荷太高​,但当玩家在弄清楚操作机制和最优解后挑战性迅速降低

    • 由于开发时间有限,玩家在关卡开始时需要在短时间内学习很多东西,这其中包含一整套系统​

    • 应该设计一种不那么经典的塔防风格,让玩家通过更多通过射击来防御(比如“兽人必须死”)

我学到了
 什么?

  • 乐趣先行,然后让游戏世界适应乐趣

    • 虽然塔防关卡与《辐射 4》的游戏核心并不兼容,但由于《辐射 4》的天马行空的叙事方式,成功使关卡的叙事合理

  • 在预开发阶段设计基础数值表有助于后续的平衡​

    • 预开发阶段我花了额外的时间制作了一个数值表,设计了每波次需要设置多少个敌人,以及其参数,帮助我在后期开发里程碑中分析平衡性

  • 要向玩家教授一个新系统,需要比我预期更多的关卡或内容​

    • 回想一下我之前玩过的塔防游戏,都是用两到三个关卡来逐步教授游戏的一个机制,然后逐步才引入更多机制​

Gallery.

画廊

bottom of page