(转)Unity 和 Cocos2d-x 越渐流行,国内公司开发「自研游戏引擎」的意义何在?
一、我认为,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、适应新的互联网时代社会化大生产模式。作为一个引擎团队,你具备的可能是技术实力、研发能力,有可能你认为自己不适合去做什么经销培训的事情,那么一定还有一件事情你可以做,就是借助社区和平台,进行互联网式的分工协作。一个别人无法完成的需求,一个别人无法实现的技术难题,如果对于你来说是迎刃而解的,那么不必拥有自己的引擎,你也可以在互联网时代获得你自己的立足之地。
(转)Unity 和 Cocos2d-x 越渐流行,国内公司开发「自研游戏引擎」的意义何在?的更多相关文章
- 【游戏周边】Unity,UDK,Unreal Engine4或者CryENGINE——我应该选择哪一个游戏引擎
在digital-tutors看到的一篇文章,很多初学者都有这样的疑问,因此翻译到这里. 原文:http://blog.digitaltutors.com/unity-udk-cryengine-ga ...
- Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)
Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品.作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎.Unity作为一个游戏开发工具,它的设计主旨 ...
- iOS cocos2d游戏引擎的了解之一
ios游戏引擎之Cocos2d(一) cocos2d是一个免费开源的ios游戏开发引擎,并且完全采用object-c进行编写,这对于已经用惯object-c进行ios应用开发的童鞋来说非常容易上手.这 ...
- Unity 2D游戏开发教程之2D游戏的运行效果
Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑问 ...
- 独立开发游戏越来越容易:Unity 发布旗下的最新游戏引擎 Unity 5,依然有免费版(转)
独立开发者开发游戏正变得越来越容易,因为在游戏设计中很多吃力不讨好的工作可以直接采用像 Epic Games 或 Unity Technologies 这样的游戏引擎来解决.而这几天,游戏引擎商们先后 ...
- 弧形菜单2(动画渐入)Kotlin开发(附带java源码)
弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gra ...
- 使用Photon引擎进行unity网络游戏开发(四)——Photon引擎实现网络游戏逻辑
使用Photon引擎进行unity网络游戏开发(四)--Photon引擎实现网络游戏逻辑 Photon PUN Unity 网络游戏开发 网络游戏逻辑处理与MasterClient 网络游戏逻辑处理: ...
- 使用Photon引擎进行unity网络游戏开发(一)——Photon引擎简介
使用Photon引擎进行unity网络游戏开发(一)--Photon引擎简介 Photon PUN Unity 网络游戏开发 Photon引擎简介: 1. 服务器引擎: 服 务 器 引 擎 介 绍 服 ...
- Unity 2D游戏开发教程之为游戏场景添加多个地面
Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...
随机推荐
- DataGridView带图标的单元格实现
目的: 扩展 C# WinForm 自带的表格控件,使其可以自动判断数据的上下界限值,并标识溢出. 这里使用的方法是:扩展 表格的列 对象:DataGridViewColumn. 1.创建类:Data ...
- Win7无线路由Win8/8.1开启网络承载DOS命令笔记本电脑当无线路由器
以下废话,先吐槽几句 这个功能其实在Win7+系统都内置了,不要再用什么某豹.某大师.某Soft之类的开启无线网络,这些软件都是骗你们安装一些垃圾软件的. 另外吐槽 某度wifi.某数字wifi都是垃 ...
- 参数化拼接in查询条件,个人备份
/// <summary> /// 查询数据报表 /// </summary> /// <param name="Tr ...
- Java之通过反射机制选择servlet中的对应的方法
此方法用于在对Javaee开发中的通过对应的名称而选择servlet中的对应的方法 注:主要代码如下 protected void doGet(HttpServletRequest req, Http ...
- Oracle数据库触发器使用(删除触发)
当我们需要用到触发器的时候,还是很方便,你会指定当我在操作某一事件时触发效果完成我所希望完成的事情:这就是触发器, 下面我给大家上一串代码,这是一个当我在操作删除事件操作时候,我希望把即将删除那条数据 ...
- 软件测试技术第一次试验之——JUnit的安装与使用
众所周知,在一个大型的软件项目中,测试是必不可少的.传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐.所以我们可以使用JUnit框架进行测试. 使用junit的好处就是这 ...
- python反爬之懒加载
# 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现, ...
- Android 关于apk 打包后的地图定位和导航失败的问题
项目中,使用了高德地图定位,调试的debug包定位完全没有问题,但是签名打包后,却始终无法定位,发现是测试环境下的SHA1码和签名发布版的SHA1码是不同的. 所以我们需要获取发布版的SHA1码: 方 ...
- MVC 默认路由 Areas
1.使用重名controller 在asp.net mvc2以后的版本里面,有了area(区域的概念),这为我们开发中提供了不少方便的地方,但是很不凑巧,若是存在多个重名的controller就会发生 ...
- Do not set "root" as "NOPASSWD" in sudoers file
cat /etc/sudoers root ALL=(ALL)ALL: ALL do not change it to root ALL=(ALL)NOPASSWD: ALL Since ...