< Return to Video

The stuff no one tells you about game development

  • 0:00 - 0:02
    大家好,我是马克
  • 0:02 - 0:06
    我正在制作一款有关「磁铁」的游戏
  • 0:06 - 0:08
    首先,我这个视频系列的一大初衷
  • 0:08 - 0:12
    就是要真实、透明、全面的为你展示
  • 0:12 - 0:15
    自己亲自制作游戏是什么体验
  • 0:15 - 0:16
    而这某种程度意味着
  • 0:16 - 0:20
    我不可能只向你展示那些有趣、欢乐
  • 0:20 - 0:22
    适合做成视频的部分
  • 0:22 - 0:24
    比如为游戏机制打造原型
  • 0:24 - 0:25
    设计关卡
  • 0:25 - 0:27
    或者放出惊喜 DEMO
  • 0:27 - 0:29
    而且,就目前来看
  • 0:29 - 0:34
    游戏开发过程中,实际有大量的工作都称不上有趣
  • 0:34 - 0:35
    比如制作菜单
  • 0:35 - 0:36
    屏幕 HUD 界面
  • 0:36 - 0:38
    保存和读取数据
  • 0:38 - 0:40
    支持各种不同的控制器类型
  • 0:40 - 0:41
    同步选项
  • 0:41 - 0:43
    追踪进展
  • 0:43 - 0:45
    制作关卡过场,以及更多
  • 0:45 - 0:49
    这部分内容很少在开发者记录、或是纪录片中出现
  • 0:49 - 0:52
    因为说实话,它们很无聊
  • 0:52 - 0:54
    但总有人来做这部分内容吧
  • 0:54 - 0:58
    而在本游戏中,这个人则是……
  • 0:58 - 1:00
    额,好像是我自己啊 ?
  • 1:01 - 1:09
    开发之旅
  • 1:10 - 1:12
    那么,在本系列的上期视频中
  • 1:12 - 1:15
    我完全重制了自己的角色操控系统
  • 1:15 - 1:20
    其中就包括了为玩家提供更丰富的操控选项设置 :
  • 1:20 - 1:26
    比如让你在「按下按钮瞄准」和「按住按钮瞄准」之间选择
  • 1:26 - 1:30
    还有让玩家能够自由设置所有功能的键位
  • 1:30 - 1:33
    还有让玩家自由设置磁铁的颜色
  • 1:33 - 1:36
    这些选项对于单个的临时测试关卡来说运作良好
  • 1:36 - 1:40
    但如果我想让这些选项在整部游戏中都能通用
  • 1:40 - 1:44
    我就需要找点方法,在不同的关卡之间同步这些选项
  • 1:44 - 1:48
    让玩家在硬盘中保存和读取自己的选项设置
  • 1:48 - 1:53
    并为玩家们提供 UI,用来设置这些 ……「设置」
  • 1:53 - 1:56
    那么在研究了一阵子之后
  • 1:56 - 1:57
    这是我得出的成果 :
  • 1:57 - 2:00
    当你第一次启动游戏,进入主菜单时
  • 2:00 - 2:03
    我会生成一个「设置管理器」
  • 2:03 - 2:06
    这是一个包含了好几个脚本的隐形 Game Object
  • 2:06 - 2:12
    用来追踪玩家的设置,并将这些选项设置存储、读取在硬盘中
  • 2:12 - 2:16
    这个 Object 会被设置为「DontDestroyOnLoad」
    加载新场景时不要破坏
  • 2:16 - 2:18
    这意味着,当玩家开始游戏时
  • 2:18 - 2:22
    主菜单界面会被从内存中删除,以一个关卡取代
  • 2:22 - 2:27
    但是,这个「设置管理器」会像个钉子户一样赖着不走
  • 2:27 - 2:29
    而因为它会停留在内存之中
  • 2:29 - 2:32
    这个新的关卡仍然能够找到设置管理器
  • 2:32 - 2:34
    然后轻松得问它问题
  • 2:34 - 2:36
    比如玩家角色可以问 :
  • 2:36 - 2:38
    「我现在应该使用低灵敏度的瞄准吗?」
  • 2:38 - 2:40
    然后磁铁可以问 :
  • 2:40 - 2:41
    「我现在应该变成什么颜色?」
  • 2:41 - 2:42
    而这个面板可以问 :
  • 2:42 - 2:45
    「我现在是否应该显示无障碍标志?」
  • 2:45 - 2:47
    简单说,我在这里所做的事是
  • 2:47 - 2:53
    将游戏的底层关卡逻辑,与实际的关卡设计内容拆分开来
  • 2:53 - 2:56
    现在想来,这是一目了然的设计
  • 2:56 - 2:59
    但我在 MVP 阶段完全忽略了这个方面
  • 2:59 - 3:03
    那时,每个关卡都有大量各自的复制粘贴代码
  • 3:03 - 3:05
    无论是流程存读档
  • 3:05 - 3:07
    还是关卡切换功能
  • 3:07 - 3:12
    甚至每一关都有独立的复制「暂停界面」,用来在游戏中使用
  • 3:12 - 3:14
    这非常不方便
  • 3:14 - 3:16
    让测试关卡运转缓慢
  • 3:16 - 3:19
    为我的 Hierarchy 增加了大量无意义的废物
  • 3:19 - 3:22
    它让选项的设置变得非常难以统一
  • 3:22 - 3:25
    在不同关卡之间追踪物品细节也非常困难
  • 3:25 - 3:29
    这个新系统就可就要聪明太多了
  • 3:29 - 3:35
    所以我决定多创建一些类似的隐形管理器
  • 3:35 - 3:38
    现在,你可以将一个关卡的名字发送给「过场管理器」
  • 3:38 - 3:42
    它会擦除现有的关卡,然后跳转到一个新的关卡
  • 3:42 - 3:45
    与它成对的还有这个「音乐管理器」
  • 3:45 - 3:52
    它会让暂时没做好的背景音乐随着关卡的载入而淡入淡出
  • 3:52 - 3:55
    还有「HUD 管理器」,负责在屏幕顶层绘制信息
  • 3:55 - 4:00
    比如教程提示、以及根据情况出现的按键提示图标
  • 4:00 - 4:03
    而且,它还会根据你的控制器类型自动变化
  • 4:03 - 4:09
    我还制作了一个「UI 管理器」,用来放置暂停菜单和选项菜单
  • 4:09 - 4:13
    我承认,目前它看起来丑到不行
  • 4:13 - 4:15
    我只是打算先专心打造基础
  • 4:15 - 4:17
    —— 未来会把它改好看的
  • 4:17 - 4:19
    与声音设计类似
  • 4:19 - 4:23
    UI 设计是未来马克的工作
  • 4:23 - 4:28
    是的我承认,似乎未来马克的工作开始越堆越多了
  • 4:28 - 4:30
    而我打算再制作一个额外的管理器
  • 4:30 - 4:37
    那么,在 MVP 中,游戏从第一关到第二关、再到第三关,以此类推
  • 4:37 - 4:43
    但我不认为,这样线性的关卡排布对解谜游戏来说是最好的
  • 4:43 - 4:47
    当然,有些解谜游戏是这样的,比如《传送门》和《inside》
  • 4:47 - 4:48
    但其他的,比如说
  • 4:48 - 4:49
    《时空幻境》
  • 4:49 - 4:50
    《史蒂夫的香肠卷》
  • 4:50 - 4:52
    还有《巴巴是你》
  • 4:52 - 4:54
    都有着更开放性的结构
  • 4:54 - 4:58
    你可以跳过关卡,不以固定顺序游玩
  • 4:58 - 5:02
    也可以在稍后回顾自己此前跳过了的谜题
  • 5:02 - 5:03
    我挺喜欢这种的
  • 5:03 - 5:06
    我不想因为玩家在某一个谜题上卡住了
  • 5:06 - 5:09
    就用巨大的空气墙绝情得挡住他们的进度
  • 5:09 - 5:13
    因此,我想在自己的游戏里引入这种非线性的关卡结构
  • 5:13 - 5:15
    而这是我的做法 :
  • 5:15 - 5:15
    在每一关中
  • 5:15 - 5:18
    你的目标都是找到、收集一把钥匙
  • 5:18 - 5:20
    我新做了一个「游戏进度管理器」
  • 5:20 - 5:23
    存储了一个记录游戏全部钥匙的列表
  • 5:23 - 5:27
    一旦你找到其中一把,它就会在列表中将它勾去,然后在硬盘上储存进度
  • 5:27 - 5:30
    我建造了一个很简单的枢纽关卡
  • 5:30 - 5:32
    其中放置了很多扇通往各个谜题的门
  • 5:32 - 5:34
    在末尾处,有一扇特殊的门
  • 5:34 - 5:38
    仅会在你收集到了一定数量的钥匙后才会解锁
  • 5:38 - 5:43
    而这个数量,我可以轻松的在今后根据平衡来调试
  • 5:43 - 5:46
    说到调试和平衡
  • 5:46 - 5:51
    我想要设计一种更方便的、允许我自己改变关卡排序的方式
  • 5:51 - 5:56
    帮助我通过玩家对谜题的难度反馈来塑造心流
  • 5:56 - 6:02
    所以,我让整个关卡的切换系统都基于关卡的文件名来跳转
  • 6:02 - 6:06
    每个关卡的名字都类似于「01 电梯 02」
  • 6:06 - 6:10
    前两位数表示了这个关卡所属的枢纽关卡的序号
  • 6:10 - 6:15
    而后两位数则表示了该关卡内部的钥匙拥有的序号
  • 6:15 - 6:18
    然后,所有相关的系统都只会读取关卡的名字
  • 6:18 - 6:20
    从中提取它们需要的 string
  • 6:20 - 6:22
    确认对应这个名字的关卡
  • 6:22 - 6:27
    而这意味着,我只需要修改关卡的文件名就可以改变它们的顺序
  • 6:27 - 6:30
    效率非常高
  • 6:30 - 6:33
    鉴于我们在聊效率的话题,那就顺便聊一聊工具
  • 6:33 - 6:37
    我在此前 MVP 中发现的另一个问题是
  • 6:37 - 6:43
    制作关卡、尤其是迭代调试它们时,体验非常的折磨
  • 6:43 - 6:45
    让我给你个例子 :
  • 6:45 - 6:51
    如果我想让这个电磁铁射程短一些、再把它改成红色
  • 6:51 - 6:53
    我需要调整 AreaEffector 的尺寸
  • 6:53 - 6:55
    调整光柱的视觉尺寸
  • 6:55 - 6:57
    移动它的粒子系统
  • 6:57 - 6:58
    减少其存在时间
  • 6:58 - 7:00
    改变粒子的颜色
  • 7:00 - 7:01
    改变光柱的颜色
  • 7:01 - 7:02
    改变 Sprite 的颜色
  • 7:02 - 7:04
    改变磁铁的图层
  • 7:04 - 7:05
    改变缓冲区域的标签
  • 7:05 - 7:07
    改变 AreaEffector 的碰撞体蒙版
  • 7:07 - 7:08
    你可以想象一下
  • 7:08 - 7:11
    游戏中的几乎每个机制都需要这套流程
  • 7:11 - 7:14
    就算我只是想把某个东西向上移动一个单位
  • 7:14 - 7:18
    或者是想要将一扇门的初始状态从关闭改为开启
  • 7:18 - 7:23
    由此我意识到,尽管 Unity 是一件制作游戏的工具
  • 7:23 - 7:26
    它不会直接帮忙「制作我的游戏」
  • 7:26 - 7:28
    —— 因为这是我的工作
  • 7:28 - 7:32
    我需要亲手制作这些工具和系统
  • 7:32 - 7:36
    允许我为自己独特的游戏生成相对应的内容
  • 7:36 - 7:37
    牢记这一点后
  • 7:37 - 7:43
    全新版本的电磁铁面板,在 Inspector 中多了一个简单的滑块高度调整工具
  • 7:43 - 7:46
    当我将滑块上下移动时
  • 7:46 - 7:50
    我前面提到过的那些相关变量也会自动据此进行调整
  • 7:50 - 7:55
    这些用于切换面板颜色、开关的按钮也是一样
  • 7:55 - 7:58
    简而言之,如果我游戏中的某样东西需要频繁的调整
  • 7:58 - 8:02
    而修改它们的方式则是一整套固定顺序的流程
  • 8:02 - 8:06
    我就会制作一些简单的脚本,帮助我轻松的一键修改
  • 8:06 - 8:10
    然后我为 MVP 中越来越多的物品制作了这种脚本
  • 8:10 - 8:13
    让它们用起来更加简单和效率
  • 8:13 - 8:15
    比如这个移动盒子 :
  • 8:15 - 8:20
    我现在用 Unity 的内置道具展示这些盒子的起始点和目的地
  • 8:20 - 8:22
    以及它会经过的路径
  • 8:22 - 8:26
    我还设置了一个独立窗口,用来存储游戏机制的预制件
  • 8:26 - 8:30
    这让我可以像玩《马里奥制造》一样,直接把物品拖拽进场景中
  • 8:30 - 8:35
    哦,制作 MVP 时,Unity 的 Event 系统也很困扰我
  • 8:35 - 8:37
    我说的并非是系统自身,它们很好用
  • 8:37 - 8:39
    这是它们运作的方式 :
  • 8:39 - 8:42
    比如在这个绿色按钮的脚本中
  • 8:42 - 8:47
    我让按钮被按下时「触发一个 Unity Event」
  • 8:47 - 8:49
    然后,在编辑器界面
  • 8:49 - 8:52
    Inspector 中会出现一个简洁的插槽
  • 8:52 - 8:55
    我可以从场景中把任意 Object 拖拽进来
  • 8:55 - 8:58
    从而运行那个 Object 上附带的函数
  • 8:58 - 9:00
    那么现在,当我按下这个绿色按钮
  • 9:00 - 9:02
    它会关闭这个电磁铁面板
  • 9:02 - 9:06
    对于解谜游戏来说非常好用
  • 9:06 - 9:11
    但当我需要从 Hierarchy 中找到目标的 Object 时,过程就很折磨了
  • 9:11 - 9:15
    我多么希望能有一个类似于 Photoshop 中的吸管的功能
  • 9:15 - 9:18
    允许我直接选取场景中的 Object
  • 9:18 - 9:22
    所以我滥用了自己的互联网声望
  • 9:22 - 9:26
    找了个比我聪明得多的人,让他完全按照我的描述做了个工具
  • 9:26 - 9:29
    非常好用,我时时刻刻都在用
  • 9:29 - 9:32
    我将这个 Unity 工具上传到了 GitHub 页面
  • 9:32 - 9:34
    你可以通过视频简介下载
  • 9:34 - 9:36
    那么现在,我已经制作了一堆工具
  • 9:36 - 9:40
    应该能让我设计谜题的过程更加简单,有效率一些
  • 9:40 - 9:44
    我决定先做一个谜题,测试一下工具
  • 9:44 - 9:46
    是的没错,效率确实大幅提高了
  • 9:46 - 9:50
    但这个过程中还有一些恼人的瓶颈和细节
  • 9:50 - 9:55
    于是我修好它们,为了测试又做了一个关卡
  • 9:55 - 9:57
    然后又做了一个
  • 9:57 - 10:01
    我紧接着又做了个关卡,才意识到……
  • 10:01 - 10:06
    我现在有一整套系统级的关卡管理器在后台运行着
  • 10:06 - 10:08
    我做了一个完整的枢纽结构关卡
  • 10:08 - 10:12
    我还做了四五个全新的谜题
  • 10:12 - 10:16
    我是不是无意中做出了部游戏啊 ?
  • 10:16 - 10:16
    惊了 !
  • 10:16 - 10:21
    这太乐了,我一开始根本不打算为我的游戏再做一部新的 DEMO
  • 10:21 - 10:25
    但我的硬盘上却多出了一部几乎整装待发的新游戏
  • 10:25 - 10:30
    我认为这很好地说明了,效率工具对于游戏制作有多重要
  • 10:30 - 10:33
    它们让你多快好省的制作游戏
  • 10:33 - 10:37
    甚至你在反应过来前就已经做好了
  • 10:37 - 10:39
    所以我认为每个人都值得
  • 10:39 - 10:44
    在游戏制作的一开始花费一些额外的力气和汗水
  • 10:44 - 10:47
    因为它会帮你解决大量时间、精力
  • 10:47 - 10:51
    让你在游戏开发的主要阶段中顺风顺水
  • 10:51 - 10:54
    无论如何,这都棒极了
  • 10:54 - 10:56
    因为要知道,在 MVP 阶段
  • 10:56 - 10:59
    我收到了大量值得注意的负面反馈
  • 10:59 - 11:01
    大量玩家对这部游戏不满意的地方 :
  • 11:01 - 11:04
    比如角色的操控手感极其的糟糕
  • 11:04 - 11:08
    游戏的视觉语言有大量恼人的不统一之处
  • 11:08 - 11:13
    平台跳跃和解密玩法的混搭让一些玩家烦恼于正确的过关思路
  • 11:13 - 11:17
    大部分谜题都太短,缺少恍然大悟的「觉悟时刻」
  • 11:17 - 11:20
    大量的关卡都杂乱且 BUG 满天飞
  • 11:20 - 11:23
    你需要干等着让物品完成运动循环
  • 11:23 - 11:28
    而且这部游戏并不能真的让人感受到它以磁铁为核心的机制
  • 11:28 - 11:32
    那么,在这部新 DEMO,《无名磁铁游戏》 2.0 中
  • 11:32 - 11:35
    我有机会修改此前所有的那些问题
  • 11:35 - 11:38
    看看人们现在如何评价这部游戏
  • 11:38 - 11:42
    我希望你一会能够立刻前往 itch.io
  • 11:42 - 11:45
    玩玩这部全新的……「惊喜 DEMO」
  • 11:45 - 11:46
    是的,我真香了
  • 11:46 - 11:49
    这次并非 Patreon 独占,大家都可以体验
  • 11:49 - 11:51
    它支持 PC 和 Mac 平台
  • 11:51 - 11:52
    它支持键盘鼠标操作
  • 11:52 - 11:54
    你也可以用各种型号的手柄玩
  • 11:54 - 11:56
    请一定尝试一下
  • 11:56 - 12:01
    并在视频、itch.io 的评论区中给我一些反馈
  • 12:01 - 12:06
    下一期我会谈谈这新一轮的反馈
  • 12:06 - 12:09
    然后探讨一下游戏未来的方向
  • 12:09 - 12:11
    非常感谢你的观看
  • 12:11 - 12:12
    祝你享受这部游戏
  • 12:12 - 12:14
    我们下期再见……
  • 12:14 - 12:14
    哦,结束之前
  • 12:14 - 12:18
    我要说 GMTK Game Jam 2022 年回归了
  • 12:18 - 12:20
    它会在 7 月 15 号开始
  • 12:20 - 12:22
    所以当你在 itch.io 下游戏时
  • 12:22 - 12:25
    也别忘了顺便报名参赛 GameJam
  • 12:25 - 12:27
    我们不见不散
Title:
The stuff no one tells you about game development
Description:

more » « less
Video Language:
English
Duration:
12:53

Chinese, Simplified subtitles

Revisions