《诺亚的困境》开发日志 #2:编程总结与回顾:编程开发

4 月之约

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

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

《诺亚的困境》开发日志 #2:编程总结与回顾:编程开发

当我写程序时编程开发,我在写什么

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

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

1. 标题画面

2. 设置

3. 存档读档

4. 音频管理

5. Scene 管理

6. UI 管理

7. UI 泛用面板

8. 本地化相关

9. Steam 相关

10. 商店系统

11. 背包系统

12. 对话系统

13. 文字外观处理

14. 手柄支持相关

15. Credits 画面

《诺亚的困境》开发日志 #2:编程总结与回顾:编程开发

有了这些代码库,相当于我做下一款时,这 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!

《诺亚的困境》开发日志 #2:编程总结与回顾:编程开发

使用的插件工具介绍

关于编程,好像能说的也就这么多了,其实之后移植 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 观点编程开发

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://www.iappwang.com/post/174.html

友情链接: