哈哈SE7 发表于 2021-2-3 09:12

一个程序小白的unity 2D游戏开发的反思与经验



学游戏设计的码农,中传大三在校生,代码水平目前还在进阶中。
b站游戏宣传小片链接:中国传媒大学 游戏设计系 14级联合创作 《N-S》 徐铖琛+唐德浩+李星月 (求硬币 _ 他们都说小片比游戏好看
这个学期和美术一起进行了一次不成熟的磕磕绊绊的游戏开发。踩了很多坑,就当是毕设前的预热吧,做个总结,希望毕设不会再犯这些错误。因为整个本科阶段做的或者打算做的都是2d游戏,合作的美术喜欢像素风(封面图就是他画的),如果你想做2d像素风的游戏,遇到什么问题欢迎私信交流~(看我知乎的提问记录)


小白或者同专业师弟师妹可以看看,大神或者老手的话略过吧,本人水平有限,有不对的地方请指正。
1.开始做一个游戏之前一定要有一个80%完整的策划。一个idea是不能被叫做策划的,这次游戏创作过程所有的痛苦都来自于没有一个完整的策划。程序和美术可以参与到策划里来甚至可以提出一个游戏的核心玩法,但是建议在组队的时候team里一定一定一定要有一个专职策划。没有策划遭遇的痛苦主要有:
1)我把核心玩法的所有功能模块都写好了,就等着关卡设计好然后把这些功能组合起来,结果单个功能测试没问题组合起来就一堆bug。有些问题不是1+1+1+1+1我把每个1准备好然后加起来就会等于5,它可能会等于5.2或者4.8的。
2)游戏中的物体放置的位置、质量、磁性什么的都是程序在测试,相当浪费时间,本来该用来改bug的时间要花在数值测试上。为了展示每一个玩法功能,在关卡设计上有点饥不择食了。
3)因为没人来写策划案,所以就是想到什么做什么,没有计划和书面的东西。有些概念必须要落实到纸上,并不是突然想到一个很棒的设计然后美术开始画程序开始写就行的。在结束前三个周,我把代码全都删了然后重写。因为没有策划,代码也是一团糟,动画状态机的连线看着自己都烦。


原先的unity里player动画状态机,现在已经利用分层和分组彻底改好了。
4)很庆幸最后做出了一个可玩版本的demo,但策划方面的羸弱难以让这个idea的骨架长满血肉。一个好的策划会让你专注于写代码,策划的逻辑很清晰,代码写起来也很清晰。血泪教训,千万要有策划啊...游戏开始前就请明确方向,方向对了再去谈创作。
2.毕竟自己是个没有多少项目实战的程序。前期一时爽,后期火葬场。有些事情不能怨没有完整的策划。『磨刀不误砍柴工』,在开始敲键盘之前,一定得想明白一些事情。举几个例子:
1)游戏整体的框架。这个游戏场景要分多少个layer,哪些物体在哪层layer里,哪些物体需要加tag,不同场景间的触发条件,建议用思维导图做一张图表。每个sprite的行为控制,每个事件的监听,UI层的框架都列出来,条理清晰才能保持清醒。
2)游戏中sprite的逻辑,比如说player,上面那个动画状态机。不同动画状态之间的切换条件什么,每种状态开始或者结束的时候GameManager要做什么,这些问题最好纸上先写一遍。因为游戏中涉及到tween插件和timescale的问题,自己在心里理清楚这些逻辑真的特别重要。写个枚举表示player的不同状态,后期加功能和维护起来特别方便。


3)游戏中的变量和函数。举个挺弱智的例子,游戏中的每一个变量是挂在GameManager上面还是挂在每一个enemy上面,千万别每个enemy的update里都在对某个全局变量进行一些矛盾的修改。有些功能要封装好备用。
4)有些优化的问题一开始就要想到,不能等游戏都做完了再去想优化的事情,除非你想把自己代码从头到脚再看一遍。不要频繁getcomponent,instantiate和destroy,对子弹使用对象池,setactive之前要做判断,图片资源的管理,需要设置static一开始就养成良好习惯。习惯的力量!2D其实还好,我最终生成在mac上的可运行文件是700M,班里做3d的组很多都是好几个G,因为不用去考虑商业化运营的问题很多时候都会忽略到游戏项目的优化,但是该遭的罪以后会补回来的。
5)因为我的美术是主策,所以提前在代码里做好一些接口和封装,让他可以直接在inspector面板里进行一些更改,这样会极大减轻我和美术沟通的压力。
6)慎用插件,尤其是同类型的多种插件一起用。游戏中的一些动画我开始是用的iTween,后来由于什么原因我改成了dotween,最后脚本里是两个tween插件共存,虽然没有冲突,但是不建议这么做。虽然说dotween在UGUI上有点问题,还是建议用dotween。一些特效插件、物理模拟插件、相机滤镜什么的,千万慎重啊,不然下面一堆黄色警告你都不知道自己错在哪。
7)一定要写注释。就算只是个bool开关a,也要加一行注释。当然,我发现了一个骚操作...直接中文命名会被耻笑吗...这个请谨慎...虽然貌似并没有出什么bug...但还是英文最好....还有,记得及时git!
8)程序方面自己得到的经验教训其实挺多的,有很多小的点,一时罗列不完。unity其实不难,做出一个游戏来也并不需要多高的编程水平,只要英文还ok,懂得常用搜索引擎,很多问题都不是问题。但是作为一个程序员,需要更多的数据结构和算法的修炼,栈和队列之类的应用到实际才会觉得所学非无用,而作为一个游戏设计者,需要学的就更多了,目前来说我也不知道到底怎么才能成为一个优秀的Game Desgner,学无定法,无法可依,是多玩游戏吗?是多去实践吗?长路漫漫,还需修行。


3.关于像素游戏中的一些问题,比如说怎么实现真·像素旋转,像素图片资源的设置,怎么实现像素特效等一些问题这里就不讨论了,像素游戏对于普通的2D游戏来说还是有很多区别的。像素真的是一种很棒的艺术形式,我很喜欢,想毕设也做下去。
4.程序方面还有挺多想补充的,等我整理一下思路,想到了再说。
5.公众号 cuc-gamer 我的游戏并不算太优秀,师哥师姐们的游戏都不错,同班的大佬们游戏也很屌。革命尚未成功,同志仍需努力。大四一年,好好修炼写代码,想做出好玩的游戏。


13游戏毕设 | 一声CUC Gamer 一生CUC Gamer
毕设展映落幕 | 离开新手村 开始新的主线剧情


来年加油!
在用unity开始做一个游戏之前,程序员应该做哪些准备?注意什么问题? - 知乎

求dalao的经验...↑↑
页: [1]
查看完整版本: 一个程序小白的unity 2D游戏开发的反思与经验