Unity 和 Cocos2d-x 越渐流行，国内公司开发自研游戏引擎的意义何在？
泻药。 先简单介绍下我自己。我是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、适应新的互联网时代社会化大生产模式。作为一个引擎团队，你具备的可能是技术实力、研发能力，有可能你认为自己不适合去做什么经销培训的事情，那么一定还有一件事情你可以做，就是借助社区和平台，进行互联网式的分工协作。一个别人无法完成的需求，一个别人无法实现的技术难题，如果对于你来说是迎刃而解的，那么不必拥有自己的引擎，你也可以在互联网时代获得你自己的立足之地。