白鹭引擎5.0发布会干货速记实录:5位大牛过招H5游戏开发
它是由主流浏览器厂商组成的W3C社区团体制定的新的规范,我们通过 Keynote 上的这张图可以看到 Java 的执行原理,Java首先浅蓝色的解析,然后是深蓝色的编译过程,由于Java是动态语言,有时候需要重新编译,所以有重新编译过程。而WebAssembly没有重新编译,只需要一个简单的解析。
高性能、低尺寸,它的设计目标就是为了充分发挥硬件能力。简单看一个性能对比,左边的图是百度引擎4.0,右边是5.0,左边的屏是19帧,右边的是60帧。 但是,这是否意味着大家把自己的游戏升级到白鹭引擎5.0版本性能就翻了三倍,其实并不是,这只是在比较极限的情况,还需要考虑游戏自身业务逻辑对性能的影响。 引擎4.0压缩后的体积191K,而5.0是76K+81K,76K是底包,除了底包,整个白鹭引擎4.0能实现的功能只有81K。
WebAssembly它是一个开放的文本模式,可以设置为文本,可以直接调整代码。浏览器兼容性,这是很大的问题,IOS,10.1不支持,但是Safari TP支持。一般来说下一个大版本的IOS里面可以实现,这就是浏览器兼容性问题。安卓系统中,由于腾讯TBS会支持,所以所有安卓手机的微信中都会支持 WebAssembly。此外,chrome、SafariTB、FnreFOX都支持,它的性能也比我们现在4.0版本的性能提高不少。
白鹭引擎如何利用Egret 5.0,在这个架构图里面,开发者关心的游戏逻辑是绿色部分,白鹭引擎一直运输在中间的橙色区域,最底层相当于TBS或者苹果Safari浏览器运行支持。我们现在做的事情就是对外API没有任何变化。这些代码怎么生成出来的?并不是一层一层手写出来的,是通过WebAssembly Compiler编译出来的。
Egret 5.0之后我们会在引擎渲染层面做很多支持,首先我们会设计名实现高性能API,现在API没有让WebAssembly发挥百分之百性能,只发挥80%,现在设计先的API发挥90%95%。我们会把内置动画、物理、粒子系统,我们跟腾讯合作多线程离屏渲染技术,游戏的逻辑是在一个线程里面,引擎在另一个线程里面。QQ浏览器会支持共享,所以接下来我们会支持多线程离屏技术。在腾讯的支持下,性能可以得到进一步提升。
Egret 5.0我们采用了全新的方式进行升级,从白鹭引擎专注于 5.0 版本的开发,有两个月没有发版本,前天发了4.1版本,4.1是为5.0做过度,4.0最大的特性就是引入模块化更新的策略。比如你就想用EUI模块,我们之所以设计这个结构,最开始的初衷是为了解决声音的问题。比如声音模块升级,白鹭引擎可以提供只升级声音模块。
加载效率,白鹭引擎4.0资源框架处理得不错,我们引入了一个新的工具,是Egret Paper,基于数据驱动的组建化开发,开始化编辑器,所见即所得。这个工具,我们会争取在今年7月份之前发布,由于工作量很大,涉及到白鹭引擎所有其他工作的集成,确实有一定风险,我们会承诺尽快发,如果哪个开发者对这个工具特别感兴趣,可以在群里面联系我们,适当的时候,比如6月底提前给大家测试,寻求一些反馈。
现场问答:
Q:如果用5.0引擎,是不是意味着我们核心模块可以用C++ 开发?
王泽:这是我们想把5.0开源的原因,现在暂时不行。简单说一下,WebAssembly现在是一个模块,这个模块Java与它互相调用有一定程度,理论上可以通过动态连接技术,理论上可以。如果这条路可以走通,C++模块可以直接调用,但是目前WebAssembly还没有实现这个功能,但是长期来说一定可以实现。如果不支持动态链接的话,最简单的方法就是我们直接把C++开源出来,这是白鹭引擎在接下来版本里开源的考虑,当然时间表不确定。
Q:我之前想找一款像Egret这样程序做一个游戏,能不能用白鹭再加刚说的TBS合成一个APP,跟现在原生APP抗衡。
王泽:如果你想做的在苹果上运行,这是不行的,因为苹果上无法使用TBS。但是可以在苹果上使用它自己浏览器打包,实现类似的功能。TBS主要解决性能问题及碎片化问题。IOS上没什么碎片化问题,不会出现安卓这样没了TBS就没法过的情况。你说的方法不行,但是可以换一个方法,使用 iOS 的 WKWebView 对你的游戏进行一层包装即可。
凌实
腾讯移动浏览产品部内核架构组组长
主题:腾讯浏览服务,鼎力支持H5游戏生态
作为第一个演讲,首先非常感谢有机会参加Egret 5.0的发布会,来到广州和广大开发者以及游戏界的朋友一起交流腾讯浏览在H5生态做的工作。我们比较早做这方面的工作,印象中2015年的时候和Egret在H5生态展开深入的合作,希望通过引擎的整合,把内核的能力、引擎的能力达到充分的释放,帮助H5游戏生态的发展。
下面简单介绍一下腾讯浏览服务的背景,可能在座有些朋友不了解我们腾讯浏览的背景,腾讯浏览就是我们的TBS,去年4月28号正式发布的一款产品,腾讯浏览服务主要是基于我们在QQ浏览器做的X5内核的基础上,深入整合我们的基层技术和内容框架、广告体系和大数据能力,试图为APP和游戏提供技术、变现等一系列的服务。这是我们做腾讯浏览服务的初衷和目的,最开始想为游戏的生态包括整个Web生态做出我们自己的贡献。
简要介绍一下我们这款产品的优势,TBS基于最早X5内核,通过比较小的SDK,可以整合其他在安卓平台的各个APP当中,让APP可以使用我们的内核,替代原有的系统FU,从终端的角度来说,这个内核在安全性、稳定性、兼容性方面相对系统内核有更好的提升。在这个内核我们也会继续丰富和完善它的能力,增强HTML5的能力,甚至还没有规范的能力,通过能力的引入,希望解决业界在游戏当中或者APP开发中面临的问题,推动这个生态的发展。
这是从终端的角度来说的,我们自己内核可以整合我们自己后台的云服务,比如后台的透明代理,解决国内容易遇到的劫持或者通过云端实现省流加速下载速度性能提升,还有大数据能力以及游戏运营方面的能力。可以想象在这里的空间还是非常大的,这里只是做一个简要的介绍,具体的一些业务场景,可能还是要结合每个细节的场景,看我们如何在这里挖掘出更多的潜力。
目前我们的浏览服务除了在我们的浏览器服务,还在微信、手机QQ,QQ空间以及公司内比较出名的APP中使用,除了我们公司内部,还有大量的第三方应用也接入了我们的腾讯浏览服务。最新统计,有一定规模的APP接入我们的浏览服务里面,已经超过一千款。日使用活跃用户超过5亿,每天的PV将近110亿以上,整个平台的规模还是非常大的。这里有一个好处,我们内核的能力或者是我们后台服务能力的增强,大家很容易会在微信、手机QQ甚至第三方APP中得到体现。这样大家使用的过程当中,可能不需要考虑到不同平台,不同APP兼容性的问题,可以大胆放心的使用我们的能力。
聚焦游戏场景下,为什么要做这样的工作?可以看到在游戏场景下,我们的H5游戏,要么是基于自己的游戏引擎运行,要么就是基于系统内核的WebGL内行。大家都知道,安卓本身的碎片化非常严重。除了安卓碎片化严重程度以外,每个厂商可能会在不同的系统上,出于自己的需求会定制自己的WebGL,让WebGL的碎片化相对于系统的碎片化来说更加严重。大的碎片化加上手机GPU和CPU性能,即使同款的GPU和CPU,使用的具体驱动不一样,也会导致他们的性能有很大的差异。
给开发者造成非常大的困难,具体到WebGL渲染基础来说,WebGL兼容性不涉及到渲染性能差异非常大,有的兼容性50%不到,有的将近90%,这样大的兼容性差异,使WebGL在一段时间很难得到推广,这对我们性能有非常大的阻碍。除了WebGL,在WebRtc、WebAudio等H5方面,支持程度都不一样,对开发者来说要花费大量的时间、精力或者设计、规避这些小的问题。
安卓系统H5,5.0以后,为了解决碎片化问题,可以在系统上动态更新,这种动态更新能力,环境在国内非常受限。
我们X5内核最早在安卓平台开发和使用,简单介绍一下我们X5演进过程,安卓2.2时代就开始设计,目标是在所有安卓平台上通过一个内核实现完整的体验,伴随安卓版本的提升,X5内核也在不断的更新和实现,这里有关键的点。在安卓2.2、2.3时代大家都了解,那个时代的安卓主要是基于软件绘制,没有硬件答复的能力,性能比较差。到了安卓4.1和4.2的时候,安卓系统已经开始支持硬件绘制,这个版本的时候,我们也对我们的X5进行大规模升级,支持硬件加速能力。我们支持的硬件加速能力,不只在安卓4.4硬件上,当时安卓2.2硬件上,也大规模支持硬件加速能力,我们希望一个内核在所有平台上得到统一的实现,让开发者得到最新性能的提升。
到安卓4.4以后,大家如果了解,安卓把内核迁移到Blink的平台上,在QQ浏览器用的版本做的实践,QQ浏览器已经升级到最新的M37的版本,如果大家比较关注,现在微信或者手机QQ已经更新到新版本,这个版本上会有更好的偏好支持,后续会把QQ浏览器以及微信手机QQ继续更新,下半年会有新的版本推出。
新的场景下,TBS重点解决了四个问题,一个是碎片消除、性能提升、功能增强、服务完备。
碎片消除说的比较清楚,我们希望基于TBS内核,无论是QQ浏览器、微信、手机QQ还是空间以及大量的APP上都能得到统一的体验,具体到游戏场景下,TBS支持度达到95%以上。我们TBS希望帮助H5游戏更加聚焦业务,而不是适配各种产品。
性能上列出几项测试数据,可以看到TBS3.3,魅族机器用的是M40产品,我们的TBS无论P9还是魅族都可以达到接近50祯的水平。WebGL也是一样,可以看到有一项数据比较落后,我们TBS在各项数据都一路领先。
以上是我们已经做的工作,现在和大家交流一下我们现在做的工作。
我们现在为游戏引擎推出一种叫高性能渲染框架的游戏框架,框架的目的为了解决在游戏运营商或者高动态的外部场景下遇到的事情。技术细节可能比较深奥,简单说一下。传统的渲染过程会依赖于系统的渲染框架,这个框架无论在功耗还是支持度上都有一定的限制。所以我们在这里基于系统的service worker渲染框架重新打造系统框架。目前这个技术方案已经在我们浏览器游戏和直播产品上使用。根据我们的测试,功耗能降低10%以上,部分场景祯率也能提升20%。
大家看左上角,祯率能比较明显的体现出来,右边是我们在高性能渲染框架下渲染的效果,左边是普通渲染下的效果,大概有10来祯的差距,相对系统的渲染框架会更加流畅。如果大家会使用到QQ浏览器几个游戏产品,最新的版本上会得到体现。
刚才主要说的是性能这一块,下面跟大家介绍一下浏览器内核在功能增强上做的工作。
WebAssembly渲染说过了,下面针对WebGL、WebAudio、service worker。如果没有WebAssembly的支持,游戏只能做声音的播放,这种声音的播放非常受限制,在混音方面也不能支持。我们TBS内核从2015年开始发布以来,支持了WebAssembly的能力。在service worker这块,这是相对比较新的技术,Google为了解决资源加载方面所遇到的瓶颈,重点是希望让WebAPP有离线加载的能力。
从这幅图上可以看出来,传统的Web页面,只能加载页面以后,通过页面的剪切加载相应的资源,使用了service worker,页面具有了离线service worker的运营能力,即使这个页面被取消了,依然在浏览器或者第三方数据下运行service worker动态更新Web上的资源,或者更新自己的缓存,有了离线的service worker,相当于解决了Web离线加载资源的能力,对游戏场景来说,是非常有效的解决方案。
基于WebAssembly在上面也做了一些优化或者是技术的解决方案,这里也和大家进行一些交流和分享。在传统页面,为了解决每次加载的时候在Server加载资源,会在这里做一个离线包的系统,让所有的页面不是从外部后台拉取,而是从本地离线包的环境取本地资源,解决不管游戏还是业务上对资源依赖比较强,希望有更好用户体验的场景。这个方案有很多问题,它会依赖于标准Webview的接口,通过这样一个接口被第三方拦截,游戏这样的场景下,在同样的场景下会遇到阻塞的问题,有时候反倒不如直接从网络上拉取的速度更快。
这是实测的数据,简单的业务,通过拉取本地的包,自己没有经过网络延时,本地延时就超过400毫秒。TBS基于service worker做了另一套解决方案,我们希望通过service worker把这些APP原本存储在本地的离线包,直接转存到内核的缓存里面去,这样就解决了加载过程中需要拦截方式加载资源的过程。
在手机QQ业务上测试得到25%的提升,不知道大家能不能看清楚优化前和优化后的效果。优化后加载的时候白屏的时间非常短,做稍微的处理,用户基本看不到白屏的加载,左边有比较长的白屏时间,用户体验并不是太好。通过标准能力的改造,解决现有业务上或者现有使用场景上遇到的问题。
介绍一下WebRTC能力的技术,WebRTC在PC的时候就已经被支持,目的也是为了做多人会议的场景。因为在PC上,这种使用方式或者多人会议即时通信软件已经很多,WebRTC能力没有得到充分的使用。在手机上,WebRTC近一段时间又爆发出活力,主要是因为有直播和AR场景,AR需要结合手机的视频流,叠加一些新的东西,做一些特殊的效果得到展示。WebRTC在手机上得到新的技术能力的体现。
TBS重点做的是让无论是视频编码上支持H264编码,让传输效率和速度得到明显的提升。大家可以扫一下这个二维码,这是去年我们支持WebRTC以后,《王者荣耀》这个团队拿我们WebAR能力做推广的活动,打《王者荣耀》的应该会熟悉,这是当时推出新皮肤的画面。这个当时做的还是比较简单,因为它只有一个摄像头的背景,以及在摄像头上叠加的三维动画的展示,严格意义上来说,三维动画和实景没有很好的贴合起来,要贴合,具体要使用关于AR的识别能力,这块能力正在建设过程中,如果大家有什么需求或者想法可以跟我们进一步交流。
说了AR,也说一下我们对VR的支持情况,WebVR相对AR来说更前沿一些。因为VR视频资源或者场景有待挖掘,WebVR标准和各方面的支持上,包括Facebook已经开始在这方面做了很多工作。我们会在我们Webview支持VR能力。大家如果后面有需要做游戏,与VR相关的游戏也可以考虑,预期我们会在下半年把VR能力建立。
最后说一下这次发布会的重点,WebAssembly的能力,这里我做基本的介绍。
WebAssembly是一个非常新的技术,它是非常罕见由四家浏览器大厂商推动制定一套标准,目标就是让Web环境下能调用或者使用Native代码的能力。如果大家对Web生态发展比较关注,我们做了很多优化工作,但是还是有很多性能瓶颈。为了在Web环境下运有Native效率,Google2008年的时候推出JIT技术来解决JS代码的运行能力,所有的这些技术可能都是由普通厂商,基于自己的一些想法做的技术,很难被推广或者应用开来。
这些技术应用范围都不是很大,这也是为什么WebAssembly一推出来就得到大家重视的原因。今年2月28号四家厂商一起宣布了最小发布的版本已经可以使用。执行效率上,这是我们的实测结果,相对于Java运行达到2-3倍的情况,Native的60%以上。WebAssembly支持Java之间互相调用,对开发的灵活性和便利性以及后期扩展有非常大的帮助。
介绍一下现在WebAssembly应用的成果,目前在M57版本上做的支持,主要针对内存的优化策略进行优化。以前完全需要Native运行的游戏运行。希望在我们新的版本上尽快打磨和支持。
不过多介绍,这是当时和白鹭引擎的王泽一起讨论的在WebAssembly下解决游戏引擎面临的性能瓶颈,打造的新的解决方案,把我们游戏引擎的主逻辑都用WebAssembly实现,而我们游戏引擎业务模式还是用GL上实现。
TBS浏览服务不只是一个技术品牌或者是一个底层 的支持平台,希望在上面能扩展出更多对业务能力的支持。2015年的时候做了一些深入的合作,打通包括登陆、支付、分享各种GSCPR,支持游戏在我们浏览器上的运营以及各方面的管理。这里的需求或者想法还是需要与各位开发者进一步交流和碰撞。
凌云
蝴蝶互动 产品总监
演讲主题:蝴蝶互动御天传奇与白鹭引擎
今天很巧,跑一家门来了。非常感谢,白鹭能给蝴蝶宣传对蝴蝶互动来讲非常重要的一款产品《御天传奇》。刚才是很技术方面的分享,我这边可能更多从产品的表现跟大家分享一下《御天传奇》和白鹭引擎。
先介绍《御天传奇》是什么样的产品,说到这里不得不再说一下腾讯爸爸,《御天传奇》是受到腾讯正版授权御龙在天IP的产品。《御龙在天》这款产品有很大的用户人群,也是唯一一款IP授权蝴蝶互动的H5游戏,在这个基础上,我们今年会非常隆重的推出这款产品,请大家期待。《御天传奇》除了继承御天在天的国战玩法,增加了很多H5特性功能,包括在原有H5游戏画面表现上的升级,非常感谢白鹭引擎的引擎支持。特别在一些渲染上的表现,像特效的渲染,流光的渲染,这是最早在《传奇世界》里面很少敢用的表现,回头我们演示这个产品的时候可以看到一些动图,一些流光包括穿在角色身上的动作表现。
这是祯数比对,在《御天传奇》这一块,动画上增加了很多动画祯数,由于我们使用白鹭引擎4.0.3开发,这个版本上,引擎性能优化提高了很多,因此我们敢在里面加了很多动画祯数,更加完美的体现动作的流畅度,特别是在QQ浏览器上的表现会更加流畅,包括刚才讲到的一些特效,来这个会之前找手Q做了一个测试,现在通过手机QQ浏览器在中端机上的祯率一般能保持30-40,再高端机上一些最到能达到54,有这样的技术保障,更好的发挥白鹭引擎对图形渲染的优势,基于这样的技术,我们非常有信心说《御天传奇》可以在现在的H5市场上表现得更加出色。
这是我们比较骄傲的技术,完美的支持跨屏显示,完美适配,这是在我们手机端的显示,这是我们跨屏在PC端上,PC端打开界面,你会认不出它是H5手游,表现能力和表现程度几乎可以媲美网页游戏,很多人都说蝴蝶做网页游戏了,其实不是,还是基于白鹭引擎开发的H5游戏。这个可能是未来H5游戏的发展方向,除了在手机屏幕上面,PC屏幕上面可能也会有很好的表现。
这里不得不说白鹭引擎有很多非常便捷的开发工具,想在这里跟大家分享一个数据,一般来讲,开发一个这么大型的H5RPG游戏,开发周期大概有多久?为什么我会提这个话题?白鹭引擎带来的很多工具化的便捷,使我们在开发的流程环节上也做了相应的改变,原本一个模块一个模块的功能性开发,特别是客户端这一块,从美术给资源,切页面做客户端逻辑再输出、打包,基于白鹭提供的工具,在美术和客户端的中间环节,设置了专门页面拼接的岗位。原画、UI、特效、动作,提交资源,全部交给拼接的岗位进行拼接打包,由他给客户端程序,客户端程序只负责写程序,实现方便快捷的流水线化的开发,大大缩短开发周期。像《御天传奇》这样的RGP游戏,开发周期不到三个月。非常感谢白鹭提供的工具,快速压缩的开发周期和成本,这也是希望能跟大家分享的开发商的模式。
这款产品已经上到手机QQ浏览器平台上,包括应用宝,还有我们自己的平台经行测试。蝴蝶互动是一个非常开放,希望跟业界各界朋友交流的公司,如果大家有兴趣,会后也可以跟我交流,探讨一下未来H5发展方向和发展模式,这方面,蝴蝶很希望跟业内的朋友多多交流。这个分享环节我就说这么多,最重要的还是希望能对这个产品有直观的演示。
这是我们的登录界面,就是创角界面,随便创一个角色进去,这是我们在手机上能看到的界面,这是我们在PC上面的表现,其实在表现上非常接近页游了。包括地图、角色、特效等等,这个表现已经很像页游了。可以点一下贵族,想给大家看一下流光效果,这是一些特效上面的表现。还是更多给大家看到的实例,让大家有直观的感受,在白鹭引擎的基础上我们能做到的技术手段。白鹭引擎也提供了很多标签化的接口,在标签化的接口上,我们做了很多二次开发。
栗学勇
萌蛋互动 CMO
演讲主题:《猪来了 H5》经验分享
叫我栗子就可以,我来自深圳萌蛋互动。刚刚几位嘉宾都从技术的角度分析了H5包括白鹭引擎在H5方面的应用,我不是技术出身,不太懂技术,就从我们项目本身的成长历程和经验、心得包括整个市场跟大家做一些简单的分享。
简单介绍一下我们公司,在这个行业里面,我们公司还是有一点点名气。我们公司在深圳,核心团队也是来自于腾讯,很早就开始创业了,做的第一款游戏就叫《猪来了》,比较幸运的是我们APP版第一次做的就比较成功。后来我们迅速跟进了一个H5版本,发在QQ空间,大家现在进QQ空间,进手Q动态里面有一个小游戏,看到的第一个游戏就是我们的,腾讯爸爸还是很给力的,有两次把我们服务器都推挂了。本质上来讲《猪来了》是非常休闲的游戏,这个游戏有点像当年的QQ农场,里面有很多跟好友的互动,可以打好友,偷好友,包括游戏很多都是跟好友互动的,所以我们定义为休闲社交游戏。
有兴趣的可以玩一下APP和H5版本,我们运营的已经比较成熟了。APP版在海外比较成熟,国内现在RS版可以。
为什么选择做H5版本?最重要的一个选择理由就是看好这个市场未来的机会,我个人感觉除了QQ空间和很多浏览器在推H5的产品,最大的机会还是腾讯爸爸,如果把入口开出来,流量就很大了。如果支付问题解决,相信H5市场,今天看就像2011年看APP一样。我当时在另外一家公司,2011年的时候,不知道你们记不记得当时有一个H5大赛,第二届大赛就在我们公司搞。
那会最大的争议在H5在Native,H5在当时的市场环境里面有很大的问题,比如网络,当时网络很贵,而且速度也非常慢,平台当时也没有搞清楚,包括Facebook也没有搞清楚,Facebook一直推荐H5,后来不得不转向Native。后来又转过来做H5,为什么?无论浏览器还是引擎还是网速,基础条件已经成熟了,可以让用户在这样一个框架下有很好的体验,从我们自己的体验来讲,基本不输Native,技术环节解决之后,还是有很大的市场空间。
我们也不是吹牛,大家可以去空间看一看,现在在推的是我们这款游戏,业界已经出了很多款了,我们的量是最大的,收入也还可以,利润还是相当丰厚的。这对做技术的同学有比较大的帮助,这是我们自己包括QQ空间,包括未来腾讯有很硬性的技术标准,接入这个平台会有硬性的要求,分享出来也是让大家知道,接入QQ空间有很多要求,比如速度,速度是最基本的东西,打开浏览卡不卡,这是最基础的东西,大家可以对照自己的游戏能不能达到这个标准,这是基础门槛,达不到这个条件是上不了线的。
今天我们讨论H5,有点像2011年讨论手游,当时很多人不太相信,当然很多人相信。手机游戏能做到一千万收入简直是逆天,那个时候不敢相信。后来有了很多款一千万、五千款甚至上亿的游戏。当一个新的技术革命来的时候,一个新的产品革命来的时候,很多人比较悲观,也有很多人乐观,相信乐观的人一定会有比较好的结果,相信在座的都是乐天派,希望各位的H5游戏能在后面取得比较好的成绩。
钟朝龙
西山居 H5项目技术负责人
演讲主题:H5强交互游戏实践
西山居一直以来做的都是武侠类游戏。现在我们做的一个东西,H5上面有想做武侠类MO,希望继承传统,做一款比较强交互的游戏。什么叫强交互?我们会让所有的玩家实时在游戏场景真实打,可以做到躲技能,看到别人放的技能可以躲到。我们开发语言用的是GOLang语言,GOLang语言开发效率很高,门槛很低,使得开发效率非常快,在服务器方面。还有一个是Web service非常方便。多线程很容易出现死锁和资源不释放,好处是可以让我们的逻辑变得清晰和简单
一个玩家就可以用一个线程处理,和其他玩家没有任何关系。这样我们就不需要像以前的做法用一个状态机做轮循,使各种流程处理比较清晰。多线程要慎重,不能用得很泛滥,我们现在用的也很谨慎,主要是玩家登录这块用到多线程,具体逻辑处理还是单线程的。
没有用到脚本,基于这几个方面考虑,脚本形成了效率低下的问题不好解决,GOLang语言门槛降低以后,并不需要用到脚本。如果大家了解GOLang语言,在我们的测试和实践来看,它的GC问题并没有很严重,除了你有BUG,虽然CPU很高,但是并没有影响玩家的体验。GC问题在GOLang语言中并不是很大的问题。
说一下白鹭EUI,比较重要的东西,我们用的比较多。为什么?有很重要的是可视化编辑,可视化编辑的作用是我们可以提高整体的开发效率,让美术和策划直接对这个界面进行编辑,不需要做任何调整。得益于EUI数据绑定和数据分离的功能,很容易实现程序不需要等UI做出来,就可以先把代码写好,需要的时候就把界面弄上去,如果不喜欢这个界面,可以再替换,这个过程中不需要程序改任何代码。
数据绑定可能会有内存切入的问题,要视情况而定,数据绑定造成的内存问题不是最关键的,关键的问题是数据绑定有时候可能会导致界面刷新系统低下,这些数据并没有那么急迫,每发一个数据过来要立刻更新,做数据绑定之后,对一些不用立刻显示的数据,可以不用数据绑定去做。
EUI做一个非常不错的东西,配合res manager可以快速做国际化。使用EUI,国际化只需要替换一个主题文件,就已经国际化好了。这个主题文件,不同语言不同版本或者不同国家有不同的主题文件,IS可能不同版本里面需要的道具不一样或者不同的图片,包括资源进行管理。
说一下同步策略,大家比较了解。状态同步,帧同步,航位推行是状态同步和帧同步的辅助手段。状态同步的用途,不管你在什么时候,反正相同的状态输入都会有一样的输出,典型的应用情况就是我给客户端说,这个NPC从A点跑到B点,只关心到B点,不关心中途花了多长时间和中途经过什么样的循路,帧同步关键的核心思想,希望同一帧里面的输入有相同结果的输出,因为网络的延迟,服务器同步于客户端会有延迟,这个时候服务器可能已经跑过好几帧,这个时候怎么办?
可能需要用航位推测和追帧技术追过去。这两种方案都有优缺点,我们项目在这两种方案里面做混合使用,不同的情况下使用不同的同步策略,这也是需要大家根据自己的项目去做。
航位推测我们最早的版本用到,后来的版本去掉了。很明显,右边是一个你自己看到的情况,左边是通过网络同步,别人看到你的情况,会有一个折线,并不是光滑的移动,这个时间差里面,可能会出现打不中的情况。因为我们的游戏是做实时交互,看到玩家在这个位置,放技能打过去就能打到,或者放技能你看到了,要能躲得到。所以航位推测做竞速类游戏相对来讲好一些。不要迷信某种特定的算法或者某种策略,很多东西用单一的解决方案不行,可能需要混合的方法。
END
联系我们
开发者技术交流区:bbs.egret.com
合作开放平台:open.egret.com
商务合作:bd@egret.com
招聘邮箱:hr@egret.com
产品合作QQ:2669903485
渠道合作QQ:2669903485
白鹭引擎微信号返回搜狐,查看更多