在Unity游戏开发中,会有很多常用的功能需要开发,例如,输入系统,音效系统,行为树系统,对话树系统,本地化系统,寻路系统,Excel导入功能,等等。
行业中的常识是,不要重复造轮子。例如,输入系统的话,有Rewired插件,为什么不直接用呢?音效系统的话,有MasterAudio,为什么不直接用呢?本地化系统的话,有I2Localization,为什么不直接用呢?寻路系统的话,有A* Pathfinding,为什么不直接用呢?
常规的观点是这样的,一个这样的系统,开发一下要花几周时间,还不如直接用现有的,节省了时间。一些常用的系统合起来,可能有5万行代码,1人1年的开发成本,用现有的插件岂不是更快?
自己开发有如下好处:
1. 自己开发出来的系统往往更加简单,因为自己开发的系统只解决一个问题,而一个插件往往需要解决各种不同的需求。这个系统更加简单,就表示,使用起来也更加方便。
2. 自己开发的系统可以做更好的文档,有中文注释和Tooltip。
3. 自己开发的系统可以自己优化,可以提升效率。而别人的插件是不方便优化的。
4. 使用别人的插件,别人将来可能会放弃维护那个插件。而自己的代码就不用担心了。
5. 别人的插件往往代码量非常大,不易于理解。往往自己1千行能解决的问题别人要用1万行。这也是因为别人要照顾各种不同需求导致的。
复杂度的问题,例如:
1. Rewired插件,就是一个难懂的插件,其概念相当复杂,理解起来也非常困难。这样就导致开发的时候总是要重复的去读文档,导致开发效率降低。
2. AI插件Rain具有很高的复杂度,很多的东西,实际上都是不必要的。
效率的问题,例如:
1. MasterAudio需要在场景里面放一个MasterAudio预制体,编辑这个预制体的时候就有速度极慢的问题。
2. I2Localization取一个关键词的速度奇慢,自己做的简单的字典读取数据可以提升到5-10倍的速度。
3. AI插件Rain有运行效率极低的问题
4. 行为树插件BehaviourDesigner节点多了之后,编辑的时候非常卡
如果只是做三年游戏然后就转行,那么,使用插件是明智的选择。
如果要做游戏10年或者更久,那么,自己精心设计几个系统,在今后的游戏中都能够沿用。而自己设计的系统用在自己的项目中肯定是最优的,最合适的。时间久了之后,反而节省了开发时间,而不是浪费了开发时间。
这些仅限于大部分插件而言。但是,会有个别插件,实现的非常完美,而自己做的话会很麻烦,所以就直接用了,下面就是几个例子:
1. OdinInspector
2. TextMeshPro
接下来就是更大的一个问题,游戏引擎是自己造,还是用别人的。
不妨假设一个游戏公司有100个开发人员。假设一个自研引擎需要10人3年开发出来,成本大约为500万。
Unity引擎Pro版本的价格目前是¥1020每人每月,即12240每人每年,如果是100个人,则需要1224000元每年。如果使用unity引擎10年,需要付出1224万元。
Unreal是每个游戏收取5%的分成。这个公司有100个开发人员,一年成本至少1000万,那么,可以得到,每年从游戏中获得的利润至少1000万,其中要分5%给Unreal,就是50万。如果使用这个引擎10年,费用就是500万。
所以,从长期来讲,自研引擎有如下优势:
1. 长期来讲节省开发成本
2. 可以针对性的优化引擎
3. 可以做出更好的文档,特别是中文文档
4. 可以及时的修复BUG
可想而知,任何超过100人的游戏公司,都应该做好自研引擎的准备。即使目前只是10人的游戏公司,也应该为未来的发展做好打算。所以,自研引擎的计划是一定要准备好的。
从短期来讲,3-5年,直接使用别人的技术是好的。但是从长期来讲10-20年,重复造轮子是好的。而公司的发展,看的就是谁笑到最后。
如果现在拿起Unity就用,10年之后,你还是拿着Unity。这样就没有竞争优势了。
10年之后,有个游戏公司创业,也可以直接拿个Unity,这样子他就跟你平起平坐了。
如果现在研发自己的引擎,没错,前几年要受苦受累,还可能倒闭。但是,如果能挺过10年。
10年之后,有个游戏公司创业,直接拿个Unity,可能就不能跟你自研的引擎比。
所以说,做什么事情都要有长期思维。这样才能笑到最后。