说到枪战类游戏,大家脑海中一定浮现出来的是火了两年的《绝地求生》以及相关系列的衍生作品。在小游戏领域,也有许多类似“大逃杀”玩法的枪战小游戏,但是受限于技术,市面上没有完全3D类型的射击类游戏或“大逃杀”类的游戏。
随着技术的不断发展,《全民狙神》横空出世。作为首款全3D的FPS小游戏,《全民狙神》使用Egret 3D最新版本开发,全部真3D的场景呈现,炫丽的“子弹时间”特效,都让玩家们眼前一亮3d游戏引擎设计,原来小游戏真的可以做到完全真3D的效果。我们本次特别邀请到了《全民狙神》的制作人张曦勃,听他来和我们分享下《全民狙神》背后策划、研发的故事。
(以下为内容实录,Q为白鹭科技,A为张曦勃。)
1、Q:什么原因让您尝试在小游戏领域做一款FPS的3D小游戏,微信小游戏和一般的手游在玩法中有什么相同点和差异点?
A:《全民狙神》的开发可以说是天时地利人和吧。天时是指,在目前小游戏的市场上,既缺乏3D类的精品,又缺乏射击类的精品,地利是我们内有3D游戏制作的基因,外有白鹭3D引擎团队的鼎力支持。人和是我们整个公司从老板到开发团队万众一心,勇于开拓3D小游戏精品的产品线。
之于微信小游戏和手游的相同点是都要做精品,这点不用多说;差异点就是小游戏需要将核心玩法更快的推送给玩家。小游戏跟PC上的页游一样可以即点即玩,玩家进入门槛低,如果不尽快给玩家推送更多的惊喜,吸引住玩家,玩家会很快转投其他游戏。在玩法设计上,需要注意将分享功能合理的和各玩法相结合游戏图片,因为在去中心化的小游戏生态里, 玩家间分享带来的裂变传播,是导量的主要途径。
2、Q:综合来看,在微信小游戏中《全民狙神》的亮点玩法是什么?
A:既然叫《全民狙神》,那亮点玩法肯定是让玩家用最真实的狙击枪,通过最真实的狙击体验,感受到击败目标的胜利喜悦,并在这个过程中不断掌握狙击的高级技巧。
3、Q:那么针对这个亮点玩法,咱们是怎么实现的呢?能否从策划、开发等角度上来谈一谈?
A:怎么才能还原一把真实的狙击枪呢?就拿大家最常见的awp来说吧,外观上,我们采样了市面上能见到的大部分真枪原型,按照99%的标准进行建模还原,从各部位比例到涂装的调色一丝不苟。在建模完成后,为了增加真实感,我们还进行了法线和高光材质的处理
外观上达标之后,我们会继而追求枪械射击的真实体验,力求让没法体验真枪的玩家,在我们这里找到归宿。我们团队有成员专们负责搜集分析枪支的各项系数,整理化简后得出了最能代表枪械性能的六大属性,并根据真枪的参数对这些属性进行赋值。游戏中,玩家在熟悉不同枪械的性能后,还要在射击时将子弹的重力下坠和风力偏移等因素都考虑在内,才能做到精准命中目标。
在每一关的任务中3d游戏引擎设计,玩家首先需要从众多的NPC中辨别哪个才是真正的目标,然后再根据关卡需要对目标不同的部位进行射击,因为有的目标全身覆甲,只有胳膊腿暴露在外,有的目标不需要毙命,只需要打残即可,还有的需要玩家要把空中悬挂的重物打掉,借此砸死目标,制造意外假象。为了迎合这个设计,我们还特意制作了不同部位的受击动画,力求还原真实。
除了以上说的,我们还在关卡设计中加入策略元素,比如有一关,我们参考了经典电影兵临城下的桥段,4个目标站在一起,玩家必须凭借雷声才能掩盖枪声,将目标逐一狙杀。
4、Q:要实现以上内容的游戏开发,在引擎选择上,需要满足什么样的条件?
A:首先,我们需要选择一个能和 Unity 结合比较完善的引擎,因为我们的美术资源都是使用 Unity 来编辑的,比如场景、预置体、关卡逻辑配置等3D角色,这要求选择的引擎能完美的从 Unity 导出这些资源。其次,我们需要一款是易于上手的游戏引擎,我们不能在熟悉引擎上花费太多的精力,最好是能拿来就用。最后,我们需要游戏引擎能高度可定制,高度可扩展,能快速迭代满足游戏需求,即使引擎不具备某些游戏功能,也能很快的开发出插件或扩展来弥补这方面的欠缺。
因为我们的游戏开发人员有着非常丰富的 Unity 开发经验,而Egret 3D的开发体验很接近Unity,所以我们很容易的就能在Egret 3D实现我们想要的游戏效果和视觉体验,并且和Unity中表现一致,所以《全民狙神》在3D的代入感方面以及地图的远近切换方面都表现的十分出色,“子弹时间”就是最好的例子。
5、Q:市场上现存的引擎技术有什么弊端?在您看来白鹭3D的解决方案优势是什么?最打动您、决定采用白鹭引擎开发这款游戏的点是什么?
A:我们之所以选择 Egret 3D引擎,就是因为这个引擎是目前最符合我们的需求的,他有完善的Unity插件,并且API跟Unity比较接近,但是引擎的内部架构却是标准的 ECS 系统,这使得引擎的扩展性非常棒,任何功能,都可以在不破坏引擎架构的情况下,顺利的加入到引擎,而且引擎内部数据采用了 glTF 数据结构,并将该结构做为运行时逻辑,使得数据结构和渲染逻辑得到了高度的统一,引擎在渲染上的架构就会变得清晰合理。同时还很好的兼容了Egret 2D的开发方式,可以说对引擎的学习和使用上没有花费太大的成本,并且白鹭对我们的技术支持也非常到位,使得我们能更迅速的迭代游戏功能。
6、Q:小游戏开发体包有限制,您这如何利用于4M+4M的体包规则的?在体包受限的情况下做3D游戏开发,会遇到哪些难点,如何解决的?
A:目前我们的游戏包含很多的场景和关卡,还有非常多的枪支模型,未来还会增加更多的内容,还有PVP 玩法,所以微信小游戏的体包肯定是不够用的。3D游戏的纹理、模型、动画、配置文件都比2D游戏要多很多,目前我们的策略是,游戏资源最大限度的复用,首次游戏加载尽量少的资源,尽可能的合并纹理、打包整体关卡资源,来减少资源请求数,同时合理的缓存不必要频繁更新的游戏资源,做好资源分类、管理和版本控制,同时资源的加载还不能影响游戏中的内存占用,我们尽可能的在首次游戏时加载最少的游戏资源,并且做了很多延时加载,来避免出现加载等待的情况。这样做最后也使《全民狙神》的加载速度非常快,和其他2D类的产品加载速度基本没有区别。
7、Q:除了体包问题之外,游戏过程中还遇到哪些技术问题?是如何解决这些问题的?可以和大家分享一下么?
A:这是我们是第一次在微信小游戏上做 3D 游戏,很多问题都是边做边摸索,比如我们需要实现很多特效,用来提升游戏品质,一方面必须保证微信小游戏能完美的支持该特效,另一方面特效又不能影响或拖累游戏的性能,这方面确实花费了我们很多的时间进行兼容性测试和性能测试,在这里就非常感谢白鹭引擎的技术支持团队,帮我们验证各种 webgl 扩展在微信小游戏的兼容情况等,帮助我们最终完成开发,再次感谢!
十分感谢张曦勃分享关于《全民狙神》的开发经验以及开发心得,《全民狙神》现已正式上线微信小游戏,各位开发者可以扫描下方小程序码体验《全民狙神》,真3D枪战世界,等你来体验。