《天龙八部3D》中Unity使用先容
在已往一年里,很多端游进动手游市场在榜单上大获告捷,但思索到功能及用户属性等,假如仅仅照搬端游的玩法,在开发历程中约莫会碰到很多风险。《天龙八部3D》是搜狐畅游自主研发的一款游戏,它是3D的MMO体系,在客岁10月举行公测及上线之后,取得了很多玩家的承认,取得了不错的成果。以是,今天我想来分享一下在使用Unity引擎制造《天龙八部3D》游戏的历程中碰到的一些履历和教导。
《天龙八部3D》武艺方案揭秘
起首,我先简便先容一下《天龙八部3D》项目标基本情况。《天龙八部3D》在公测之初的24小时便取得了1257万的流水,首日导入约莫110万的用户,在要地以及台湾、香港的iOS付费及无偿榜均取得过TOP1的成果,在iPhone热销榜的最高排名是TOP3。正式上线之后的首月流水是2.3亿,从“凌波微步”、“武林大会”到迩来的“丐世好汉”,《天龙八部3D》推出的材料片流水均高于公测时,这个事例可以体现MMOARPG的生命力照旧比力坚强的。
在武艺层面上,团结办事器端和客户端的全体考量,《天龙八部3D》主要运用了以下几种武艺方案:
- 完备的动态负载均衡方案。单办事器支持一万人同时在线,在人数上增时可以变更整个办事器的负载均衡,让一万人都能流利、安定地运转。
- 办事器内里通讯机制。
- 富裕使用硬件资源。好比在一台物理机上开两个办事器,当一一局部多而另一一局部少的时分,办事器会主动经过动态负载均衡调用更多的硬件支持人多的办事器。
- 特别处理机制。
- 带有渣滓吸收功效的目标池。
在办事器上,我们有较高的安定性和容错性,可以安定运转三周以上。这对其他典范的游戏约莫并不是一件特别紧张的事变,但关于MMORPG来说,却极为紧张。由于MMORPG是具有发展性和完备性的游戏,而MMORPG用户对在线时间的要求要高于平凡游戏,我们必需依托于安定运转机制来让用户在线时长取得确保。
而在客户端,则有安定的帧率温和畅的利用感,内里带有高效的动态资源办理战略,可以确保客户端的内存方面不会显现特别大的成绩,招致客户端闪退等。别的,另有成熟的功能优化处理方案,但是在客岁刚起步时我们照旧一头雾水,但颠末一年多的积极和学习,我们基本上以前学会了一套在客户端上功能优化的完备处理方案。
从端游得手游,怎样打造冷艳的挪动端画面体现?
手游和端游不同,做挪动端游戏,面数是一个很大的成绩,手游外表数较少,而《天龙八部3D》则将游戏资源与美术相团结,从定制化的场景到人物材质都是一种3D的体现,如此可以确保美术资源在面数较少的情况下,也能到达标致、冷艳的后果,如图1所示。
图1 《天龙八部3D》游戏界面截图
《天龙八部3D》项目是从2013年11月开头立项,作为毫无手游开发履历的前端游研发团队,整个开发流程可以说是摸着石头过河,不外幸亏我们整个团队已在一同事情六年,十分默契,可以较快地将想法完成。
项目最月朔个月,我们都在探究着实验种种美术作风定位,厥后开头动手研讨Unity引擎开发,在2013年12月尾,我们使用Unity做了一个Demo,基本上代表了之后的美术朝向和整个玩法的基本雏形。
颠末从α、β到Golden版本的优化演进,《天龙八部3D》从初具雏形到公测、正式上线,在此历程中真正运用了哪些Unity武艺?
- 多量的Unity自带武艺,好比导航的组件等;
- 遮挡删除;
- LightMapping,用以处理光照成绩;
- 将NGUI与Unity相团结可以很便利地构建出一个强壮的UI体系;
- Unity自带的粒子体系;
- Editor功效,可以很便利地开发种种小东西,大幅提高事情听从,好比UI帮助、图片处理、编译、国际化、拦截天生等;
- AssetBundle,一种十分好效的资源办理办法,既可以打包、控制内存使用,还可完成资源的动态更新;
- Unity自带的功能分析东西Profiler,能处理一切功能成绩。
底下再给各位先容一下《天龙八部3D》中使用的一些实用方案。
《天龙八部3D》游戏最初的定位是可以在512MB的内存上都能精良安定地运转,于是,我们便宜用了一种叫做缓存池的机制,这是一种内存换时间帧率机制,《天龙八部3D》的NPC、玩家、殊效、声响等均有使用,它可以提供较好的流利度体验,但必要一局部小额内存。
在游戏运转历程中必要找到一个公道的开释点,假如跑在1G以上的机器上,约莫相对容易,但要兼容低端机型,公道的开释点则十分紧张。
《天龙八部3D》中常用的开释点有两个,分散为转场景时开释一些非全局资源、每次掀开界面一秒后举行一次主动调用GC的利用。这是我们权衡了好久的做法,但实践后果还很不错。事先我们为了兼容低端机型运用了缓存池的功效,在512MB装备上运转会变卡,并且还无法控制,终极我们在掀开利用界面时实行缓存池,只管实践显现卡顿但玩家却不会有以为,这属于是一种比力取巧的办法。
值得开发者们注意的是,在将一切东西打包成AssetBundle时,需区分出依托干系,单个界面的AssetBundle最好不要凌驾1M,单个模子骨骼数不凌驾32个,人物和NPC控制在2000面以下。
最初,再来说一下《天龙八部3D》游戏中使用到的优化方案。
《天龙八部3D》在刚立项时,市面盛行的客户端轻重都在100M以下,事先我们做了很多战略,包含分包下载、动态资源更新、紧缩贴图、尽力重用资源等,最初,在上线时客户端轻重为150M。
代码中哀求内存寻常是New来利用,用完内存还要举行一次标志开释,好比置空或发送Destroy消息。假如让GC协助开释内存的话,会显现卡顿,这个时分就必要选择切合的时间点来控制GC。
寻常贴图占用内存大,假如尽约莫地重用会很节流内存。步骤代码中的内存池、目标池假如用完,在必要的时分可以主动调用GC开释。而做好AssetBundle资源干系的动态加载、卸载等也能省下很多内存。
依照C++的头脑来办理内存,好比使用内存池、目标池、手动卸载、主动GC等,可以在内存和帧率之间做好均衡。别的,方案好美术资源的反复使用也相当紧张,它可以变小包的轻重,好比NPC变色多场景可共用,制备、水等很多场景的美术资源制造也可反复使用。
佟庆 《天龙八部3D》制造人;王华 《天龙八部3D》主程
本文将刊登在《步骤员》5月A刊上,订阅具体可点击:
http://dingyue.programmer.com.cn/
CSDN挪动将持续为您优选挪动开发的精华内容,协同探究挪动开发的武艺抢手话题,涵盖挪动使用、开发东西、挪动游戏及引擎、智能硬件、物联网等方方面面,假如您有想分享的武艺、看法,可经过电子邮件(tangxy#csdn.net,请把#改成@)投稿。
第一时间把握最新挪动开发干系信息和武艺,请眷注mobilehub群众微信号(ID: mobilehub)。






