h5游戏开发_起源制作人启示录:开发H5游戏3D还是2D的选择

        随着近几年的H5游戏行业的爆发,我们移动设备性能的提升,其中不乏有一些品质非常优秀的3D重度游戏,也有创意很好的2D小游戏,当然了,目前大部分还是以3渲2的方式做的重度游戏居多,那么在开发一款H5游戏时,我们应该如何的去选择2D技术还是3D技术呢,选择之后其中对团队的要求是什么,又会遇到哪些风险,又有哪些收益呢?2D技术和3D技术分别应对的是那种情况,盲目的选择3D技术会不会得不偿失呢?这就是本章节要详细讲解的内容。

2D和3D的定义

        我们要搞清楚上面的问题,那么首先就必须要确定一下我们所讨论的2D技术和3D技术的一个边界,在不同领域2D和3D所代表的意思是不一样的,通常在玩家领域,他们说描绘2D游戏是以操作维度为主,比如只能控制人物的上下前后,不能控制人物的深度这种的叫2D游戏,比如说《三位一体》系列,《恶魔城》系列,《地下城与勇士》等,能控制深度的,比如《剑灵》,《上古卷轴》《辐射》系列,等等。在开发者角度,我们所讨论的2D通常是指以图片为主要载体的游戏,比如,《地下城与勇士》这种是完全属于2D技术,因为里面的场景人物,都是以图片序列的方式进行呈现的,而《三位一体》则是以模型文件为主要载体,所以是3D游戏,因为在开发者角度而言,2D和3D所使用的开发方式甚至引擎甚至团队的搭建都是截然不同的。

b291bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《三位一体》,操作以横板为主,控制人物的前进后退,跳跃上下,无法自由控制深度,在玩家的角度可以理解为2D游戏,但是游戏本体是以模型渲染为主,所以在开发角度来说,这是3D游戏。

b491bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《恶魔城》无论是操作方式还是画面渲染都是完全的2D技术,所以无论从开发角度还是玩家角度,都是2D游戏。

b691bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《地下城与勇士》无论是操作方式还是画面渲染都是完全的2D技术,所以无论从开发角度还是玩家角度,都是2D游戏。

b791bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《剑灵》可以自由控制角色的深度和朝向,并且游戏也是以模型为主要渲染,所以无论从操作还是画面上都是完全的3D技术游戏。

b891bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《上古卷轴5》可以自由控制角色的深度和朝向,并且游戏也是以模型为主要渲染,所以无论从操作还是画面上都是完全的3D技术游戏。

b991bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《辐射4》可以自由控制角色的深度和朝向,并且游戏也是以模型为主要渲染,所以无论从操作还是画面上都是完全的3D技术游戏。

        大概了解的2D和3D的定义之后,我们下面要讨论的就是以图片序列渲染的2D游戏和以模型文件渲染的3D游戏为定义,那么有的游戏既有3D也有2D应该如何区分呢?比如场景是2D图片,角色是3D模型,再比如近几年出现的新品类游戏,《饥荒》则是2D图片角色,但是场景具有深度,那这种游戏是属于2D范畴还是3D范畴呢?

bb91bffd-d921-eb11-8da9-e4434bdf6706.jpeg

        《饥荒》2D画面3D深度,在《暗黑破坏神2》中的设置里可以开启深度,也会具由透视效果,在当年这个技术用在现在也不过时。

        遇到这种情况,我们就主要以游戏内容比例为主,比如大部分动画都是以图片的方式进行渲染的,只是场景具由深度算法的,我们都可以理解为是2D游戏,比如饥荒。如果场景是图片渲染,大量的角色和动画都是以模型渲染的我们都可以理解为3D游戏,这只是看哪部分工作量最大,并不是说用2D图片模拟出3D透视就是3D游戏,因为这对于开发方式和开发成本上来说,都截然不同的存在。

选择3D游戏的画面和体积还有性能取舍

        这就要看我们是选择3D游戏里面哪些部分,一款3D游戏如果做得不好,画面效果和性能可能还不如2D游戏,2D游戏吃内存,因为会有大量的图片序列,3D游戏吃性能,顶点计算和光照效果都是实时渲染的,特别是在H5游戏中,对于游戏素材加载速度有着严格的要求情况下,我们的选择就必须更加谨慎。如果以单帧来说,2D图片渲染可以渲染出非常丰富的画面效果。

bd91bffd-d921-eb11-8da9-e4434bdf6706.jpeg

                                                图1

be91bffd-d921-eb11-8da9-e4434bdf6706.jpeg

                                                图2

        看图1和图2你可能分辨不出来哪和是3D游戏哪个是2D游戏,如果只是看单帧效果,图1明显要比图2要精致很多,但是如果画面运动起来,效果则就不同了。

bf91bffd-d921-eb11-8da9-e4434bdf6706.gif

                                              图1动画

c191bffd-d921-eb11-8da9-e4434bdf6706.gif

                                               图2动画

        可以看到图2的动画明显更加流畅,图1是几帧的循环,在2D游戏中,单帧输出的图片是属于线下绘制,也就是说,一张图的体积不考虑透明度和纯色的情况下,图片的尺寸才是最终衡量体积的标准。

c291bffd-d921-eb11-8da9-e4434bdf6706.png

                            《400*300纯白PNG体积1.11KB》

c391bffd-d921-eb11-8da9-e4434bdf6706.png

                        《400*300纯黑PNG体积1.11KB》

c491bffd-d921-eb11-8da9-e4434bdf6706.png

                            《400*300图像PNG体积241KB》

c591bffd-d921-eb11-8da9-e4434bdf6706.png

                        《400*300图像PNG体积257KB》

c691bffd-d921-eb11-8da9-e4434bdf6706.png

                            《200*150图像PNG体积73.9KB》

            从以上的图例可以看出,虽然颜色信息量会对图片的体积有影响,但是排除极端少的颜色信息量的情况下,两种截然不同风格的图片最终输出的体积是差不多的,除了个别简约风格的游戏以外,一般我们绘制的角色和场景都会使用大量的颜色信息。

        如果我们以一个像素为一个存储单位来看,400*300=120,000‬个存储单位,图片尺寸越大,存储单位也就越多。

        所以最终决定图片体积的的就是图片的尺寸,所以说,做2D游戏的优势在于,在设定的尺寸内可以相对无限制的使用颜色信息,则不会对最终游戏体积有太大的影响。但是劣势在于图片尺寸不能过大,并且如果想要更加精细的动画则必须要用大量的单帧图片去模拟,这样会对游戏整体体积产生很大的影响,所以通常2D游戏里面常做的操作就是删帧,单个动作要删帧,并且角色的转向也需要定制化,比如单方向左右翻转,4方向,8方向,16方向等等,方向越多,图片的体积就会越大,也是因为删帧的原因,会导致某些情况下,认为2D游戏画面不够流畅,有一种卡顿感。

        而3D游戏则是以顶点信息为核心,拉出的面根据UV信息填充出的画面效果,整个渲染过程是在游戏运行时计算的,而数据存储信息通常顶点的信息,比如坐标,UV,法线,或者其他的渲染用数据,如果以一个顶点为一个存储单位,那么3000~30000个顶点完全可以满足游戏开发的需求,如果是页游,则一般模型顶点数量都会控制在几千以内,可以看出,如果是单纯的顶点数据,则会比图片数量要小很多,但是代价则是,需要实时运算,会消耗大量的计算资源。

c791bffd-d921-eb11-8da9-e4434bdf6706.png

c991bffd-d921-eb11-8da9-e4434bdf6706.png

        以上图导出模型OBJ体积为425KB,模型文件导出到游戏中之后,无论是做任何动作,不同的方向,都不会对最终体积产生影响。

ca91bffd-d921-eb11-8da9-e4434bdf6706.jpeg

(2D序列图一个面的满帧动画体积大约是2.75兆)

cb91bffd-d921-eb11-8da9-e4434bdf6706.jpeg

(3D动画文件满帧全面动画体积大约为229K)

        从以上图可以看到,3D动画文件的素材体积比传统2D序列图的体积小了很多,加载是H5的核心体验,玩家玩游戏是一个整体的体验,如果只是单纯的追求画面好,但是加载时间过长,游戏卡顿严重,依然会导致玩家的大量流失,得不偿失,所以,3D技术在合理的运用范围下,所体现的优势是要远远大于2D游戏的,但是,运用不合理,会导致毁灭性的项目夭折,也是一把双刃剑。

        那为什么通常我们还是觉得3D游戏体积要比2D游戏大很多倍,2D游戏最大情况下也就几个G,而现在很多大型3D游戏则几十个G甚至一百个G都有。

        因为3D游戏是技术上限,而影响游戏体积的除顶点文件以外,还有骨骼动画文件,高清贴图文件等,画面效果越逼真,需要的贴图文件也就越多,漫反射贴图,高光贴图,法线贴图,凹凸贴图,等等,可能一个模型需要7~8张贴图进行叠加渲染,这素材量是远大于2D游戏的,并且3D游戏开发工序和开发的游戏通常来说都是大作,大作就是大量时间,大量金钱,大量人才,体积也是大的。

        所以从本质上来说,如果你不需要使用大量的贴图和大量的骨骼文件的话,并且能够有效的控制模型顶点面数的话,3D游戏的体积要比2D游戏的低很多,非常合适H5的游戏的环境,当然了,这个对团队的整体要求开发水平比较高,如果只是一味的照搬3D传统开发运用到H5上,可能不仅不会带来本质的变化,还会导致游戏体积过大而流失用户,哪怕你的游戏画面再好,用户等待时间过长,流失走掉了,他们也看不到你优质的画面,另外一点是,画面好的效果的代价就是运算压力的提升,贴图越多,游戏越卡,加载时间越长,画面效果越好。

        我们知道H5是属于"线上游戏",这个线上的意思并不是网络线上,而是所有的游戏素材都是实时加载的,让用户都等待一秒流失的风险就会大增,这也是H5和游戏和APP游戏最根本的一个区别。

        APP游戏无论体积多大,只有等用户下载好了之后才能进游戏,H5则是相反,点击即玩。这是一个神奇的特性,既是H5的优势,也是劣势,所以我们通常看到H5的游戏品质比较低劣,并不是H5的技术做不到,而是加载时间不允许,如果不考虑加载,用H5的技术做一个魔兽世界也是可以的。

        实际上H5采用的渲染标准和APP和端游是一样的,所以决定了H5品质的关键因素其实一直以来并不是技术渲染问题,而是线上加载问题,所以,既要加载速度快,也要画面效果,还要素材体积小,这对于一款H5游戏来说,就是非常考验产品实力的时候。

如何规避3DH5的坑

我只列出当下我们开发项目所避免的一些坑,不代表是所有人,也不一定合适所有的项目,所以视情况而定。

1.不要用纯3D场景,用传统2D图片切片代替。

        如果用3D场景来做的话,要满足最基本的视觉效果,一个场景下来,几万个顶点是跑不了了,而几万个顶点哪怕不考虑贴图文件的体积,光渲染压力都会吃掉整个游戏的80%以上,而H5游戏是属于嵌入式开发,本身的载体APP也要吃掉一部分性能,再加上其他的角色模型和光效粒子等等,渲染压力会巨大无比,而如果降低顶点数量则会极大的降低场景的细节,所以我们会看到一些H53D游戏的场景虽然时纯3D的,但是模型比较粗制,大块大块顶点拉伸的痕迹,这样的画面效果还不如做成2D场景来的好看,而且开发简单。

2.慎用法线贴图和多纹理贴图

        一方面加载体积会成倍的增长,另外也会导致渲染压力的增加,如果要用,最好前期就进行满效果的压力测试,同屏能跑多少人。

3.尽量不要使用渲染到纹理

卡。

4.尽量不要使用实时投影

        因为他的底层逻辑也是渲染到纹理,不仅卡,而且效果也不会比用一张模糊的阴影图片好多少。

5.尽量压力模型面数,小怪1000~3000面即可,复杂的最好不超过5000。

        当然了,这个也是根据项目类型来定,如果你的项目最多只显示一个角色,那这个角色一万个面,多纹理贴图都没问题,如果是需要进行多人同屏则需要谨慎了。

总结:

        最后列出了这五点,不使用3D场景,不用多纹理,不是使用阴影,还对面数有严格要求,那做出的3D游戏是不是就没有灵魂了。虽然舍弃了一部分3D的特性,还是你还可以在动画上进行填补啊,现在做任何动画受到的限制比2D小很多,而且还可以进行部位换装,根据模型搭配还可以组合出各种不同的模型效果,重点是角色还可以360度旋转,整个游戏的流畅度也会大幅提升,技能特效也会比2D效果好,而且不用担心图层排序问题,采用3D技术,并不一定要全部使用3D,2D和3D的两者结合,挑选最合适自己项目的技法,才是核心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值