查看原文
其他

3D研发经验分享:50多款3D小游戏的炫稷游戏创始人程银斌分享3D研发经验!

点我关注公众号☞ Layabox 2023-08-11
上海炫稷网络科技有限公司的创始人程银斌,曾在恺英网络从事Flash和Unity3D客户端开发工作,是一个拥有着技术背景的游戏研发老板。其公司当前有5个研发团队,1个发行团队,平均每个月上线5款3D产品,在最近一年多的时间里,公司用LayaAir引擎自研生产了超过50款3D小游戏,其中不乏千万级别用户的产品和百万DAU级别的产品。本次我们以线上访谈的形式,邀请到程总为LayaAir引擎的开发者分享一些3D研发经验。


Layabox:欢迎程总为开发者分享研发经验,在此之前,请您先介绍一下团队的情况和代表作品。

程银斌:我们炫稷游戏主要从事3D休闲、中度产品的研发和发行,目前分成5个研发团队,1个发行团队,平均每个月上线5款3D产品,团队成员主要是由80后和90后组成,核心成员皆历经过页游、手游的产业发展。


我们团队一年前开始投入到3D产品的研发中,已有50多款3D小游戏产品,全都是采用LayaAir引擎研发。代表作品有《极速冲冲冲》、《农场大战》、《画个变形腿》、《街头摩托》、《特工神秘计划》、《这就是跑酷》、《枪王之路》、大刀冲冲冲》、《快来涂口红》、《绳索大师》、《热血球球大冒险》等,这里有不少是千万级别用户,百万DAU的热门产品。


《极速冲冲冲》小程序码


《农场大战》小程序码


《画个变形腿》小程序码


《街头摩托》小程序码


《特工神秘计划》小程序码


《这就是跑酷》小程序码


《枪王之路》小程序码


《大刀冲冲冲》小程序码


快来涂口红》小程序码


《绳索大师》小程序码


《热血球球大冒险》小程序码


Layabox:这些优质作品背后有哪些产品上的研发经验为大家分享一下的吗?

程银斌做一款好的产品最主要是选品,去了解各个渠道的策略,适合什么样的游戏类型。然后是尽量多的去玩国内外的优秀休闲小游戏,我们会观察数据不错的游戏玩法和适合渠道推广的类型进行立项借鉴。


在小游戏平台上,刚开始其实带来了很多的下层(刚接触游戏的)用户,这些用户上手是小白,在玩游戏的过程中他也会不断的成长,研发不仅要调整节奏和玩法去兼容这些用户,还需要对产品质量不断的提高,去吸引用户留下来玩游戏,关键是你要对照你的目标用户去重新设计游戏玩法和节奏,这对美术,效果表现,研发创意上更加苛刻。


然后在上线后,前期的素材吸量测试这个也比较关键,产品上尽可能的去多做埋点,通过数据分析,比如关卡的流失率统计这些,不断的导量,不断的去调整关卡的体验,像《极速冲冲冲》,刚开始设计的关卡我们觉得很好玩,但是实际到用户那里,终止和成功率都很低,导致次留特别低,后来针对数据,把关卡节奏和整体难度都调整了,前后调整了3次,次留从开始的10几到30多。


除了关卡调整,其他还有美术方面的调整,比如一些美术特效的效果,也是加分项,特别是通关以后成就感展示特别重要。


在技术上,也要保证性能流畅 ,还有加载速度要尽可能快。



Layabox:有没有具体一些的技术研发经验为大家分享一下的?

程银斌:我们最近上线的一款3D热门游戏,出现在vivo的热门榜单上,叫《口红女王》(微信小游戏上叫《快来涂口红》),那就以这款游戏为例,为大家分享一点技术经验。


站在技术的角度来说,这款游戏主要的亮点就是模型材质的涂色和针对不同遮罩进行图片叠加。


首先来说涂色模块,涂色分成底图、上色的图和一张遮罩图,遮罩图是通过代码生成的,这张图的精度会影响到涂色的精度。遮罩图先设成全白色,之后的操作就是将要涂色的部分设成黑色,再在自定义shader里通过判断,白色部分显示底图,黑色部分显示上色图。


那么如何获取要涂色的部分呢,假设是将鼠标移动过的地方设置要涂色,通过坐标转换,先将屏幕坐标转换成世界坐标,再将世界坐标转换成模型坐标,通过这个坐标再获取到模型对应的顶点。获取到了顶点就简单了,顶点和uv坐标是对应的,这样就可以获取到对应的uv坐标,通过uv坐标(0到1范围)计算出在遮罩图中的相对位置点,以这个点为中心画出一个圆,范围内的点就可以进行染黑了,在片元着色器中判断下就可以实现要达到的效果了。


再来说图片叠加,这个比较简单,将对应的遮罩图和上色图传入自定义shader中,按照顺序遮罩图黑色地方显示上色图,白色地方显示底图,就能达到要求了。


去口红这一步里其实也用的是涂色的方法,只是遮罩图的精度很低,达到了干燥破碎口红的效果。



Layabox:感谢程总精彩的研发干货分享,一些开发者非常渴望得到坑点经验的指导,关于你们趟过的坑,或者优化方面的技术分享,能否再介绍一些?

程银斌正确的姿势,坑也是能趟过去的,比如物理模块,由于JS不能在iOS微信小游戏下使用JIT编译优化,导致使用物理效果的游戏性能相对于安卓会很慢,这的确是令人头疼的事,所以我们很多游戏能避免的尽量避免使用庞大的物理引擎,减少因物理引擎计算而产生的性能压力。对于一些简单的物理效果,目前我们使用了oimo.js这样的一个轻量物理库,对于实现一些简单的物理效果,这个3D物理库足够了。


关于一些其他的,我们在CPU优化方面,会减少drawcall 使用静态合并和动态合并(实例合并与定点合并);为了减少gc,避免频繁的创建对象,我们会合理的使用对象池。


在GPU优化方面,通过降低几何体的复杂度,降低像素的复杂度,来优化模型。通过纹理压缩,使用ETC1格式(Android)和PVR格式(iOS),来优化纹理资源。还会根据不同档型的设备进行资源降级。还有好多有趣的坑,需要程序慢慢去体会才能感受到哦………….



Layabox:以上这些已经干货满满,相信会给开发者带来不少收获,您还有没有其它一些想对开发者说的

程银斌通过此次分享,我希望能让各位朋友受益;也希望热爱游戏的开发者能加入到我们的队伍来,让我们一起,跟随着轻度化的小游戏市场,共同打造更多优质的产品,来满足用户更深层次的需求。


合作方式不限,欢迎大家一起交流,期待您来撩!

联系电话及微信:13916638125



小编写在最后:

 再次感谢程总带来的精彩分享,也欢迎更多的LayaAir引擎开发者和研发朋友们,参与引擎社区的互动与分享,共同搭建一个良好的互相学习的沟通氛围。我们引擎官方未来不仅会继续大力发展3D引擎,也会加强文档的丰富、社区的活跃,以及引擎技术经验的传播。最后感谢每一位愿意帮助他人的引擎贡献者,对于贡献者Layabox引擎方也会给予大家更多免费的技术服务支撑。

其他相关文章:


END



推荐阅读:


引擎版本更新说明:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存