游戏开发准备工作经验谈

前文

事情没有一帆风顺,一直做准备,一直没准备好,有些新路需要探索,有些新坑需要填补。就好比

努力了不一定会成功,但是不努力一定会很舒服。

所以无论如何风雨也终将至,机会留给有准备的人。正所谓

磨刀不误砍柴工 | 工欲善其事,必先利其器 | 有备无患 |

一个道理

最基本的

良好的网络和硬件你得有吧,开发IOS苹果电脑得有一台吧。硬件配置尽量买中高端以上,这些无须多作解释。

软件篇

单刀直入,我聊聊我准备的软件

必须用到的开发软件,没有就做不了的那种

名字 用途
Unity 游戏引擎,现在使用Unity Hub进行多版本管理
SourceTree 项目管理软件,不是平台,也可以选择其它软件替代
Visual Studio 代码编程,没有VS表示会很难受的那种
Sublime Text 文本文档,很多时候用到
Affinity Designer 矢量图像,替代AI的软件
Excel 图表,我的游戏里面已经离不开了
Snipaste 截图软件,开机启动的那种
GoldWave 简单的音效处理
Acrobat DC PDF 阅读器
ShadowSocks 你懂的
v2ray 你也懂的
Chrome 浏览器,书签已有百,分文件夹整理,浏览器插件能单独写篇文章

需要一说的是 SourceTree的安装体验对国内用户不友好,翻墙是其一,帐户注册是其二,但是使用体验我感觉比其它的都好。 项目管理的平台有很多:GitHub、国内的码云、腾讯开发开台(前Coding)选一个就OK。

我经常用到的一些软件

软件名 用途
Affinity Photo 像素图像,替代PS的绝佳软件
Dukto 用于Mac与Win的文件传输
Everything Window的文件快速浏览与Http共享
微信与QQ 很多时候你可以和其它人聊聊人生
网易云音乐 有的时候你需要听听音乐
百度网盘 有时候你需要找一些素材
Beyond Compare 对比工具,文件夹、文件对比
Word 写文档
逍遥模拟器 后期上线截图,做视频神器,windows only,Mac上没有好的模拟器
Zoom 远程会议工具
TeamViewer 远程协助工具

这些软件算是比较常用的,

也聊一下不常用的但在 其它地方还是比较有名的

软件名 用途
Xmind 思维导图,随着开发的深入,发现后面几乎都不用了,个人感觉适合多人协作
AxureRP UE设计,前面还试着使用,后面有了同上软件差不多的感觉,就闲置了
Q-Dir Windows下的文件资源浏览器,由于自身良好的文件整理习惯,用得也很少
向日葵 接外包的时候用了一下,现在没用了

正所谓萝卜青菜各有所爱,看各自爱好和习惯来选择罗~

其它扩展

软件名 用途
MagicaVoxel 轻量级体素建立软件
Blender 是个游戏引擎,我用来做模型动画,好感度随着版本的更新在不断在湮灭
SecureCRT 连服务器用的命令行工具
SecureFX 连服务器用的可视化工具

手机端

软件名 用途
TestFlight Ios测试用
Kitsunebi 用它看世界
ShadowSock 之前用它看世界

有了这些软件,游戏开发者 的样子就出来了,但是光有这些不行啊,犹如不能上大街裸奔一个道理

为你的开发添砖加瓦,为你添衣加褂

引用业界名言:

不要重复的造轮子

所以开发中,有一些东西是必不可少的,它能提高你的开发效率。

还是从Git项目出发,经常地,我们开发过程中是少不了一些素材的支持的,为了高效的开发,我们应当主动的避免在每一个游戏开始的时候从0开始你的项目,而是你已经积累了一些素材或者工具,直接导入进来用:

资源篇

Unity项目,一套素材有对应Demo场景,且适用性大,使用Git管理,分成多种类,大小最好不要超过10G,不然导入慢

很多资源在Unity商店上都可以进行购买,其它的来源也很多,当你遇到有用的资源时,一定一定要记得:

收集 – 整理 – 上传Git

项目名 用途
UI资源 里面只有UI相关的素材
FX资源 即粒子资源
SFX资源 即音效资源
2D资源 里面只有2D图片的素材,指角色、场景等
3D资源 里面为3D资源

这是比较粗略的分类,我自己的还有细节,比如3D Poly 风格的资源,也就是说按风格来分类。 使用方式简单,把你想要的资源,选择之后,Export UnityPackage,然后在你的项目中Import就OK

此时有了这些,就好比已经拥有 衣柜 的 游戏开发者 了,你可以任意挑选你的 服装 进行组合!

工具篇

指的是你的开发工具或者是Unity的插件。

我把这一块分成了三块,难度积累从低到高 依次为:

  1. 商店插件
  2. (自己的)游戏工具
  3. 游戏系统

商店插件

自己的轮子是轮子,别人的轮子同样也是轮子,跟据地形的情况,选择不同的轮子上路 不要重复造轮子的名言在这里发挥得淋漓尽致,下面列举一些实用的插件:

插件名 介绍
PlayMaker 状态机的应用,非常适用于单个UI系统上的表现
iTween 运动学专用,类似的插件也很多,可根据需求去定制
QHierarchy 编辑器层级应用插件,在后期我摸索出编辑的写法后,自己开发了类似的插件以替代
A* 早年间用过的寻路插件,现在仍然在更新,寻路应当好好了解这个
Behavior Designer 这个拿来写AI比较靠谱

等等太多了,我看过太多的用户(知乎的、博客的)说某某插件不好用什么地,其实很大部分是误用,哪些插件适合哪些场合,有讲究,有规律,别乱套。

就像拿PlayMaker写数据结构,跟叫美术去写程序差不多道理,可能能写出来,但是何必呢?

同样的,插件可能会存在生命周期,因为大环境在升级,时代的洪流会冲走经不足考验的插件:

插件名 介绍
NGUI NGUI依然在更新,曾经也是业界制作UI系统的主要参考标杆,干掉了不思进取的EZGUI,作者甚至加入了Unity并参与UGUI的制作,后来又离职出来继续更新NGUI,依然有比UGUI更强大的表现相关的组件,但是UGUI已经够方便了,在之后的开发中我可能不会考虑NGUI
2dToolKit 不得不说这真是一个好插件,分类、使用便捷性、性能处理上都无可替代,可惜的是只支持到Unity2018,我的第1个Unity项目(2012年)正是使用此插件开发,很多超前的(例如现在Unity的TileMap)设计在当时都是其它同类插件望尘莫及的

我买了很多插件,有的已经过时,但是他们依然值得我去花那一笔钱,因为在那个时候,这些插件为我节省的工作量远远超过买他们的价值,并且我从中也学习到了很多。

游戏工具

工具非常非常非常重要,如果你想看到自己有所成长,就必须有自己的工具,工具最好单独使用Git项目管理。 单个工具的特征:单个文件夹,有Demo演示场景或者是文档,上手极快,使用简单,在项目中不断迭代优化

我在我的每一个游戏开发完成之后,都会花时间把游戏中哪怕能复用的一点点的代码都 zai(解耦) 出来,并且加工优化,制作成单独的工具,以便日后二次使用

举一些我做的工具的例子:

  • ExcelParser – 直接把Excel导出脚本,直接使用
  • GlobalParams – 全局静态调用参数,实时修改参数实时生效(Unity Play时),可视化编辑
  • LocalData – 本地持久化数据管理,要求可以像GM一样编辑器修改所有数据、静态调用
  • Popup UI – UI管理器,要求不写代码,直接通过引用实现所有UI的交互功能
  • WayPoint – 路点编辑,要求支持贝赛尔曲线

好的工具有以下几个循环:

在游戏项目(或需求)中产生 – 解耦后自成一体 – 放在下一项目中再次更新迭代

工具为了命名冲突,用单独的命名空间给你的工具分类。

工具的产生太重要了,是程序员的价值体现,也可以作为技术入股的对象,必须集成!!

在这里提一嘴,我的工具代码量,已经超过我任何一款游戏的代码量了。

游戏系统

有一些游戏系统也是需要集成的,这些游戏系统的解耦难度相当的大,由于游戏系统对游戏主体产生直接的关联,所以有的地方需要用到强大的代码设计模式来减少耦合度。

在这里举个例从代码设计角度聊聊签到系统:

  1. 签到奖励与签到系统无关,签到单向解耦奖励,签到系统只负责:今天是否签到、是否连续签到、连续了几天、以及表现逻辑接口。
  2. 签到系统需要游戏主体来调用,调用时自动初始化,游戏主体还应当包括签到奖励相关的逻辑。
  3. 由于签到奖励的解耦,签到页面上的奖励表现只能由游戏主体(或者签到奖励系统)进行设置。
  4. 玩家响应签到后,签到系统只发起已签到的方法委托,所以游戏主体在签到之前注册签到成功的回调事件!

此设计同时也作用其它游戏系统,当然作为游戏策划的人只能提出需求,需求的解析解构,以及代码设计、逻辑实现是另外一回事。

设计是代码里面非常重要的一环,与其直接对应逻辑简单粗暴地去实现,少数几个脚本应付了事,还不如花费一些用时在设计上,至少说扩展性、可读性、对自身的成长有益无害,也能避免后期一小改让整个代码楼层松动甚至垮塌。

当你在以后的游戏中遇到同样系统时,直接借鉴或者复用一部分,你会发现比从零开始节省了很大部分时间

游戏系统应该:单个系统单个文件夹,一个示例的Demo,Demo里有相应的UI,用的时候可以复制修改的那种。

还是举例一些超级常见的:

  • 签到系统
  • 成就系统
  • 排行榜系统
  • 任务系统
  • IAP购买系统

游戏系统肯定会依赖于工具,但是系统最好也用单独的Git项目。

有了工具,你会发现你已经有了 武器 ,路途漫长且坎坷,你的武器让你一往无前,披荆斩棘最终到达终点!

总结

总结很重要,在你的一款游戏结束之后,最好马上进行总结(提取有用的资源与代码),因为时间一长,你会忘记那些细节,难度也会拉长。 保持这种习惯非常重要,即使游戏结束之后会产生认知上的疲惫期,克服它,你会感谢你自己。