游戏开发1000小时:我所收获的宝贵经验

发表时间: 2019-04-04 09:15

文/主编邵伟

本文来自一名叫做Roman Papush的游戏开发者在油管上分享的视频,在视频中,他总结了使用Unity进行1000多个小时的游戏开发工作以后对个人的影响,XR技术研习社对此进行了编译。


很久以前,我想做一款游戏。

通过对人类天性的洞察,我认为人通常喜欢两样东西:看着世界毁灭……或者看球。所以我决定做一款基于关于高尔夫的、基于物理的、低多边形风格的、解谜冒险类游戏。

开始,我质疑过我的决定,但是经过1000小时开发以后,开发进度在我“还算凑合”的标准下进展得还算顺利——游戏达到了我这辈子从未有过的高度……




我之前有过Unity的经验,作为一个自负的少年,在开始的时候,我总是从一个创意跳到另一个创意,而不是老老实实地从原型概念阶段循序渐进地往前走,所以我很难聚焦于一个想法,对其持续保持热情。

一路走来,可谓充满了荆棘。开始的时候,我以为依靠我之前“丰富”的Unity经验,创建一个小球,给它一个Rigidbody,然后,游戏就完成了大半(实际上,这也是我选择这种题材的原因)。但现实是,只把物理运算掰扯清楚就是一个非常复杂的工作了。



举个最简单的例子,模拟破坏一堆(大约500个)保龄球非常简单,但是当你试图在一个Plane上滚动一个保龄球并模拟各种碰撞的话,那就难说了,不信来看。



一个小球,在一个平面上,如果平面水平倾斜1°,那么小球将一直保持运动而不会停不下来——无论你使用物理材质还是设置球的Angular Damping是多少。从模拟的层面来看,一切都是正确的,在球和地面之间只有一个非常小的接触点,没有什么可以阻止小球减速。这不像在现实世界中,任何表面甚至是玻璃表面,都有肉眼看不到的凸起或划痕。(Unity和Unreal都使用了英伟达的PhysX物理引擎,它们都需要进行一些人为的设置来得到接近于现实的表现)。

这只是其中一个例子,我想说的是,在开发过程总是遇到诸如此类的问题——看上去很好实现,但真正着手去做的时候,发现并没有那么简单。

但是,日拱一卒,把一个一个的小目标实现,我的游戏也逐渐成型了。我花了很长时间来做摄像机的控制,这也是我引以为傲的功能,因为最终它的操控感比我最初想象的要好。我痴迷于那些不易察觉的用户体验,因为这些细节也是游戏的重要组成部分。

空气物理部分的制作是几乎导致我崩溃的另一个坑。我决定不仅要死磕自己实现接近于现实的高尔夫物理效果,而且还要在任何游戏中实现这些高级的刚体物理效果,虽然这仅凭PhysX还不够,但是这个想法一直激励着我,虽然花一些额外的时间,现在看来,也算是一个不错的挑战。


然后是游戏最吸引人的地方——视觉效果。其实这种低多边形的风格并不是最好的选择,但这的确是游戏机制所需要的——我希望这款游戏能够在性能和可玩性之间做到很好的平衡。所谓性能,就是物理引擎带来的系统开销,而可玩性就体现在关卡的设置。我希望玩家能够体验到场景中的每个游戏对象,同时能够发挥自己的聪明才智去计划每一次挥杆策略。



我为玩家提供了让时间慢下来的“超能力”,主要是为了满足他们观看这些纷繁复杂的物理效果的需求。同时,还添加了生成道具的能力,有点类似于沙盒机制。这些只是众多玩家技能中的一小部分,此外还有比如实时分屏、多玩家、回合制等这样的功能。



从一开始我就有一个重要的想法,那就是尽快做出一个小样,也就是说,我需要先让游戏的主要模块工作起来。但是,这就意味着,我,我自己,不仅是问题的解决者,还成为了问题本身。因为有时候我会被一个游戏机制或系统问题卡住,然后花整整一个月来完善它,该死的完美主义强迫症!所以我还在学习如何去放手,去放过自己……

最终,我还是总结出了一些处理物理效果方面的经验,创建了一些大大小小的关卡、设计视觉风格的配色,而且也对Unity有了一个全局的认知,包括游戏开发和游戏设计。最最重要的是,我学会了自律和合理规划未来。



我可以很高兴地说,目前演示的单人游戏的小样是功能齐全的。




我也可以很肯定地说,经过1000多个小时的游戏开发,我已经变得更有组织性了。这些收获也体现在了我的个人生活中,比如,打扫房间,现在是一个优先级很高的待办事项;我也为我的个人习惯和不良嗜好找到了解决方案,我比平常起得更早,有了更多大块完整的游戏开发时间;艰巨的任务不再令人畏惧,尤其是当你学会把它们分解成一个一个小任务的时候,那些更小的目标不会像以前那样被无限期地推迟。

我把一切都写下来,任何创意、想法、概念、Bug、功能,都被记录在了我的笔记App或Trello中。这样你就不会忘记任何事情,更重要的是,你可以把你的大脑从一些琐事中解放出来。


对于我来说,唯一让我感到震惊的事情就是通过设定小目标所带来的改变。正如我之前提到的,我的目标是每个月花30个小时在游戏开发上,也就是说,我可以每天开发一个小时,或者把这7个小时分散在周末两天,正是因为这样,才能让我坚持到现在,因为每过一个小时,都是一个成就,而每个成就都会让我感到快乐——当你快乐的时候,你就会有动力去完成更多的事情。

即使你是世界上最忙碌的人,一个月抽出30个小时也不难,而在这30个小时里,你可以做很多工作。当你真正开始坚持做某件事的时候,你会发现,事实上,总会有时间让你充满激情,尽管还有很多时间用来找借口。

后来,我发现我的行为模式中存在的一个问题:我偶尔会拖延开发工作,因为我认为后面还有很多时间来凑上那30个小时(而此时我已经不喜欢拖延了)。所以我将我的目标从每月30小时调整为每天开发1小时,并对这些时间进行记录,如果我拖延了一天,那么我将无法在以后进行补偿。

这样带来的效果非常好。把激情视作一种挑战或游戏,以某种方式欺骗我们的大脑停止拖延,只做对你来说最重要的事情。回想起来,开始是,现在依然是一段非常紧张的经历。

以下观点对于某些人来说可能听起来比较奇怪,但我认为大多数人会认同,即:对于游戏开发本身来说,技术角度上这是最难的,但事实上,它是所有工作中最简单的一个方面,尽管它占用了90%的时间和精力

过去最难的,现在仍然最难的,是去处理不断袭来的焦虑、自我怀疑、不被理解、情绪波动,当你面对看似不可能解决的问题时,你会感觉失落失望失掉所有方向,堕入无边黑暗想挣扎无法自拔,会问自己“我在这上面浪费这些时间值得吗?”“这一切是否是徒劳?”。这都是出现在游戏开发中的不速之客。

但是积极因素远远超过负面的因素。我希望在度过了我的下一个1000小时的时候,我的游戏已经发布,或者接近于发布。