在游戏行业做了十几年程序员,做过 Flash、Cocos2d、H5、Unity、自研引擎和 Unreal。技术栈几乎每个项目就换一次,从来没在工作中做过自己真正喜欢的游戏。这大概也是很多游戏从业者都会遇到的事情。
与其让大脑的空余线程继续思考工作中的琐事,不如拿来想想自己的独立游戏。这是我在体力和精神都被工作消耗后,依然能说服自己坚持开发独立游戏的理由。
独立游戏的方法论和商业游戏不同。一个人要创作的最有价值的作品,一定是最大化只有自己才能做好的事情。所以,《Code Alone》的想法就这样诞生了:编程游戏,加属于游戏开发者的叙事。
如图所示,第一版 Demo 几乎完全参考了《7 Billion Humans》的拖拽式可视化编程方式。
我一共做了 9 个关卡,玩家通过移动、旋转、缩放等指令控制一个小机器人,收集场景中的所有电池。除此之外,游戏只有一个选关界面。我甚至还实现了单步调试和变量观察功能。感觉一个比较完整的 Demo 已经做出来了。
然后呢?继续增加关卡,把它做成一个类似《7 Billion Humans》的游戏?单纯通过指令控制机器人移动,即使扩展成几十个关卡,恐怕也很难让玩家一直玩下去,最终大概率连《7 Billion Humans》一半的趣味都达不到。想继续做下去,扩展玩法是必不可少的。
而问题也随之出现。这套可视化编程语言的扩展方式,就是不断加入新的指令。先不说指令栏会庞大到难以使用的问题,当玩法开始涉及数组操作时,它就立刻显得有些无力。《7 Billion Humans》采用的是同一套脚本控制多个单位的设计,因此并没有遇到同样的问题。
我需要重新设计数组相关的指令,希望它们既足够简单,又符合直觉。为此,我开始参考其他成熟的可视化编程语言。
UE的 Blueprint 是节点式可视化编程语言,已经有那么多 3A 项目中也在大量使用,成熟度不容怀疑。
Scratch 则是跟我之前在用的类似的积木式可视化编程语言,有他自己的 list 方案。同样应用广泛。
而且两者都有现成的第三方插件可以供我快速接入,考虑到继续沿用积木式编程语言的改动更小,我采用 Scratch 实现了第二版 Demo。
接入第三方插件、修复 Bug,以及针对自身需求进行定制和扩展,花费的时间远远超出了我的预期。虽然核心逻辑基本已经跑通,但依然存在大量问题,尤其是加载和运行效率,低得令人发指。
不过,我暂时停下了继续折腾底层的脚步,开始尝试实现更多类型的关卡。
然而,这个过程的困难程度同样超出了我的预期。我确实做出了几个不同类型的关卡,但整体工作流并不理想。无论是未来持续开发,还是测试和迭代,效率都需要大幅提升,才能勉强达到一个可以接受的水平。
与此同时,我也发现了另一个问题。一些关卡的底层逻辑其实并不复杂,但真正写出能够通关的程序时,所需的积木块数量却多得足以塞满好几个屏幕。代码的可读性和整体交互体验都相当糟糕。
到了这里,我已经有些灰心了。我开始看不出这个核心玩法到底有多大的潜力,也逐渐失去了继续开发的动力。
为了哄着自己继续做下去,我开始转而开发一些并非核心玩法、但实现起来比较有趣的功能,比如一个模拟桌面系统。尤其是里面的音乐播放器,我愿意花大量时间去打磨它。现在回头看,这其实也是一种逃避,逃避自己始终无法突破核心玩法瓶颈的事实。
直到有一天,我发现了《编程农场》。它直接使用 Python 作为编程语言,而玩家的接受度居然相当高。这让我开始反思,为什么之前的自己,好像给这个项目加上了一条看不见的限制:一定要使用可视化编程语言。
原因是我担心游戏的门槛太高,没有编程基础的玩家会被代码吓退。
我做的是一款商业游戏吗?
我做这款游戏,是为了赚钱吗?
我做这款游戏,是为了取悦所有人吗?
我开发这款游戏的初衷,本来就是做一款纯粹的独立游戏。只有把我自己,以及那些和我相似的人作为目标玩家,我才能做出真正让我自己觉得有趣的游戏。
一款模拟游戏开发者的游戏,当然应该让玩家坐在一个类似 IDE 的界面前,亲手敲下代码。这样不仅更符合主题,也更有沉浸感。而且,之前困扰我的很多问题也都迎刃而解。积木导致的代码臃肿、复杂逻辑难以阅读、交互效率低、扩展性差等问题,在切换到真正的编程语言之后,都有了更自然的解决方案。
而且,说到底,如果真的有 50 个玩家愿意认真玩我的游戏,我可能就已经很开心了。这个题材从一开始就注定是小众的。既然如此,又为什么要因为害怕受众进一步缩小,而让这种恐惧影响自己的判断?
知行合一,当你终于开始做符合自己方法论的事情时,行动力也会自然回来。
仅仅两周时间,我就彻底将底层从可视化编程切换到了 Python。基本上,我真的在游戏里实现了一个 IDE。语法高亮、自动补全、单步调试,一应俱全。
核心部分终于有了定论。接下来,我开始热火朝天地开发上层机制,关卡数量也迅速突破了 30 个。
至此,这款游戏已经断断续续开发了三年。而对于 AI 的发展来说,三年已经足够带来天翻地覆的变化。彼时的“人工智障”,如今已经能够实实在在地大幅提高生产力。我的关卡虽然采用了非常直观的数据驱动结构,新增一个关卡也往往需要修改好几个文件才能完成。现在,只需要向 AI Agent 交代几句话,它就能把大部分工作完成。于是,我终于可以从这些琐碎的事务中抽出更多时间,把精力投入到打磨游戏本身,提升各个方面的品质上。
之前也提到过,这款游戏是有叙事部分的。这也是它能否成为一款真正有所表达的独立游戏的关键。
整体来说,叙事的处理非常克制。行业外的人看到之后,可能依然会觉得有些刻板印象,甚至有点狗血。但相信我,这已经是非常克制的版本了,现实往往比故事更加狗血。
十几年的游戏行业经历里,无论是亲身经历的,还是从同行那里听来的,各种戏剧性的故事比比皆是。很多事情说出来,甚至像是编的。我并不想让叙事占据过重的比重,也不想把这些戏剧性的故事一股脑塞进游戏里,只是为了吸引眼球。更不希望这款游戏最终只是在展示这个行业糟粕的一面。
最后,为了哄着自己继续开发,我还是忍不住做了一些和核心玩法无关的小功能。就像 Zachtronics 游戏中那些从不缺席的迷你游戏一样,它们或许会让你体会到,即使是在一款模拟游戏里,摸鱼也依然比工作更有趣的真谛。(笑)
如果你对编程游戏感兴趣,不妨加个愿望单。衷心感谢。
评论区
共 1 条评论热门最新