最近我参加了DataWhale的“寻找游戏大模王”活动。虽然这个活动的重心是放在大模型上,不过也算得上是一个GameJam,我也趁这个机会做完了第一款游戏,了却了自己的心结。
我从几年前开始就有想制作游戏的想法了,看了很多Unity课程,自学了像素画,也尝试做过几个demo。但到现在为止,Unity没学会,像素画仍然停留在入门阶段,几个demo也都因为忙碌半途而废。制作游戏这个想法已经成了我的心结,我总是觉得我有什么事情应做未做。或许有些夸张,但我深切体会到了《假面骑士Faiz》里小马哥的台词——“梦想就像诅咒一样,中途受挫而放弃的人将会永远被诅咒束缚。”是什么感觉。我很高兴这次没有放弃,终于完成了它。尽管游戏完成度不高,但它总归称得上是一款游戏了。这个过程我收获了许多,因此我通过这篇文章记录下来。
关于游戏引擎的选择
这次游戏制作使用的是Godot引擎,相比Unity来说,Godot用起来更加方便一些;脚本语言GDScript相比c#更为简单。而且我目前并没有制作3D游戏的想法,Godot已经可以满足我的需求了。另外还有个不算原因的原因,Unity的启动速度太慢了、还总是需要更新license,这让我在零碎的时间里实在没有打开它的欲望。大概接下来很长一段时间里,Godot都会是我使用的主力引擎。
游戏制作的体会
“混乱”大概是我这次游戏制作最大的感受,它体现在三个方面。一是制作思路之混乱,二是代码编写之混乱,三是组织架构之混乱。
在初次看到这个活动时,一副清晰的游戏图景立刻浮现在我的脑海里。我想做什么样的游戏,需要设计哪几种敌人,大模型如何使用都有画面。然而,在实际制作过程中,敌人种类一砍再砍,想实现的动画效果也一再阉割,游戏机制、敌人制作的过程也经常推倒重来。这一方面是由于我缺乏经验,错误估计了制作的时间与制作难度,设想的效果与我的能力严重不匹配,导致我无法完全实现想要的效果。另一方面是由于不熟悉引擎,对各个节点的使用和搭配不够了解,导致我在实现过程中经常调整节点的从属结构或者节点的类型等,偶尔不得不推倒重来。
对于代码的编写方面,作为一个计算机专业的学生,代码本不应该成为我的问题,然而游戏代码和学业项目代码存在不小的差距。一方面,我的学业项目一般只是一个大型项目的部分组件,完成一个独立的项目尚属首次。按照我的个人习惯,函数命名、变量命名我都有一套自己的规则,不过Godot引擎初始的命名规则与我使用的完全不同,而且存在信号这种c语言里不存在的组件,我原有的命名规则并不适用Godot引擎,之后我应该设计一套行之有效的命名规则。另一方面,我的代码写的过于冗余。譬如敌人的模板完全可以共用同一套脚本,然而我还没学会怎么复用,之后需要研究一下。
游戏项目的组织架构是我制作过程中最混乱的方面。由于这是一个小项目,我想当然地认为内容不会很多,因此我像之间做demo一样,脚本放一个文件夹、场景放一个文件夹、资源放一个文件夹,现在我的三个文件夹里已经乱成了一锅粥。但是具体如何设计一套科学的组织架构,我还需要再去学习一下前人的经验。
除了这些糟心的部分,游戏制作过程还是给我带来了很大的成就感。看着自己克服了重重困难,项目一点点成型,内心里充满了喜悦。而且在Godot里引入大模型的工作,我还未在网络上找到任何教程,完全是依靠自己的摸索一点点实现。大模型首次工作的时候,我有一种哥伦布首次踏上新大陆的喜悦,这大抵是游戏制作过程中最有趣的部分吧。
总结
以上只是我作为初学者初次尝试的一些碎碎念。通过这次活动,我对游戏制作的过程有了更深入的了解,对游戏制作的难度也有更准确的把握。更重要的是,之前我总是以忙碌为理由半途而废,然而事实上,在这次活动里,我面对的压力要比以往大得多,但我仍然能够每天抽出一点时间来推进工作。可见忙碌并不能成为阻碍我的理由。保持热情与科学合理的安排,这大概是我最大的收获了。
作为我的第一款游戏,它仅仅只是能跑的程度,不过也足以鼓舞我继续走下去了。接下来如果有空的话,我还想继续完善一下这款游戏,添加一场Boss战,优化一下素材。还需要剪辑准备B站的投稿视频,这又是一个我未曾涉足过的领域。不管最后结果如何,我已经走的比之前任何一次都要远。我已经实现了本次活动的既定目标。我也对未来的游戏制作之路充满了信心,祝我好运吧!
加油!