《诺亚的困境》开发日志 #2:编程总结与回顾
创始人
2025-04-30 08:54:59
0

4 月之约

在上一篇开发日志的结尾,我说争取 4 月更新下一篇,没想到真的是 4 月,只不过是 2025 年的 4 月…… 好吧,距离上一篇开发日志已经过去了整整一年,可以说是在《诺亚的困境》所有内容做完以后,我才终于有了时间继续写,也可以说是因为开发过程中迭代的速度非常快,以至于没法在途中停下来总结任何东西——今天做出的决定,很可能第二天就会被推翻。总之,在现在,游戏做完后发售前的这一小段时间里,我会趁热打铁,尝试把《诺亚》的开发日志系列补完。

第二篇开发日志想先聊聊编程。在制作《诺亚》的过程中,并没有遇到什么值得拿出来单独说的技术方面的挑战,因此,这篇文章将会从相对宏观的角度来进行变成方面的总结与回顾。

当我写程序时,我在写什么

因为《诺亚》是我辞职后全职做的第一款游戏,也是我用 Unity 引擎开发的第一款商业游戏,所以我在项目开始时就给自己定了一个主线任务和一个支线任务。主线任务,毫无疑问,就是好好地用 Unity 引擎把这款游戏做完发售——不要中途放弃,也不要做到一半换引擎。而支线任务,则是在做这款游戏的过程中,建立起泛用的代码库,以达成将来“游戏越做越快”的效果。对于收入尚未稳定的全职独立游戏开发者来说,速度就是生命。

之所以早早地就产生了这个想法,是因为即便我只做完过一款商业游戏,但在数个失败的原型开发中也已经尝够了反复重写某些功能的痛苦滋味。于是,这次一边做,一边把那些几乎所有类型的游戏都会需要的功能写成了可方便重复利用的模块。具体列表如下:

1. 标题画面

2. 游戏设置

3. 存档读档

4. 音频管理

5. Scene 管理

6. UI 管理

7. UI 泛用面板

8. 本地化相关

9. Steam 相关

10. 商店系统

11. 背包系统

12. 对话系统

13. 文字外观处理

14. 手柄支持相关

15. Credits 画面

有了这些代码库,相当于我做下一款游戏时,这 15 个部分的代码都几乎不用写了,节省下来的时间是巨大的。就算主线任务完成后赚不到钱,起码这个支线任务还可以给我带来实际收益,也算是做了一点风险控制吧。《诺亚》之后,我定的目标是在 6 个月之内做完下一款游戏并发售,要是没有这些前期准备,肯定难以达成。如果你以后也想全职做独立游戏,不妨考虑从上述方向开始积累代码库。

踩坑是一种必然

虽然说做《诺亚》没有遇到什么技术上的挑战,但依然踩了数个印象深刻的坑,其中不乏早就略有耳闻但没怎么当回事,于是“Learn it the hard way”的例子,现在记下来也是为了提醒未来的自己不要重蹈覆辙。如果你也(用 Unity)做游戏,说不定可以参考一下(即使踩坑是一种必然)。

1. 做 Roguelike 游戏不要用 UnityEngine.Random,要用 System.Random。如果用了前者将难以还原随机状态,也就是难以实现自定义随机种子的功能。

2. 做 Roguelike 游戏时,除了该用 able Object 来承载数值,在取得数值时还应避免直接 reference,而应采用 getter 函数,这样处理数值时会灵活很多。

3. 不要用 Unity 自带菜单来新建 UI 元素,而要采用自制的 prefab。这样本地化对应、文字外观处理都会很方便,不然可能要手动一个个去改。

4. 在写任何代码前先确认这款游戏是否需要支持手柄,如果需要,提前思考要怎么对应手柄与键鼠在游戏中的无缝切换,后期才加的话会非常辛苦。

5. 如果发现自己总是在重复写一些类似的代码,大概率会有不需要重复的、更好的写法。

最后两条其实也可以说是隶属于写代码的最佳实践(Best Practice)。我不认为自己是一个优秀的程序员,我对自身的定义也从来不是程序员而是游戏开发者,这当中的区别是游戏开发者写代码通常不会考虑什么是最佳实践,比起写完美的代码,还是快点把游戏做出来更重要。

在完成了两款商业游戏后,我发现写游戏代码既不应该追求极致的速度而写得无比 dirty,也不应追求完美的最佳实践而把大量时间花费在构建代码上面,而是应该找到介于这两者之间的一个 Sweet Spot,一个平衡点——对于一些关键且固定的部分,就应该像上述第 4 点一样,提前做慎密的代码构筑;而对于一些无关紧要或者经常迭代改变的部分,可能只有在达到了某种复杂程度后才需要去做代码优化。而为了找到这个平衡点,为了拥有判断哪些部分应该细致哪些部分可以随意的能力,除了多做游戏积累经验以外,似乎也没有什么提前学习的好办法——有一些坑不自己踩过永远不知道痛。所以,Make (and finish) more games!

使用的插件工具介绍

关于编程,好像能说的也就这么多了,其实之后移植 Switch 应该会遇到一些技术上的挑战,不过因为 NDA 也无法写成文章,那就聊到这里吧。再附上这次项目使用了的 Unity 第三方插件列表:

1. DOTween Pro

用来处理所有的动画,有免费版,对我来说是做每款游戏必备的插件。

2. Odin Inspector

用于提高与 Editor 互动效率的效率软件,贵但好用,每款游戏都能用。

3. Dialogue System for Unity

用来处理所有对话和本地化,贵但好用,如果没有对话,我会直接使用 Unity 官方的 Localization Package 来做本地化。

4. All in 1 Sprite Shader

用来美化 2D 图片的视觉效果,不用自己写 Shader,省时省力。

5. LeanPool

提供 Pooling 相关的功能,省时省力。

6. Damage Numbers Pro

用于生成所有的文字反馈,有丰富的自定义功能,省时省力。

7. Text Animator

用来 Animate 一些 UI 文本,有预览,很直观,省时省力。

8. Rider

这不是插件,而是 IDE,用 Rider 写码可以说为我节省了一半以上的 debug 和 refactoring 时间,对我来说也是必备软件。

日志计划

之后的开发日志将会聊到《诺亚》的其他方面,包括游戏设计。这次项目的主要挑战不在技术而在设计上,对设计感兴趣的朋友可以留意一下,应该近期就会发布了。计划中的开发日志系列如下:

2. 《诺亚的困境》开发日志#2:编程总结与回顾(关于编程) - 已发布

3. 《诺亚的困境》开发日志#3:设计总结与回顾(关于游戏设计与 UI 设计)

4. 《诺亚的困境》开发日志#4:氛围与声音(关于作曲与音效)

5. 《诺亚的困境》开发日志#5:海上的百年孤独(关于美术与世界观)

最后,我的第二款独立游戏《诺亚的困境》将会在下个月(2025 年 5 月)于 Steam 发售,现在加入愿望单可以第一时间收到发售通知噢。敬请期待!

(写于 2025 年 4 月 15 日)

* 本文为用户投稿,不代表 indienova 观点。

相关内容

热门资讯

CDPR:不会染指不擅长的游戏... CD Projekt Red联合创始人表示,随着时间的推移工作室逐渐明白了一点:他们应该坚持做自己最...
端午撞车六一,各家游戏又掏出了... 转眼五月已接近尾声,端午假期的到来让不少玩家得以偷闲,到游戏世界中享受片刻放松,各家厂商也趁着这一黄...
485进82!超80%硕士学历... 5月27日至29日,第五届“海聚英才”全球创新创业大赛杨浦赛区选拔赛在上海院士风采馆举办。作为上海市...
新加坡羽毛球公开赛:陆光祖获男... 6月1日,在2025年新加坡羽毛球公开赛男单决赛中,中国选手陆光祖0比2不敌泰国选手昆拉武特,获得亚...
红魔散热器6 Pro王者荣耀版... 近日,“红魔游戏手机”官方在微博上宣布,将与热门游戏《王者荣耀》合作推出特别版的红魔散热器6 Pro...
《艾尔登法环》发售,玩家直呼:... 近期,备受瞩目的游戏《艾尔登法环:黑夜君临》正式发售,却意外地让众多玩家遭遇了一个前所未有的挑战。这...
【果娘聊天室】“拼好魂”口碑毁... 我们的【果娘聊天室】栏目又来啦! 每周果娘都会发布一个与游戏相关的话题,不论你有什么想法,都可以在评...
《艾尔登法环:黑夜君临》首日热... 2025-06-01 08:40:17 作者:狼叫兽 艾尔登法环:黑夜君临正式发售当天便取得了亮...
IGN为《权力的游戏:国王之路... 免费游戏《权力的游戏:国王之路》现已正式推出,IGN近日给这款游戏打出了5分的差评,表示其中存在付费...
原创 这... 这城有良田全新势力·天骄的首位绝代僚属魏征即将上线!小编先来剂猛料,魏征将是这城有良田里首批拥有两套...
IG面临巨大危机!Meiko空... 各位LPL的观众和英雄联盟召唤师大家好,这里是天下游戏汇。 LPL在昨天是进行了季后赛首轮的比赛,两...
科乐美年度财报大捷,寂静岭2重... 科乐美最新财报揭示了其上一财年的卓越成就,业绩数据全面飘红,为公司历史书写了新的辉煌篇章。在这一年度...
《绝地潜兵2守护胜利, Pla... 2025-06-01 01:41:29 作者:狼叫兽 在成功守护“超级上海”之后,国内的玩家们终...
艾尔登法环黑夜君临:玩家热议,... 《艾尔登法环:黑夜君临》震撼登场,短时间内销量突破200万大关,其市场表现堪称惊艳。 近日,社交平台...
任天堂Switch 2新卡带类... 2025-06-01 01:43:42 作者:狼叫兽 任天堂Switch 2预计将在6月5日正式上...
《艾尔登法环》黑夜君临Boss... 2025-06-01 08:20:29 作者:狼叫兽 艾尔登法环:黑夜君临已正式上线,游戏一经发...
任天堂升级家长控制APP,严管... 任天堂近期为配合即将面世的Switch 2主机,对其家长控制应用进行了全面的升级。此次更新不仅涵盖了...
视频|对话iG Rookie ... 2025英雄联盟职业联赛如火如荼地进行中,羊城晚报记者独家采访IG战队选手Rookie(宋义进)听他...
《心之眼》定10年运营大计,B... 在游戏界引起广泛关注的消息中,R星前核心成员Leslie Benzies透露了他倾力打造的新作《心之...