程序给UI美术上的必修课

程序给UI美术上的必修课

一个手游的图形技术关键性指标是: 内存占用, 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. 还是那句话, 多看看别人做的游戏, 多问问别人怎么做的

你可能感兴趣的:(程序给UI美术上的必修课)