一个手游的图形技术关键性指标是: 内存占用, DrawCall和包大小.
这三个参数是训练有素的程序和UI美术都需要关注的重要问题
接下来我们来讲解下UI美术怎么对待这三个问题
内存占用
手机的内存不会明显区分内存和显存, 大部分都是共享访问的. 这里说的内存, 一般可以通过一些工具直接看到
, 比如说XCode等
图形上对内存影响最大的就是纹理, 而纹理上最关键的问题就是纹理的大小, 也就是纹理面积
我曾经见过一些训练不是那么有素的UI美术, 用鼠标选中几个png文件, 点击属性告诉我: 诺, 你都看到了, 我这边的图片
才占几kb, 为啥你总是说内存占用大
纹理的内存占用, 只决定于纹理的面积以及发色数, 纹理面积就是长乘宽(像素), 发色数就是一般常说的: 16位色, 32位色
之所以把内存占用放在首位, 是因为, 大多数的手机一旦超过限定内存就会开始清理后台挂起的程序, 实在清理不了只有杀掉最占内存的程序
这就肯定杀到了你写的游戏之上
转载请注明http://www.cppblog.com/sunicdavy,战魂小筑, 否则木有小JJ
DrawCall(DC)
美术来理解这个概念可以这么说: 绘制一张图片需要耗费1次DC, 假设界面上有10个图标, 那就需要耗费10个DC
而一般手游的DC需要限定在150个之内, 如何降低DC呢, 就需要通过Atlas技术来合并图片
将多张图片打到一张纹理上的技术被叫做Atlas, 俗称大图或者图集, 被打之前的图也就叫小图
大图上的每个图元素叫做精灵
每个精灵被绘制无数次最终也只会耗费1个DC
但我们不能把所有游戏用到的图片都打成图集, 这并不划算
我们会根据图的使用频率, 用途来按需打图集
比如说:
1. 进游戏只看一次的宣传图, 为了方便制作和加载迅速, 做一张整图动态加载会比较好
2. 反复查看的图标, 因为数量相对固定,数量不会膨胀, 我们就做成图集
3. 但是类似于刀塔传奇中50+英雄, 普通玩家看不到那么多英雄但又被打成图集是不划算的, 所以损失一点DC按小图绘制及加载是正确方法
4. 一般时候, 我们将尺寸小的图片打成图集, 配合大尺寸图片同时加载
转载请注明http://www.cppblog.com/sunicdavy,战魂小筑, 否则木有小JJ
包大小
包大小对于游戏来说, 会影响的是玩家首次下载的时间, 如果连游戏都不下载, 做的再漂亮的游戏也是没用的
降低包大小的方法很多, 例如:
1. 分包机制. 先玩小包, 根据需要下载大包, 多见于MMORPG
2. 良好的资源管理方法及习惯
3. 剔除冗余资源
4. 尽量使用3D渲染代替2D纹理图片
以上3个概念是游戏美术, 程序必须了解的重要概念
但一个合格的美术, 除了事后优化, 还需要做的是事前优化
事前优化包括: 在游戏立项后, UI美术需要了解基本的游戏功能设计方案
出一套基本的对话框, 提示框, 图标装饰等的图素, 这些资源往往只有不到512见方的资源
利用这些图片可以拼凑出70%的界面及美化效果
在这之后的UI内容, 只是特效,动画的设计.
转载请注明http://www.cppblog.com/sunicdavy,战魂小筑, 否则木有小JJ
一些道理:
1. 进游戏因为内存超标就崩溃, 再漂亮的图片也是没用的.
2. 游戏是多门艺术的综合, 游戏美术的不仅要画的好, 还要能做出优化的好的资源
3. 手游和端游的美术资源标准有本质区别, 资源做出来是给人看的, 不是屏幕. 因此高低分辨率的搭配, 尤为重要.
4. 还是那句话, 多看看别人做的游戏, 多问问别人怎么做的