查看: 255|回复: 20

Unity 和 Cocos2d-x 越渐流行,国内公司开发自研游戏引擎的意义何在?

[复制链接]
发表于 2021-5-11 09:26 | 显示全部楼层 |阅读模式
Unity 和 Cocos2d-x 越渐流行,国内公司开发自研游戏引擎的意义何在?
发表于 2021-5-11 09:31 | 显示全部楼层
泻药。

先简单介绍下我自己。我是Seed游戏引擎的总架构师。

写的比较长,走题比较严重。读者们可以快速切到第三部分和第四部分。只有这两个部分是对问题的直接回答。

分几个角度来说:
一、我认为,Unity3D将无可挽回的,或者说,势在必得的,成为接下来很多年内,世界移动领域游戏引擎市场霸主。
回顾历史,正如同咱们经历过一次又一次的互联网时代变革一样,x86,windows,Google,facebook,twitter,当一个具备一定规模的产品在一定领域达成霸主地位之后,其它的同类产品从技术积累上、推广成本上、对用户的掌握程度上等等方面的差距均会无可挽回的越拉越大。即使对于引擎这种核心技术较多的产品,这种差距也不是一两个明星级别的程序员可以挽回的。不论是易用性、性能优化、提供更多功能、覆盖更多平台,这些对于引擎开发团队来说,都是赤裸裸的成本。随着时间的推移,这个门槛会越来越高,高到后来者根本没有办法企及的程度。
这就正如你打算现在开一家公司,研发一个操作系统去销售,即使你投入数以亿计的资金,可能你也刚刚攻关完微软早在十几年前就在实验室得出结论的问题。这还仅仅是技术,比起微软完备的推广、销售渠道,你在创业初期多半还需要自己上门推广;比起微软完备的亿级用户的体验收集分析系统,你可能不得不邀请数以十计的朋友或家人体验你的产品。这一切的门槛,都是无法挽回的。
二、我认为,cocos2d将在2D游戏研发领域持续的占据一定的市场,但在3D领域会败的体无完肤。
cocos2d与Unity3D的关系某种程度上类似linux与windows的关系。前者打着开源的旗号,由社区发展而来,后者从诞生开始就是商业闭源的。根据程序员的劣根性,开源会让他们产生一种虚假的掌控感,让他们以为,如果引擎是开源的,那么在引擎遇到BUG的时候,他们就可以去查看代码并修复。尽管这种感觉在大多数时候是错误的(这里不深入讨论了),即使在小部分时候正确,带来的好处也远不如使用商业引擎降低的成本,但这有助于保证一部分忠实用户,一旦用户花费了大量的学习成本去学习一个引擎,在没有特别的必要性的情况下,他转投其它类似产品的可能性是很小的。另一方面,Unity3D在2D领域多少还有一些水土不服的现状,它并没有完好的提供大部分2D游戏研发者所适应的工作模式,它的体积庞大,不能满足众多小渠道瘦身包的要求。它的架构和设计严丝合缝,因此并不容易满足一部分特殊的需求。所以在需求多变的2D游戏领域,目前cocos2d才是当之无愧的霸主,Unity3D并不容易吃下这部分市场。
但是在3D领域,cocos3d落后的太多,不论是资源管理、场景管理、渲染框架,这在OpenGL ES 2.0普及的时代可能还不明显,但是随着OpenGL ES 3.0的发布到普及,技术门槛会大幅的提高,cocos3dx将沦为一个只能画画简单场景的小众引擎,时间的差距和投入的差距会让它跟Unity3D无法抗衡。
另一方面,cocos2d的结构较为松散,比起Unity3D富有设计感的API,cocos2d更像一个功能堆砌的产物。对于小规模的项目来说,问题可能并不明显,只要少量的增加程序员(或者让他们加班!?)就能解决问题,但是随着项目规模的扩大,参与人数的增加,混乱和无尽的BUG是我能看到的唯一结局。
三、我认为,国产自研引擎尤其是商业自研引擎在一段时间内还将继续持续存在。
且不说楼上有人提到的“自研情节”,单纯从商业角度来分析一下。
1、引擎市场是一个对技术支持等服务要求非常高的市场。对于一个非英语母语的国家来说,本地化服务是一个非常重要的服务。在Unity3D真正成长为一个强大的跨国企业之前,还有充足的时间留给国产引擎公司存活,并且很可能成长为类似百度在搜索领域这样独霸一方的角色。某种程度上,我认为搜狐畅游的Genesis-3D打的是这个算盘,结果怎样还需观察。
2、正如同有人提到的,像Unity3D这样通用化的引擎,还是很难为一个特定的游戏类型提供足够的支撑服务。对于一个特定的游戏类型,在Unity3D完美覆盖之前,还有充足的时间留给一个特定的引擎成长,建立稳定的社区,拥有稳定的用户。典型的代表有橙光文字游戏制作工具。
3、对于一个一定规模的公司来说,拥有自己的引擎,拥有一个属于自己的公司的技术支撑团队,就目前来看依然是有价值的。这不但会大大降低引擎学习研究适应的风险,也有助于这家公司在某些细分领域建立自己的技术门槛,甚至还有利于降低核心员工流失率。
4、对于一些具备核心技术人员的小型团队,只要不奢望一个大而全的引擎解决方案,拥有一个自己的引擎(不是一个庞然大物,而是一个小清新的工具&库集合和自我的积累)依然是一个既有助于调动核心技术人员积极性,又能快速响应和满足当下并不复杂的需求的方案。这个思路的典型代表是云风的Ejoy2D。
四、引擎研发团队还有更多新的机会
1、船小好调头,任何一个大的引擎,达到一定的规模,它登陆一个新的平台或环境都会有比较大的时间成本。相比起来,小规模引擎快速登陆一个平台,在新的平台上快速抢占市场,会是比较大的机会。这个方案的典型代表是Unity3D自己。在几年前,提到游戏引擎的时候人们想到的都是Unreal、Crystal,而那时候的Unity3D只是一个活在浏览器插件里的、主要面向甚至不完全是游戏的,极小众的引擎。但是Unity3D抓住了智能手机浪潮的先机,快速抢占了市场,不但成就了新一轮的神话,甚至在PC、主机等平台上产生了反攻之势。这件事是否会重演?谁也不知道。
2、服务,服务,还是服务。对于一部分客户来说,他们不关心这个引擎的核心多么有技术含量,所用的算法有多么高大上,他们最关心的,是他们面临的需求和问题能否得到解决。比起十几年的技术积累,丰富的文档资料,他们更想要的是一封快速回复的邮件,一个电话,甚至是一次上门的培训或技术支撑。想要做好服务,你需要是一个有一定技术积累的团队,但你甚至未必需要有一个自己的引擎。想想吧,当windows大潮来临的时候,真正赚钱的是投入几千万几亿研发一个新操作系统试图跟windows正面抗衡的公司,还是那些卖盗版碟,搞windows office培训班的团队?
3、适应新的互联网时代社会化大生产模式。作为一个引擎团队,你具备的可能是技术实力、研发能力,有可能你认为自己不适合去做什么经销培训的事情,那么一定还有一件事情你可以做,就是借助社区和平台,进行互联网式的分工协作。一个别人无法完成的需求,一个别人无法实现的技术难题,如果对于你来说是迎刃而解的,那么不必拥有自己的引擎,你也可以在互联网时代获得你自己的立足之地。
发表于 2021-5-11 09:33 | 显示全部楼层
我觉得比我早回答的人都已经说了很多了,我就说一点我看到的东西吧。

去年到今年大半年都从事有关引擎和前端适配的工作,给我的感觉就是这两个引擎以目前的势头来说必定会席卷整个业界。

但是如果从我的工作上来看的话,一个开发公司往往要的不是一个单纯的引擎,而是一个解决方案,所以Cocos2d-x相比于u3d还是有很大差距的,在3D方面的工作我不了解,所以对U3D不做评价。而在2D游戏的制作方面,采用Cocos2d-x带来的问题也会不少,最为突出的还是美术和程序之间的矛盾。最为诟病的是官方出的那个编辑器,虽然引擎是开源的,但是编辑器是闭源的,而且还做的很烂(相比于传统老牌Flash来说)。在一个项目要动工的时候,必须去权衡这个编辑器不能提供的功能所带来的损失,截止我不参与这项工作的时候,官方编辑器能支持的东西还是很少,很多项目上要用的也没有,因此而转向我原来参与的编辑器适配的技术,希望能够找到一个功能完善(如Flash)的编辑器,通过一个通用的适配器来适配上各种引擎。这个愿景是美好的。

但是,最终我不得不承认,由于很多数据架构的问题,在编辑器和引擎之间想要搭建通用的适配器解决方案几乎是一件不可能完成的事情,虽然我硬着头皮解决了大多数,但是最终的效果还是非常不理想。相反在之前自研的引擎上,由于采用的方案就是类似Flash的,很顺理成章地适配的比较好。

举这样一个栗子就是想说明,一个引擎再优秀,当项目需求发生变化时,也不可能做出万全的准备,各种各样的需求也就催生出各种各样的解决方案,这些方案里面就不乏自研引擎。感觉这个就好像是即使在windows统一天下的时候,也还存在着各种linux,正式他们不放弃,才得以发展。

存在即合理。从技术研究上讲我是很喜欢公司做这种基础建设的,虽然研究了好久的东西最终还是被砍了TAT
发表于 2021-5-11 09:43 | 显示全部楼层
以前我也是觉得应用到了一定的深度,就需要开发自己的引擎了。不仅游戏引擎,服务器架构也是。这是从技术上的判断,执行效率高,团队支撑好。
但是,入职EA几年,看过了FIFA、极品飞车、模拟人生等等游戏的代码以后,我想跟国内的开发者说:算了吧,咱们真的玩不起。

在EA做引擎的重点是做编辑器,市面上的编辑器大概只有我们内部编辑器40%-50%的功能。主要差在细节,举个例子,按钮除了有idle/up/down三个状态以外,每个状态变化都还有动画。
编辑器的代码有时候比游戏本身还多,而且一定比引擎代码多几倍。

暴雪设计师的那个视频里,魔兽世界的编辑器可以在线编辑场景,实时反映到游戏里。

自研引擎是个长期投入的无底洞,如果没有一本万利的大IP,还是不要碰的好。
发表于 2021-5-11 09:49 | 显示全部楼层
这时候如果还有技术负责人要自研引擎纯粹就是忽悠老板了。不差钱、不差人、不差时间,还要有一大堆项目给你当小白鼠。这样的公司国内有?

最合理的选择要么是用现成的,要么是在现成的基础上改。
发表于 2021-5-11 09:57 | 显示全部楼层
曾经看过UBI的几个游戏的底层代码,其中一个是基于完善引擎开发的,另几个只是工具集的感觉。看到他们底层有些模块的代码几乎一模一样。明白了那个强大的引擎并非一蹴而就,而是经过了好几个项目后积累而成的。
现在想自研引擎并开发游戏,其实是同时在做两件事,开发引擎和制作游戏。如果分两个团队开发,会涉及配合、依赖、周期、资源和成本等问题。如果一个团队开发,那么聚焦点到底是做一个好引擎还是快点出版本?往往到最后是吃力不讨好,玩家才不管你是不是自研引擎,只看游戏效果和其他用unreal开发的游戏比如何如何。然后游戏赚不到钱还有继续完善引擎的机会吗?
其实国内还有一个环境问题,如果你是财团,有一笔钱投资,你是去投高风险的游戏公司自研引擎开发游戏的项目,并耐心的等待成长。还是投用成熟引擎的项目?或盈利模式成熟的项目?或直接投房地产?
我觉得人员水平不是最大问题。社会浮躁,都想着赚快钱,才是最大问题。
发表于 2021-5-11 10:02 | 显示全部楼层
我所在的公司是做Vise3D引擎的,其实这个问题我们也考虑了很久同时还是那种很痛心的考虑,当一个行业市场内只存在了仅有两个开发工具的时候,我相信随着时间的推移产品的创造力会越发的萎缩。
回想了一下过去,当我们还在端游时代的时候行业内的从业者谈论的往往不是谁家项目挣钱了多少谁的项目又山寨了谁,而更多的讨论的是游戏研发技术或者说游戏设计。从bigworld到OGRE在到后来的UE和CE再到阀门的起源(source)引擎引擎,其实历史上有很多里程碑式的引擎存在,甚至国内公司均有自研的引擎比如完美的“ARK”引擎、网易“风魂”、畅游的Genesis等等。
下面说一下国内引擎的相关情况:
很多人都认为引擎其实是技术的市场,面对的是程序技术市场,其实这是一个误区。因为游戏的制作并不是单独依靠程序才能够完成。以Unity和cocos的市场占有率来看目前并不能被快速的颠覆或者从这个蛋糕中快速的分到一杯羹。那么国内研发企业中自研引擎的有多少?就目前环境来说国内的这27000多家研发企业真正自研引擎的应该是微乎其微。哪怕有自研引擎的公司真的能将自研的引擎商业化或者敢于完全开源吗,答案应该是不能。
那么当都在使用cocos和Unity引擎时这两款引擎真的能够完全满足行业内所有研发企业的需求?
第一、使用Unity和cocos的确降低了开发门槛但是随着引擎使用者生态的形成给游戏开发者带来的结果是程序员招聘成本增加,开发者水平参差不齐。记得上周在像素软件与像素CTO聊天时说到招聘一个月面试不下200人但是真正的能够用在新项目开发的程序从业者却少之又少,原因就是使用unity做过项目的人无论是做的逻辑还是界面当项目上线后就开始说自己曾经参与过XX项目,自己对C#或者unity有多了解对cocos有多了解等等。
第二、Unity和Cocos从根本上适合国内开发团队的使用吗?虽然国内团队的学习能力无可厚非这也是导致了几乎都是cocos或者unity开发的游戏,但我们从另一个角度去分析,Unity的不开源和技术服务团队的响应时间是国内开发者的一个痛点,同时第三方的插件是否真的符合当前项目的使用。cocos虽然是开源引擎但是对于工具层不开源也是某些时候让开发者很难百分百契合在当前项目当中。同样去看Unity的一些技术文档来说大多是英文的对于一些小团队也许这个是个瓶颈,但是对于cocos来说这个相对就做的好一些,毕竟国触控在这一点上落地还是做的很好。但是依然有大量的开发者说坑太多,随着项目的周期越长坑越深。
第三、对于引擎开发来说是需要长期的技术积累无论从图形学、逻辑框架还是资源管理乃至工具层的搭建都不是一个一天两天就能够完成的事情。但是对于现有引擎的修改小团队很少有技术实力对现有进行自定义修改或者二次开发。
第四、使用引擎的人真正的关心在哪里,开发人员所关心的是是否有完善的工具链、是否有快速响应的服务、有可定制化的渲染、工具哪怕是服务器引擎。只有完整的可扩展的工具链的支持才能对行业内的研发企业带来从根本上的痛点解决。然而目前这些Unity做不到cocos同样无法做到。
第五、引擎不单是给程序去关心的应该是从程序到策划到美术的一整套解决方案,然而目前来说市面上的所有引擎要么是针对程序要么是针对美术而全工种的支持却很少。
那么我们回到正题,国内的自研引擎是否还有意义?
看到这里其实我是赞同国内的游戏研发企业应当放弃自研引擎,第一目前看来国内大多的游戏开发团队并没有自研引擎能力,如果有引擎研发能力的团队去做着引擎同时又做着项目的时候,估计引擎为当前项目服务的可能性更大,当一个项目结束后新开项目对于之前引擎的契合程度应该是很低,同时行业内的研发成本越来越高,研发周期越来越短,长时间的考虑技术底层必然会带来成本的大幅度提升。因此对于游戏开发团队来说尽量还是不要去自研引擎。
但是对于研发商业化引擎来说国内是应该去做原因只有几点:
第一,本地化的引擎和快速响应的技术支持是国内游戏研发团队的刚需,他们需求本地化的技术资料、技术培训乃至官方技术团队的快速响应服务
第二,国内团队制作的游戏大多为网络游戏,但目前国内外引擎在服务器端的支持太弱(乃至没有),国内需求一个适应本土环境的C/S一体化解决方案。
第三,当市场上全部都是Unity和Cocos游戏开发出来的产品时,也许我们的创意或者游戏思维会被禁锢,同质化产品过多时候我们的研发企业是否苛求有一个本土化可订制功能的引擎公司为其服务
第四、随着VR市场和AR市场的日趋成熟,在现有cocos和Unity的基础上对VR或者AR的支持这肯定无法使cocos或者Unity那么专注
第五,从游戏引擎的历史上看没有一款引擎能够长期霸占市场或者说一家独大比如过去的unreal,记得当时只要做次世代端游一定会买unreal,但是随着行业的进步和发展一定会有新生技术去适应发展的市场环境,比如unity和cocos的成功占领市场。
第六,引擎的开发在国内目前还是蓝海市场,但是可以看到各大平台对于引擎的战略布局均是存在,因为国内行业市场上缺乏底层技术支持这个环节,但国内其他环节均比国外成熟,底层技术支持可以快速纳入行业生态圈。

国内的游戏研发企业还是放弃当前要研发引擎的思想,去接受一些新的引擎或者新的技术来适应行业的改变和发展,国内的引擎研发企业应该往前再多走一步或者两步不在去追随cocos或者Unity当前做的事情,这样才能找到新的突破口。
很多人说做引擎并不能找到商业模式和盈利点,其实往往生意就在生意之外。希望国内引擎研发团队继续秉持自己的情怀在这条艰苦的路上继续走下去。

个人拙见,博君一笑
发表于 2021-5-11 10:07 | 显示全部楼层
早年间的游戏行业有这么几套思路:1虽然游戏挂了,但我们开发出一套引擎出来,2不能用别人的引擎,万一我们的商业机密让对方知道了怎么办,3别人问你这个游戏怎么不好玩怎么这么卡,你可以回答我这个是自研引擎做的,换言之我自研发多么不容易啊,你还挑这些毛病。

对我个人而言,我给自己的定位是游戏内容创作者,有什么好用的工具我就用什么,有更快的生产工具自然就用更好的,目前手游行业的快速发展也印证了这个问题,就好比画图我肯定用ps或sai,难道我还能因为“画图”是windows自研的,就拒绝ps?

国内自研引擎还有个问题是容易造成部分人的优越感而导致商业项目受拖延,我见过很多项目都这样说:哎呀这个技术问题只能找他,只能他才会解决好。废话,这段代码就是他写的,还不加注释,不留文档,可不是只能找他,国内很多自研引擎就是这么留下的,所以自研不代表是具备了商业资质的引擎,如果只是为了自研而自研,那就不要做了。

另外游戏行业已经慢慢从曾经只要做出来就卖钱到要做的稍微有特色一些才行
,而国内绝大多数游戏公司都是游戏内容产出类型的公司,那游戏内容靠谁去想,靠策划。但我见过太多策划因为国产引擎的编辑器没取消、复制功能而每天胆颤心惊的摆怪刷场景,甚至还有因为只是个渲染层的引擎而策划工作全部手动填表,这样就会出现个问题,策划执行的很累,如果完善起来就更累,导致策划想怎么更好玩的时间受到挑战。当然了这可以用加班来解决,哦对了,一般自研引擎的项目都有“费很大力气去实现一个商业引擎早就实现的功能或效果但还有很大的民族自豪感”的情节,这种方式初期骗骗新人策划还好,万一他出来了看到满世界都要求有unity或cocos经验,用自研这不是断人家后路么。

那么是不是国内公司就真没必要搞自研?在我看来如果是为了抗民族大旗、妄想别人盗取自己商业机密、发现一个对引擎很有想法的应届程序、自己想改什么就改什么的控制欲,就别搞自研了,先不说别的,这种开发心态就不对。

如果是专精某种类型的游戏,例如act或回合制、足球游戏等,并且公司长久会打算往这方面发展,那么我觉得可以做自研引擎,例如日本的白金工作室。

最后再次表达我的观点,游戏行业最终保证的是游戏可以获得名或利的收益,好的引擎是可以辅助这件事的成功,而自研引擎在国内市场多数情况下获得不了这两点,最多能获得“民族大义”,所以我们应该把思路放在用好的工具cocos或unity来更快实现我们的想法上。当然未来有更好用的,我们就用更好的引擎。
发表于 2021-5-11 10:08 | 显示全部楼层
这个取决于你是神马类型的公司。

小公司当然用这些开放免费的就可以了,能把游戏做出来再说。

大公司是有自己的追求的,绝不希望自主开发的能力被其它公司限制住。

引擎行业的发展也绝不应该在这两个主流引擎后就止步,科技的发展没有止境。
发表于 2021-5-11 10:12 | 显示全部楼层
如果要做到小而精还是没问题的。

最基础的引擎就是一个项目代码,只是质量较高,在项目内部各个模块之间复用性很高。

稍微高级一点的是游戏换皮模板,同类游戏可以不停的复制,但是游戏开发效率不是特别高。

再高一级的是单一游戏类型模板,做到这种程度技术上就很不错了。但是还是没有通用性。

至于那些追求全平台全游戏类型通用的游戏引擎,不是一般公司能够搞的,有了前面几者的积累,做出也不难。要精就难了,毕竟这块国内技术还是落后的。

游戏引擎不是什么特别高大上的东西。这取决于对游戏引擎的定义。对于自研引擎,本质上就是公司项目代码的积累和提炼,这个比什么都来的实际。

至于基于很多别家引擎做的二次开发,这个能不能算技术积累。呵呵……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则