《游戏美术与技术美术》卷一《美术制作与视觉规范》目录

《游戏美术与技术美术》卷一《美术制作与视觉规范》目录:16 章 48 节,从美术生产分工与技术美术的位置、视觉目标的可测化、色彩规范与 token 系统,到资产命名与清单、面数与骨骼预算、显存与纹理账、UI 九宫格、图标图集、角色场景、特效动画,最后收口到外包规格、评审走查、版本治理与 Art Bible 装配。按章节提供仿真、逻辑内核与原型;完整项目的配置组装与交付验收仍在补齐。

这是《游戏美术与技术美术》三卷本的第一卷。它回答的问题是:美术做出来的东西,凭什么说它「对」。既不是「怎么把画面做漂亮」(那是画师的手艺,本卷不教,也教不了),也不是「渲染器怎么写」(站内 graphics/ 专题与《游戏引擎实现原理》已经把原理讲透)。它讲的是中间那一段:把「治愈」「硬核」这类形容词变成可测参数,把色卡变成可引用的 token,把「这个模型面数有点高」变成可判定的预算账,把「这批外包不行」变成可归因的验收表。

卷一的 16 章分成四块:分工、目标与规范底座(第 1–4 章),资产规范与预算(第 5–8 章),分项美术规范(第 9–12 章),外包、评审、协作与装配(第 13–16 章)。贯穿全书的仍是虚构的等距经营游戏 《星屑旅店》(stardust-inn:等距经营 × 装扮的治愈系休闲游戏)与工具链 prism(config/ + sim/ Python + core/ TypeScript + web/ 单文件 HTML)。

这套书与站内既有内容的分工

站内已经有大量相邻内容,写清楚分工比重复写一遍更有价值。下面七处边界是本卷最容易混淆的,务必分清:

  • 游戏美术风格规范:Style Bible 怎么写才真的有用 是本卷最直接的撞车源。它是口号式提纲:风格该包含哪些维度、怎么写才不至于空泛。本卷做的是把那些维度变成可算的量:第 2 章把形容词翻成风格向量,第 3、4 章把色彩翻成 token 与对比度,第 16 章把这些收成一本能被门禁校验的 Art Bible。本卷多处首段外链它并写明分工,不重写它的清单。
  • 移动端与 PC 性能预算管理 与 性能优化生产指南 讲的是工程侧怎么把帧率做稳。本卷只做美术侧的账:面数、骨骼、材质槽、贴图字节、整包分类预算——这些数字是工程预算的输入,不是替代。
  • graphics/ 渲染原理专题(45 篇)是原理的家:色彩管理与 HDR 管线、纹理内存与压缩、glTF 资产管线、着色器编译、骨骼动画数学、后处理、GPU 粒子、移动端渲染优化、GPU Driven 与 LOD。本卷一律不重推原理,只外链,并在 1.3 节把它编码成一张可断言的 ART_SCOPE 分工路由表。
  • 《游戏引擎实现原理》卷二《渲染引擎》 是引擎实现的家(56 篇)。它的 1.3 节已经把「算法不重推」写成可断言的路由表,本卷照此写美术侧的对应表;引擎如何把资产喂给导入器、如何调度打包,属于实现,外链。
  • 独立游戏像素美术与视觉风格设计实战 是站内唯一现成的「同题」长文(约 740 行),讲的是Aseprite 技法、素材资源与外包需求书模板。本卷不在卷一处理像素(那是卷三第 2 章),且只做可跑的量:调色板上限、像素 tile 预算、量化误差。
  • 可视化可访问性与配色 与 可视化视觉编码与感知 讲的是图表口径的色彩无障碍与感知。本卷第 3、4 章取的是游戏美术调色板视角,只在 WCAG 对比度与色盲模拟这两处与它们同源,且明确写出「同一套公式、不同的约束」。
  • 《游戏引擎实现原理》1.3 与 graphics 专题的分工表 是渲染侧那张表的原件。本卷 1.3 节的 ART_SCOPE 是它在美术侧的镜像:谁定规范、谁消费规范、谁不该被本卷重复。

一句话:本卷做的是「美术侧的规范与账」,不是「怎么画」,也不是「渲染器怎么写」。

明确不在本卷范围内

为了让边界清楚,下面这些这一卷不讲:

  • 绘画、建模、雕刻、贴图绘制的手艺本身(笔触、造型能力、审美判断)。
  • 渲染原理与着色器(色彩管理、光照、后处理、粒子)——站内 graphics 专题 与《渲染引擎》卷 已覆盖。
  • 引擎侧的资产管线实现(导入器、打包器、RHI、剔除)——那是卷二《技术美术与管线工程》 要做的事。
  • 具体引擎的 API 教程(Cocos / Defold / Unity 各有专书)。
  • 真实 DCC 操作(Blender / Maya / 3ds Max / Substance / ZBrush):本机一个都没有,也不打算安装,一律标 X 并逐处注明「需真实环境,命令行不可复现」。
  • 真实外包报价、真实供应商交付质量、真画师审美评审结论(X,需真实业务环境)。
  • 法律、税务与商务条款意见(第 13 章只给可核对的规格表与验收项,不代替商务谈判)。

可运行性口径

本卷每节的代码块头部注释里都写着它属于哪一档。所有代码块都在本机实跑过,正文数字等于实跑输出;但「整卷项目复现」(把全部配置与共享模块组装起来一次性跑通)尚未完成,故本页不声称整卷可复现。

层含义怎么验证
S 仿真层Python 数值仿真:对比度与 OKLab 距离、sRGB 往返误差、色盲模拟、面数/骨骼/材质槽/贴图字节/显存账、mip 链字节、装箱率、等距整数变换、人天与返工率/opt/homebrew/bin/python3 sim/sp<章号>_*.py,产出 JSON + CSV + SVG + PNG(PIL)
P 内核层TypeScript 配置驱动校验器:命名 lint、目录分类、保留字、token 引用完整性、依赖图环检测、预算断言、跨语言摘要对照node --test 'core/test/sp<章号>_*.test.ts'(必须写全 glob;node --test <目录> 不发现 .ts)
W 网页层单文件 HTML 原型:调色板看板与对比度、色盲模拟画布、九宫格拉伸验证node web/build_sp09_nineslice.mjs 产出 HTML,再用 NODE_PATH=/opt/homebrew/lib/node_modules node web/verify_sp09_nineslice.mjs 无头断言
D 静态层命名规则、资产清单 schema、预算表、验收清单、评审走查表、Art Bible 模板、交付物清单仅 schema / lint 校验,且必须能被 sim/ 与 core/ 同时读入
X 不可复现真 DCC 打开导出、真 3D 渲染、真外包交付验收、真画师审美正文每处显式标注「需真实环境,命令行不可复现」
B 基准跨语言色彩容差、调色板对比度敏感度、预算随主题漂移产出 JSON,软告警不硬失败,数字来自本机实跑

本卷的核心主张是**「一份视觉规范,三处消费、一处生成」:同一份 config/visual_spec.json(色彩 token + 命名规则 + 资产预算 + 风格参数 + 主题包)被 ① S 层 Python 仿真、② P 层 TS 校验器、③ W 层浏览器看板三处消费;并由 ④ PIL 依同一份规范真生成资产**(色卡 / 图集 / 九宫格 / 像素 tile / 等距网格 / 色盲对照图)。规范既是生成器,又是闸门——这是本卷相对站内既有书稿的净增量:既有书稿的 config 只产出数字,本卷的 spec 产出文件。

三条跨语言纪律(与既有书稿的「整数逐位一致」并列):

  1. 预算与阈值一律整数:字节、面数、骨骼数、材质槽、像素数、人天×100、对比度×10、ΔE×10、细节密度千分比。除法整数地板除,禁浮点 → 逐位一致。
  2. 色彩真源 = sRGB 8-bit 整数三元组([r,g,b] 0–255,hex 只是显示形态)。感知量(linear / OKLab / ΔE / WCAG / 色盲 RGB)是派生量,跨语言按声明容差断言。正文一律不写「三处颜色完全相同」,只写「容差内一致,实测最大偏差 N」。
  3. 转换常数两语言同源:sRGB 阈值 0.04045 / 12.92、指数 2.4 / 1.055 / 0.055;OKLab 用 Ottosson 同一组矩阵常数;色盲用同一组 Brettel / Viénot 矩阵。禁一侧用库、一侧手写(本机也没有 colour 库,天然只能同源手写)。

同样适用两条纪律:不编造真实美术生产数字——所有真实 DCC、真实外包、真实评审结论一律标 X,正文只写「公开可观察机制」;仿真数字只作同机相对量级,S 层应记录环境与输入后复现,禁止写成「提升 N 倍」这类断言。

卷一结构总览(16 章)

章主题可运行性层级
1美术生产分工与技术美术的位置D + S + P
2视觉目标与风格定位S + P + D
3色彩规范与调色板 token 系统S + P + D + B
4色彩空间与感知一致性S + P + D
5资产命名与目录规范S + P + D
6资产元数据与清单 schemaS + P + D
7美术资产预算(面数 / 骨骼 / 材质槽)S + P + D
8显存与纹理预算S + P + D
9UI 视觉规范与九宫格S + P + D + W
10图标与图集规范S + P + D
11角色与场景规范S + P
12特效与动画规范S + P + D
13外包资产规格与验收清单S + P + D + X
14美术评审与走查流程S + P + D + X
15美术版本管理与协作工具S + P + D + X
16装配:一份可校验的视觉规范S + P + D + X

全书目录

前置

篇目核心内容
目录本页:定位、七处分工、可运行性口径与全书结构
附录 A:视觉规范公式、参数与数据集索引prism/ 全部文件索引、sp<章号>_ 命名约定与六层复现命令

第一部分:分工、目标与规范底座(第 1–4 章)

第 1 章 美术生产分工与技术美术的位置——先把「谁做什么」和「什么不归本卷」画清楚

第 2 章 视觉目标与风格定位——把「治愈」「硬核」变成可测参数

第 3 章 色彩规范与调色板 token 系统——本卷第一条主线

第 4 章 色彩空间与感知一致性——让色彩在感知上说得通

第二部分:资产规范与预算(第 5–8 章)

第 5 章 资产命名与目录规范——让机器也能读懂资产的名字

第 6 章 资产元数据与清单 schema——清单是资产的真源

第 7 章 美术资产预算(面数 / 骨骼 / 材质槽)——预算超了要能说清是哪一项

第 8 章 显存与纹理预算——一张贴图到底吃多少字节

第三部分:分项美术规范(第 9–12 章)

第 9 章 UI 视觉规范与九宫格——UI 是玩家摸得最多的一层

第 10 章 图标与图集规范——省的是批次,不只是面积

第 11 章 角色与场景规范——「看得清」是可以算的

第 12 章 特效与动画规范——炫是有代价的

第四部分:外包、评审、协作与装配(第 13–16 章)

第 13 章 外包资产规格与验收清单——把口头需求变成可验收的表

第 14 章 美术评审与走查流程——什么时候看、谁看、看什么

第 15 章 美术版本管理与协作工具——二进制资产也要能被管起来

第 16 章 装配:一份可校验的视觉规范——把前 15 章收成一本 Art Bible

附录

篇目核心内容
附录 A:视觉规范公式、参数与数据集索引本卷公式与参数索引、sp<章号>_ 命名约定、六层复现命令

三条阅读路径

路径 A:规范底座课(第 1–4 章顺序读)
从美术生产链路与角色分工开始,经技术美术的位置与 ART_SCOPE 分工表、形容词转可测参数、风格向量与风格距离、参考板的结构化,到主色/辅色/强调色与明度梯度、色彩 token 化、跨场景一致性、sRGB 与线性空间、OKLab/OKLCH、色盲安全与对比度下限。这条路径回答「美术规范的第一层该怎么立」。读完你能拿出一份带 token 的色板、一张可断言的风格向量表,和一段证明「改一个 token、三处结果同步变」的仿真。

路径 B:资产与预算课(第 5–12 章顺序读)
从命名规则与目录层级开始,经资产清单字段、引用关系与依赖声明、清单与目录的双向对账,到面数与骨骼预算、材质槽与 Draw Call、超支归因与裁剪顺序、纹理 mip 链字节账、压缩格式显存差、整包预算表,再到 UI 栅格与九宫格、图标网格与图集装箱率、剪影可读性与细节密度、特效与动画预算。这条路径回答「资产从命名到预算的每一道闸门怎么立」。读完你能拿出一套能跑出违例清单的校验器,和一份「哪一类超了、该砍谁」的归因表。

路径 C:协作与装配课(第 13–16 章顺序读)
从美术需求书的结构化写法开始,经技术规格与交付物清单、验收标准与返工归因、评审时机与评分卡、走查记录与决策留痕、资产版本治理与大文件协作、资产 diff 与回滚,到 Art Bible 成文模板、6 主题规范装配与交付物衔接。这条路径回答「规范怎么变成组织里跑得动的东西」。读完你能拿出一份可打分的评审表、一份可执行的交付物清单,和一本 6 个主题都跑得过的 Art Bible。

常见问题速查

你想解决的问题看哪节
美术、TA、程序各自负责什么,边界在哪?1.1 、1.2
哪些内容这本书不管、该看站内哪一篇?1.3
「治愈」「硬核」怎么变成能验收的参数?2.1
两个风格「像不像」能量化吗?2.2
参考板收了一堆图,然后呢?2.3
主色、辅色、强调色怎么定,明度怎么排?3.1
色卡怎么变成代码里能引用的变量?3.2
不同场景之间颜色对不上怎么办?3.3
美术为什么必须在意 sRGB 和线性空间?4.1
为什么两个「看起来差不多」的颜色 ΔE 差很多?4.2
色盲玩家看不清我的 UI 怎么办?4.3
资产命名该怎么定规则?5.1
目录结构要不要跟引擎的引用方式对齐?5.2
哪些名字是雷区?5.3
资产清单里到底该写哪些字段?6.1
资产之间的引用关系怎么声明、怎么查?6.2
清单和磁盘目录对不上怎么办?6.3
角色面数和骨骼数该定多少?7.1
材质槽和 Draw Call 怎么卡?7.2
预算超了,先砍哪一项?7.3
一张 2048 的贴图到底吃多少显存?8.1
换压缩格式能省多少?8.2
整个包的预算怎么拆成一张表?8.3
UI 栅格、间距、安全区怎么定?9.1
九宫格怎么切、拉伸为什么不变形?9.2
按钮的常态、悬停、按下、禁用怎么规范?9.3
图标该按什么网格画、描边多粗?10.1
图集怎么打包才省面积?10.2
图集切分和批次有什么关系?10.3
角色剪影「看不清」能量化吗?11.1
细节堆太多反而糊成一团怎么办?11.2
场景怎么用模块化 kit 搭得既快又不重复?11.3
特效的强度、时长、屏占比要不要设上限?12.1
动画帧率与状态该怎么规范?12.2
什么反馈该用什么视觉强度?12.3
外包需求书怎么写才不至于来回扯?13.1
技术规格和交付物清单怎么对上?13.2
验收标准怎么定、返工算谁的责任?13.3
什么时候评审、谁必须到场?14.1
通过还是打回,怎么打分才不吵?14.2
走查发现的问题怎么保证不被忘掉?14.3
资产版本号怎么编、分支怎么分?15.1
几个 G 的源文件怎么多人协作?15.2
改坏了怎么知道、怎么回滚?15.3
Art Bible 到底该写哪些章?16.1
同一套规范怎么套到 6 个主题上还分得开?16.2
这一卷交付了什么、卷二接什么?16.3

卷一工具链命名约定

本卷所有 prism/ 文件一律用 sp<章号>_ 前缀(如 config/sp07_budget.json、sim/sp07_budget.py、core/src/sp07/、core/test/sp07_*.test.ts),因为《游戏美术与技术美术》的卷二是 ta、卷三是 st。这样 node --test 'core/test/sp07_*.test.ts' 只会命中本卷第 7 章的测试,不会交叉匹配另外两卷。

注意前缀不要写成裸 sp*:node --test 接收的是 glob 而非目录,故必须写全 sp<章号>_*.test.ts。另外 web/ 层的文件名前缀不在首位(build_sp09_nineslice.mjs / verify_sp09_nineslice.mjs),清点脚本要同时认这两套命名,否则 web 层会被统计成 0。

三卷共用同一份 config/visual_spec.json 作为唯一真源,故本卷的调色板模型与卷三 6 个主题包可以放进同一个工作区一起跑:改一个 token,仿真、内核、浏览器看板与 PIL 生成的 PNG 四处结果都变。

完整文件索引、逐层复现命令与排错顺序见附录 A 。

在进入正文之前,先用下面这段 S 层环境自检脚本确认运行时齐备——它同时适用于三卷,是整套书稿的第一条可运行命令。把它保存为 prism/sim/sp00_env_check.py 后运行 /opt/homebrew/bin/python3 sim/sp00_env_check.py,会打印解释器路径、numpy / pandas / Pillow 版本与 Node 版本,任一不满足即非 0 退出。

#!/usr/bin/env python3
# file: sim/sp00_env_check.py
# tier: S
# verify: /opt/homebrew/bin/python3 sim/sp00_env_check.py
"""环境自检:确认《游戏美术与技术美术》三卷需要的运行时都在,并打印 prism 的能力阶梯。

本机有两个 python3,不要混:
  /opt/homebrew/bin/python3 = 3.14.6(带 numpy / pandas / PIL),S 层仿真与 PIL 生成一律用它;
  /usr/bin/python3          = 3.9.6(系统自带,无 numpy/pandas),只能跑最朴素的脚本。

本机**没有** matplotlib / scipy / colour / cairosvg:图表一律纯 xml.etree 生成 SVG,
色卡与图集一律 PIL 生成 PNG,色盲模拟的矩阵常数手写在 sp04_colorblind.py 里。
"""

from __future__ import annotations

import os
import shutil
import subprocess
import sys

EXPECT_PY = "/opt/homebrew/bin/python3"


def main() -> int:
    ok = True

    # /opt/homebrew/bin/python3 是符号链接,比较时解析到真实二进制再判断
    real = os.path.realpath(sys.executable)
    print(f"python     {sys.version.split()[0]}  ({real})")
    if real != os.path.realpath(EXPECT_PY):
        print(f"           注意:正文脚本一律用 {EXPECT_PY},当前解释器不同")

    try:
        import numpy
        import pandas
        import PIL

        print(f"numpy      {numpy.__version__}")
        print(f"pandas     {pandas.__version__}")
        print(f"Pillow     {PIL.__version__}")
    except ImportError as e:  # noqa: BLE001
        ok = False
        print(f"FAIL 缺依赖:{e}(S 层与 PIL 生成需要 numpy / pandas / Pillow)")

    for mod in ("matplotlib", "scipy", "colour"):
        try:
            __import__(mod)
            print(f"{mod:<10} 已安装(本套不使用,图表与色度一律手写)")
        except ImportError:
            print(f"{mod:<10} 未安装(符合预期)")

    node = shutil.which("node")
    if not node:
        ok = False
        print("FAIL node 未安装(P 层需要 Node 26 或更高)")
    else:
        ver = subprocess.run([node, "-v"], capture_output=True, text=True).stdout.strip()
        major = int(ver.lstrip("v").split(".")[0])
        note = "" if major >= 26 else "  (低于 26,原生 TypeScript 不可用)"
        print(f"node       {ver}{note}")
        ok = ok and major >= 26

    print("prism 能力阶梯:S 仿真 / P 内核 / W 网页 / D 静态 / X 不可复现 / B 基准")
    print("OK 环境就绪" if ok else "FAIL 环境不满足")
    return 0 if ok else 1


if __name__ == "__main__":
    raise SystemExit(main())

实跑 /opt/homebrew/bin/python3 sim/sp00_env_check.py:

python     3.14.6  (/opt/homebrew/Cellar/python@3.14/3.14.6/Frameworks/Python.framework/Versions/3.14/bin/python3.14)
numpy      2.5.1
pandas     3.0.3
Pillow     12.3.0
matplotlib 未安装(符合预期)
scipy      未安装(符合预期)
colour     未安装(符合预期)
node       v26.5.0
prism 能力阶梯:S 仿真 / P 内核 / W 网页 / D 静态 / X 不可复现 / B 基准
OK 环境就绪

这段脚本与卷二、卷三同源,是整套书稿的第一条可运行命令;本卷的 sp<章号>_ 脚本都建立在它验证过的同一套运行时之上。完整文件索引与逐层复现命令见附录 A 。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「gameart」更多文章

  1. 附录 A:风格参数表、量化规则与数据集索引
  2. 9.3 等距资产的制作约束
  3. 9.2 等距 tile 与遮挡规则