腾讯光子工作室群 的《绝地求生:刺激战场》在今年2月9日全平台开测以来,备受全球玩家喜爱。这款万众瞩目的UE4手游是如何在保证原汁原味玩法的同时做好资源的优化,执行效率的提升,移动平台操作方式的优化的?并且在短短数月内将这款热门IP 制作成手游提供给国内玩家无疑对是一个巨大的挑战。

为此我们采访了 Epic Games 中国技术支持团队,让他们谈谈在《绝地求生:刺激战场》项目上做技术支持的一些经验分享。

1. 在国内,手游平台用户数量巨大,虚幻引擎在手游平台上有哪些值得推荐的优化?

不同的游戏类型和项目针对的目标用户定位有着不同的优化方案。在保证质量的同时还需要兼顾效率,需要团队在各方面做平衡,好在引擎提供了多种工具可以帮助开发者达到这样的目标。主要有三个方向。

资源把控:利用好引擎编辑器下的统计工具和ViewMode来做美术资源的规划和profiling,可以在项目开发中比较好的控制资源使用。

查找性能瓶颈:利用引擎的各种stat和showflag以及CPU profiler和对应硬件的gpu profiler等工具,可以进一步查找性能瓶颈和热点模块做更有针对性的优化。

兼容性把控:利用好Scalability和DeviceProfiler来做兼容性和性能的取舍。

2. PC 版的《绝地求生》对电脑的要求很高,在移动端制作100 人对战同样类型的游戏会遇到什么样的瓶颈,在虚幻引擎中是如何解决这些问题的?

PC 版和移动版有许多的区别,首先电脑版本的地图内容复杂度非常高,一般手游版本都会为了优化而把视距调的比较近,把变种比较多的房子,树木,植被以及各种装饰的种类减少,以便于合并批次,提高渲染线程效率。但是《绝地求生》手机版本为了更好的还原电脑版本的地图Scale和Layout,在这上面能做的妥协比较有限,所以在渲染线程,GPU以及内存上都面临着不小的挑战。

再者,更自然的动画动作需要的不单单是更高质量的动画资源,也需要比较复杂的动画混合逻辑来驱动,同屏幕多个这样的角色动画的混合计算也是不小的开销。另外场景中的大量需要模拟物理的载具对于物理计算也是不小的开销。

总体来说,这些因素加在一起,每一个小细节的提升和差异,都会对最终的优化带来额外的挑战。例如,如果没有那么丰富的变种的资源类型,那么可以把整个地形和场景资源都加在到内存中,只需要在渲染线程做culling就可以了,但是一旦数据量到达整体加在到内存中无法满足需求的时候,就必须使用无缝大地图的异步加载策略,无形中也提高了复杂度。

好在,虚幻引擎本身提供的无缝地图以及异步加载机制解决了很大的麻烦。引擎本身也提供了大量的分析工具,Epic Games 也和腾讯的研发团队紧密合作,针对项目特定的灯光环境组合,投影设置等做了不少引擎层的特定优化,更针对项目资源种类多,可视距离远的特点,做了一些特殊的功能。

3. 在3 至4个月时间内完成一款这样的游戏,Epic Games 提供了哪些技术支持?

Epic Games 技术支持团队针对开发团队在使用引擎时候遇到的各种问题提供了协助,帮助修复了不少bug,帮助解答了大量疑问,加速团队的开发,也和研发团队一起商量制定了多种优化策略。

这里列举一下我们做过的比较主要的优化功能模块,略去一些微小的改动:

光影贴图合一,在移动端将贴图采样次数从3次减少到1次。sdf在ETC2下放alpha后的压缩效果,在移动设备上损失并不大,相对来说,减少的采样次数以及减少的内存是相当大的优化,所以是个很好的tradeoff。

渲染的次序调整,大型物件(如天空、地表)渲染放到最后,提高GPU效率。

优化了Drawing Policy的排序方式,减少Draw Time。渲染线程的效率除了总体提交的绘制调用次数,DC之间的状态设置API调用也很大程度影响着渲染线程的CPU性能,这里更好的sorting方式很显著的改善了性能。

在移动端可以根据项目灵活定制,最优化PixelShader的开销:

某些情况下去掉Reflection Cubemap Sampler

某些情况下去掉Lightmap,仅使用Static Shadow

去掉ILC

Android增加Texture Streaming支持,降低内存,提高GPU效率,针对不同档位的机器都能有比较好的针对RAM Budget的控制。

FOV Distance Culling,可以根据开的倍镜调整后的FOV来计算物件的culling,开镜后很远处的草依然能正常绘制。

减少一些数据结构(如FStaticMeshSceneProxy)在Shipping版本中的大小,优化内存。由于游戏的地图大,物件数量繁密,种类又多,单个物件的内存layout的极致优化无疑能更好的减小内存占用。

Dynamic Instancing, 用于大型世界中减少Draw Call。根据当前View动态合并同VertexType的资源,同时可以支持不同的材质实例在单个DC中完成,把材质的uniform拼合到了instance的vertex stream中。

LOD模型尽量使用同样的Material(而不是在原有的Material上做一个简化的Material),有助于减少Shader Switch。

在ES3.0下,绘制Shadow Depth的时候去除了ES2强制需要的Color RT,省掉了客观的内存。

添加了安卓平台的剪贴板复制粘贴功能。

添加了移动平台的LLM进行更准确的资源分类的内存统计。

可以将远距离的Shader设置为极简模式,降低GPU开销。

尝试渲染线程和实际Graphic API分离到两个线程,可以并行执行。(RHIThread)"

4. 国内手机的不同的系统,硬件规格非常不统一,在提高适配性方面做了哪些工作?

针对不同机型遇到的不同问题,在引擎中做了一些work around,例如利用r.OpenGL.StripExtensions去掉某些设备支持不好的扩展等工作。更多问题可能涉及到和硬件厂商的保密协议不方便透露

5.对于其他想使用 UE4 做多人大地形环境手游的团队,Epic Games 技术支持团队有什么建议呢?

在项目前期做好充分的规划,并且充分利用好引擎提供的工具,例如虚幻引擎近期推出的两个大版本(4.18和4.19)中包含了对于手游和大地形的优化更新(包括服务器部分),做多人大地形游戏的团队可以特别关注一下。

开发团队的不懈努力和支持团队的精诚合作让这款作品能够顺利面世,Epic Games 技术支持团队的经验分享可以为其他想使用虚幻引擎制作多人大地形环境的手游团队以启发。

虚幻4引擎开发的手游_虚幻引擎 4 手游《绝地求生:刺激战场》 开发经验分享...相关推荐

  1. 绝地求生手游qq和微信不在一个服务器,绝地求生刺激战场微信和qq好友能一起玩吗 qq和微信服务器互通吗...

    绝地求生刺激战场微信和qq好友是不能一起玩的,只要是玩过腾讯系列游戏的都知道,因为微信区和qq区不是一个服务器.但是ios和安卓的微信区是可以一起玩的,对服务器数据互通有疑问的玩家,可以查阅下文了解详 ...

  2. 手游绝地求生战地服务器未响应,绝地求生刺激战场卡在加载中不动怎么办

    腾讯光子&PUBG联合出品,正版<绝地求生>手游!百人空投,荒岛求生!虚幻4引擎研发,次世代完美画质,重现端游视听感受:8000Mx8000M正版... 类型:飞行射击 大小:11 ...

  3. 吃鸡手游模拟器服务器维护,绝地求生刺激战场卡在初始界面怎么办 loading解决方法...

    绝地求生刺激战场对比一款吃鸡手游,这款已经是爆款了,在世界频道里面的组队消息满天飞,只有快点才能挤进去,服务器有点问题也是正常的,来看看卡在初始界面怎么办吧. 绝地求生刺激战场进不去原因介绍: 1.手 ...

  4. 绝地求生刺激战场亚服务器要维护多久,绝地求生刺激战场国际服回归礼包要多久不登录才有-绝地求生刺激战场国际服回归礼包详细介绍攻略_手心游戏...

    <绝地求生刺激战场>为回归游戏的玩家准备了回归礼包,大家不来了解一下吗?同时邀请回归玩家也有奖励哟,下面我们来看看具体有什么奖励,回归奖励怎么获得?多少天算回归玩家吧 绝地求生刺激战场国际 ...

  5. 刺激战场电脑版android,逍遥安卓模拟器像端游操控玩《绝地求生刺激战场》电脑版...

    <绝地求生刺激战场>电脑版可以像绝地求生端游一样操控吗?可以在电脑上像绝地求生端游一样用鼠标键盘玩吗?逍遥安卓模拟器是目前小编测试过电脑上玩<绝地求生刺激战场>手游还原绝地求生 ...

  6. 绝地腾讯手游登入显示服务器满了,绝地求生刺激战场注册已满什么意思 注册已满解决方法详解[多图]...

    绝地求生刺激战场2月9日正式开启全平台测试,不过有许多玩家出现注册已满的情况,无法进行游戏,下面安族小编给大家介绍一下注册已满解决方法详解. 绝地求生刺激战场今日注册上限解决办法 有玩家在网上说自己早 ...

  7. pubg国服服务器维修怎么解决 ios,刺激战场ios更新不了解决方法_绝地求生刺激战场ios更新不了怎么办_4月25日刺激战场ios更新后进不去_9号资讯...

    第 2 页 刺激战场ios更新不了解决方法 解决方法一 点击苹果商店右下角的[更新],在[待更新项目]中直接点击更新,玩家不必进入游戏,直接到苹果商店里面进行更新即可.若依然无法更新,可尝试解决方法二 ...

  8. 刺激战场服务器位置,绝地求生刺激战场Y城位置分布详解_可可网

    绝地求生刺激战场的Y城是一个挑战难度较高的地点,这个Y城的位置分布较广,而且打法也比较多,小编整理了最新的资料和大家分享下吧! 刺激战场Y城最佳落点在哪? Y城地处海岛地图的东南区域,背面靠山,周遭被 ...

  9. 114实名认证未通过_绝地求生刺激战场实名信息未认证通过怎么办?实名认证链接及游戏影响介绍[多图]...

    目前腾讯系所有的游戏均采用了实名认证系统,就连<绝地求生刺激战场>也没办法逃过这种命运,如果你是未成年人可就惨了,即使你是成年人玩家去认证,也可能会出现认证不通过的情况,面对这样的情况该肿 ...

  10. 诛仙mysql怎么开战场_绝地求生刺激战场怎么诛仙 正确诛仙方式详解[多图]

    什么?刺激战场也有神仙了?没错,透视,锁头,无后座让你防不胜防.那么在面对这些神仙的时候,我们应该怎么做呢? 加速神仙就不说了,现在小编只针对其他的情况下的神仙来做出应对方式,让你在战斗中即使遇到神仙 ...

最新文章

  1. PICRUSt2分析实战:16S扩增子OTU或ASV预测宏基因组、新增KEGG层级
  2. smarty foreach函数
  3. SpringBoot中使用@Mapper注解需要哪个包
  4. android videoview播放进度,android – 获取视频播放视频的进度时间?
  5. linux c打印日志文件,linux c下log输出代码模板示例代码
  6. org.hibernate.InvalidMappingException: Could not parse mapping document from resource
  7. 信息抽取--新词提取
  8. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)
  9. Mac 开机没声音了?只需 2 招关闭/恢复
  10. Windows Mobile Web方式下载文件
  11. java视频通话_Java使用WebSocket和WebRTC视频通话
  12. 使用webots对并联结构进行仿真
  13. 排序算法伪代码以及python实现——插入,归并,快速,堆,计数
  14. Snaker-flow介绍
  15. 营收数据增长的京东物流,期待“外部探索”
  16. e1载波的数据速率是_Wi-Fi 6(802.11ax)解析25:DCM双载波调制技术
  17. 对标美国Lifelock公司,真我要做个人和企业身份信息保护的防火墙
  18. 给下拉框加上可输入查询特性-升级版本
  19. Fidder使用工具介绍-1
  20. 接班人不是克隆出来的:华为再显接班难

热门文章

  1. 前端:解决vue2.0只能运行在Local,不能运行在NetWork的问题
  2. Android真香系列,再也不用数据线就能真机调试啦
  3. android获取网页接口JSON数据
  4. 坚果X3怎么样好不好值得买吗,和当贝X3哪款好这篇告诉你
  5. win7虚拟机时间不能修改怎么办
  6. 高阶组件HOC - 小试牛刀
  7. 教你们如何快速建立一个完美的python项目
  8. python算24点穷举法_24点游戏7节课–第1节-游戏介绍与基本算法 | 学步园
  9. 鼠标点击网页空白处出现手机号
  10. Redis常用基本命令(1)