如何看待游戏引擎的开源行为?开源对游戏开发者意味着什么?
问题描述:随着开源软件的燎原之势,github上也有了一些开源的游戏引擎,如Unreal Engine 4、Godot、Cocos etc. 游戏引擎开源对业界85%到90%左右的从业者没什么意义。引擎说白了也只是一个工具,有些人只需要知道工具的用法(设计,大部分美术),有些人连用法都不需要知道(制作,测试),只有部分人需要知道工具的实现和原理(部分程序,技术美术)。中型团队和大公司往往需要对引擎进行深入定制,比如加入自己需要的工具和特定优化,有源代码方便自己定制。大型项目往往是引擎和游戏同时开发,必要的时候需要改引擎代码加入新的功能来满足需求,比如我先前给亚马逊做《The Grand Tour Game》的时候,时不时要修改引擎代码来添加功能。这种情况下就需要拥有引擎源代码。拥有自研引擎的公司,第三方更多的是作为技术参考,而小团队往往连现有工具用着都费劲,估计连看源码的时间都没有。引擎开源对学生倒是很有用处,能从代码里学到更多的知识。引擎开源其实也是一种商业思路的转变,引擎开发商选择扮演一个游戏孵化者的角色,通过降低开发者成本和难度来帮助开发者提高项目成功率,属于长线投资,比如《绝地求生》就是这样的成功案例。 一、如何评价游戏引擎厂商开源游戏引擎的行为?
这是一个关于引擎商业史的故事,我尽量写短一些。
1.在PC时代,游戏引擎的开源行为,大家的共识是不以盈利为目的之共享知识和共享知识产权。与之相对的是那个时代商业引擎,它们的商业模式是:买断授权
但那个时代的游戏引擎公司和组织,无论是开源还是闭源,过的都不好。
Quake ,CryEngine,Gamebryo ,BigWorld,Unreal Engine ,Ogre ,Torque,Nebula ,Irrlicht ...卡神的Idsoftware被收购,Bigworld开发商Wargaming Sydney被收购,Gamebryo被收购,Crytek挣扎多年,最后被收购……Toruqe开发商官网上的最后一条新闻是“我听人说GarageGames像只不死的小强”,配图是一张强颜欢笑的自拍,红着眼睛,嘴唇向上拉,这条新闻的更新时间是2017年。
2.在移动时代,大部分共享开源已默然退场,尸骨尚温,但开源并未因此消亡,伴随着新的引擎商业模式,引擎开源迎来了新的玩家。具体来说:引擎商业模式从买断授权模式晋级到变卖服务模式,或是授权和服务结合的模式。
引擎的商业变革来源于cocos2dx,然后是unity3d,但这套模式的高玩是Epic和它旗下的unreal Engine。PC时代最引人瞩目的商业引擎CryEngine虽然看到了开源趋势却完全没看懂这个模式的本质。
这个模式的玩法,是本着做平台的远景来玩的:攒用户、建社区、用示范拔高预期扩大爆光率和影响力,等生态建立起来之后,再通过卖授权和服务挣钱。
首先是尽一切可能攒用户。这用户所含,第一是开发者,而对开发者来说,首先要降低获取成本和学习门槛。
这新时期的开源于公司而言,最大的目的便是降低开发者获取成本(用极低获取成本甚至免费占领市场的先行者不得不行提MS的Windows,然后是被史老板发扬光大的免费游戏模式)。
而学习成本的降低,则由引擎的开发方式和语言、引擎开发商的自身示范和社区建设来完成。
为降低引擎学习门槛和开发难度,所以你会看到cocos2dx收购cocos2dx-lua,Unity3D最终会选C#做为开发语言(早期还有js),而UE4则抛弃了用了近10年的UnrealScript,转而开发图形化蓝图做为卖点,壮士断腕,必有所求。(很多同学以为蓝图模式是UE首创,那是因为你没看到过早在2003年就带有几乎90%功能相同的一款法国VR开发套件,名叫VRTools)。
Epic做为高玩的表现之一是他们有一群专属的TA做示范视频,这些做示范的TA明显是比较系统的学习过如何培训,他们发音标准,声音和声好--柔和动听(我不是开玩笑), 示范视频效果爆炸,讲解清晰详细有序,几乎可以做为培训教育的模范。
最后一条,关于社区建设,你也可以看到这两年来Epic在国内对bilibili,知乎的重视及他们是如何维系社区关系——以维护核心贡献用户关系定期给予荣誉和激励为主体,以周期性的开展线上直播和线上聚会活动为重心。
后面的这两条运营手段,Epic不光碾压CryEngine和Cocos2dx,而且比Unity3D中国都做的强了多少倍。
攒用户的第二部分用户是公司或者老板,游戏引擎对老板而言什么最重要?一是高大上能代表引擎水准叫好又叫座的产品,二是遥不可及的画面表现力,第三条是老板得能找到合适的人来负责这一块,怎么满足条件3,上面已经说过了。同样以UE为例来说,第一条有了Frosnite和全民吃鸡,第二条有Siren、有戴老师的保时捷演示、有Chaos的准实时全局场景破坏、有光追的公主演示。Epic的市场和决策部门深喑心理学和传播学。
二、引擎开源对游戏开发者带来什么好处,哪些问题?
游戏引擎开源对游戏开发者来说,有百益而无一害。准确的来说,游戏引擎厂商构建引擎生态,对游戏引擎厂商自身、游戏开发者、游戏公司来说,是三方共赢,互为依托。
开源引擎对游戏开发者带的好处太多,随便举几个吧。
1.大大降低了游戏开发的时间成本和人力成本,引擎品质还能在一定程度上提高游戏的整体美术品质。就拿cocos2dx来说,虽然它自己不太赚钱,虽然我从来没停止过说它烂,但它客观上为国内的绝大部分2D手游包括棋牌节省了至少50%以上的开发成本。
2.提供了工程化和算法学习的宝库,你最少能学到论文里学不到的实作手法和工程向的优化如何去做。要知道看论文看PPT和做出来是两码事。
3.单列一下UE的开源吧,因为它策略激进,更新快,效果多,它的开源客观上奶了国内大部分自研引擎。 这事是我负责的,我在尝试运行的,有问题来直接批评我,有缺陷的或者建议的,我努力改进。
先说一下初衷:
知乎的有奖问答是UE社区的里的人(斧头)跟我建议,我觉得这idea很好,就委托给他热心帮忙了。但他的问题也都是跟我讨论过的,所以责任在我。
知识需要普及。这是一个很简单的道理。同时,不要瞧不起比自己Level低的技术。因为你自己学过来了,但是业内依然有挺多初学者需要各种知识。所以“BP vs Prefab”,我并不觉得Low。因为就是有挺多人在群里问过这个问题的。问题下,有人答BP好,自然也有人答Prefab好,我没有做任何的刻意引导,也没有特意的安排水军。我关注的只有一点,希望社区内,多出现一些回答,让初学者或者有需要的人,在遇到这个问题的时候,可以有地方可以找的到,能看看各方的观点,我觉得这是一件有价值的事情。以前我是个人,怎么样都无所谓,我个人也很少去问去回答比较初级的技术问题。但现在我来担任虚幻社区经理了,虚幻社区有很多高手,但同时也有很多初学者新人,他们也是我照顾的对象。所以满足他们的需求,也是我看重的。所以就算有人问“什么是法线”,我也不觉得Low,谁都有少年时。官方的社区,不只是高手的社区,是所有人的社区。
推广并不可耻。但是要尊重事实, 而事实是大家一起讨论出来的。我的态度就是大家尽管讨论,我也欢迎各种吐槽Epic吐槽UE4的,大家言之有据,互相改进就行了。比如很多人觉得BP不能做游戏,比如UE4很难学,我不赞同。难道我就应该一直闭嘴吗?我当然要发声,这是我个人的言论,你不赞同,你再发表你的就是了。只不过大家讲技术就讲技术,不要带情绪。所以“BP vs Prefab”,你觉得Prefab好,你喜欢,你就去回答啊,把你的观点表达出来。其他看的人能看到两角度的知识,我看到吐槽的一些点,我也可以反馈给UE总部去改进,多好。就看本题,有人发表了一些我不认同或者误解的言论,你觉得我应该在本题下闭嘴,还是应该同样写回答来澄清?如果你是我,你会怎么做?
更包容。我敢这么随便让人回答,就是敢接受任何的批评。但我依然要说,你不喜欢,你可以不回答。我虽然不赞同你的意见,但我尊重你的自由。知乎的自动推荐,我也没办法,打扰到你了,我很抱歉。如果你不喜欢,请忽略。如果实在想说点什么来释放一下情绪,我也理解你,保证不生你气。我自己每搞一次技术直播,选题的时候,就总是会有人喜欢有人不喜欢。有些人嫌弃太高端看不懂,有些人觉得初级没营养。但同时也肯定有一些人,会觉得有需要。我只能按我的能力,多创造一些内容,尽量服务好一些有需要的人。
有奖问答并不脏。我挺看重付出和回报对等的。那些认真写了回答的人,其实是花了挺多时间编辑的,我也没啥可感谢他的,我手里的就只有一些虚幻的官方周边,还有我自己的作为Epic员工发的福利贡献出来。那我自己送给他表示一份感谢之情,我觉得挺合理的。我也研究了一下知乎的规则,并没有说不允许这样。我没有给自己或虚幻官方拉赞拉关注,我只是希望更多人来回答技术问题知识。这个有奖问答的形式,如果能促成高质量的回答,一是帮助知乎多了一些回答,二是传播了知识,三是让答主得到“高赞”的认可,四是让答主也得到一份小周边礼品,五是随缘宣传一下UE4引擎让更多人知道,我不知道哪里脏了?我作为虚幻的社区经理,自然就倾向于问UE4相关的问题,很合理呀。你也可以去问“Unity比UE4好在哪里?”,也可以让别人回答,然后给他们发一些小礼品,我个人非常支持这种两个方面传播知识的事情。虽然我个人没兴趣去回答,但我保证不会去怼你,放心。
最后说一下本题:
开源,这问题好不好,有可能好,有可能不够好。但我不可能保证我们提出的所有问题都足够好,你觉得不好,没兴趣,就不要回答好了,当然你也可以回答,这是你的自由。我没有强迫任何人来回答。你觉得开源不好,发表你的观点,我也认可。你觉得UE4不算真开源,说出你的想法,我也认可。但我希望一点,说话语气平和一点,否则我有点难理解到底是真的不好,还是个人情绪原因。游戏引擎,有的不开源在收钱,有的开源在收钱,有的开源不收钱,各有各的玩法,他们采用的战略形式,对游戏引擎行业的发展是不同的吧,也是有的可讨论的吧。平常心一点,不要觉得我们提了一个我们占优一点的问题就说我们在炫耀。我们之后还有可能会提“你对UE4最不爽的点是什么?”那时候算我们什么?
礼品发放。虚幻官方不怕打脸,放心。说了规则是最高赞的人可以得该奖品,就可以得,除非你自己不想要。你可以多加一句说,我不要礼品,那我就让给第二赞的人了。 @MaxwellGeng ,时间限制还没到,如果到了最后,依然是你最高赞,我也认可你。我认可你对我,和对虚幻官方的批评。你获得了最高赞,不管是出于什么原因,可能是观众起哄,也可能是真的挺多人对我们的工作方式不满,这也都是一种真实的声音。我尊重任何事实的声音反馈,不管是表扬还是批评。我们在有奖问答开始的时候,就已经想过了这种情况,但我们最终决定坚决不控场,保证不会以“水军”的方式拉赞,我只会去邀请别人来回答,但绝对不会说请你只夸UE4。所以无论你是什么人,就算你是Unity官方的人,也欢迎来回答,回答的好,我也依然给你寄礼品。问什么问题是我们的自由,怎么回答是你的自由,礼品要不要也是你的自由。参不参加也是你的自由,是否屏蔽我们也是你的自由。请善用你的自由,莫生气。
最后一点私货:
我个人其实也挺建议Unity官方也来知乎写写文章,提提问题的,无论怎么样,对国内的技术知识传播都是一件好事。但他们不搞,我也管不着啊。这句话应该不算我碰瓷Unity吧? 第3次被知乎自动推荐虚幻引擎官方问题的推荐,这里先点一手举报不谢。
来,看看底下有这句话的问的都是些什么问题?“蓝图和Prefab怎么比”吼吼,这种水平的问题像是官方提的出来的?然后底下还有人吹爆蓝图说Prefab怎么怎么不行?关公和秦琼能打上三百回合了?这哪请来的海军哦?问个纯技术问题也就罢了吧,有点营养行不行?没营养也无所谓,天天有事没事冷嘲热讽的碰瓷Unity有意思?就不说Unreal Engine技术做的咋样,就这营销团队天天铺天盖地的刷存在感自己看着不烦?真就游戏开发界CXK么?
再来正面回答一下这种问题,能怎么看待?就普通的商业行为呗。
无非那意思说“啊我们开源了你看我们多NB啊!”对不?是不是商业引擎?是商业引擎是不是出来挣钱的?都是从别人口袋捞钱还高贵很多咯?我是想不碰源码啊?不碰源码有些功能能不能实现你们自己心里没点ACD数吗?还真欺负全知乎的游戏开发者都没摸过游戏引擎是咋地?意味着什么?你猜意味着什么??意味着我可以免费白嫖不用授权是咋地?
先声明一下,我不针对Unreal Engine用户,我也不针对该引擎的技术研发,毕竟用什么引擎是自己的事,引擎客观水平怎么样也有目共睹,今儿就怼这种一天到晚有的没的就在社区论坛用这种毫无技术含量的水货问题刷存在感的官方,只要我这个小半透明Mini V没被封,我见一次怼一次,试试,拒绝对线,想对线的,你说是,那就是,不狡辩。
怼完一整天过去了,貌似很热闹啊,在这类问题下也炸出了不少潜水的兄Dei们。
首先我本人一直自诩客观中立,也希望其他能理解人类语言的朋友客观讨论,不要开地图炮,要精确打击。即使在评价“引擎决定画质”这种很敏感很容易引战的问题时也基本保证不吹不黑有一说一,也很明确的表达了“没有好坏之分只有喜好之别”的观点,但是好像有些有趣的小生物对于人类的语言并不太能理解,希望大家不要尝试刺激它们,安静的离开就好:
MaxwellGeng:为何游戏引擎决定画质?最后我看到有一部分说要送礼物的。。这个感觉有起哄成分在里边,这就没必要了,本人目前也没有条件能接受礼物,不过赞数高高在上还真让我挺意外的,给诸位点赞的大佬鞠个躬。 小引擎赌的是我这东西还不错,说不定有人愿意来一起做,万一成气候了岂不美哉;
unreal 赌的是原理都告诉你,代码也给你参考,你还是跟不上我的节奏做不出我这样——有这底气那开源又何妨,何况说不定有更多人愿意来一起玩,万一成气候了岂不美哉;
unity 也放出了一些代码,但只能当文档看,它想的大概是哈哈这下省了XXX个客服的钱
说到底公开源码无非为了生态/影响力/形成行业标准/运气好也许能得到点社区反哺 …… 额还有顺便省点技术支持成本
对于开发者来说好处是上手容易了,引擎没设计到的功能可以DIY,可以去这堆代码里面去扒东西出来学学,有问题对着代码也容易讨论;坏处是这些家伙们价格便宜量又足,自研引擎的生存空间是越来越小,手撸游戏引擎的浪漫很容易被“我做的是什么渣”的现实一棒子给敲碎了 问题
Unreal Engine4编译源码默认会把C盘的空间占用很多
引擎为了跨平台做了很多抽象,这些复杂性除非开发过相应平台,否则很难理解精髓,加上源码分析资料少,全靠自己看,累哇,所以先看Godot、Orge、简单一点的更容易上手
好处
开发项目心里更有底,碰到解决不了的问题大不了硬头皮改代码
想要深究可以阅读源码
怎么看
游戏编程精粹 第四卷阅读笔记 - BTG开发日志
常有人问我这样的问题,是什么原因让那些作者坚持为“游戏编程精粹”系列撰稿呢?难道他们不正是在将自己宝贵的技术成果泄露给竞争对手么?这样问我,一定是从未在其 他行业中见到类似的情况——可口可乐公司就绝对不会把它的绝密配方和百事可乐公司共享!那么,面对那些开发与你的游戏竞争的开发者和发行商,为什么你会将你的算法与之 共享呢?
从这个角度看问题吧。如果你每次开发游戏都把代码从头写过,那就意味着每次都要重写保存游戏的函数库,对不对?可是你愿意每次都推到重来吗?你一定会找个方法来节约时间, 也免得让那些重复劳动逼得你发疯。那么在写完这个函数库之后,让你的朋友也使用它吧。也许你会问,我干嘛要把自己辛苦好久才写出来的东西给别人用呢?答案是,你的朋友和你所处 的情况一模一样。他已经重写了好多遍消除内存碎片的功能模块,这些重复劳动让他也一样很郁闷。如果你俩能共享各自的函数库,你们就能事半功倍。这不是一件值得做的事情吗?
创新基于共享——《游戏编程精粹》 好处大家都说了,就说说坏处吧。
先进引擎的开源意味着中小引擎成长空间会被极大压制,游戏引擎技术将会向少数几个公司集中,其它游戏公司对游戏开发者的需求基本只剩游戏逻辑和技术美术两个方向;熟悉底层技术的人才会越来越少、越来越不受重视。然后知乎上类似“为什么中国开发不出自己的游戏引擎,是不是中国人天生不适合做引擎?”的问题会越来越多。 首先,你就没怎么搞明白什么是开源。
说人话的话,【看看源代码的权利】是一部分,【修改源代码并且反馈的权力】是一部分,【自由地(相对自由地)把你获取到的这个代码再分发给别人】是一部分。
至少这三部分都给你做到了才能算开源。
开源没有一个非常严肃的书面定义,真要说的话一个共识大概是https://opensource.org/osd-annotated
然后你看看虚幻4的协议。
https://www.unrealengine.com/zh-CN/eula
我给你截一段吧
You may not sublicense the Licensed Technology in Source Code format.You may not sublicense the Licensed Technology in object code format, or any Content, except to grant end users the ability to use, or to permit your publishers and distributors to market and Distribute, a Product that you Distribute as permitted in Section 1(a) above.This paragraph does not limit your rights to Distribute and sublicense Examples.
When you generate revenue from a Product or Distribute it to end users, you must provide Epic with advance notification at unrealengine.com/release, as early as reasonably possible, including the name of the Product, the format of distribution, unique Product id (where applicable), and the distribution channel(s).现在你还觉得虚幻4是个开源引擎吗?
至于cocos
cocos确实是个开源引擎。
但是没人用啊。
说没人用有点过分了,但是你自己仔细想想,你玩过的哪个制作精良让你印象深刻的游戏是用cocos做出来的。
反正我是想了好久也没想出来。。。可能我玩过却不知道那是cocos做的?
至于Unity,人家更谨慎,代码都不敢全部给你看的。
https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-source-code/
We arenotreleasing Unity as open source. Not even a little bit. (Sorry.) It’s not that we don’t like open source. We’d open source all of Unity today if we thought we could get away with it and still be in business tomorrow, and wedohave a growing number ofopen source projects. But the main engine will remain proprietary for the foreseeable future, and the C# reference source code is released under a license which only permits you toreadthe code, not modify it. Please consult thefull license textfor details before you get carried away.至于为什么不开源和为什么开源。。。
不开源的基本上已经是老大了/有足够的资本雇一大堆人。比方说ue或者unity。“开源了也能赚钱”这句话是理想主义者的意淫,实际情况是开源了就是只能靠donation,不会有多少人买你的license。换句话说,开源只会让他们销量更低,人家现在恰饭爽得很,干嘛要开源。
开源的情况往往是没资本雇不起那么多人开工的穷人/热爱代码的下班后程序员/进场太晚不开源就没人用的可怜人/有知识共享的理想或者觉得别人的引擎架构都有大问题的偏执狂(/几个因素掺在一起)。
然后你可以观测到的普遍现象是往往还是闭源的引擎好用。
虽然开源是很牛逼,但是资本为王啊。
甚至你在这里能说出来cocos这个名字也纯粹是因为后来人家boss算是富起来了(至少相比我们来讲),归根结底还是资本力。
你不会知道世界上还有个引擎叫libgdx。libgdx这种才是标准的开源游戏引擎的现状:就算作出来好货也就几百个团用用。毫无名气,毫无收入。 游戏引擎开源对于开发者来说感觉是把双刃剑
(好处):开发者能学到业界前沿知识和技巧,因为大家使用的开发环境相同都是同一个开源引擎,开发者能更好交流开发技术,更快提升自己,同时对于商用开发者能更快开发上层功能而不用拘泥于底层造轮子,而且有社区和官方的技术支持,能够帮助中小开发者开发出满意的作品。
(缺点):因为游戏引擎的开源,很多财力不够雄厚的自研公司可能会减少甚至终端自研引擎的开发,会导致行业内大部分开发者自研能力下降,无法掌握游戏开发的核心技术,变成一个引擎工具使用者,这个问题会衍生出其它问题,如同质化作品大量出现,陷入类似资源出口型国家的自我封闭陷阱(如澳大利亚,俄罗斯),形成一个恶性循环,技术越来越差,别人提供的工具和引擎太好用了。
对待这种开源行为,开发者应该保持清醒的头脑,要去掌握核心知识,而不是看看文档知道怎么使用别人的功能。浅尝辄止。应该先研究原理,再学习使用引擎提供的功能,最好能举一反三,能对其进行修改优化做出自己的思考的成果。