人气 2382

[版本下载] 如何评价网易的Messiah引擎? [复制链接]

lwyangliuan 2018-3-6 14:11:53

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
感觉这个问题拿出来讨论并不精确。
评价一个引擎一般可以从两方面来说:
1、引擎所制作的作品
2、引擎所使用的技术
由于技术细节使用情况外人无法得知,所以能评价Messiah的角度都是作品角度。然而作品角度基本都是有很多主观因素在里面的。客观的说你只能说某作品出自Messiah,它怎么怎么样。但是不能通过一个或者几个作品准确的评价Messiah本身。
所以要评价Messiah题主应该去问它的实际使用者和开发者。知乎上你能得到的答案都是“Messiah作品如何”,“通过作品我猜Messiah如何如何”。
回复

使用道具 举报

屋顶上的猫先生 2018-3-6 13:28:51
1.9更:
Chaos也知道是为了喷而喷啊?你一个闭源的引擎,自己一顿吹,实际能看到的就是个页游尿性作品,你让人咋判断,不看作品看个毛。贴个profiler截图啊?看看你多核利用率如何?job怎么分配的?把你场景的tesselation贴一贴,看看实际有多少面?放点framebuffer里的中间图,看看你这个pbr是有多么给力?自己说一堆特性,不说是别人玩剩下的,几年前也已经有很多公开信息了,Frostbite聊多核job queue是09年GDC吧,Naughty Dog聊多核job queue是15年GDC吧,贵司到底多核玩的有多溜,不如多爆点干货, 让我感受一下对力量的一无所知。

然后什么500个drawcall多线程提交也这么有成就感?这不是DX12,metal,vulcan主要解决的问题吗?drawcall成本在console上本来不就不算事嘛?一个技术演进和对硬件依赖的必然结果,成熟引擎有历史包袱,但是新撸的引擎如果还利用不了才是要扣分的吧。咱能对自己要求高一点吗,别啥都拿出来一顿歌颂。

-----------
我想说,再牛逼的引擎,做出来还是那副页游尿性。
这简直是一种超能力。
回复 支持 反对

使用道具 举报

游戏将军 2018-3-6 13:32:15
前几天刚在知乎上喷过一次Chaos,然后昨天突然看到群里有人发一段文字,讲的是国内如何如何实现了Multi Thread Rendering,世界顶尖云云。我吓了一大跳,首先是怀疑,这可能吗?然后群友发了这个链接。
             作为一个成年人,为喷而喷从来不是应有的态度。不过,看到大神就各种阿谀,喷都不敢喷一下,那就耻为技术人了。我完整的看完了Chaos的文字,一时技痒,谈一下我自己的看法,讲得不对的地方,各位可以随便喷。在喷与被喷之间成长,一贯是我的风格。只要能有所提升,些许被喷完全不算什么:)。在这里,我应一些朋友之邀,讲一些图形学相关的背景知识。猪厂鹅厂的精英们可以略过这部分。
             首先说一些关于Multi Thread Rendering的理解。
             结论1:显卡不支持多线程渲染!这句话一出,估计口水无数。不要急,我无意搞什么文字游戏。我这里的结论是,显卡支持并行渲染,但真的没有多线程渲染这个概念。我试图用更清晰的语言来描述这个问题。首先从代码上,一个模型的渲染大概是这样子的:
             SetVertex();
      SetIndex();
      SetRendertarget();
      SetShaderResource();
      DrawIndex();
        请问,这部分代码,你能够同时在N个线程里面实现,并且同步渲染吗?显然不可能。
        那么问题来了,为什么显卡不支持多线程渲染?很简单,显卡已经做了并行渲染,这个并行渲染就是最好的多线程渲染,已经不需要再应用层来实现这个多线程渲染。每调用一个drawcall,本身就是N个线程同时渲染这个Mesh。
     结论2:多线程渲染理论上能提升渲染效率吗?答案是:能!这句话一出,估计立马又是口水无数。尼玛的刚才才说显卡不支持多线程渲染,现在又告诉我要实现多线程渲染,这是要找抽吗。其实这很正常,显卡和cpu是两个完全独立的硬件,我们所说的高效,是指最大限度的压榨硬件的资源,如果你的程序在无限循环Render();这部分代码,那么,你的显卡显然已经被压榨尽了。但是,在引擎里面,这可能吗?答案显然是不可能的。
        因此,如何尽可能的提升cpu跟gpu的利用率?答案是多线程。
        那么问题来了,如何实现这个多线程?先来看看传统的单线程渲染架构,大概如下:
        while(1)
        {
                update();
                render();
        }
        这就是一个传统的最简单的架构,update里面处理各种更新,例如Animation计算,Skeleton计算,键盘鼠标消息,人物移动,攻击,网络消息……这里可能有各种设计,例如什么Tick设计,例如各种回调等等一大堆,但是归根到底,就是这么简单的设计。在这个设计里,大家都看到了,在update的时候,显卡是空闲的,在render的时候,cpu是比较空闲的。因此,其实很容想到,我能不能做两个线程或者多个线程,把update跟render分开?这样岂不是能提高利用率?答案是:可以。这是比较初级的,大家都能想到的多线程方案,假设一个游戏同屏人物过多,Skeleton计算消耗大量cpu的时候,这个优化意义很大。但是问题来了,对一些单机游戏什么的,同屏三几个人物,键盘鼠标消息处理消耗的时间可以忽略不计,这个update本身就是耗时极小的操作,这个优化还有那么大的意义吗?答案是:这个优化意义不大。
        综上所述,得出结论3:多线程优化,针对逻辑复杂的游戏,update处理比较耗时的游戏,如果你就做一个虚拟漫游什么的,做这类多线程优化基本就是做无用功。所以我的看法是:优化必须要针对特定场景。
        (以上3点,全是我个人理解以及体会,有错的各位狂喷,让我认识到自己的不足)

//----------------------------------------------------------------------------------------------------------------------------------------------------
        背景介绍完毕,华丽丽的分割线。
       假设现在要设计一款update需要处理很多复杂信息的游戏,如何做多线程优化是最合适的?做法其实很多,常见的做法是做一些background的资源加载,做一些Animation的计算,正如Chaos所说,其实这种优化到了一定程度,能看到底。因为这类做法,最终需要做很多的线程同步,这个同步过程,其实就是个等待,等待越多,效率越低,所以很多引擎的多线程老早就支持了,但是效率的提升并没有达到特别理想的效果。
       那么,还有没有其他更好的方式?老大哥MicroSoft提供了自己的方向:我在DX11和DX12里面都主打多线程渲染,大家拥抱我吧!
         老大哥的方式是什么呢?用一个叫做command list来缓存你的渲染,可以用deferred context来实现多线程!看着这部分文档,会有一种深深的延迟渲染的即视感。不过这确实不是延迟渲染。
        这个多线程的思路是什么呢?一般来说,场景需要实现比较complex的效果,会做各种rtt渲染。例如你做个实时阴影,你得实时渲染一个shadowmap吧?你做个水面反射,玻璃反射,你得做个rtt吧?更不要说在延迟渲染里面本身就是一个mrt。因此,把各种rtt分开渲染线程,这是老大哥的意思,也是一种可以想见的行之有效的多线程渲染方式。
        关于这种方式的详细描述,可以看老大哥的官方文档,这里不做太详细的描述。这种方式有效吗?肯定有效,我们要相信老大哥。这种方式是最高效的吗?显然不是,最高效的方式是:update and render everywhere!通俗来讲就是,让cpu跟gpu都不要停!我的理解是,Chaos号称他们实现了这个,所以他们是全球最顶尖最高效的引擎。
//----------------------------------------------------------------------------------------------------------------------------------------------------
        这里是华丽丽的分割线。这里对小包,对美术友好度,对编辑器的友好度,对画面的各种乱入PBR,HDR,DOF……全部不讨论,Chaos的原话,那些都没有技术含量,都是小儿科。其实我觉得那些还是有些技术含量的,不过相比这个牛逼的多线程架构,那些确实弱爆了,因此,这里也不讨论那些东西,只讨论最重要最根本的东西。这里首先有一个疑问:这么牛逼的东西,是Chaos独创吗?是别人都不知道或者想不到或者实现不了吗?答案Chaos都告诉我们了,不是,他认为是历史原因,需要这样大幅度的修改引擎架构,不合适,所以他们不搞这个,同时,我们也是世界上最顶尖的团队,因此我们做出了这个最顶尖的产品。
        这里,如果确定一定以及肯定Chaos他们做出来了这个东西,我真的衷心祝贺他们,毕竟能做出来这个东西非常的不易,而且确实有较高的水准。我很清醒的认识到自己的代码只是OGRE的水准,还在仰视UE,但是他们已经完成了超越,这是了不起的成绩。不过,我表示,这个是我都能想到的多线程方式,各路大神更加不可能想不到,别人不来实现,真的是因为历史原因或者是能力原因吗?这里,我的答案是:不是。我认为,这种实现方式作为一个通用引擎,有非常大的问题。
        1、首先,从实现上,假设你已经实现了update and render ererywhere,那么,我认为你的update跟render的耦合程度会非常高,需要无穷好的设计以及能力,才能让他们河水不犯井水,各自飞速在做各自的事情。
        2、其次,在传统的渲染里面,update();render();就是一帧,在一些需要做帧同步之类的游戏里,这样的架构是非常清晰并且清爽的,我不知道你这个架构还有没有“帧”这个概念,如果有,如何界定一帧?等待吗?如果没有,完全凭借时间轴来做帧,而不再考虑其他?这可能吗。举例:估计大家都玩过LOL,就算没玩过也该见过,这类游戏的技能,打斗,都有严格的帧同步,所以绝对不会造成看到打不到之类的坑爹效果。我一直认为,诸如Chaos号称的这个设计,最大限度的压榨硬件,会对这类游戏的设计上不友好。
        3、弯道超车,人人都想,在图形学的历史上,无数技术都是昙花一现,浪淘尽。对于UE这样的引擎来说,不确定某个技术大概率引领风骚的时候,是不会直接引入到引擎里面的。就我看来,这个技术的引入,还不如老老实实使用老大哥的这种方式,这种方式架构清晰,维护方便,性能并没有那么差。Chaos这个方式,我认为一旦需要更新换代或者升级的时候,成本无穷高,一般人压根玩不转,也就是他口中的网易全球顶尖团队才能玩得转了。这样的设计,适合于技术疯子,但是不适合一家正规运营的公司,这是我个人看法。UE在很多方面有些保守,例如我看到很多人喷UE为什么不上forward+,认为延迟渲染什么的已经过时了,喷什么UE守旧或者是不行了,我的看法恰恰想法,我其实本人也不大看好forward+,这个在目前看来是一个不错的算法,在可以预见的未来却是未必,很简单,这个会因为屏幕分辨率的增长而大大增加负荷。

我本身也是一个保守的人,并不会因为某个新技术立马打鸡血,不保持冷静,很容易让自己做出错误的判断。
        4、本来想copy一段话,来长篇大论一番,居然发现无法copy。就是那段UE要公开源码了,Chaos他们担心跟UE撞车,然后后来庆幸别人没有跟自己一样,然后觉得自己长舒了一口气,实现了弯道超车。看到这句,我瞬间觉得Chaos眼界太低。如果是我,看到他们跟我一样,我会很高兴,因为英雄所见略同,这样会更加证明我自己所走的路是正确的,吾道不孤。目前自己还在闭门造车阶段,完全不了解为什么别人不这么做,是想不到?做不出来?还是历史原因不会做?就算UE不做,其他新引擎,内部引擎完全可以做,那么,自己这个弯道超车真的是实至名归的第一吗?这就好比自己投机了第一一样。真正的第一,是堂堂正正,是我开源你也搞不过我,是完全跟你讲了

我的思路,你也跟不上我,是一直的引领整个世界的潮流。UE CE都开源了,别人停下来了吗?国内的引擎水平大幅提高了吗?并没有。国内的游戏能做出来AAA大制作了吗?并没有,这就是堂堂正正的第一!
      一家之言,欢迎各位狂喷。
回复 支持 反对

使用道具 举报

成都雨航 2018-3-6 13:35:43
有名字的引擎要有非程序角度的特点后,才能让人给出评价。否则你开源再来问
回复 支持 反对

使用道具 举报

静思艺 2018-3-6 13:38:53
作者本人竟然冒出来了

那就不扯这个引擎如何,就谈谈UE和U3D是怎么被国内程序员点击上的
UE是EPIC卖的通用引擎,同时EPIC自己也做游戏来装逼,这样可以吸引更多的买家

之前是虚幻竞技场,这游戏很牛逼,不过UE3时搭载的是更牛逼的战争机器
所以,UE3大爆了,彩虹六号,BIOSHOCK,质量效应等牛逼作品都是通过UE3制作的

当然,UE3也被亚洲厂商惦记上了,不过亚洲厂商用UE3做出来的最高成就应该是AVA(战地之王,外号AV之王)
国内厂商的成品则是神兵传奇,中华英雄等网游,它们基本达到PS2早期的画面水平,被战神2和黑煞吊起来打

要注意一下时间背景,当时端游可谓如日中天,从业者基本都是行业精英(相对来说),后来他们转头换面成了手机游戏开发的行业精英
一群当初连通用引擎都用不好的精英,我感觉他们的能力最多也就达到了引擎开发的下限水平,也就是动一张嘴

那么从动嘴到到引擎基本实现需要多久?
寒霜是06年开始研发的,08年出了第一个游戏,然而质量并没有突破,真正一战成名靠的是BF3
那么,5年?
这是世界顶级程序员的实力。

那么国内的行业精英又要多久?
中华英雄是2010年首测
要如何在区区六年的时间内,哦,不,话应该这么说

“一群连UE3都玩不转的国内精英,基础比DICE差,花的时间比DICE短,经费也比DICE少,在先天不利的环境下实现了弯道超车,成功研发出一款世界顶尖的游戏引擎”

我已经信了好吧

而U3D?
因为菜鸟程序员也能用所以群众基础广泛,特别是经过了UE的挫败后,更是感到了如沐春风的温暖。
他们时常把ori挂在嘴边,但是他们并不是Thomas和Daniel。
事实上牛逼的人用UE3就能做出上天的游戏,菜鸟永远是菜鸟。
而且ori是不错,它也只是个ori啊。低售价的小品而已,说好的3A呢?
回复 支持 反对

使用道具 举报

Veronikkawag 2018-3-6 13:41:58
一个引擎好不好,技术实现上是不是高效,并行得好不好,并不是好引擎唯一指标,从其它匿名用户的回复就看出来,这个引擎似乎对美术不友好,对于美术不友好,意味着美术实现的时候效率不高。那么对于项目来说就很麻烦了。企鹅在自研引擎上吃过大亏,一个好的引擎似乎已经不是一个大公司不断的加资源就能实现的。需要在合适的时间段积累多年才有现在的结果,Unity其实比UE难用。但是就是在合适的时间上出现了。才有了今天的地位。恕我直言,如果Messiah只是网易自己在内部使用,那么能走多远,只能看天了...
回复 支持 反对

使用道具 举报

数值策划_木木夕 2018-3-6 13:45:30
网易正在开发的吃鸡手游《荒野行动》就是这个Messiah(弥赛亚,意为:救世主)引擎。拭目以待中
回复 支持 反对

使用道具 举报

爱榴芒 2018-3-6 13:48:11
编辑器太卡,难用.游戏太容易因为资源而崩溃.美术不愿意用messiah场景的编辑器进行工作.
今天居然有个美术都不愿意自己在机子上改场景了,让我一个程序帮他在场景里删模型
回复 支持 反对

使用道具 举报

火龙动漫 2018-3-6 13:51:28
我就正在用这款引擎,别听程序自己吹牛逼。引擎是拿来用的,就相当于一个工具,工具好不好用你得问问用过的人意见,而不是制造它的人。
就用户体验来说,这款引擎实在太差了。
回复 支持 反对

使用道具 举报

引子 2018-3-6 13:54:28
弥撒亚引擎的游戏目前市面上有3个。
《天下手游》《荒野行动》《楚留香》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 04:54 , Processed in 0.074470 second(s), 26 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.