游戏开发论坛

 找回密码
 立即注册
搜索
查看: 13437|回复: 0

程序给UI美术上的必修课:内存占用, DrawCall和包大小的处理

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-7-5 17:52:10 | 显示全部楼层 |阅读模式
QQ截图20160705175142.jpg

  GameRes游资网授权发布 文 / 战魂小筑  徐波

  一个手游的图形技术关键性指标是: 内存占用, DrawCall和包大小。

  这三个参数是训练有素的程序和UI美术都需要关注的重要问题。

  接下来我们来讲解下UI美术怎么对待这三个问题。

  内存占用

  手机的内存不会明显区分内存和显存, 大部分都是共享访问的. 这里说的内存, 一般可以通过一些工具直接看到, 比如说XCode等图形上对内存影响最大的就是纹理, 而纹理上最关键的问题就是纹理的大小, 也就是纹理面积。

  我曾经见过一些训练不是那么有素的UI美术, 用鼠标选中几个png文件, 点击属性告诉我: 诺, 你都看到了, 我这边的图片才占几kb, 为啥你总是说内存占用大纹理的内存占用, 只决定于纹理的面积以及发色数, 纹理面积就是长乘宽(像素), 发色数就是一般常说的: 16位色, 32位色。

  之所以把内存占用放在首位, 是因为, 大多数的手机一旦超过限定内存就会开始清理后台挂起的程序, 实在清理不了只有杀掉最占内存的程序,这就肯定杀到了你写的游戏之上。

  DrawCall(DC)

  美术来理解这个概念可以这么说:  绘制一张图片需要耗费1次DC, 假设界面上有10个图标, 那就需要耗费10个DC。

  而一般手游的DC需要限定在150个之内, 如何降低DC呢, 就需要通过Atlas技术来合并图片。

  将多张图片打到一张纹理上的技术被叫做Atlas, 俗称大图或者图集, 被打之前的图也就叫小图。大图上的每个图元素叫做精灵。每个精灵被绘制无数次最终也只会耗费1个DC。

  但我们不能把所有游戏用到的图片都打成图集, 这并不划算,我们会根据图的使用频率, 用途来按需打图集。

  比如说:

  1. 进游戏只看一次的宣传图, 为了方便制作和加载迅速, 做一张整图动态加载会比较好。

  2. 反复查看的图标, 因为数量相对固定,数量不会膨胀, 我们就做成图集。

  3. 但是类似于刀塔传奇中50+英雄, 普通玩家看不到那么多英雄但又被打成图集是不划算的, 所以损失一点DC按小图绘制及加载是正确方法。

  4. 一般时候, 我们将尺寸小的图片打成图集, 配合大尺寸图片同时加载。

  包大小

  包大小对于游戏来说, 会影响的是玩家首次下载的时间, 如果连游戏都不下载, 做的再漂亮的游戏也是没用的。

  降低包大小的方法很多, 例如:

  1. 分包机制. 先玩小包, 根据需要下载大包, 多见于MMORPG

  2. 良好的资源管理方法及习惯

  3. 剔除冗余资源

  4. 尽量使用3D渲染代替2D纹理图片

  以上3个概念是游戏美术, 程序必须了解的重要概念。但一个合格的美术, 除了事后优化, 还需要做的是事前优化。

  事前优化包括: 在游戏立项后, UI美术需要了解基本的游戏功能设计方案,出一套基本的对话框, 提示框, 图标装饰等的图素, 这些资源往往只有不到512见方的资源。利用这些图片可以拼凑出70%的界面及美化效果。在这之后的UI内容, 只是特效,动画的设计。

  一些道理:

  1. 进游戏因为内存超标就崩溃, 再漂亮的图片也是没用的。

  2. 游戏是多门艺术的综合, 游戏美术的不仅要画的好, 还要能做出优化的好的资源。

  3. 手游和端游的美术资源标准有本质区别, 资源做出来是给人看的, 不是屏幕. 因此高低分辨率的搭配, 尤为重要。

  4. 还是那句话, 多看看别人做的游戏, 多问问别人怎么做的。

  相关阅读手游UI的进化:从辐射状结构到环形结构

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-25 13:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表