LOL工程师:如何更好地控制皮肤的内存占用
导语:副标题#e# 近日,LOL的开发商Riot展示了工程师们在面对工作中的各种问题时,如何朝着技术提升和工作方式的优化而努力,最终给玩家带来更好的体验。Riot的工程师Eric Friedman和Scott DeFreitas在官博中以终极皮肤元素使者拉克丝为例详细解释了优化的过程。
近日,LOL的开发商Riot展示了工程师们在面对工作中的各种问题时,如何朝着技术提升和工作方式的优化而努力,最终给玩家带来更好的体验。Riot的工程师Eric Friedman和Scott DeFreitas在官博中以终极皮肤‘元素使者拉克丝’为例详细解释了优化的过程。
随着《英雄联盟》发展的越来越大,可能很一开始的艰难,一小组开发者们忙于把游戏发布出来,并且还要处理系统优化、和研发过程方面的问题。虽然游戏发生了很大的变化,但我们优先考虑的事情依然不变:我们始终把玩家体验置于技术和研发过程之前。有时候,这就会攒下‘技术债’,随着游戏的增长,在提高工作质量的同时提高工作方式就显得非常重要。并不是每前进一步都要做出革命性的变化,在本文里,我主要介绍为了推出终极皮肤元素使者拉克丝而在系统方面做的一些迭代更新。
当皮肤制作团队提出元素使者拉克丝的想法被制作人认可并且得到工程师们支持的时候,和上一个终极皮肤DJ Sona制作的情况已经发生了很多的改变。我们的皮肤研发流程已经成熟了,最终为每个英雄都预留了合适的内存预算,而且每推出一个新皮肤都会学到新东西。我们用了很长时间,但皮肤制作流程仍然没有达到我们想要的那种地步。所以,当我们把元素使者拉克丝的想法细分到具体技术要求的时候,很明显有些事情是必须解决的。
内存问题
为了让顶配游戏设备、超级本或者网吧里的旧机器等不同水准的电脑都能运行《英雄联盟》,我们投入了大量的努力,这同时意味着必须有资源限制。一个英雄的纹理、多边形、视觉效果、音效、动画数据和所有东西都会占用宝贵的资源,所以我们经常做出改变并且思考节约空间的新方法。
最初,元素使者拉克丝皮肤的想法是这样的:拉克丝有10种形态,每种形态都是完整的皮肤,一个完整皮肤占用20MB左右的游戏内存,所以这个终极皮肤需要200MB的空间。但我们给每个皮肤的内存上限是30MB,所以这肯定是行不通的。
我们立即开始头脑风暴,寻找解决方案。一开始我们想把内容缩减并且在需要的时候才加载完整角色数据。比如,游戏一开始只加载拉克丝的光形态,如果玩家选择进化到火形态,游戏会在这个时候加载火形态的所有数据,一旦加载完成就在游戏内进行转换。最终游戏会卸载光形态的信息。这么做的话,我们就可以随时加载英雄的两个形态,而且也可以吧内存使用降低到40MB,而不是原先预计的200MB,这和我们的30MB要求就比较接近了。
但最后我们发现,这样做会带来太多的问题。首先,由于I/O文件需要大量操作,这就对于低端硬件的玩家们带来了体验上的不便;其次,我们目前在《英雄联盟》里没有这种功能,所以为了这么做,就必须短期内做出一个全新的系统,我们的顾虑是,如果做出来没有用而且需要大量时间、严重超出预算该怎么办?
我们不得不重新审视内容创作流程,为什么我们大多数的皮肤都要占用20MB左右的游戏内存?这些内存到底都怎么用掉了呢?
自由带来的问题
我们给美术师们大量的自由创造内容,这在过去是很好的方式,因为那时候工程师们没有特别好的工具和方法做到比较好的效果。我们有动画压缩,但不这么做也没不会收到什么提醒或者警告,所以美术师们可以给几个像素宽且完全不透明的效果使用1024×1024的纹理做支持。
如果游戏数据服务器能够广泛使用,我们可以做到自动控制数据大小,但我们还没有到那一步。对于拉克丝的终极皮肤,这个过程还必须更多地使用手动制作。所以我们与美术师们紧密协作,确保动画尽可能地压缩,纹理做到合适的尺寸和格式,模型有效地创造而不使用过多的多边形。
我们取得了很大进展,然而离预算的空间仍然差很远,而且还有一个很明显的障碍就是视觉效果。
下一页:解决方案
- 球球大作战如何拯救迷之队友 虎牙直播炫星套路百出2017年02月22日
- Supercell CEO:如何打造伟大的游戏公司2017年02月21日
- 收入三连冠:Supercell如何应对“成长的烦恼”2017年02月21日
- 如何当老司机?看刺客信条电影先了解这10件事2017年02月18日
- 押镖新姿势 顺网游戏《天局》3秒教你学会如何拉车2015年12月08日
- 探秘《天书世界》的武将队列究竟如何选择2015年10月26日
健康游戏忠告 抵制不良游戏,拒绝盗版游戏,注意自我保护,谨防上当受骗 适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活
- 作品版权归作者所有,如果无意中侵犯了您的版权,请来信告知,本站将在三个工作日内删除
- 提示:本站为防止低俗内容出现,用户发表的评论及上传游戏需本站审核后才能显示出来,谢谢