17 KiB
评估:Dungeon Sweeper 美术资产清单与性能预算
版本 v1 | 2026-10-30 | 目标引擎 Godot 4.7.2-stable(
gl_compatibility/ 纯 2D)| 平台 PC Windows 先行 | 设计分辨率 1280×800 基座 + 1920×1080(全局 1.35× 等比) 性质:评估过程件,对应美术师交付物「美术资产清单」+「美术规格与预算」两章合并(一次问三事,不拆两份重复)。未改任何权威文档与game/文件;结论若要进design/走 doc-design 登记 + 用户发令。 事实源:design/art/art-assets-checklist.md(需求)·art-status-checklist.md(现状)·art-bible.md§8(尺寸定值单点)·asset-path-map.md(路径)·game/assets/实扫 ·game/project.godot与 117 份.import(引擎现状)·design/gdd/ux/battle.md板形表 ·game/data/tables/enemy.tres。 显存口径:art-engine-handoff/scripts/asset_budget.py实算;格式按项目真实导入(compress/mode=0Lossless → 运行时解码为 RGBA8 = 4 B/px,关 mipmap)。Draw Call 与峰值显存未真机实测,只给内控线与估算口径。
0. 结论先行
- 纹理显存不是瓶颈:现状 126 张 PNG 解码后合计 0.82 MB,占项目内控线 96 MB 的 0.85%。
- 满配试算 39.95 MB,占内控线 41.6%,余量 56.05 MB(≥20% 达标);前三项占 96.9%,压显存只需盯营地场景图。(营地由 9 张拆为 10 张:新增
scene_camp_wall围墙层,按细条(0,240,1280,70)=0.34 MB 计,不做全幅;较原口径净增 0.34 MB。) - 真瓶颈在 Draw Call 与包体结构:196 格棋盘 + 碎图各自独立纹理,最重一屏粗估 400–600 次;磁盘 6.87 MB 中字体独占 6.68 MB(97%)。
- 导入设置现状正确,无需改:117 张全 Lossless + mipmap 全关 + 全局 Nearest,与像素风四纪律一致;非 2 幂尺寸在当前 PC Lossless 下不产生补齐,脚本 warn 可忽略。
- 1920×1080 档不新增纹理:全局等比缩放复用同一份资源,显存与档位无关。
1. 目标引擎与导入基线
1.1 工程侧已核事实(实测,非文档推断)
| 项 | 值 | 来源 |
|---|---|---|
| 引擎 | 4.7.2-stable,config/features=PackedStringArray("4.7") |
project.godot |
| 渲染方法 | gl_compatibility(PC OpenGL Compatibility) |
project.godot |
| Stretch | canvas_items,1280×800 视口;1920 档 aspect keep |
§8.1/§8.2 |
| 默认过滤 | default_texture_filter=0(Nearest) |
§8.2,全局像素风基线 |
| 导入类型 | CompressedTexture2D,vram_texture: false,117/117 |
.import 全量 |
| 压缩 | compress/mode=0(Lossless),117/117 |
.import 全量 |
| Mipmap | mipmaps/generate=false,117/117 |
.import 全量 |
| 3D 检测 | detect_3d/compress_to=1(2D 项目不触发) |
.import 全量 |
| 透明边 | process/fix_alpha_border=true,117/117 |
.import 全量 |
| 字体 | theme/custom_font = Fusion Pixel 单套 TTF |
§3.6 清单已定稿 |
Lossless 的显存真相:compress/mode=0 只压缩磁盘上的 .ctex,运行时仍解码成 RGBA8 上传显存(vram_texture: false 佐证),故显存一律按 4 B/px 计,不按 PNG 文件大小计。这是本次全部试算的口径。
非 2 幂 warn 的边界:实扫 126 张中大量 20×20 / 46×48 / 66×94 等非 2 幂尺寸。在当前 PC + Lossless 下不补齐、不影响压缩,脚本提示可忽略;若日后转 VRAM 压缩或上移动端/小游戏,该项即变为硬约束(无法压缩或图集补齐),属「待实测项」。
1.2 Godot 4.7 导入设置对照表
按 engine-import.md 逐项填,只列目标引擎列与项目现状;3D 相关项因纯 2D 标不适用。
| 项 | 通用要求 | Godot 4.7 项目现状 | 判定 |
|---|---|---|---|
| 纹理类型 | 2D 项目用 Sprite2D / TextureRect | CompressedTexture2D |
✅ |
| 压缩 | 像素风 = 关闭压缩或无损 | Lossless(117/117) | ✅ 正确;插画级大图是否转 VRAM 压缩待裁 |
| sRGB | 颜色图勾 sRGB | 走 PNG 色彩空间默认,hdr_as_srgb=false |
⚠ 建议显式逐张标注色彩空间(待核,无风险) |
| Mipmap | UI / 精灵 / 特效关闭 | 全关 | ✅ |
| 过滤 | Point(像素风) | 全局 Nearest;显式 LINEAR 豁免仅 vignette / gradient_base / beams 三件,已入册 | ✅ |
| 九宫格 | StyleBoxTexture 设边距 | scene_stage_plaza 48×12 横向拉伸、顶缘 2px 不随拉伸变形;UI 面板走主题样式盒 |
✅ 边距需随件填,不靠记忆 |
| 图集 | 同屏资产归同组 | 现无图集,126 张独立纹理 | ⚠ Draw Call 处置方向,待工程评估 |
| 字体 | 动态字体优先,授权干净 | Fusion Pixel 单套,SIL OFL 1.1 在册 | ✅ |
| 序列帧 | 播放器关插值、行列写进规格 | 帧级素材未产;帧数已冻结(待机 4 / 攻击 6 / 受击 2,§8.4) | ⏸ 待产 |
| 3D 模型 / 法线 / PBR / LOD | 单位轴向、OpenGL 法线 | 不适用(纯 2D,mdl / tex 类为空) |
— |
2. 资产清单(运行时资源,十类逐一过)
2.1 十类现状总表
优先级沿用 art-assets-checklist.md 的 P0–P3 口径(玩法依赖,非排期);状态取自 art-status-checklist.md。前缀为美术师通用分类,项目文件命名以 §8.3 为准(见 2.3)。
| 类 | 前缀 | 项目对应资产 | 在盘件数 | 状态 | 优先级 |
|---|---|---|---|---|---|
| 角色 | char |
主角 B 区三态立绘 + 棋盘小人 32×32 四向 | 13(art/character) |
✅ 三态已接 | P1 |
| 怪物 | mon |
八敌站桩立绘(36–94 逐键定档) | 13(同上,含敌) | ✅ 已服役 | P1 |
| 场景 | env |
砖面/地形 terrain_* 三关换皮、封印印记、舞台地台 |
64(art/board)+1(art/scene) |
◐ 砖面程序化观感待升级 | P2 |
| UI | ui |
面板/按钮/进度条/节点图容器 | 33(art/ui) |
◐ 面板与节点图占位 | P2 |
| 图标 | icon |
状态九枚、格面徽章 19、护甲三枚、柜台四枚、节点四类 | 12(assets/ui/icons)+19 待产 |
◐ 部分在役 | P2 |
| 特效 | fx |
挥铲三帧、打击火花、烟尘碎屑、封印特效 | 3(art/fx) |
◐ 程序化在役 | P3 |
| 动画 | anim |
意图准备三档、死亡灰化碎裂、弹道密度 | 0(帧级未产) | ◐ 占位符号在役 | P1/P3 |
| 3D 资产 | mdl |
— | 0 | 不适用 | — |
| 字体 | font |
Fusion Pixel 单套单字重 | 1 TTF(6.68 MB) | ✅ 已定稿 | P2 |
| 插画 | img |
营地场景图 10 张(9 全幅+1 围墙细条)、B 区舞台背景 1280×270 | 0(全占位) | ⬜ 未开始 | P2/P3 |
在盘合计:PNG 126 张(art/ 114 + ui/icons/ 12)+ TTF 1 件;磁盘 6.87 MB。纯 2D,零 3D 资产,无法线/PBR/LOD 需求。
2.2 缺口清单(未 ✅ 项,P0 写清阻塞什么)
| # | 资产 | 类 | 规格(§8.2 定值) | 用途 | 优先级 | 状态 | 阻塞什么 |
|---|---|---|---|---|---|---|---|
| 1 | 战斗一屏样张 | 插画/样张 | 1280×800 双舞台整屏 | 锁剪影/动画/战斗空间/敌人层 | P0 | ⬜ | 角色终稿、意图动画、演出类全部不得开工(清单 §1.2 硬前置) |
| 2 | 意图准备动画三档 | 动画 | 待机 4 / 攻击 6 / 受击 2 帧,灰度剪影可辨 | 敌方下一拍预告 | P1 | ◐ | 预告从占位符号退场;文字/技能名退出徽标后的唯一承载 |
| 3 | 格面资源徽章 19 枚 | 图标 | 32×32 级,极性=金满框/红缺框 | 九家族正负 + 清图槽 | P2 | ◐ | 无(占位够试玩,观感不达标) |
| 4 | 雷/封印/数字砖面全套 | 场景 | 32×32 瓦片随格边长整格铺满 | 扫雷核心读盘 | P2 | ◐ | 前置格子样张已 ✅,无硬阻塞;观感升级 |
| 5 | 关卡节点图图标组 | 图标 | 四类节点 + 行进器 | 节点图 UI | P2 | ◐ | 正式节点图 UI 设计未成文 |
| 6 | 营地场景图 10 张(9 全幅+1 围墙细条) | 插画 | 2× 源出图 → 降采样 1280×800 | 营地交互重做 | P2 | ◐ | 营地交互重做美术自立批(不占迭代位) |
| 7 | 护甲类型图标三枚 | 图标 | 24×24,显示 1× | 站桩名字行 | P2 | ⬜ | 名字行 ◇/◆ 字形占位退役 |
| 8 | B 区舞台背景 | 插画 | 1280×270,远景+中景两带 | 战斗舞台 | P3 | ⬜ | 临时光柱氛围层由背景吸收 |
| 9 | 受击/死亡/顺位、连锁坍塌、封印特效、弹道密度 | 特效/动画 | 灰化+碎裂退场(禁瞬消) | 战斗打磨 | P3 | ◐/⬜ | 无硬阻塞,样张后排期 |
| 10 | 状态九枚 / 字体 / 主角三态 / 八敌立绘 / 地台 | — | — | — | — | ✅ | 已交付,不列为缺口 |
格子样张 ✅ v3 冻结(2026-09-30 机检 17/17);收益/秘宝图标、封面宣传图、地形变异专属纹理按清单 §5 明确不在本清单,不计入预算。
2.3 命名口径冲突(呈报)
美术师通用规范为四段式 <类别>_<对象>_<状态>_v<N>.png(旧版改名 _deprecated 不删);项目 §8.3 已定案为域键式 <域>_<对象键>_<状态|变体>[_<序号>].png,对象键 = 数据表主键(effect_id/reward_id/cell_type/enemy_id),文件名键全局恒定禁运行时换图,且素材不入 git、候选与终稿分目录、版本号走归档纪律。
处置:以项目 §8.3 为准,通用四段式不覆盖。依据:项目规范已定稿且有代码闸(standee_asset_check、图标键契约)依赖该命名;本条仅呈报差异,不擅自改。
2.4 产出批次
沿用清单 §6 依赖链,不重排:格子样张(✅)→ 砖面全套;战斗一屏样张(⬜)→ 角色终稿(✅)→ 意图动画 → 演出类;徽章/节点图/效果图标/复用件为独立线可插队;营地场景图归营地美术自立批。第 1 批基准图未定稿前不排后续批次规格。
3. 性能预算(六项,先预算后规格)
3.1 倒推起点:同屏对象数(已核)
| 对象 | 上限 | 来源 |
|---|---|---|
| 棋盘格 | 14×14 = 196 格(格边长 30px) | battle.md 板形表 N=14 |
| B 区单位 | 主角 1 + 敌最多 3 | enemy.tres unit_count_max 全表最大 = 3 |
| HUD / C 区 | 数据框、状态槽、按钮组约 60 件 | 现役 UI 结构 |
| 营地 | 背景 1 + 可点物件 7 + 承载件 1 = 9 | 清单 §3.5 |
3.2 六项预算表
内控线 = 本项目自定(通用 PC 档为起步值,需实测校准);均留 ≥20% 余量;实测日期栏为「未实测」的项不得当验收结论。
| 维度 | PC 档参考 | 项目内控线 | 现状/试算 | 判定 | 备注 |
|---|---|---|---|---|---|
| 纹理内存 | ≤ 1.5 GB | 96 MB | 现状 0.82 / 满配 39.95 MB | ✅ | 余量 56.05 MB;可用线(20% 余量)76.8 MB |
| Draw Call | ≤ 800 | 600 | 估 400–600,未实测 | ⚠ | 留 25% 余量;真机跑最重一屏取峰值 |
| 同屏三角面 | ≤ 100 万 | 不构成约束 | 约 0.14 万(2D quad 2 三角) | ✅ | 远低于档位,仅记录 |
| 同屏粒子 | ≤ 1000 | 450 | 程序化火花/碎屑,未实测 | ⚠ | 建议单次特效峰值 ≤150、同屏 ≤3 |
| 单角色骨骼 | ≤ 150 | 不适用 | 0(无骨骼,序列帧+程序化) | — | 纯 2D |
| 包体(磁盘) | PC 首包不适用 | 记录值 | 6.87 MB(PNG 0.19 + 字体 6.68) | ✅ | 字体占 97%,压包体先做字体子集化而非压图 |
内控线 96 MB 的依据:通用 PC 档 1.5 GB 面向 3D/4K,本项目 2D 单场景全驻留最坏试算 39.95 MB;取 ~2.4× 作内控线,给三关场景、秘宝图标与后续插画留扩展空间,并满足 ≥20% 余量。
3.3 纹理内存试算(脚本实算,非估)
| 版本 | 项数 | 合计 | 占内控线 | 余量 | 前三名占比 |
|---|---|---|---|---|---|
| 现状版 | 20 种尺寸 / 126 张 | 0.82 MB | 0.85% | 95.18 MB | 75.3%(32×32×78 = 0.30 MB、256×256×1 = 0.25 MB、64×64×4 = 0.06 MB) |
| 满配版 | 26 项 / 189 件 | 39.95 MB | 41.6% | 56.05 MB | 96.9% |
满配增量清单口径(全部 RGBA32、mipmap 关):
| 增量项 | 规格 | 件数 | MB | 占满配 |
|---|---|---|---|---|
| 营地场景图 | 1280×800 ×9 + 围墙细条 1280×70 ×1 | 10 | 35.50 | 88.9% |
| 敌人动画图集 | sheet:64×64 帧、12 帧、6 列、pad 2 → 408×136 | 9 套 | 1.91 | 4.8% |
| B 区舞台背景 | 1280×270 | 1 | 1.32 | 3.3% |
| 徽章/节点/护甲等图标 | 32×32 | 36 | 0.14 | 0.4% |
| 特效帧/粒子贴图 | 64×64 | 6 | 0.09 | 0.2% |
| 主角动画图集 | sheet:48×72 帧、12 帧、6 列、pad 2 → 312×152 | 1 套 | 0.18 | 0.5% |
| 现状存量 | 实扫聚合 | 126 | 0.82 | 2.1% |
按格式聚合:RGBA32 100%(项目全 Lossless)。现状与满配差 39.13 MB,其中营地 10 张独占 90.7% 的增量。(围墙层落盘按细条 (0,240,1280,70)=0.34 MB,不占 1280×800 全幅大图名额。)
3.4 由预算倒推单件规格(≥20% 余量)
- 大图是唯一约束面:可用线 76.8 MB 减去非大图 4.45 MB = 72.35 MB;1280×800 @ RGBA32 单价 3.906 MB → 同档大图总量 ≤ 18 张(18 张 = 70.31 MB,合计 74.76 MB ✅;19 张即 78.67 MB ❌)。营地首批 9 张全幅大图(另加 1 张围墙细条 0.34 MB,不占大图名额)安全,但「三关各 9 张全幅大图 = 27 张」必然触发超线。
- 触发后的处置优先级:① 大图换 VRAM 压缩(BC3 = 1 B/px,单价降至 0.977 MB,27 张仅 26.4 MB);② 或降入包分辨率至 960×600。像素小图不动——BC 块状伪影会毁像素边缘,且它们只占 0.82 MB。
- 动画图集省的是 Draw Call,不是显存:9 套图集 1.91 MB,同帧数逐帧独立 PNG 反而只需 1.69 MB(图集 padding 与补齐多出 0.2 MB)。进图集的收益在合批,别拿它当省显存的理由。
- 小图/图标无需限规格:32×32 级 78 张仅 0.30 MB,继续按 §8.2 甲类整数倍纪律产出即可。
- 1920×1080 档零增量:全局 1.35× 等比缩放复用同一份资源,不产生第二套纹理,显存与档位无关(§8.2 已裁)。
3.5 Draw Call 控制(美术能做的部分)
现状 126 张独立纹理、零图集,是 Draw Call 的结构性来源。最重一屏估算口径(非实测):196 格 ×(瓦片纹理 + 程序化覆盖层)≈ 390,B 区 4 单位 × 4 件 ≈ 16,HUD/C 区 ≈ 60 → 400–600 区间,逼近内控线 600。
| 风险 | 处置方向 | 归属 |
|---|---|---|
| 三关瓦片 64 张交替绘制打断合批 | 同关同族瓦片合并为 AtlasTexture |
工程面改动,待裁/工程评估 |
| UI 切图过碎、每图标一材质 | 战斗页 / 营地页 / 节点图分页分图集 | 同上 |
| 特效贴图各自独立 | 特效帧进同一图集,粒子用同材质染色 | 同上 |
程序化 _draw 覆盖层 |
与纹理绘制混排会断批,排绘制顺序时可收敛 | 同上 |
| 动态字体 | Fusion Pixel 单套已合批,保持 | ✅ 无需动 |
本报告只列处置方向,不新增需求、不改工程面;任何一条落地须由用户发令走对应通道。
3.6 待实测项(未跑,发起权归用户)
| 项 | 方法 | 输出 | 状态 |
|---|---|---|---|
| 最重一屏峰值 Draw Call | 真机跑 14×14 满敌战斗场景 | 峰值次数 vs 内控 600 | 未实测 |
| 峰值显存 | 真机含营地切场景往返 | vs 96 MB 内控线 | 未实测 |
| 粒子峰值 | 同屏 3 特效叠加 | vs 450 内控线 | 未实测 |
| VRAM 压缩可用性 | GL Compatibility 下试导 BC3 大图 | 画质目检 + 显存实测 | 未实测 |
| 1920 档观感 | 1.35× 非整数缩放目检 | 甲类件宽窄不均是否可感 | 未目检 |
禁止用编辑器或模拟器数据当验收结论(实测差 2–3 倍);上表机型与实测日期留空待填。
4. 假设与待确认
- 假设:目标平台 = PC Windows 先行(AGENTS.md),暂不上移动端/小游戏 → 无首包硬限、压缩不走 ASTC/ETC2。
- 假设:满配 = 营地 10 张(9 全幅+1 围墙细条) + 舞台背景 1 + 9 敌动画 12 帧/套 + 主角 1 套 + 图标 36 + 特效 6;秘宝图标/封面宣传图按清单 §5 排除。
- 假设:同屏敌人上限 3(
enemy.tresunit_count_max全表最大=3,已核)、棋盘 N=14(battle.md板形表,已核)。 - 假设:动画帧尺寸按 64×64 源档均值估(实际立绘逐键 36–94),帧数按 §8.4(4+6+2=12/套);量级不受影响。
- 待确认:营地 10 张是否同屏常驻(Godot 引用计数不自动卸载,本报告按最坏全驻留计);动画是否走
SpriteFrames图集(影响 Draw Call 估算,不影响显存量级)。
5. 不改动声明
未改 design/art/ 任何权威清单与圣经、未改 game/ 任何文件;未生成图、未跑测试、未跑 MC(无数值改动)。本报告为过程件,按 reports/README.md「吸收即死」:结论若被权威文档吸收即可删,若需落设计文档则走 doc-design 登记 + 用户发令。