游戏开发者们的众多「尴尬漏洞」
事故档案 · INCIDENT LOG
17 款游戏,17 种「能跑就行」
从看不见的洗衣机到反向仇恨系统,这些正式作品背后藏着一套比设计文档更诚实的生存智慧。
- 0
- 款游戏
- 0
- 则案例
《Gone Home》游戏的开发者 Steve Gaynor 在 Twitter 上分享了自己开发游戏时的「为了实现功能,而犯下的令人尴尬罪过」,其他游戏开发者们也纷纷来到这条推特下留言,分享了自己开发游戏时为了解决这些奇葩的 Bug 所开发出的「奇技淫巧」。
在写《Gone Home》的脚本程序时,只用了两个巨大的 Unity 图表,因为那时候我还不知道怎么把它们关联起来。第一个图表运行起来变慢了,我才用了第二个。
在做第一版的《Atom Zombie Smasher》时,我不懂怎么把文件分割开来,所以也是只用了一个巨大的 C# 文件。
我曾经游戏里写过一个 AI 宠物,几轮战斗之后,它就不想战斗了。原因是 AI 把自身写进了自己的敌人列表,几回合之后它的威胁值不断上升,就开始攻击自己了。
我曾搞过一个游戏扩展包,但是我把路堵死了,玩家无法进入这个扩展包的内容。
我的第一款游戏《Earthworm Jim 3D》没用编程语言来写。于是我在条件判断的地方,在空中放了看不见的洗衣机,来充当条件的定时触发器。Debug 的时候真的是噩梦。
在《Pirates of the Burning Sea》的一个任务里,需要点火烧掉一艘船。由于船只无法和火焰的粒子效果互动,而 NPC 可以。于是就在点火时弄了一个小小的 NPC 来点火。
《Hot Tin Roof》里的转换平台其实是 90° 旋转的推拉门,垂直升降板和碾碎机也都是推拉门。
如果游戏开始时,玩家就在地面上,那游戏的物理引擎会出问题。所以我只好设定成玩家开始时在离地 0.01 个单位的地方,然后掉回地面。
做了个 VR CES 展台,玩家得坐在椅子中间,身体向后靠才能正常游戏。由于参展时间紧迫,没来得及做这方面的电路修改,所以每次一个玩家玩完,我们就得悄悄地调整椅子的位置。
在这个世纪初,内容生成工具总是要花费很长时间来编译和运行。于是我把程序重新写了一遍,运行得如闪电般迅速。那群人生气了,因为我揭开了他们的秘密。
《The Walking Dead: Michonne》里有一个十二行的对话,是我拼凑了其他场景里的对话,以此来修补剧情漏洞。
最近的一个项目里,玩家按下左键后,实际情况是游戏里除了玩家操作的部分,都向右移动了。
一家游戏公司,在给游戏角色做对口型的动画时遇到了难题,于是干脆在角色说话时,镜头转向不说话的角色。
《Baldur’s Gate》是在 Debug 模式下发售的,因为它一编译就出错。
在《Seedship》里,处理单复数文本实在是太麻烦了,所以我干脆让游戏里的杀人数和幸存数永远不可能是 1 人。
我在学编程时,不会用 for 循环,于是代码变得特别长。
做了一个足球比赛游戏,设定上如果你进入了比赛区域,比赛场上所有的活动敌人都会移除。但是我万万没想到,我把足球也设定成了敌人。这关没人能过。
《Scribblenauts》在发布前两天,我和一个程序员用 Google 翻译加了 5 种(还是 7 种?)语言,游戏的文本量并不大。
道路渲染太困难了,就把渲染方法加了钝化。《Paratopic》里的汽车,其实是一把枪。
《Fable 2》里的狗不会转身,因为没有做动画。所以有时候这只狗想去某个地方时,会一直在转圈。后来这个 Bug 一直没有打算解决,大家都觉得「狗才会修 Bug」。
在《Firewatch》的自由漫游模式中,我们想要加入时间流逝的效果,但是游戏本身的引擎并不支持。所以我们给亨利加了一个水车触发器,会缓慢绕着亨利旋转。
《Aurion》的游戏文本只有一个 15000 行的 csv 文件,文本翻译后,游戏就无法正常更新了。
在《Getting Over It with Bennett Foddy》里,主场景的名字叫「Mian」。
我不懂怎么让枪头出现子弹的效果,只好让子弹生成在玩家屏幕中间,用大量的游戏特效掩盖。
在《State of Decay 2》里,我们无法给单个任务以外的东西设置变量,于是就给角色附加一些看不见的属性,来表征角色在任务中发生的事情。
早期的 Vlambeer 游戏里,要想让 Boss 随机登场,就在建筑物的屋顶上方的随机位置生成 Boss,让它掉下来。如果不巧从屋顶上摔下去了,那就重新生成一个。
有一个占位用的场景,弄了一只猫在里面。这样就不必找人来配音了,直接让我家的猫叫几声就好了。
我记不起游戏引擎里强制杀死角色的功能怎么实现,于是就给必死角色加了 100000 英尺的坠落伤害。
头盔和完整的角色面部总是不能很好地兼容,于是就把头盔能看到的面部给剪切下来,剩下的部分删掉。
想给角色加上恐怖片式的抽搐移动,但是不知道如何实现。于是弄了 2 套模型,让他们互相碰撞报错。
在《Drakensang》中弄了个「机智」的 AI,是用的「反向仇恨系统」,会优先攻击仇恨度低的角色。
17 岁那年做了个交互式冒险游戏,因为不懂得如何储存变量,就将信息保存在剪贴板上。
我想在游戏的关卡中加入陷阱地砖,不过没搞懂如何实现,于是就在那边放了一盏灯来困住玩家。
早些年做游戏时,我把我的《Dungeons & Dragons》角色给塞在了游戏文件深处。直到第一次编译游戏文件时,团队花了 20 分钟才搞清楚到底出了什么错。