起因
这两年一直在用Unity做游戏,主要技术栈也集中在这个方向上,业余时间玩玩H5游戏引擎,如白鹭,Laya等。这行做久了,自然会有亲戚,朋友,隔壁家大爷大妈,村里的小丽,二狗蛋子找你做网页,做App,更多的是找你修电脑,修图等等等等。。。(。ì _ í。)
一般情况下我是拒绝的,因为在外行看来很简单的事情,在我们看来实际上算IT不同方向的技术,说“隔行如隔山”一点都不过分。
在知乎上也看到用游戏引擎做App是否可信的问题,但是现在那个问题由于不可描述的愿意已经无法回答。大部分的回答都给予了否定,主要原因集中在游戏引擎和App框架在渲染方面截然不同,一个是实时渲染,一个是脏渲染(也就是有改动的情况下重新刷新,由业务驱动)。我觉得这里面可以说道的地方还是挺多的,就开篇文章聊上一聊。
事出有因,仔细的想想这个问题
有这种困惑的人可能有以下几个特点:
1.大多数是和我一样的游戏开发人员,而且是游戏客户端人员。我们的技术主要集中在游戏引擎上,用起来当然轻车熟路;
2.另一部分人应该是App开发人员,并且是单端的App开发人员,比如iOS或者android,而且有这种需求估计是需要单独接一些私活,或者想创业。想利用游戏引擎的跨平台特性,解决劳动力有限的问题(Demo之王Unity可不是浪得虚名的);
3.不明真想群众想通吃App,游戏开发;
抛开不明真相群众(=゚ω゚)ノ,再看看这个问题,我还是保持乐观态度,但是需要理性权衡下利弊。
首先,原生开发的优势很明显:
1.平台API无缝调用;
2.性能优良,包大小合适;
3.开发流程明朗,有坑也基本爬完了;
缺点当然不是没有:
1.独立开发要做到全平台,虽然有诸如React Native,cordova,Qt等等解决方案,但是谁用谁知道,我没怎么用过,在这里只说一句:学习成本还是有的,其他不多做评价;
2.对于个人开发,同时维护多平台,精力有限
其次,再来看看用游戏引擎开发的优势:
1.跨平台性能久经考验,基本满足一端编译多端发布;
2.工具流稳定,做游戏没工具流真会出人命;
缺点很多,不少还是致命的:
1.平台API很多需要原生自己实现处理一下;
2.性能捉急,毕竟是逐帧渲染,一不小心做成了暖手宝;
3.包大小客观,不说别家,Unity打包个Hello World都要小10M;
4.有门槛,游戏引擎也不是说用就能用的溜的;
说来说去,到底是行还是不行?
看我叨逼叨这么多,各位也是烦了,你倒是给个痛快,是行?还是不行?
其实大家都是成年人,哪里来的那么多的非黑即白。
我的结论是:在适当的情况下完全可行。
先抛出利益相关:我用Unity制作的App赚过一些钱(数目不表)
针对利益相关给出以下可行性分析:
1.对游戏引擎有一定的把控能力。说到底游戏是App的一个子集,游戏也是App其中一种,只不过游戏是一种特殊的,重型的App,它集中处理图形,渲染相关的部分。看到一句话觉得很有道理:“用游戏引擎做游戏就是杀鸡用牛刀。”我认为这种表述没有问题;
2.开发工具流合理。我当时决定做这个App是因为目前的开发流程,我能在两到三天内作出一个多页面模式的App,这一点很重要,学习原声开发双端,可能需要两三个月吧。至于我的工具流是什么,未来的博客里也会慢慢介绍,最近真的忙不过来(◐‿◑);
3.需要制作的App对包大小,性能,有一定的宽容度,用户很少情况下会重度使用App,用游戏引擎开发问题就不大。现在手机在硬件方面已经表现出过剩的情况,主要短板就在电池上,过分纠结性能,我都已经做完了,那边还在调研,也是得不偿失;
4.如果App中需要用到图形渲染已经相关方面,用游戏引擎开发合适,例如3D展示类App;
写这最后
没有最好的技术选型,就像没有最好的语言一样,归根结底语言,引擎还是我们开发人员手中的工具,如何用,什么时候用还是取决于我们自己,越限制,天花板来的越早。
目前用Unity开发的App最终打包的Apk大小这17M左右(核心功能),将来扩展,应该能控制这20M以内。性能instruments在红线边缘,差不多到Unity下限极值了。
有这方面经验的朋友欢迎交流,共勉之。