06 拆解资源

起点:资源是什么

游戏里除了「代码」,还有一堆「数据」:

1
2
3
图片(PNG/JPG/BMP)   音频(音乐/音效)   地图
动画帧 字体 关卡配置
UI 素材 角色/怪物数据 存档

这些统称为资源(Asset)。拆解资源,就是回答:

这个游戏里到底有哪些资源?每种资源有多少?怎么被加载和使用?


一、为什么资源要单独拆

游戏的实现演化里有一个关键节点:

1
2
3
4
5
画矩形

读取PNG / 读取JPG / 读取BMP

Sprite(精灵)

以前画矩形是代码写死的;后来图像从文件读进来,出现了一个新概念:

1
资源 = 数据文件 + 加载方式 + 使用方式

代码管「怎么算」,资源管「长什么样」。两者变化的原因不同:

1
2
代码变化:功能、逻辑、规则
资源变化:美术、音频、关卡内容

美术替换一张图,不需要改代码——这就是资源独立存在的意义。


二、资源的种类

按用途分:

1
2
3
4
视觉资源    图片 / 动画 / UI 素材 / 特效
听觉资源 音乐 / 音效 / 语音
内容资源 地图 / 关卡 / 对话 / 配置
数据资源 数值表 / 掉落表 / 属性表

按加载时机分:

1
2
3
常驻资源    启动就加载(主菜单、核心 UI)
按需资源 用到才加载(某个关卡的背景)
流式资源 边玩边加载(开放世界的地图块)

三、拆解资源的动作

拆解一份资源,四个问题:

1
2
3
4
1. 它是什么?          类型、格式(PNG / WAV / JSON)
2. 它有多大? 数量、体积(多少张图、多少 MB)
3. 它什么时候被用? 哪个场景、哪个系统引用它
4. 它怎么被加载? 一次性 / 按需 / 流式

可以做成资源清单:

资源 类型 数量 用途 加载方式
玩家立绘 图片 12 角色界面 常驻
背景音乐 音频 8 关卡循环 按需
赛道数据 配置 5 关卡加载 流式

四、资源与系统的关系

资源不是孤立的,它被系统的组件引用:

1
2
3
4
渲染系统  ← 引用 →  图片 / 动画
音频系统 ← 引用 → 音乐 / 音效
关卡系统 ← 引用 → 地图 / 关卡配置
UI 系统 ← 引用 → UI 素材 / 字体

所以拆资源要和拆系统配合:

1
2
系统拆解 → 每个系统需要什么资源
资源拆解 → 每种资源被哪个系统使用

两张清单对得上,资源才不漏不重。


五、资源规划是项目管理

设计流程的第十一阶段是资源规划:

1
2
3
4
5
需要多少人物?
多少动画?
多少音效?
多少地图?
多少 UI?

到了这一步,已经不是技术问题,而是:

1
2
3
4
工作量估算
美术排期
外包清单
内存预算

所以拆解资源的最终产物是一份资源清单 + 工作量和加载预算——它是设计与实现之间的桥梁。


六、与其他线的关系

1
2
3
4
拆解系统    告诉你要拆哪些资源(哪个系统用什么)
拆解美术 告诉资源长什么样(风格、规格)
拆解程序 告诉你资源怎么被读进内存(格式、加载)
从指令到系统 资源加载是「文件→内存」这一环节的领域化

资源线是拆解游戏里最「数据化」的一条线:它把游戏从「程序+内容」的混合体,拆成「程序负责处理、资源负责内容」两个部分。


小结

1
2
3
4
5
6
7
8
9
资源 = 数据文件 + 加载方式 + 使用方式

拆解资源的四个动作:是什么 / 有多大 / 何时用 / 怎么加载

资源和系统是两张对得上的清单:
系统需要什么资源(系统视角)
资源被谁使用(资源视角)

资源规划 = 项目管理的入口(工作量、排期、内存预算)