Initial import of HEROLL source and design documents
This commit is contained in:
@@ -0,0 +1,445 @@
|
||||
# Heroll 视觉设计与表现规则(开发执行版)
|
||||
|
||||
版本:1.0
|
||||
日期:2026-08-13
|
||||
适用岗位:主美、UI、角色、场景、动画、VFX、技术美术、Unity 客户端、QA
|
||||
目标画布:竖屏 1080×1920;玩法世界按整数倍像素缩放
|
||||
|
||||
> 本文是现有完整 GDD 的视觉执行补充。定稿方向为“高清像素绘本式桌面冒险”:玩法世界使用清晰像素资源,HUD、弹窗、卡牌与角色立绘使用粗描边卡通语言。样本只用于风格分析;发行资源必须重新设计,不复制 Dice Lords 或逆向样本的具体造型、图标、文案和贴图。
|
||||
|
||||
## 0. 执行入口
|
||||
|
||||
| 交付物 | 开发用途 |
|
||||
|---|---|
|
||||
| [UI 组件表](../art-bible/specs/ui-components.csv) | 组件尺寸、状态、九宫格、动效和验收 |
|
||||
| [角色与怪物表](../art-bible/specs/character-monster-rules.csv) | 体型、轮廓、动作集和战斗辨识 |
|
||||
| [六主题场景表](../art-bible/specs/biome-rules.csv) | 色板、材质、分层、危险色和环境运动 |
|
||||
| [动作与特效时序表](../art-bible/specs/animation-vfx-timing.csv) | 预备、有效帧、恢复、停顿、层级和预算 |
|
||||
| [资源导入表](../art-bible/specs/asset-import-rules.csv) | 命名、尺寸、Unity 设置、压缩和 Addressables |
|
||||
| [抽样资源清单](../analysis/visual-study/unity-samples/manifest.csv) | 30 个视觉证据样本及来源 |
|
||||
| [动画证据清单](../analysis/visual-study/animation/animation-clips.csv) | 416 条 AnimationClip 时长证据 |
|
||||
|
||||
原完整 GDD 位于 C:\Users\toshio\Documents\ChatGPT\SliceDice\gdd\heroll\index.md;本文替代其中笼统的美术建议,成为视觉生产的优先规范。
|
||||
|
||||
## 1. 研究范围、事实等级与限制
|
||||
|
||||
### 1.1 研究范围
|
||||
|
||||
- 已从桌面快捷方式启动 Dice Lords,确认运行包名 com.oxvgames.dicelords,并对当前可见教程关卡进行窗口级截图取证。
|
||||
- 已对 Heroll 的 Unity 资源做静态抽样:UI、角色/Boss、支援角色、场景前后景、VFX 贴图;同时导出 AnimationClip 时长。
|
||||
- 已把逆向结果与 Dice Lords 的官方商店定位交叉核对。官方页面将其描述为以骰子、魔法粉尘、护符和地牢怪物为核心的风格化单人桌游型游戏:[Google Play 官方商店页](https://play.google.com/store/apps/details?id=com.oxvgames.dicelords)。
|
||||
- 本轮不修改原 APK/XAPK、不绕过付费或保护机制,也不把抽样贴图带入发行构建。
|
||||
|
||||
### 1.2 事实等级
|
||||
|
||||
| 标记 | 含义 | 本文写法 |
|
||||
|---|---|---|
|
||||
| O(Observed) | 实机或提取资源直接可见 | “观察到”“证据显示” |
|
||||
| I(Inferred) | 多份证据支持,但没有完整运行验证 | “推定”“建议沿用” |
|
||||
| P(Prescribed) | 本文为新项目制定的执行规则 | “必须”“不得”“目标值” |
|
||||
|
||||
### 1.3 运行限制
|
||||
|
||||
Dice Lords 已成功启动并截取当前关卡,但桌面控制接口未能对 Google Play Games 中的游戏窗口注入点击。因此本轮不是完整多界面通关式试玩;对战、商店、骰子结算等画面只允许以公开商店信息作二级交叉核对,不写成已亲手验证事实。可见画面的 UI、地图路径、色彩、教程对话、引导角色和层级关系属于 O 级证据。
|
||||
|
||||
## 2. 视觉结论
|
||||
|
||||
### 2.1 一句话方向
|
||||
|
||||
> **高清像素绘本式桌面冒险**:世界层像素清晰、剪影优先、分层构景;界面层粗描边、深色双层面板、强图标语义、金色行动路径;所有“重要”都同时由颜色、形状和动作编码。
|
||||
|
||||
### 2.2 两层统一模型
|
||||
|
||||
| 层 | 渲染语言 | 负责内容 | 统一锚点 |
|
||||
|---|---|---|---|
|
||||
| 世界层 | 像素美术、Point Filter、整数倍缩放 | 棋盘、角色、怪物、Boss、场景、世界 VFX | 暗墨轮廓、有限色板、清楚剪影、落脚阴影 |
|
||||
| 界面层 | 高清卡通、圆角与斜切混合、深色双描边 | HUD、弹窗、卡牌、图标、教程、角色立绘 | 同一暗墨色、同一品质色、同一形状语义 |
|
||||
| 桥接层 | 世界 UI,像素主体配高清状态环 | 节点、路径、目标环、地面预警、掉落 | 节点轮廓与场景分离,状态环与 HUD 同色 |
|
||||
|
||||
不得将双线性平滑后的世界精灵与 Point Filter 精灵放进同一玩法画面;不得用写实材质、高频噪点或照片纹理破坏棋盘可读性。
|
||||
|
||||
### 2.3 风格证据
|
||||
|
||||

|
||||
|
||||
O:当前 Dice Lords 画面为 9:16 纵向火山/熔岩地牢;中央金色曲线路径串联圆形节点,完成态以绿色徽记叠加;HUD 与教程使用紫色深描边双层面板;引导角色采用大头小身、道具强化手势的卡通比例。
|
||||
|
||||

|
||||
|
||||
O:Heroll 抽样 UI 已具有骰子按钮、Boss 骷髅、事件节点、卡牌、教程气泡和状态底板,适合重组为统一组件库。
|
||||
|
||||

|
||||
|
||||
O:Boss 与支援角色使用深色像素轮廓、夸张武器/头饰和紧凑剪影;能以小画幅承担玩法辨识。
|
||||
|
||||

|
||||
|
||||
O:Grass、Desert、Volcano、Stone、Abyss、Snow 均有可配对的后景与前景层,支持按主题包独立加载。
|
||||
|
||||

|
||||
|
||||
O:已有斩击序列、武器闪光、节点光晕和骰子发光等像素 VFX 语言,可作为新特效形状与节奏的证据,不直接复用图像。
|
||||
|
||||

|
||||
|
||||
## 3. 全局视觉令牌
|
||||
|
||||
### 3.1 核心色
|
||||
|
||||
| Token | 色值 | 用途 | 禁止 |
|
||||
|---|---|---|---|
|
||||
| Ink-900 | #191116 | 角色/UI 最外轮廓、文字投影 | 大面积纯黑糊成一片 |
|
||||
| Panel-700 | #4B3D67 | 主面板、弹窗、Boss 信息底 | 直接铺在 Stone 背景且无亮边 |
|
||||
| Panel-500 | #6F5A8E | 内高光、次级面板 | 作为危险色 |
|
||||
| Path-Gold | #F3C54B | 可行动路径、主奖励、主按钮 | 同屏超过 15% 面积 |
|
||||
| Info-Cyan | #49B8D6 | 信息、法术、Abyss 对比色 | 与可购买按钮混用 |
|
||||
| Success | #40C463 | 完成、治疗、可确认 | 单独表示状态,必须配勾/十字/箭头 |
|
||||
| Danger | #D94B50 | 伤害、危险、失败 | Volcano 中不加黄芯或形状 |
|
||||
| Text-Primary | #FFF7E8 | 标题、正文、数值 | 直接落在亮色背景 |
|
||||
| Text-Muted | #C7BBD4 | 辅助文字、禁用态 | 关键战斗数据 |
|
||||
|
||||
### 3.2 品质色必须双编码
|
||||
|
||||
| 品质 | 颜色 | 形状编码 | 动作编码 |
|
||||
|---|---|---|---|
|
||||
| 普通 | #6C778B | 单线方框 | 250 ms 翻牌,无持续粒子 |
|
||||
| 稀有 | #3AB6E8 | 双角切面 | 一次外扩环 |
|
||||
| 史诗 | #9B5DE5 | 三角冠角 | 两段边框点亮 |
|
||||
| 传说 | #F6B945 | 四角冠与顶部徽记 | 633 ms 两段揭示,结束后静止 |
|
||||
| 神话 | #FF5D5D | 不对称翼形框 | 只在首次发现使用短镜头脉冲 |
|
||||
|
||||
### 3.3 轮廓与材质
|
||||
|
||||
- 世界精灵外轮廓 1–3 逻辑像素;相邻同色面用 1 级明度差或材质纹理区分。
|
||||
- UI 最外轮廓 5–8 px,内高光 2–3 px;交互面不得仅靠投影悬浮。
|
||||
- 金属:硬边亮点与少量冷高光;布料:大色块加 1 级褶皱;石材:低频块裂纹;魔法:亮芯、透明外晕、方向性粒子。
|
||||
- 单个世界角色本体不超过 6 个局部颜色,换色皮肤不得改变玩法语义色。
|
||||
|
||||
## 4. 屏幕、布局与 UI 规则
|
||||
|
||||
### 4.1 基准和安全区
|
||||
|
||||
| 项目 | 规则 |
|
||||
|---|---|
|
||||
| 基准画布 | 1080×1920,Canvas Scaler = Scale With Screen Size,match 0.5 |
|
||||
| 安全边距 | 左右 48 px;顶部 72 px;底部 96 px;再叠加设备 Safe Area |
|
||||
| 栅格 | 8 px 基础栅格;组件间距 16/24/32/48 px |
|
||||
| 最小点击区 | 96×96 px;视觉图标可小于点击区 |
|
||||
| 文本 | 中文正文 36 px,辅助 30 px,按钮 36–40 px,页标题 56 px,关键数值 44–64 px |
|
||||
| 对比度 | 正文目标 4.5:1;大字与装饰数字不低于 3:1 |
|
||||
|
||||
### 4.2 固定层级
|
||||
|
||||
从后向前固定为:BiomeBack → BiomeMid → PlayFloor → GroundTell → Units → UnitVFX → WorldUI → HUD → ModalDim → Modal → Tutorial/Toast。地面预警永远在单位脚下、地板之上;伤害数字不得遮挡 Boss 预警和玩家生命值。
|
||||
|
||||
### 4.3 竖屏地图页
|
||||
|
||||
- 顶部:左侧离开/返回,中央“地牢 x/y”,右侧设置与资源;不得把三种以上货币平铺在地图页。
|
||||
- 中部:节点沿 S 形或缓弧排布;路径宽 72 px,节点 132×132 px,节点中心至少相隔 188 px。
|
||||
- 底部:仅保留当前主要动作;教程出现时,气泡锚定目标,不遮挡下一节点。
|
||||
- 已完成节点:降饱和 25% + 勾形徽记;当前节点:1.2 s 呼吸环;奖励节点:金色冠形框;Boss 节点:骷髅/角形轮廓 + 红色外环。
|
||||
- 路线分叉时所有候选节点必须同时可见;不允许通过横向滑动比较同一层选择。
|
||||
|
||||
### 4.4 对话与教程
|
||||
|
||||
- 引导角色使用界面立绘,不使用放大的像素精灵;头、手、道具构成阅读三角。
|
||||
- 每条气泡只讲一个动作,中文不超过 44 字,只允许一个关键词高亮。
|
||||
- 指针必须落在真实可操作目标上;目标被遮挡、锁定或离屏时禁止弹出气泡。
|
||||
- 首次教学可逐字/渐显 180–260 ms;再次查看直接显示全文。
|
||||
- 重要词可用 Danger/Path-Gold,但仍需粗体或图标,不能只换色。
|
||||
|
||||
### 4.5 组件状态要求
|
||||
|
||||
每个按钮必须有 Normal、Pressed、Disabled;涉及条件时增加 Locked;涉及购买时增加 Insufficient。Disabled 不是简单降低整体 Alpha:文字仍保持可读,图标和底板同时降低饱和,锁定原因在一次点击后通过 Toast 解释。
|
||||
|
||||
组件的精确尺寸与动作见 [UI 组件表](../art-bible/specs/ui-components.csv)。
|
||||
|
||||
## 5. 角色设计规则
|
||||
|
||||
### 5.1 世界精灵与界面立绘的职责
|
||||
|
||||
| 资产 | 负责信息 | 不负责信息 |
|
||||
|---|---|---|
|
||||
| 世界精灵 | 职业、武器、朝向、攻击距离、受击、死亡、脚下位置 | 复杂表情、长文叙事、装备细节展示 |
|
||||
| 半身立绘 | 性格、情绪、教程手势、剧情反应 | 精确碰撞体、攻击距离 |
|
||||
| 小头像 | 身份、队伍槽位、状态 | 职业说明和稀有度长文本 |
|
||||
|
||||
### 5.2 玩家体型
|
||||
|
||||
- 基准逻辑框 96×96,重装可到 104×104,长兵器可到 96×112。
|
||||
- 头身比 1:2.2–1:2.8;手和武器比真实比例放大 20–35%。
|
||||
- 剑:斜向武器线、圆体块,平衡型;斧:宽肩、方体块、长预备,重击型;矛:长直线与菱形枪尖,范围型。
|
||||
- 角色主色 1 个、职业强调色 1 个、肤色/金属中性色;装备皮肤不得覆盖敌我识别色。
|
||||
- 脚底统一 pivot y=0.08,影子为 50–65% 身宽的暗椭圆;浮空角色以落点符号补足位置。
|
||||
|
||||
### 5.3 剪影验收
|
||||
|
||||
角色转纯黑并缩至 32×32 后,2 秒内必须能辨认职业或 Boss 身份。普通怪依赖“一个夸张特征”,精英在家族剪影上增加一个永久非对称标记,Boss 至少有三段式剪影与一个机制道具。
|
||||
|
||||
### 5.4 角色动作包
|
||||
|
||||
| 动作 | 最低要求 | 关键姿势 |
|
||||
|---|---|---|
|
||||
| Idle | 4–8 可见绘制,1.2–2.4 s 循环 | 武器与脸不被呼吸动作遮住 |
|
||||
| Move | 6–8 可见绘制,140–180 ms/格 | 落脚点整数对齐 |
|
||||
| Attack | 预备、有效、恢复分离 | 武器在有效窗穿过目标 |
|
||||
| Hit | 120–220 ms | 位移不超过半个碰撞半径 |
|
||||
| Death | 500–900 ms | 最终剪影稳定后再开结算 |
|
||||
| Victory | 600–1200 ms | 不阻塞奖励数值提交 |
|
||||
| Skill | 每职业至少 1 套 | 预警和命中形状与技能一致 |
|
||||
|
||||
## 6. 怪物与 Boss 规则
|
||||
|
||||
### 6.1 威胁家族
|
||||
|
||||
| 类型 | 核心轮廓 | 预警语法 | 屏幕职责 |
|
||||
|---|---|---|---|
|
||||
| 群体怪 | 64×64 单体块、一个夸张特征 | 小点/短弧 | 数量压力;20 只仍可逐个追踪 |
|
||||
| 近战怪 | 武器与头部分离 | 近身扇形 | 基准威胁 |
|
||||
| 远程怪 | 发射器伸出本体 | 直线/落点 | 线路封锁 |
|
||||
| 冲锋怪 | 重心前倾、楔形/角形 | 不少于 500 ms 的条带 | 位移威胁 |
|
||||
| 抛物怪 | 新月或抬高发射器 | 弧线 + 着地点 | 越过前排 |
|
||||
| 支援怪 | 法杖/旗帜高于头部 | 光束/目标图标 | 增益、恢复、控制 |
|
||||
| 精英 | 家族体型 ×1.2 + 非对称标记 | 家族预警 + 银/洋红边 | 机制变体 |
|
||||
| 中 Boss | 144×128,两个地标 | 独有地影 + 名称条 | 小关锚点 |
|
||||
| Boss | 至少 192×137,屏幕比例 2.0–2.3 | 三种独立姿势与地面形状 | 章节高潮 |
|
||||
|
||||
### 6.2 Boss 必备内容
|
||||
|
||||
- 动作:Entrance、Idle、Attack A/B/C、Hit、Break、Phase、Death;至少一个攻击改变场地而非只增大伤害。
|
||||
- 三个攻击必须分别使用不同预警形状,例如扇形、直线、环形;不得只换颜色。
|
||||
- 预警形状与实际伤害区域在逻辑坐标上误差不超过 4 px;预警不少于 500 ms。
|
||||
- 阶段变化同时改变剪影局部、环境光和 Boss 条阶段标记;不能只更换色相。
|
||||
- Boss 死亡逻辑先提交胜利,再播放约 1183 ms 的开场式死亡表现;奖励面板在剪影落定后出现。
|
||||
|
||||
详细体型和动作集见 [角色与怪物表](../art-bible/specs/character-monster-rules.csv)。
|
||||
|
||||
## 7. 场景与棋盘规则
|
||||
|
||||
### 7.1 每主题固定六层
|
||||
|
||||
1. Back:天空、远山、城堡轮廓,只给气候和时间信息。
|
||||
2. Mid:城墙、树、旗、建筑,建立主题材质。
|
||||
3. Front Play:地板、边缘、可站立面,最高可读性。
|
||||
4. Props:箱、火把、石碑,不能遮挡节点和预警。
|
||||
5. Ambient VFX:雾、雪、余烬、萤火虫,不产生假预警。
|
||||
6. Lighting/Grade:一套主题 LUT/调色参数;HUD 不参与场景调色。
|
||||
|
||||
### 7.2 视差与运动
|
||||
|
||||
- 地图与战斗读盘时相机稳定;Back 视差系数 0.08–0.15,Mid 0.2–0.35,Front Play = 1。
|
||||
- 非交互背景的单次位移不超过屏幕 4 px;热浪形变不超过 8 px。
|
||||
- 环境粒子不得穿过按钮、Boss 条或地面预警;进入 Modal 时环境速度降至 50%。
|
||||
- 降低动态模式:停用循环镜头抖动、热浪与大粒子,只保留危险形状和必要命中反馈。
|
||||
|
||||
### 7.3 六主题生产表
|
||||
|
||||
| 主题 | 主色/材质 | 后中景 | 玩法面与危险对比 | 环境运动 |
|
||||
|---|---|---|---|---|
|
||||
| Grass | 紫暮色、木、苔藓、旗帜 | 软森林、星空、灰绿城墙 | 深绿地面;危险用金黄 | 萤火虫 0.15 Hz、旗帜轻摆 |
|
||||
| Desert | 金砂、砂岩、布、仙人掌 | 明亮天光、沙丘、砂岩堡 | 暖沙加深紫接触边;危险红 | 尘粒、≤8 px 热浪 |
|
||||
| Volcano | 暗红、玄武岩、铁链、熔岩 | 红山、裂隙、黑红堡 | 近黑地板;危险黄芯 + 红外缘 | 缓慢熔流、低频余烬 |
|
||||
| Stone | 冷灰、板岩、遗迹、链 | 雾崖、厚重墙、碎石 | 冷灰地板加紫分界;危险橙 | 雾漂、偶发落尘 |
|
||||
| Abyss | 黑紫、曜石、晶体、虚空 | 闹鬼城、洋红地平线、符文 | 黑紫地板;危险青白 | 符文慢脉冲、上升微粒 |
|
||||
| Snow | 蓝白、冰、石、松 | 蓝山、云层、积雪堡 | 雪面加海军蓝接触影;危险橙 | 斜向雪、呼气白雾 |
|
||||
|
||||
完整色值与冲突禁用项见 [六主题场景表](../art-bible/specs/biome-rules.csv)。
|
||||
|
||||
### 7.4 场景验收
|
||||
|
||||
- 只看灰度时,角色、可走面、节点和预警仍有清楚层次。
|
||||
- 用 64×64 缩略图能辨认六个主题;移除环境粒子后仍能辨认。
|
||||
- 每个主题至少有 3 个独有轮廓元素和 2 个独有材质元素,不只换色。
|
||||
- 金色路径在所有主题上都有暗紫边;白色特效在 Snow 必须带海军蓝轮廓或青色亮芯。
|
||||
|
||||
## 8. 动作规则
|
||||
|
||||
### 8.1 证据基线
|
||||
|
||||
静态提取共记录 416 条 AnimationClip;完整资源清点约 427 条。重点实测时长:
|
||||
|
||||
| 事件 | 证据时长 | 本项目用法 |
|
||||
|---|---:|---|
|
||||
| 普通/双倍骰子 | 1267 ms | 保留“抛掷—碰撞—结果定格”三段,结果至少停 250 ms |
|
||||
| Boss 节点开始 | 1000 ms | 锁定骰子输入直到节点稳定 |
|
||||
| 代表性 Boss 攻击 | 1017 ms | 拆为不少于 500 ms 预警、有效窗、恢复 |
|
||||
| 战斗入场 | 2000 ms | 首次保留;重复可加速至 ≤700 ms |
|
||||
| 战斗胜利 | 750 ms | 结果先提交再播横幅 |
|
||||
| 伤害数字 | 667 ms | 同来源 150 ms 内合并,最多 24 个可见数字 |
|
||||
| 普通卡揭示 | 250 ms | 快速、一次边光 |
|
||||
| 传说卡揭示 | 633 ms | 两段边框与额外停顿;揭示后允许跳过 |
|
||||
| Boss 死亡开段 | 1183 ms | 胜利逻辑先发生,奖励等最终姿势 |
|
||||
|
||||
### 8.2 60 Hz 时间线
|
||||
|
||||
- 所有战斗动作以 60 Hz 逻辑时间线配置;像素动画可见绘制为 12–18 张/秒,不要求每逻辑帧一张画。
|
||||
- 伤害、治疗、奖励、掉落由逻辑事件提交,Animation Event 只做表现同步,不能成为唯一触发源。
|
||||
- 移动收尾必须落在整数像素;旋转或缩放后的像素精灵在稳定帧恢复整数比例。
|
||||
- 攻击结构固定为 Anticipation → Active → Recovery;Boss 三段分别独立配置,便于难度和无障碍调节。
|
||||
|
||||
### 8.3 命中停顿与镜头
|
||||
|
||||
| 等级 | Hit Stop | 镜头冲量 | 备注 |
|
||||
|---|---:|---:|---|
|
||||
| 普通命中 | 60–90 ms | 4–6 px / 80 ms | 只影响世界层 |
|
||||
| 暴击/破甲 | 100–140 ms | 8–10 px / 120 ms | 白闪不超过 33 ms |
|
||||
| Boss 破防/阶段 | 120–180 ms | 14 px / 180 ms | 同屏只触发一次 |
|
||||
| 降低动态 | 0–40 ms | 0 px | 用轮廓闪与音效替代 |
|
||||
|
||||
详细时序见 [动作与特效时序表](../art-bible/specs/animation-vfx-timing.csv)。
|
||||
|
||||
## 9. VFX 规则
|
||||
|
||||
### 9.1 形状语法
|
||||
|
||||
| 类型 | 形状 | 颜色与混合 | 层级 |
|
||||
|---|---|---|---|
|
||||
| 物理斩击 | 跟随武器方向的尖弧 | 暖白亮芯、角色强调色外缘;Alpha → Additive | CharacterFront |
|
||||
| 穿刺 | 细直线 + 菱形命中点 | 白芯 + 青/金边 | CharacterFront |
|
||||
| 重击 | 方形/楔形冲击波、地面碎屑 | 低饱和尘 + 暖亮命中点 | Ground + CharacterFront |
|
||||
| 治疗 | 十字/叶形 + 上升运动 | 绿外缘、白青亮芯 | CharacterFront |
|
||||
| 护盾 | 六边形或弧面 | 青色轮廓,持续态 Alpha ≤45% | CharacterUnderlay |
|
||||
| 危险预警 | 与伤害区同形的实心边缘/网纹 | Danger 或主题危险色;不可仅靠透明红 | GroundTell |
|
||||
| 奖励 | 冠形星、外扩环、短粒子 | 品质色 + 白芯 | ModalFront / WorldUI |
|
||||
|
||||
### 9.2 性能预算
|
||||
|
||||
- 普通技能同时存活粒子 ≤80;暴击 ≤120;Boss 单技能 ≤200;Boss 死亡峰值 ≤240。
|
||||
- 全屏同时存活粒子目标 ≤400;低特效模式 ≤180,但保留预警、命中点、状态环。
|
||||
- 关键动作区透明叠加层目标不超过 3 层;大面积 Additive 不超过屏幕 35%。
|
||||
- 普通技能禁止持续全屏后处理;Boss 阶段可用一次 180–350 ms 的分级/暗角变化。
|
||||
- VFX Sheet 单格 64–256 px,优先 8/12/16 帧;像素特效用 Point,软遮罩用 Bilinear,不能混入同一图集。
|
||||
|
||||
### 9.3 可读性验收
|
||||
|
||||
- 隐去颜色后,预警形状仍可区分直线、扇形、环形、落点。
|
||||
- 慢放 0.25× 时,命中点与逻辑事件偏差不超过 2 个 60 Hz tick。
|
||||
- 同屏 20 个群体怪 + 2 个技能时,玩家和 Boss 的轮廓仍完整可见。
|
||||
- Snow/Volcano/Abyss 三个极端色板上各做一次实机 VFX 复测。
|
||||
|
||||
## 10. 字体、图标与可访问性
|
||||
|
||||
- 现有证据字体为 Galmuri11 Bold SDF;新项目可沿用“方圆混合像素标题 + 高可读正文”的体系,但需确认商用许可并准备中文简繁、英文、日文、韩文 fallback。
|
||||
- TMP 动态 CJK 字体图集 4096;发布前跑缺字扫描。数字用 Tabular Figures,货币变化不得水平跳动。
|
||||
- 图标先画 48×48 灰度稿,再扩到 256×256 母版;图标外轮廓至少 3 px,内细节不小于 4 px。
|
||||
- 红绿状态必须加形状:成功 = 勾/上箭头;危险 = 三角/裂纹;治疗 = 十字/上升粒子。
|
||||
- 选项:降低动态、降低闪光、高对比预警、伤害数字合并、文字速度、屏幕抖动 0/50/100%。
|
||||
|
||||
## 11. Unity 资源与技术规则
|
||||
|
||||
### 11.1 命名与导入
|
||||
|
||||
- 角色:CHR_{id}_{skin}_{action}_{frame};怪物:MON_{biome}_{family}_{variant}_{action}_{frame};Boss:BOSS_{id}_{phase}_{action}_{frame}。
|
||||
- 场景:ENV_{biome}_{Back|Mid|Front}_{index};UI:UI_{domain}_{component}_{state};VFX:VFX_{element}_{shape}_{variant}。
|
||||
- 世界角色与怪物:PPU 32、Point、无 mipmap、脚底 pivot y=0.08;UI 图集不得混用 Point 与 Bilinear 家族。
|
||||
- 角色/怪物 Android ASTC 6×6;Boss 与 VFX ASTC 4×4;核心 UI ASTC 6×6。存在压缩色带的透明渐变改为单通道遮罩 + 材质着色。
|
||||
|
||||
### 11.2 图集与加载
|
||||
|
||||
- UI 核心图集单张不超过 2048²;按 Core、Tile、Icon domain 拆分。
|
||||
- 场景按 Addressables/Biome_{biome} 分包;Boss 按 Addressables/Boss_{id} 独立;立绘按 Portraits 组。
|
||||
- 进入主题前预加载 Back/Mid/Front 与该主题怪物图集;主题切换后释放上一组,仅保留通用 UI、玩家和公共 VFX。
|
||||
- 移动端目标峰值纹理内存 ≤350 MB;低内存档将场景远景降一级分辨率,不能降低预警与文字清晰度。
|
||||
|
||||
完整导入预设见 [资源导入表](../art-bible/specs/asset-import-rules.csv)。
|
||||
|
||||
## 12. 生产流程与任务拆分
|
||||
|
||||
### 12.1 单资产 DoR(可开工条件)
|
||||
|
||||
派单必须包含:assetId、玩法职责、主题、目标框、屏幕比例、轮廓关键词、色板、必需状态/动作、参考证据、Unity 分组、截止时间和验收人。缺少玩法职责或屏幕尺寸不得开工。
|
||||
|
||||
### 12.2 标准管线
|
||||
|
||||
1. Brief:策划给出行为和读盘时限;主美选定形状语义。
|
||||
2. Silhouette:提交 3 个黑白缩略图,32×32/64×64 检查。
|
||||
3. Color Key:在六主题中最相近与最冲突的两张背景上测试。
|
||||
4. Production:完成母版、拆层、像素对齐、九宫格或动作关键姿势。
|
||||
5. Animation/VFX:先接逻辑事件,再做节奏和装饰;记录时序表。
|
||||
6. Integration:按导入预设进 Unity,检查 pivot、图集、材质、Addressables。
|
||||
7. QA:实机尺寸、灰度、色弱、低特效、低动态、最差主题、内存和 overdraw。
|
||||
|
||||
### 12.3 单主题最小交付包
|
||||
|
||||
| 类别 | 最小数量 | 内容 |
|
||||
|---|---:|---|
|
||||
| 场景 | 1 套 | Back、Mid、Front、Props、Ambient VFX、Grade |
|
||||
| 普通怪家族 | 4 | 近战、远程、冲锋、支援;每家族至少 2 变体 |
|
||||
| 精英 | 2 | 从普通家族派生但有非颜色标记 |
|
||||
| 中 Boss | 1 | 2 个攻击 + Break/Death |
|
||||
| Boss | 1 | 3 个攻击 + Entrance/Phase/Break/Death |
|
||||
| 节点/路径 | 1 套 | 普通、事件、奖励、Boss、锁定、完成、当前 |
|
||||
| VFX | 8 套 | 主题环境 2、敌技 3、Boss 技 2、奖励 1 |
|
||||
|
||||
## 13. 验收清单(Definition of Done)
|
||||
|
||||
### 13.1 UI
|
||||
|
||||
- [ ] 1080×1920、19.5:9 和窄屏三档无裁切,设备 Safe Area 生效。
|
||||
- [ ] 所有可点击区 ≥96×96 px,Pressed 反馈在 50 ms 内开始。
|
||||
- [ ] 中文 200% 长值、7 位货币、日文/韩文 fallback 不溢出。
|
||||
- [ ] 灰度下主次按钮、品质和节点状态仍可区分。
|
||||
- [ ] 教程指针落在真实可操作组件,弹窗不堆叠。
|
||||
|
||||
### 13.2 角色/怪物
|
||||
|
||||
- [ ] 32×32 黑剪影测试通过;玩家、普通怪、精英、Boss 不混淆。
|
||||
- [ ] pivot 与碰撞体在全部动作中稳定;收尾帧整数对齐。
|
||||
- [ ] 三类攻击的预备姿势和预警形状不同。
|
||||
- [ ] 20 个群体怪同屏仍能识别单体落点。
|
||||
|
||||
### 13.3 场景/VFX
|
||||
|
||||
- [ ] 六主题仅看缩略图即可区分;移除粒子仍可区分。
|
||||
- [ ] 角色、节点、地面预警与可走面在灰度下有至少一级明度分离。
|
||||
- [ ] Boss 伤害区与预警误差 ≤4 逻辑 px;命中与逻辑事件误差 ≤2 tick。
|
||||
- [ ] 低 VFX/降低动态模式保留全部危险信息。
|
||||
- [ ] 峰值粒子、纹理内存、透明叠层符合第 9、11 节预算。
|
||||
|
||||
### 13.4 清洁室与版权
|
||||
|
||||
- [ ] 样本只进入分析目录,不进入 Unity 发行资源目录。
|
||||
- [ ] 每个新资产保留草图、作者、源文件和导出记录。
|
||||
- [ ] 不复刻 Dice Lords 的具体角色、地图节点图案、面板比例、图标组合或文案。
|
||||
- [ ] 相似点限定在抽象设计原则:纵向读盘、强状态语义、粗描边、暗底高亮、路径引导。
|
||||
|
||||
## 14. 证据 → 发现 → 开发路径
|
||||
|
||||
### 14.1 证据登记
|
||||
|
||||
| Evidence | 文件/来源 | SHA-256 | 支持结论 |
|
||||
|---|---|---|---|
|
||||
| E-001 | [Dice Lords 当前窗口截图](../analysis/visual-study/screenshots/01-current.png) | 6CD9081A56A9C5C27FA6B4FF6AD85DFC481B1A897797E8B7A52648DB13BF917A | 纵向地图、粗描边 UI、教程层级、金色路径、状态徽记 |
|
||||
| E-002 | C:\Users\toshio\Documents\ChatGPT\SliceDice\analysis\heroll\assets-inventory\summary.json | E96D25C0DB81401792405268E188E51C218668BA182B6A1AC4DF12B81C0288FA | 204145 个对象、抽样范围无解析错误 |
|
||||
| E-003 | [视觉样本 manifest](../analysis/visual-study/unity-samples/manifest.csv) | 2CECF139A96DE0389B9D9772F9DFD365145B18E3450A439CCB87464365107C6A | UI、角色、场景、VFX 的源资产映射 |
|
||||
| E-004 | [动画清单](../analysis/visual-study/animation/animation-clips.csv) | 105DE25477CA113BE177340EEFE16256D1C585DF536A9DA9B563165A349241D9 | 416 条 clip 的时长、帧率与分类 |
|
||||
| E-005 | [配色证据板](../analysis/visual-study/evidence-boards/palette-evidence.png) | 4D4423FED12BAEF7344CF06EE37581D86688E7BBD6172FD1113F00F063DB1C32 | Dice Lords 画面与六主题主色关系 |
|
||||
|
||||
E-001 可用 [窗口截图脚本](../analysis/visual-study/scripts/capture_dice_lords_window.ps1) 在游戏已启动时重取;E-003、E-004、E-005 的生成脚本位于 analysis/visual-study/scripts/。
|
||||
|
||||
### 14.2 发现登记
|
||||
|
||||
| Finding | 等级 | 证据 | 结论 | 已落地规则 |
|
||||
|---|---|---|---|---|
|
||||
| F-001 | O + P | E-001、E-003 | Dice Lords 的高清卡通 UI 与 Heroll 的像素世界语言不同,必须明确分层 | 第 2、4、11 节 |
|
||||
| F-002 | O | E-003、E-005 | 六主题已有成对前后景和独立调色,可按主题包生产 | 第 7、12 节 |
|
||||
| F-003 | O + P | E-004 | 骰子、卡牌、战斗与 Boss 动作时长可形成统一表现基线 | 第 8、9 节 |
|
||||
| F-004 | O + P | E-003、E-004 | Boss 靠尺寸、标志物和独立动作序列承担章节高潮 | 第 6、8 节 |
|
||||
| F-005 | O + P | E-001、E-005 | 暗底 + 金色路径 + 紫面板可建立强视觉层级,但必须解决 Volcano/Stone 冲突 | 第 3、7 节 |
|
||||
|
||||
### 14.3 开发路径 P-001
|
||||
|
||||
实机可见画面 E-001 → 确立纵向地图/UI 层级 → Heroll 抽样 E-003/E-005 → 确立像素世界、六主题、色板冲突 → 动画清单 E-004 → 确立骰子/战斗/Boss 时序 → 输出五张规格表 → Unity 预设、资产派单和 QA 门禁。
|
||||
|
||||
## 15. 资源清点摘要
|
||||
|
||||
完整 Heroll 静态库存包含 204145 个 Unity 对象;与视觉制作直接相关的计数为:Sprite 2752、Texture2D 2662、AnimationClip 427、Material 261、ParticleSystem 5786、ParticleSystemRenderer 5786。本文仅从中导出 30 个可代表风格的贴图样本和 416 条可读 AnimationClip 记录;没有把“抽样”误写成“全量美术目录”。
|
||||
|
||||
## 16. 最终决策
|
||||
|
||||
1. 世界层不重绘成纯高清卡通;保留像素资产的生产效率和剪影优势。
|
||||
2. UI、教程、卡牌和立绘升级为粗描边绘本式语言,承接 Dice Lords 实机画面的强层级优点。
|
||||
3. 六主题不只换色,每套必须有独有材质、轮廓元素、环境运动和危险对比方案。
|
||||
4. 动画按 60 Hz 逻辑时间线管理,表现不能支配战斗逻辑。
|
||||
5. 所有重要信息至少使用颜色 + 形状两种编码;低动态与低特效不能丢失玩法信息。
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
# Heroll : Dice Roguelike 玩法、经济与商业化逆向审计
|
||||
|
||||
版本:1.0
|
||||
日期:2026-08-13
|
||||
用途:产品立项、系统设计、经济数值、客户端/服务端实现、商业化合规与 QA 验收
|
||||
|
||||
## 1. 执行结论
|
||||
|
||||
Heroll 的可确认核心是“公平双骰驱动棋盘推进 + 自动战斗/构筑选择 + 首领与循环成长 + 多层局外养成”。它不是单一抽卡游戏,也不是纯棋盘游戏:骰子提供不确定路线,地块把路线转换为战斗、奖励或事件,装备/遗物/Joker/宠物/坐骑等系统承担长期构筑,体力、票券、AFK、日周任务和赛季内容维持回访。
|
||||
|
||||
样本商业模式是高密度混合 F2P:
|
||||
|
||||
- 声明 397 条商品配置,其中 CASH 343、DIA 28、AD_WATCH 22、FREE 4。
|
||||
- 现金配置价位 0.99–119.99 美元,中位数 8.99;99 条低于 5 美元,11 条不低于 50 美元,2 条不低于 100 美元。该价格是配置值,不是当前地区商店报价。
|
||||
- 23 种抽取动作中有 7 种广告入口、1 种免费入口;样本保底配置含装备 20、强化装备 50、坐骑 400。
|
||||
- 同时存在奖励广告、插屏、去广告、体力/票券、抽卡、通行证、订阅/VIP、AFK 加速、猪猪存钱罐、阶段通关礼包和大量宠物/装备/遗物/坐骑成长商品。
|
||||
- 部分商品不只是加速,而是影响局内结果:首领防御、监狱脱出、好地块、开局装备和循环点数。
|
||||
|
||||
最重要的 GDD 修正是:现有 GDD 中“广告 + 可选抽卡/礼包、避免不可逆战力”的内容属于新项目建议,并不代表 Heroll 样本的实际商业化。样本实际包含直接战力与局内结果控制。后续开发应明确选择“高还原商业模型”或“公平骰子商业模型”,不能把两者混写。
|
||||
|
||||
本报告选择后者作为开发基线:付费购买节奏、外观与便利,不购买已生成随机结果的反悔权;所有战力有稳定免费路径;启动期只保留一个通行证、一个月卡和有限 SKU。
|
||||
|
||||
## 2. 证据边界与可信度
|
||||
|
||||
### 2.1 已验证
|
||||
|
||||
- XAPK 静态解包、Android 清单、Unity 资源表、IL2CPP 元数据名称、现有 GDD。
|
||||
- 158 张表、13,890 行结构化数据;核心棋盘、骰子、内容、资源、商店、抽卡、保底、AFK、通行证等参数。
|
||||
- 桌面 Google Play Games 版本成功启动并进入 Running/前台可见状态。
|
||||
- 运行时观察到 Normal 模式、boss_0 对应 Board_Boss001(Clone)、棋盘场景初始化与局内存档事件。
|
||||
- AppLovin MAX、奖励广告、插屏、Unity IAP/购买服务完成初始化或加载。
|
||||
|
||||
### 2.2 受限
|
||||
|
||||
样本是 Unity 6000.2.15f1、IL2CPP ARM64。受保护/噪声元数据限制,本轮恢复的是可读类型、字段和方法名,以及结构化资源表,不是完整原始 C# 方法体。本文提到“源码入口”时,准确含义是“由 IL2CPP 元数据恢复的方法签名与 Java/Android 包装层”,不是开发者源代码泄露。
|
||||
|
||||
桌面控制通道没有暴露可操作窗口,因此没有伪造逐按钮点击记录;本次“试玩”能确认启动、场景与系统初始化,但没有实际付款、广告领取、完整一局结算或逐页面 UI 走查。运行证据与静态结论在文中分开。
|
||||
|
||||
### 2.3 结论标签
|
||||
|
||||
| 标签 | 含义 |
|
||||
|---|---|
|
||||
| Validated | 表格、元数据、清单或运行日志直接支持 |
|
||||
| Inferred | 由类型/方法名、字段与多张表联合推断,方法体未恢复 |
|
||||
| Recommended | 面向新项目的设计决策,不宣称原作如此 |
|
||||
|
||||
## 3. 试玩与运行时观察
|
||||
|
||||
| 观察项 | 结果 | 结论级别 |
|
||||
|---|---|---|
|
||||
| 启动 | 包 com.percent.aos.rollinghero 成功启动,标题 Heroll : Dice Roguelike | Validated |
|
||||
| 运行环境 | 808×1440,60 FPS 上限,前台状态 Running/isVisible | Validated |
|
||||
| 场景 | Normal 模式;boss_0 → Board_Boss001(Clone);Board SceneManager Init Complete | Validated |
|
||||
| 局内状态 | Time tracking、double stack spawn、Ingame Save 日志出现 | Validated |
|
||||
| 广告 | 奖励广告与插屏加载完成 | Validated;加载不等于展示 |
|
||||
| 购买 | Percent.Purchase / Unity IAP 初始化成功 | Validated;初始化不等于成交 |
|
||||
| 商品可用性 | 当前 Google Play Games 会话中多个货币、体力、遗物、通行证、地块包和活动商品 unavailable | Validated;不能外推移动端永久状态 |
|
||||
| 稳定性 | 观察区间内没有致命崩溃 | Validated,限当前会话 |
|
||||
|
||||
脱敏运行证据见 ../analysis/gameplay-monetization/evidence/runtime-session-2026-08-13.md。
|
||||
|
||||
## 4. 玩法还原
|
||||
|
||||
### 4.1 核心循环
|
||||
|
||||
~~~mermaid
|
||||
flowchart LR
|
||||
A["消耗体力并创建 run_id"] --> B["投掷两枚骰子"]
|
||||
B --> C["提交随机结果与移动路径"]
|
||||
C --> D{"落点类型"}
|
||||
D -->|战斗| E["Prepare → Spawn → PreBattle → Fight → PostBattle"]
|
||||
D -->|奖励/商店/事件| F["获取资源或做构筑选择"]
|
||||
D -->|负面/Joker| G["承受或修正规则"]
|
||||
E --> H["装备、武器状态、增益与掉落"]
|
||||
F --> H
|
||||
G --> H
|
||||
H --> I{"首领/循环检查"}
|
||||
I -->|继续| B
|
||||
I -->|首领| J["Boss 战与阶段结算"]
|
||||
J --> K["局外成长、商店、任务、AFK"]
|
||||
K --> A
|
||||
~~~
|
||||
|
||||
元数据入口支持的调用链为 DiceButton.ClickButton/CanAutoRoll → BoardController.ClickDice/RollDice/MoveTile/HandlePlayerTileLanding → BattleController.Prepare/Spawn/PreBattle/Fight/BattleEnd。BoardController 还暴露 BossDiceCounter、AddLoopLevel、UseRevive 和存档/恢复入口。
|
||||
|
||||
### 4.2 骰子与棋盘
|
||||
|
||||
- 骰子表包含 36 个有序结果,每个权重 10,因此在未发现额外修正的基础表层是等概率的;其中 6 个为双骰相同。
|
||||
- 棋盘表 777 行:Normal 762、Hard 15;Normal 阶段 0–51,循环层 0–14。
|
||||
- 阶段表有 53 个 enabled stage,覆盖 6 个生态/主题区。
|
||||
- 地块共 82 个定义,46 个 enabled。地块不仅触发战斗,也承载商店、奖励、负面和特殊规则。
|
||||
- JokerEffectController 的方法名显示存在正负规则修正,例如生命损失、破坏增益、双倍掷骰点、按循环扣分、商店进入失败等。具体数值仍应以对应资源表为准。
|
||||
|
||||
设计意义:玩家的主决策不是“选骰面”,而是“在不可控移动中管理可控构筑”。因此付费若直接改写已提交骰面或落点,会伤害产品最核心的公平感。
|
||||
|
||||
### 4.3 战斗与构筑
|
||||
|
||||
- 战斗使用 Prepare → Spawn → PreBattle → Fight → PostBattle 五阶段,适合事件总线、可回放日志和明确的结算时点。
|
||||
- 样本可确认 202 个敌人、13 种武器状态、58 个 augment(31 enabled)、20 个 relic、65 个 Joker(61 enabled)、35 件 equipment。
|
||||
- 首领运行日志可见 boss_0;运行时资源列出 20 个常规首领与 6 个影子首领 prefab。
|
||||
- 基础暴击伤害参数为 150。未恢复完整伤害方法体,因此不在此杜撰最终伤害公式。
|
||||
- BoardController.UseRevive 证明存在复活链路;复活成本、次数与具体 UI 时机没有方法体或本次点击证据,应作为配置项实现。
|
||||
|
||||
推荐实现:所有战斗奖励只在 PostBattle 生成一次事务;动画可以重播,经济发放不可重放。装备、遗物、宠物和坐骑的属性计算必须使用统一 stat snapshot,方便服务端校验、回放和付费优势审计。
|
||||
|
||||
### 4.4 解锁与长期循环
|
||||
|
||||
样本表支持以下解锁节奏:
|
||||
|
||||
| 阶段 | 解锁 |
|
||||
|---|---|
|
||||
| 1 | 自动掷骰、AFK/离线收益 |
|
||||
| 2 | 强化抽取 |
|
||||
| 3 | 药水战斗 |
|
||||
| 4 | 无限/日常地牢 |
|
||||
| 5 | Raid、Destiny |
|
||||
| 6 | 收集系统 |
|
||||
| 第 6 天 | 坐骑相关内容 |
|
||||
|
||||
这是典型的分层留存设计:首日先让玩家理解掷骰、落点和战斗;随后逐步叠加 AFK、抽取、限次玩法、Raid 和收集。开发时应把解锁表做成数据配置,并用 feature_id + condition_type + condition_value 表达,避免客户端写死。
|
||||
|
||||
## 5. 经济系统还原
|
||||
|
||||
### 5.1 关键参数
|
||||
|
||||
| 系统 | 样本值 | 开发含义 |
|
||||
|---|---:|---|
|
||||
| 开局体力消耗 | 5 | 每次开始事务先扣除,技术退出可宽限恢复 |
|
||||
| 体力恢复 | 600 秒/1 | 必须使用服务端时间 |
|
||||
| 体力上限 | 40 | 约等于满体力 8 局 |
|
||||
| VIP 体力上限增量 | +20 | 属于付费便利,不应附带战斗属性 |
|
||||
| 每日局内钻石上限 | 100 | UI 应显示剩余额度 |
|
||||
| 药水票上限/恢复 | 10;3600 秒/1 | 到上限需通知,避免隐性浪费 |
|
||||
| 连胜保留钻石成本 | 100 | 属于损失规避型消费,应慎用 |
|
||||
| 周常地牢广告奖励 | +50 | 奖励广告入口 |
|
||||
| Raid 广告奖励 | +50 | 奖励广告入口 |
|
||||
|
||||
### 5.2 资源架构
|
||||
|
||||
经济不是简单的金币/钻石双币制,而是:
|
||||
|
||||
1. 软货币:金币、stage_gold 等,承担升级与日常商店。
|
||||
2. 硬货币:钻石,连接付费、抽卡、体力与部分局内辅助。
|
||||
3. 玩法票券:药水票、Raid 票、坐骑活动票等,分割玩法频次。
|
||||
4. 专属兑换币:遗物灵魂、Raid 币、Destiny 币,形成确定性目标。
|
||||
5. 进度资源:通行证经验、clearLoop、养成碎片。
|
||||
6. 局内辅助:道具 600–604 及其运行时消耗态,连接随机结果与商业化。
|
||||
|
||||
开发资源源汇、付费暴露和硬性护栏已经拆成 economy-resource-map.csv。所有资产变化都必须落 economy_flow,字段至少包含 transaction_id、resource_id、delta、balance_after、source_or_sink 和 reason。
|
||||
|
||||
### 5.3 AFK
|
||||
|
||||
样本 AFK 参数:
|
||||
|
||||
- 最长离线 1440 分钟。
|
||||
- 快速 AFK 等价 360 分钟,每日最多 3 次,消耗 15 体力。
|
||||
- 每日最多 1 次广告快速 AFK。
|
||||
- 倍率 1.0/1.2/1.5,权重 65/25/10。
|
||||
|
||||
推荐保留 24 小时上限和每日一次广告加速,但快速收益不应同时收取体力与现金。领取前显示确定收益;服务器重算时长,本机改时无效。
|
||||
|
||||
## 6. 商业化系统还原
|
||||
|
||||
### 6.1 商品目录
|
||||
|
||||
shopproductlist.csv 声明 397 条记录:
|
||||
|
||||
| 支付类型 | 条数 | 占比 |
|
||||
|---|---:|---:|
|
||||
| CASH | 343 | 86.4% |
|
||||
| DIA | 28 | 7.1% |
|
||||
| AD_WATCH | 22 | 5.5% |
|
||||
| FREE | 4 | 1.0% |
|
||||
|
||||
目录中包含大量永久/历史/季节/触发条目;“声明存在”不等于当前全部上架。当前 Google Play Games 会话确有多项 unavailable,说明目录、平台商品映射和实际可售状态必须分层。
|
||||
|
||||
审计脚本按内容物和命名做的启发式分类显示:宠物成长相关 146、钻石 63、阶段触发 45、装备成长 24、季节包 20、通行证 16、体力/票券 15、遗物成长 14、金币/AFK 11、局内结果控制 10、地块成长 10 等。该分类用于评审,不是官方商品 taxonomy。
|
||||
|
||||
### 6.2 抽卡与保底
|
||||
|
||||
gachatype.csv 支持 shop/pet、relic、advanced relic、equipment、advanced/enhanced equipment、superball 和 mount 等 23 种动作。7 个动作以广告驱动,1 个免费,其他使用钻石、遗物灵魂、活动票等。
|
||||
|
||||
gachaceildata.csv 的样本保底:
|
||||
|
||||
| 池 | 上限 | 达保底前是否重置 |
|
||||
|---|---:|---|
|
||||
| advanced equipment | 20 | 否 |
|
||||
| enhanced equipment | 50 | 否 |
|
||||
| mount | 400 | 是 |
|
||||
|
||||
坐骑 400 抽对新项目过深。推荐启动期硬保底不超过 80,并同时提供重复品转换、定向兑换、概率版本和可见的剩余保底。抽取必须服务端权威,扣费和发奖原子化。
|
||||
|
||||
### 6.3 通行证、订阅与日常消费
|
||||
|
||||
样本 normal pass 含 6 个日任务、9 个周任务、3 个挑战任务;普通玩法经验上限 200、高级上限 400;每日 3 次刷新;循环通关给予 10 XP。商品目录还包含普通、Raid、坐骑等多个 pass 家族以及 subscription/VIP。
|
||||
|
||||
dailypurchasereward.csv 使用购买点数 0/1/2/4/7/10/13 累进奖励,构成“当日继续消费以追下一档”的刺激层。建议新项目不采用,改为纯玩法活跃里程碑。
|
||||
|
||||
### 6.4 广告与去广告
|
||||
|
||||
Android 清单与 SDK 清单支持 AppLovin MAX 及多家聚合网络,Manifest 同时包含广告标识/AdServices 与 Google Play Billing。元数据入口包含:
|
||||
|
||||
- AdvertiseManager.ManagerInitProcessing、CheckInterstitialUser、ShowRewardVideoAsync、AddAdCount。
|
||||
- ResultView.ClickADReward、ClickWeekDungeonADReward、GetMultipleReward。
|
||||
- AFKView 广告领取与快速领取。
|
||||
- PrepareView.ShowADTicketBoost。
|
||||
|
||||
这说明广告不是单一结算加倍,而是跨结算、地牢、AFK、入场资源和商店的系统级货币入口。推荐首发只保留四个奖励位:结算加倍、每日体力、AFK 加速、商店刷新;每日完整奖励总上限 6。插屏只在返回大厅后的自然断点,至少 3 局且间隔 10 分钟。
|
||||
|
||||
### 6.5 直接战力与局内结果控制
|
||||
|
||||
item.csv 与商品表能对应出以下重点:
|
||||
|
||||
| 功能 | 样本获取方式 | 风险 |
|
||||
|---|---|---|
|
||||
| 首领防御/闪避 | 钻石/商品内容物 | 直接降低局内失败概率 |
|
||||
| 监狱脱出 | 钻石/商品内容物 | 付费消除随机惩罚 |
|
||||
| 好地块 | 钻石、广告、商品 | 改变落点收益体验 |
|
||||
| 开局装备 | 钻石、广告、商品 | 加快单局成型 |
|
||||
| 循环点数 | 钻石、广告、商品 | 加速进度/成长 |
|
||||
| 装备、宠物、遗物、坐骑 | 抽卡和现金礼包 | 长期直接战力 |
|
||||
|
||||
这是本次审计最关键的 Finding:样本实际商业化跨过“只卖便利”的边界。若新项目保留这些道具,必须改为局前选择、每类单局最多 1、均可游玩获得、排行榜禁用,且不得在玩家看到坏骰子或失败结果后即时售卖。
|
||||
|
||||
## 7. 源码/元数据调用链
|
||||
|
||||
~~~mermaid
|
||||
flowchart TB
|
||||
DB["DiceButton"] --> BC["BoardController"]
|
||||
BC --> BT["BattleController"]
|
||||
BC --> JE["JokerEffectController"]
|
||||
BT --> RV["ResultView"]
|
||||
PV["PrepareView"] --> BC
|
||||
|
||||
RV --> AD["AdvertiseManager"]
|
||||
AFK["AFKView"] --> AD
|
||||
GV["GachaButton"] --> SM["ShopManager / Purchase Service"]
|
||||
SP["ShopPage"] --> PC["PurchaseConfirmView"]
|
||||
PASS["PassView"] --> PC
|
||||
PS["PigBankView"] --> PC
|
||||
PC --> SM
|
||||
SM --> TX["平台回执校验"]
|
||||
TX --> WALLET["Wallet / Entitlement / Save"]
|
||||
AD --> WALLET
|
||||
~~~
|
||||
|
||||
调用链只证明系统边界和可调用入口。商品价格查找由 ShopManager 承担;PurchaseConfirmView 负责确认;ShopPage 包含阶段通关商品与每日商店刷新;SpecialShopView 包含每日购买点与奖励刷新;ResultView、AFKView 连接奖励广告;GachaButton 检查成本并扣除;PassView 校验商品与发奖。
|
||||
|
||||
开发建议把它重构为四个独立域:
|
||||
|
||||
1. GameplayDomain:骰子、棋盘、战斗、构筑、run save。
|
||||
2. EconomyDomain:钱包、资源流水、奖励预览、原子发放。
|
||||
3. CommerceDomain:目录、可用性、价格、本地化、回执、权益。
|
||||
4. AdsDomain:placement、资格、频控、播放证明、奖励事务。
|
||||
|
||||
UI 只能发意图,不直接改余额。无论广告还是 IAP,最后都进入统一 GrantReward(transaction_id, reward_bundle)。
|
||||
|
||||
## 8. 与现有 GDD 的差异
|
||||
|
||||
| 主题 | 现有 GDD 表述/倾向 | 样本证据 | 必须做出的开发决定 |
|
||||
|---|---|---|---|
|
||||
| 核心循环 | 双骰、棋盘、战斗、构筑、首领、局外成长 | 表格、元数据与运行日志一致 | 保留,作为产品身份 |
|
||||
| 随机公平 | 建议 deterministic seed 与可复现 | 36 结果基础等权;存在改运商品 | 坚持 seed 提交后不可付费改写 |
|
||||
| 商业模式 | 倾向广告 + 可选抽卡/礼包 | 397 商品、多 pass/订阅、直接战力与局内控制 | GDD 必须新增“样本现状”和“推荐规则”两列 |
|
||||
| 战力付费 | 建议不卖不可逆战斗力 | 装备/宠物/遗物/坐骑现金加速 | 新项目禁止现金专属属性,战力差设上限 |
|
||||
| 广告 | 建议可选广告 | 22 条 AD_WATCH,多个系统级入口,另有插屏 | 收敛 placement、设置日上限与插屏频控 |
|
||||
| 阶段礼包 | GDD 未充分展开 | 大量 stage clear/trigger 商品 | 仅成功后大厅展示;禁用失败后即时推销 |
|
||||
| 日购奖励 | GDD 未充分展开 | 0/1/2/4/7/10/13 购买点奖励 | 启动期移除,改玩法活跃里程碑 |
|
||||
| 平台商品 | 假设正常上架 | 当前 GPG 多项 unavailable | 目录与平台 availability 分离,空壳 SKU 隐藏 |
|
||||
|
||||
## 9. 推荐的首发商业模型
|
||||
|
||||
### 9.1 产品原则
|
||||
|
||||
1. 公平骰子:付费不改变已生成骰面和落点。
|
||||
2. 卖节奏不卖结局:体力、通行证和养成可加速,但免费玩家能在一个赛季达到所有关键门槛。
|
||||
3. 广告自愿:奖励广告关闭不扣基础奖励;插屏只在自然断点。
|
||||
4. 少而可懂:首发付费 SKU 不超过 12,一个通行证、一个月卡。
|
||||
5. 先展示价值再确认价格:内容、概率、保底、有效期和重复规则均在付款前可见。
|
||||
6. 技术可信:回执服务端校验,发货幂等,目录版本化,可恢复购买。
|
||||
|
||||
### 9.2 建议首发 SKU
|
||||
|
||||
| SKU 类型 | 数量 | 建议价位 | 内容边界 |
|
||||
|---|---:|---:|---|
|
||||
| 新手支持包 | 1 | 0.99 | 外观 + 少量通用资源;无专属战力 |
|
||||
| 钻石包 | 5 | 2.99/4.99/9.99/19.99/49.99 | 首购加赠只一次,赠送钻分账 |
|
||||
| 去插屏 | 1 | 2.99–4.99 | 永久去强制插屏,保留自愿奖励广告 |
|
||||
| 月卡 | 1 | 4.99–6.99 | 每日钻石、去插屏或便利;无战斗属性 |
|
||||
| 28 日通行证 | 1 | 7.99–9.99 | 外观、便利、确定性资源;单一高级轨 |
|
||||
| 里程碑庆祝包 | 2–3 | 2.99–9.99 | 仅成功后展示一次,无失败倒计时 |
|
||||
|
||||
启动期不启用 99.99/119.99 档、不启用猪猪存钱罐、不启用每日消费阶梯、不销售现金专属宠物/坐骑/装备词条。
|
||||
|
||||
### 9.3 付费优势预算
|
||||
|
||||
- 定义 EffectivePower = 关卡成功率、平均战斗时长和资源获取速度的归一化组合,而不是仅看面板战力。
|
||||
- 同等活跃度、同赛季的付费加速组相对免费组,P50 EffectivePower 优势不超过 15%。
|
||||
- 首通、竞速、排行榜模式禁用局内辅助道具。
|
||||
- 任何现金商品内容物都必须能映射到 free_acquisition_path;CI 检查为空则阻断发布。
|
||||
|
||||
## 10. 开发规格
|
||||
|
||||
### 10.1 事务状态机
|
||||
|
||||
购买状态:CatalogAvailable → UserConfirmed → PlatformPending → ReceiptVerified → Granted。失败和取消都不可发货;Granted 对同一 platform_transaction_id 幂等。
|
||||
|
||||
广告状态:Eligible → Loaded → Started → CompletedProof → Granted。Loaded 不记完成次数,播放失败不扣资格,CompletedProof 重复回调不重复发奖。
|
||||
|
||||
抽卡状态:Quote → CostReserved → ServerRolled → ResultCommitted → RewardGranted。任一步失败要么完整提交,要么完整回滚,禁止扣费成功但结果丢失。
|
||||
|
||||
### 10.2 配置键
|
||||
|
||||
| 配置 | 默认值 |
|
||||
|---|---|
|
||||
| energy.cost_per_run | 5 |
|
||||
| energy.regen_sec | 600 |
|
||||
| energy.base_cap | 40 |
|
||||
| energy.retry_grace_sec | 120 |
|
||||
| ad.rewarded.daily_cap | 6 |
|
||||
| ad.interstitial.min_runs | 3 |
|
||||
| ad.interstitial.cooldown_sec | 600 |
|
||||
| commerce.allow_midroll_offer | false |
|
||||
| offer.post_failure_disabled | true |
|
||||
| pass.duration_days | 28 |
|
||||
| pass.premium_tiers | 1 |
|
||||
| store.launch_sku_cap | 12 |
|
||||
| store.price_ceiling_usd | 49.99 |
|
||||
| gacha.pity_hard_cap | 80 |
|
||||
| power.paid_advantage_cap | 0.15 |
|
||||
| purchase.receipt_server_verify | true |
|
||||
|
||||
完整规则与验收条件见 ../design/gameplay-monetization/specs/economy-and-monetization-rules.csv。
|
||||
|
||||
### 10.3 QA 必测
|
||||
|
||||
- 固定 seed 下,付费/非付费账户的骰子序列一致。
|
||||
- 掷骰提交后没有购买、广告重掷或落点替换入口。
|
||||
- 断线重连不会重复扣体力、重复发结算、重复发广告奖励或重复发 IAP。
|
||||
- 拥有去插屏权益后不再请求强制插屏。
|
||||
- 商品 unavailable 时 UI 隐藏 SKU,且不留空价格按钮。
|
||||
- 概率、保底剩余、重复转换和卡池有效期在付款前两步内可见。
|
||||
- 失败后 30 分钟内阶段礼包曝光数为 0。
|
||||
- 免费玩家在模拟赛季中可以达到所有玩法门槛;付费组有效战力优势不超过 15%。
|
||||
- AFK 由服务端时间计算,修改本机时间不能增加收益。
|
||||
- 退款、延迟订单、恢复购买、重复回调、跨设备登录均有自动化用例。
|
||||
|
||||
## 11. Evidence → Finding → Path
|
||||
|
||||
### 11.1 Evidence
|
||||
|
||||
| ID | 证据 | SHA-256/状态 |
|
||||
|---|---|---|
|
||||
| E-101 | GPG 启动日志:包、标题、显示和 Running 状态 | 动态日志;脱敏摘录 |
|
||||
| E-102 | 广告与购买初始化日志 | 动态日志;脱敏摘录 |
|
||||
| E-103 | 当前平台多商品 unavailable | 动态日志;脱敏摘录 |
|
||||
| E-104 | Normal、boss_0、棋盘初始化与存档日志 | 动态日志;脱敏摘录 |
|
||||
| E-105 | 原始 XAPK | 439D532704AFCCDBEBA8C01AF7869552387CDE31651963D0A45541F252B94E2F |
|
||||
| E-106 | confirmed-parameters.json | DD99093E21F850C85AA1CE5806F77F9E8ED309F10A38AE17A50D272BE7584B0A |
|
||||
| E-107 | gameplay-types.csv | DC96B51FBFBC1232339A1F56E63513B823FEB7489386297B9072FB9DBD5B1FA9 |
|
||||
| E-108 | shopproductlist.csv | 698DED1525EFD8F6CFD87E3FB93818C357DA3016CB2367118A39D2B19B26DD1A |
|
||||
| E-109 | gachatype.csv | DEC5970C27A348DB0674B4E834130317D6B9917B1BF869804AA33BF1055D6D9D |
|
||||
| E-110 | system-summary.json | C29F1ED5039C1CCC88F5FA20B98CCE840FA78957ED8A7D7F60AFB03161269236 |
|
||||
| E-111 | 现有 GDD index.md | 8C0B05D8F0DB8207F9C1AF19D399A24EA54943530AE26F99468691A402EA6E03 |
|
||||
| E-112 | 原逆向报告 | FF8D0E0266931CB4C4FAD93A24A04851222B0399631D1F9747203F51DCF3C15A |
|
||||
|
||||
### 11.2 Findings
|
||||
|
||||
| ID | Finding | 证据 | 置信度 |
|
||||
|---|---|---|---|
|
||||
| F-101 | 双骰—棋盘—战斗—构筑—首领—局外成长是稳定核心循环 | E-104/E-106/E-107/E-111 | 高 |
|
||||
| F-102 | 样本采用广告、IAP、硬币、体力/票券、抽卡、通行证和订阅叠加的混合商业架构 | E-102/E-106/E-108/E-109 | 高 |
|
||||
| F-103 | 样本存在直接局内结果控制和长期战力付费,与 GDD 的克制建议不同 | E-106/E-108/E-111 | 高 |
|
||||
| F-104 | 397 条声明商品、343 条现金项和大量 trigger/pet 商品意味着商店复杂度与运营负担很高 | E-108 | 高 |
|
||||
| F-105 | 当前 GPG 购买服务初始化成功,但多项商品 unavailable;需要平台可用性层 | E-102/E-103 | 高,限当前平台会话 |
|
||||
| F-106 | AFK、日周任务、多副本、多个成长线与 pass 共同承担长期留存 | E-106/E-107/E-111 | 高 |
|
||||
|
||||
### 11.3 Paths
|
||||
|
||||
| ID | Path | 对应 Finding |
|
||||
|---|---|---|
|
||||
| P-101 | DiceButton → BoardController → BattleController → ResultView → Meta progression | F-101/F-106 |
|
||||
| P-102 | Shop/Gacha/Pass/PigBank → PurchaseConfirm → ShopManager/Purchase → Receipt → Wallet/Entitlement | F-102/F-103/F-104/F-105 |
|
||||
| P-103 | Result/AFK/Prepare → AdvertiseManager → CompletedProof → Reward transaction | F-102/F-105 |
|
||||
|
||||
## 12. 交付物
|
||||
|
||||
- 样本商业化标准化目录:../analysis/gameplay-monetization/tables/monetization-products.csv
|
||||
- 抽卡动作表:../analysis/gameplay-monetization/tables/gacha-actions.csv
|
||||
- 玩法/商业调用入口:../analysis/gameplay-monetization/tables/gameplay-commerce-callflow.csv
|
||||
- 统计摘要:../analysis/gameplay-monetization/tables/audit-summary.json
|
||||
- 可复现生成脚本:../analysis/gameplay-monetization/scripts/build_design_audit.py
|
||||
- 商业规则:../design/gameplay-monetization/specs/economy-and-monetization-rules.csv
|
||||
- 付费墙审计:../design/gameplay-monetization/specs/feature-paywall-audit.csv
|
||||
- 资源源汇:../design/gameplay-monetization/specs/economy-resource-map.csv
|
||||
- 埋点字典:../design/gameplay-monetization/specs/analytics-events.csv
|
||||
- 可筛选开发工作簿:../outputs/heroll-gameplay-monetization-20260813/Heroll_Gameplay_Monetization_Development_Pack.xlsx
|
||||
- 范围与时间线:../analysis/gameplay-monetization/case/scope.md、../analysis/gameplay-monetization/case/timeline.md
|
||||
|
||||
## 13. 最终产品决策
|
||||
|
||||
Heroll 值得借鉴的是“骰子制造局势、构筑解决局势”的张力,以及把短局、循环、首领、AFK 和多成长线串成长期产品的能力。最不应原样照搬的是高 SKU 密度、多个 pass/订阅层、当日购买阶梯,以及在坏随机或失败附近出售结果修正。
|
||||
|
||||
新项目的商业化应服从玩法:玩家可以为更多尝试、更快收集、更漂亮的表现和更省时间付费,但不能为撤销刚刚发生的坏骰子付费。这个边界一旦写进随机提交、商品触发和 QA 验收,玩法公平与收入系统才能长期共存。
|
||||
@@ -0,0 +1,194 @@
|
||||
# HEROLL 玩法验证 MVP 最新整合文档
|
||||
|
||||
> 版本:2026-08-24
|
||||
> 状态:当前可运行 DEMO 的规范基线
|
||||
> 范围:Grass 主题、10 层、单机玩法验证;不包含广告、局外成长、抽卡、付费或联网功能。
|
||||
|
||||
## 1. 本版锁定结论
|
||||
|
||||
1. 棋盘共有 **40 个独立实际地块**,不存在“10 个逻辑格映射 40 个画面格”。
|
||||
2. 双骰总点数就是移动步数:**1 点移动 1 个地块**。例如从 0 号起点 ROLL 出 10,角色顺时针逐格移动 10 次并停在 10 号地块。
|
||||
3. 棋盘固定不旋转。角色从底部起点出发,沿左侧、顶部、右侧顺时针移动。
|
||||
4. 普通战斗格按 1–4 个骷髅区分,严格对应 1–4 只怪物。
|
||||
5. 加入普通小 Boss 地块和污染 Boss 地块;暂不加入其他负面格或原作角落格。
|
||||
6. 战斗、两类小 Boss、商店或事件完整结算后,来源地块变成荒地。
|
||||
7. 每层只走完一圈。进入下一层后,荒地继续保持荒地,除非被 Boss 转化/污染机制或新增地块覆盖。
|
||||
8. 保留所有必要的移动、落地、战斗、UI 数字和结算动画;正常游玩不提供跳过动画或直接硬切界面的入口。
|
||||
9. 当前 DEMO 不显示任何广告按钮;死亡时仅允许源码复生祝福生效,否则进入失败结算。
|
||||
|
||||
## 2. 核心循环
|
||||
|
||||
\`\`\`text
|
||||
ROLL 双骰
|
||||
→ 显示两枚骰子和总点数
|
||||
→ 按总点数逐格顺时针移动
|
||||
→ 播放落地反馈
|
||||
→ 结算战斗 / 小Boss / 商店 / 事件 / 荒地
|
||||
→ 已结算功能格变荒地
|
||||
→ 越过起点进入下一层,恢复最大生命的30%
|
||||
→ 第10层击败最终Boss后胜利
|
||||
\`\`\`
|
||||
|
||||
角色从 39 号地块继续前进会越过 0 号起点。每次越过起点只触发一次楼层推进,不会重复结算起点,也不会在同一移动中再次触发其他落点。
|
||||
|
||||
## 3. 棋盘与地块完整清单
|
||||
|
||||
### 3.1 基础地块
|
||||
|
||||
| 地块 | 图形识别 | 数量/生成 | 停留作用 | 结算后 |
|
||||
|---|---|---:|---|---|
|
||||
| 起点 \`START\` | 蓝色起点图标 | 固定 1 个,索引 0 | 越过时进入下一层并恢复最大生命 30% | 永久保留 |
|
||||
| 荒地 \`EMPTY\` | 无功能图标的空格 | 初始剩余位置及已消耗位置 | 无事件、无战斗,落地后返回 ROLL | 继续保留,直到被合法覆盖 |
|
||||
| 普通战斗 1 骷髅 | 1 个骷髅 | 初始普通战斗池 | 生成 1 只普通怪物 | 胜利后变荒地 |
|
||||
| 普通战斗 2 骷髅 | 2 个骷髅 | 初始普通战斗池 | 生成 2 只普通怪物 | 胜利后变荒地 |
|
||||
| 普通战斗 3 骷髅 | 3 个骷髅 | 初始普通战斗池 | 生成 3 只普通怪物 | 胜利后变荒地 |
|
||||
| 普通战斗 4 骷髅 | 4 个骷髅 | 初始普通战斗池 | 生成 4 只普通怪物 | 胜利后变荒地 |
|
||||
| 普通小 Boss \`MINIBOSS\` | 原作普通 Boss 地块和怪箱图标 | 初始 1 个 | 触发小 Boss 战斗;怪物数量随机 1–4 | 胜利后变荒地 |
|
||||
| 污染 Boss \`INFECTED_BOSS\` | 原作污染 Boss 地块和污染怪箱图标 | 初始 1 个 | 触发污染小 Boss 战斗;未消灭时进入新层会污染普通战斗格,最多生效 3 次 | 胜利后变荒地 |
|
||||
| 商店 \`MERCHANT\` | 原作蓝色商店图标 | 第 3/6/9 层安装 | 打开 3 个固定丹药商品和 3 个随机商品 | 离开后变荒地 |
|
||||
|
||||
新局棋盘初始生成 13 个普通战斗格、1 个普通小 Boss、1 个污染 Boss、1 个本层核心事件和起点,其余位置为荒地。所有 40 个位置均可被角色真实停留。
|
||||
|
||||
### 3.2 事件地块
|
||||
|
||||
| ID | 地块 | 当前 DEMO 作用 | 结算后 |
|
||||
|---|---|---|---|
|
||||
| EV-137 | 铁匠铺 | 选择已装备物品强化;按品质使用 80%/50%/30%/10%/0% 基础成功率,失败时装备被分解 | 荒地 |
|
||||
| EV-138 | 灵泉/营火 | 恢复最大生命 30%,不超过上限 | 荒地 |
|
||||
| EV-139 | 传奇装备 | 生成 1 件传奇装备并进入标准装备比较 | 荒地 |
|
||||
| EV-140 | 挖掘 | 5×5 棋盘,基础 5 次挖掘;获得局内点数或装备 | 荒地 |
|
||||
| EV-141 | 宝箱 | 生成 1 件普通掉落池装备并进入装备比较 | 荒地 |
|
||||
| EV-142 | 彩票 | 单次随机结算;当前验证收益为 100/20/7/0 点 | 荒地 |
|
||||
| EV-143 | 21 点 | 当前验证版自动比较玩家与庄家点数,奖励 18/5/0 点 | 荒地 |
|
||||
| EV-144 | 祝福点 | 揭示并接受 1 个祝福 | 荒地 |
|
||||
| EV-151 | 抓娃娃 | 基础 1 次,当前验证成功率 55%;成功获得装备 | 荒地 |
|
||||
| EV-152 | 黄金马车 | 二选一:恢复最大生命 20%,或获得 15 点 | 荒地 |
|
||||
| EV-164 | 骰子机 | 掷 3 枚 D6;三同 50 点、对子 15 点,否则获得最大骰面点数 | 荒地 |
|
||||
| EV-166 | 泡泡射手 | 基础 3 发,每发获得 1–6 点 | 荒地 |
|
||||
|
||||
事件格使用各自的 \`Installtile_*\` 原作图标。当前不加入未确认的负面格、角落格或额外事件种类。
|
||||
|
||||
## 4. 地块生命周期与跨层规则
|
||||
|
||||
每个功能地块在一局中遵循同一条生命周期:
|
||||
|
||||
\`\`\`text
|
||||
功能地块
|
||||
→ 玩家落地
|
||||
→ 完整播放进入与结算动画
|
||||
→ 战斗胜利或事件退出/领取完成
|
||||
→ 该位置变为荒地
|
||||
→ 进入下一层仍保持荒地
|
||||
\`\`\`
|
||||
|
||||
允许覆盖荒地的来源只有两类:
|
||||
|
||||
- Boss 2+4 行动将合法的非起点、非祝福位置转为普通战斗格。
|
||||
- 过层或商店购买产生的新增地块安装到合法荒地。
|
||||
|
||||
污染 Boss 自身未被消灭时,每次进入新层让现存普通战斗格的怪物数 \`+1\`,最高 4 只,同时污染层级 \`+1\`,最多生效 3 次。它不会覆盖起点或祝福格。
|
||||
|
||||
## 5. Boss 行动规则
|
||||
|
||||
Boss Gauge 不是“玩家攻击几次、Boss 攻击一次”的战斗条。它只统计玩家完成的 ROLL 行动:
|
||||
|
||||
1. 玩家先完成 2 次 ROLL,右侧显示 \`0/2 → 1/2\`。
|
||||
2. 第二次 ROLL 后进入 4 次 ROLL 倒计时,显示 \`4 → 3 → 2 → 1 → 0\`。
|
||||
3. 倒计时结束后,播放 Boss 警示、棋盘震动和逐格转化动画。
|
||||
4. Boss 将 4 个互不重复的合法地块变为普通战斗格。
|
||||
5. 祝福格和起点不会被转化。
|
||||
6. 行动结束后回到玩家 2 次 ROLL 的蓄势阶段,循环继续。
|
||||
|
||||
## 6. 战斗与难度
|
||||
|
||||
- 普通战斗格的骷髅数就是本场敌人数,不允许图标与实际敌人数不一致。
|
||||
- 1–4 敌人的单体攻击倍率分别为 \`1.00 / 0.72 / 0.58 / 0.48\`,避免多目标简单叠加造成不可控秒杀。
|
||||
- 普通小 Boss 和污染 Boss 的怪物数量权重为 \`60% / 25% / 10% / 5%\`,分别对应 1/2/3/4 只。
|
||||
- 小 Boss 在同层普通敌人基线上使用 \`生命 ×1.18、攻击 ×1.12\`。
|
||||
- 玩家和敌人自动攻击,保留反击。玩家战斗中的唯一即时主动输入是丹药。
|
||||
- 初始配置已加入新手容错,自动化用例要求不使用丹药、广告或调试强化也能连续击败前三组普通怪物。
|
||||
|
||||
## 7. 丹药
|
||||
|
||||
全局只有一种丹药。商店固定提供三个丹药商品:
|
||||
|
||||
| 商品 | 作用 |
|
||||
|---|---|
|
||||
| 补充丹药 | 增加 1 瓶,但不能超过当前持有上限 |
|
||||
| 增加上限 | 持有上限永久增加 1 瓶 |
|
||||
| 增加恢复量 | 提升这唯一一种丹药的基础恢复量 |
|
||||
|
||||
当前验证实现按逆向配置使用固定 HP 基础曲线 \`50、80、110……650\`;最大生命百分比治疗由独立丹药祝福叠加。丹药只在战斗中可使用,恢复不超过最大生命。进入下一层的 30% 恢复属于楼层机制,不消耗丹药。
|
||||
|
||||
## 8. 主要 UI 位置
|
||||
|
||||
| 区域 | 位置 | 内容与作用 |
|
||||
|---|---|---|
|
||||
| 局内货币 | 左上 | 当前局内点数 |
|
||||
| AUTO / 暂停 | 右上 | 自动战斗状态与暂停入口 |
|
||||
| 楼层进度 | 右侧竖条 | 当前层/总层数、Boss 蓄势或倒计时 |
|
||||
| 棋盘 | 画面中上部 | 40 个实际地块、中心 Boss、玩家棋子和顺时针路线 |
|
||||
| 玩家状态 | 棋盘下方 | 当前层、等级、生命值与生命条 |
|
||||
| 装备 | 底部中间 | 武器、戒指、手套、鞋四个固定槽 |
|
||||
| 属性查看 | 左下 | 打开角色属性与调试验收入口 |
|
||||
| ROLL | 底部中央 | 唯一的棋盘主操作;掷骰期间锁定 |
|
||||
| 丹药 | 右下 | 显示当前瓶数/上限;仅战斗中可用 |
|
||||
|
||||
地块必须优先通过原作图标辨认,文字只作为辅助,不允许玩家只能依赖颜色或猜测地块功能。
|
||||
|
||||
## 9. 动画与节奏硬约束
|
||||
|
||||
以下表现均必须保留一段可读动画或反馈:按钮按下、双骰滚动和定格、总点数显示、逐格移动、落地、过层恢复、战斗进入、双方攻击与受击、伤害和治疗数字、反击、胜利/失败、装备比较、祝福、商店购买、事件操作、源码祝福复生和最终结算。
|
||||
|
||||
正常游玩不得提供跳过这些动画的按钮,也不得在 ROLL 后直接把角色硬跳到最终地块。调试入口可加速战斗,但不能改变点数、步数、落点或结算顺序。
|
||||
|
||||
## 10. 当前验证结果
|
||||
|
||||
| 验收项 | 结果 |
|
||||
|---|---|
|
||||
| TypeScript 严格编译 | 通过 |
|
||||
| 核心自动测试 | 24/24 通过 |
|
||||
| 40 个独立实际地块 | 通过 |
|
||||
| 可见 ROLL 总点数 = 动画步数 = 最终索引差 | 通过 |
|
||||
| 1–4 骷髅 = 1–4 只怪物 | 通过 |
|
||||
| 两类小 Boss 与三次污染 | 通过 |
|
||||
| 战斗/事件变荒地且跨层保留 | 通过 |
|
||||
| Boss 2+4 循环并转化 4 个地块 | 通过 |
|
||||
| 浏览器完整冒烟 | 通过 |
|
||||
| 原作 UI/地块资源还原测试 | 通过 |
|
||||
| 广告按钮数量 | 0 |
|
||||
|
||||
## 11. 证据到实现
|
||||
|
||||
| 证据 | 结论 | 实现路径 |
|
||||
|---|---|---|
|
||||
| 用户标注图 1 | 点数必须与实际地块步数一一对应 | \`ROLL → dice sum → animateMovement(sum) → tileIndex\` |
|
||||
| 用户标注图 2 | HUD、棋盘、装备、ROLL、丹药采用原作关卡内布局 | \`main.ts\` 渲染层 + \`styles.css\` 固定锚点 |
|
||||
| 用户标注图 3 | 1–4 骷髅、小 Boss、污染 Boss 是不同战斗地块 | \`TileState.kind/enemyCount\` → 独立原作资源 → \`startBattle\` |
|
||||
| 用户本轮确认 | 已触发地块变荒地并跨层保留;暂不加入其他负面格 | \`clearTileAfterResolution\` → \`EMPTY\` → 过层保留 |
|
||||
| 自动测试与实机截图 | 规则、移动和资源加载可重复验证 | \`mvp/tests/core.test.mjs\`、\`browser-smoke.mjs\`、\`restoration.test.mjs\` |
|
||||
|
||||
## 12. 运行与复验
|
||||
|
||||
双击项目根目录:
|
||||
|
||||
\`\`\`text
|
||||
HEROLL_MVP_START.cmd
|
||||
\`\`\`
|
||||
|
||||
完整验证:
|
||||
|
||||
\`\`\`powershell
|
||||
cd C:\Users\toshio\Documents\ChatGPT\heroll\mvp
|
||||
.\Validate-Heroll-MVP.ps1
|
||||
\`\`\`
|
||||
|
||||
启动器自检(不打开浏览器):
|
||||
|
||||
\`\`\`cmd
|
||||
set HEROLL_MVP_SELF_TEST=1
|
||||
HEROLL_MVP_START.cmd
|
||||
\`\`\`
|
||||
|
||||
更细的公式、数据表和技术契约见 \`design/gameplay-validation/Heroll_Gameplay_Validation_GDD.md\`;原作视觉证据和还原边界见 \`analysis/reference-study/RESTORATION_REPORT.md\`。
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
# HEROLL 丹药与 Boss 循环逆向纠错报告
|
||||
|
||||
> 日期:2026-08-24
|
||||
> 工具链:IL2CPP 元数据、runtime-decrypted `libil2cpp.so`、radare2 6.2.0、配置表、公开资料交叉检索、TypeScript/Playwright
|
||||
> Scope:[case scope](../work/20260824-heroll-potion-gauge/scope.md) · [timeline](../work/20260824-heroll-potion-gauge/timeline.md)
|
||||
|
||||
## 结论
|
||||
|
||||
1. `potion.csv` 的 `HealLevel.value=50/80/110…650` 是固定 HP,不是最大生命百分比。独立的 `Potion_PercentHeal(valueA=10)` 才额外增加 10% 最大生命恢复。
|
||||
2. Boss 循环按负责人实机确认实现:玩家 ROLL 2 次后开启 4 次 ROLL 倒计时;倒计时结束逐个把 4 个非祝福玩家地块变成怪物地块,然后回到 0/2。
|
||||
3. 旧双击启动器闪退来自 LF-only UTF-8 CMD 与 Windows PowerShell 5.1 的 BOM-less UTF-8 解码问题;已改为 ASCII+CRLF CMD、UTF-8 BOM+CRLF PS1,并加入错误留窗和端到端自测。
|
||||
|
||||
## Evidence
|
||||
|
||||
| ID | 证据 | 复现 | Hash |
|
||||
|---|---|---|---|
|
||||
| E-001 | `potion.csv` 的 21 级曲线 | 见 [E-001](../work/20260824-heroll-potion-gauge/evidence/E-001.md) | `8049…EFA99` |
|
||||
| E-002 | `GetPotionFinalHeal @ 0x5473568` native 方法体 | 见 [E-002](../work/20260824-heroll-potion-gauge/evidence/E-002.md) | `AC35…00DA` |
|
||||
| E-003 | Gauge 更新、spawn 调用与清零链 | 见 [E-003](../work/20260824-heroll-potion-gauge/evidence/E-003.md) | `43CE…5CD` |
|
||||
| E-004 | 公开资料没有精确基础公式 | 见 [E-004](../work/20260824-heroll-potion-gauge/evidence/E-004.md) | n/a |
|
||||
| E-005 | 负责人实机 2+4+4 规则确认 | 见 [E-005](../work/20260824-heroll-potion-gauge/evidence/E-005.md) | n/a |
|
||||
| E-006 | MVP、浏览器与启动器验收 | 见 [E-006](../work/20260824-heroll-potion-gauge/evidence/E-006.md) | n/a |
|
||||
|
||||
## Findings
|
||||
|
||||
| ID | 状态 | 置信度 | 结论 |
|
||||
|---|---|---|---|
|
||||
| F-001 | validated | high | HealLevel 是固定 HP;PercentHeal 是独立百分比加项 |
|
||||
| F-002 | validated | high | Boss 是 2 ROLL 蓄势 + 4 ROLL 倒计时 + 转换 4 格 |
|
||||
| F-003 | validated | high | 启动器故障由 CMD/PS1 编码与换行兼容性造成 |
|
||||
|
||||
完整字段见 [findings.md](../work/20260824-heroll-potion-gauge/findings.md)。
|
||||
|
||||
## Path
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
cfg["HealLevel 固定值"] --> base["基础恢复 HP"]
|
||||
pct["PercentHeal 10% Max HP"] --> add["额外恢复"]
|
||||
base --> sum["相加"]
|
||||
add --> sum
|
||||
adaptive["Adaptive multiplier"] --> final["除以 100 后取整"]
|
||||
sum --> final --> clamp["生命上限钳制"]
|
||||
```
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Build0
|
||||
Build0 --> Build1: ROLL 1
|
||||
Build1 --> Countdown4: ROLL 2
|
||||
Countdown4 --> Countdown3: ROLL 3
|
||||
Countdown3 --> Countdown2: ROLL 4
|
||||
Countdown2 --> Countdown1: ROLL 5
|
||||
Countdown1 --> BossAction: ROLL 6
|
||||
BossAction --> Convert4: 逐格感染动画
|
||||
Convert4 --> Build0: 重置循环
|
||||
```
|
||||
|
||||
完整调用路径见 [path.md](../work/20260824-heroll-potion-gauge/path.md)。
|
||||
|
||||
## 复现命令
|
||||
|
||||
```powershell
|
||||
C:\Users\toshio\Tools\radare2\bin\radare2.exe -q -c "e asm.lines=false; s 0x5473568; af; pdf; q" work\heroll-stage-2-5\libil2cpp.runtime-decrypted.so
|
||||
cd mvp
|
||||
.\Validate-Heroll-MVP.ps1
|
||||
cd ..
|
||||
cmd.exe /d /c "set HEROLL_MVP_SELF_TEST=1&& call HEROLL_MVP_双击启动.cmd"
|
||||
```
|
||||
|
||||
## 遗留边界
|
||||
|
||||
- `2 + 4 + 转换 4 格` 的精确时序来自负责人实机确认;bounded native 证据只闭环 Gauge 增量、范围、spawn 调用和清零。
|
||||
- 其他丹药强化若需要宣称“原作完整还原”,仍应逐个恢复 native 消费者;当前 MVP 保留已实现的验证语义。
|
||||
@@ -0,0 +1,125 @@
|
||||
# HEROLL 小游戏配置恢复报告
|
||||
|
||||
> 分析日期:2026-08-24
|
||||
> 方式:本地 APK 已提取资源表与 IL2CPP 元数据静态分析;公开资料只做跨版本语义核对
|
||||
> 结论:三个缺表小游戏的数据已经定位,足够制作 DEMO 模拟;抓娃娃概率解释仍需保守处理。
|
||||
|
||||
## 范围与结论
|
||||
|
||||
授权、目标和限制见 [case scope](../work/heroll-minigame-config/scope.md)。本次没有安装、修改、重打包或动态 Hook APK,也没有访问游戏账号或实时服务。
|
||||
|
||||
“三个配置表小游戏”按本地文件命名可确定为:
|
||||
|
||||
| 小游戏 | 原始配置 | 可恢复内容 | DEMO 可用性 |
|
||||
|---|---|---|---|
|
||||
| 泡泡射手 | `bubbleshooterminigame.csv` | 6 个地图模板、37 行、空位 `-1`、四色 `0..3` | 可按模板模拟 |
|
||||
| 抓娃娃 | `clawcraneminigame.csv` | 10 类胶囊、奖励类型/数量、尺寸、`Prob/goodProb` 原值 | 可模拟抓取;概率暂不自行归一化 |
|
||||
| Hero Body 挖掘 | `herobodyminigame.csv` | 7 种形状、16 行占位掩码、普通/稀有/史诗/传奇四组图 | 可按形状布置模拟 |
|
||||
|
||||
## 可直接录入的数据
|
||||
|
||||
### 三个缺表小游戏
|
||||
|
||||
泡泡射手模板行数为 `6/6/5/7/6/7`,合计 37 行。每行保存一个气泡横排;`-1` 为空,`0..3` 为四种颜色。`newtile.csv` 对事件 166 另有 `values=3,18,0,3,5,10`,但各下标语义未由方法体完全闭合,因此 DEMO 应把数组保持为配置,不给字段擅自命名。
|
||||
|
||||
抓娃娃表的 10 类奖励如下:
|
||||
|
||||
| tier | 奖励 | 数量 | goodProb | Prob | 尺寸 |
|
||||
|---:|---|---:|---:|---:|---|
|
||||
| 6 | empty | 0 | 0 | 40 | 0.5 |
|
||||
| 6 | point | 1 | 0 | 70 | 0.9 |
|
||||
| 0 | trash | 1 | 0 | 0 | 1.0–1.2 |
|
||||
| 0 | potion | 1 | 0 | 14 | 0.8 |
|
||||
| 1 | normal equipment | 1 | 0 | 40 | 0.8 |
|
||||
| 2 | rare equipment | 1 | 0 | 0 | 0.8 |
|
||||
| 3 | epic equipment | 1 | 0 | 0 | 0.8 |
|
||||
| 4 | legendary equipment | 1 | 1 | 0 | 0.8 |
|
||||
| 5 | augment | 1 | 0 | 0 | 0.8 |
|
||||
| 5 | potionAugment | 1 | 0 | 0 | 0.8 |
|
||||
|
||||
表头韩文注释说明场上出现 20 个胶囊。由于 `Prob` 总和并非普通百分比总和,且多个高品质行是 0,DEMO 不应把这列直接除以总和。可以用固定场景布局演出并按奖励类型结算,等方法体闭合后再替换抽取器。
|
||||
|
||||
Hero Body 的 7 种形状为 `dot`、`small_I`、`boomerang`、`square`、`large_I`、`large_L`、`large_T`;每个形状由若干 `shapeRow` 布尔掩码组成,并绑定四档品质图片。这个表足够生成挖掘形状,不需要再发明形状概率。
|
||||
|
||||
### 同批恢复的其他小游戏数值
|
||||
|
||||
| 配置 | 已恢复数值 |
|
||||
|---|---|
|
||||
| 二十一点 / Dice Battle | 目标和 2..12 的奖励:`0,5,12,20,32,47,64,95,140,200,300` |
|
||||
| 拆卡包 | 费用 `5/10/15`;四档权重分别 `65/20/10/5`、`60/20/15/5`、`55/20/15/10`;奖励数量分别 `3/4/5/7`、`6/8/10/15`、`8/12/15/25` |
|
||||
| 骰子机 | 6 种对子、6 种三连与 1 个未匹配,共 13 个结果模式;奖励覆盖点数、普通/稀有装备、免费次数、祝福、地块和丹药 |
|
||||
| 黄金马车 | 生命阈值 `≤75% / ≤30% / ≤0%`;点数范围 `1–2 / 2–3 / 3–4`,装备最大数 `1/2/3` |
|
||||
|
||||
骰子机原始模式使用零基值 `0..5`。对子模式权重/值依次为 `20,25,50,20,30,35`,三连为 `4,4,6,2,4,4`,未匹配为 `50`。这里的 `value` 应原样交给权重选择器,不要当作百分比文案显示。
|
||||
|
||||
## Evidence → Finding → Path
|
||||
|
||||
### Evidence
|
||||
|
||||
| ID | source_ref | hash | 复现 |
|
||||
|---|---|---|---|
|
||||
| E-001 | 三个 `*minigame.csv` | 见 [E-001](../work/heroll-minigame-config/evidence/E-001.md) | `Get-FileHash` + 跳过注释/类型行后解析 CSV |
|
||||
| E-002 | 五个相关事件表 | 见 [E-002](../work/heroll-minigame-config/evidence/E-002.md) | 直接读取 CSV 原始行 |
|
||||
| E-003 | `04_assembly-csharp.json` | `BA6D…F526` | 搜索四个 View 类与方法名 |
|
||||
| E-004 | 公开社区资料 | n/a | 仅作跨版本语义核对 |
|
||||
|
||||
### Findings
|
||||
|
||||
#### F-001
|
||||
- severity: n/a_re
|
||||
- category: reverse_algo
|
||||
- status: validated
|
||||
- evidence_ids: [E-001, E-002]
|
||||
- location: extracted CSV configuration
|
||||
- impact: 三个缺表小游戏与四个相关小游戏可以按配置做确定性 DEMO。
|
||||
- confidence: high
|
||||
- remediation: n/a
|
||||
|
||||
#### F-002
|
||||
- severity: n/a_re
|
||||
- category: reverse_algo
|
||||
- status: validated
|
||||
- evidence_ids: [E-001, E-003]
|
||||
- location: `clawcraneminigame.csv` / `ClawGameView`
|
||||
- impact: 奖励目录与尺寸可信,但 `Prob/goodProb` 的完整运行时解释没有闭合;错误归一化会改变原作产出。
|
||||
- confidence: high
|
||||
- remediation: DEMO 使用固定场景或显式模拟权重,保留原字段以便后续替换。
|
||||
|
||||
#### F-003
|
||||
- severity: n/a_re
|
||||
- category: other
|
||||
- status: validated
|
||||
- evidence_ids: [E-004, E-001]
|
||||
- location: public wiki vs local 2.0.1 tables
|
||||
- impact: 社区资料可确认玩法目标,不能覆盖本地版本配置。
|
||||
- confidence: medium
|
||||
- remediation: 本地配置优先,社区资料只补 UI 文案与玩法说明。
|
||||
|
||||
### P-001(solve)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[APK 已提取资源表] -->|E-001/E-002| B[恢复地图、形状、奖励和阈值]
|
||||
B -->|E-003| C[用 IL2CPP 元数据确认对应 View/结算入口]
|
||||
C --> D{方法体语义是否闭合}
|
||||
D -->|是| E[按配置实现]
|
||||
D -->|否| F[固定模拟并保留原字段]
|
||||
E --> G[小游戏 DEMO]
|
||||
F --> G
|
||||
```
|
||||
|
||||
残余风险:抓娃娃概率与 `newtile.values` 下标语义仍不可宣称为原作公式;这不阻塞当前 MVP 模拟。
|
||||
|
||||
## 复现与交付
|
||||
|
||||
PowerShell 复现示例:
|
||||
|
||||
```powershell
|
||||
$csvRoot = 'HEROLL_APK_REVERSE_ONLY\01_core_reverse_archive\resource-tables\extracted\csv'
|
||||
$rows = Get-Content -LiteralPath (Join-Path $csvRoot 'bubbleshooterminigame.csv') |
|
||||
Select-Object -Skip 1 | ConvertFrom-Csv | Select-Object -Skip 1
|
||||
$rows | Group-Object templateKey | Select-Object Name, Count
|
||||
```
|
||||
|
||||
Case 时间线见 [timeline](../work/heroll-minigame-config/timeline.md),工作项见 [workitems](../work/heroll-minigame-config/workitems.md)。公开资料参见 [HEROLL Tiles](https://heroll.fandom.com/wiki/Tiles) 与 [HEROLL Blessings](https://heroll.fandom.com/wiki/Blessings)。
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
# HEROLL 逆向美术资源归类报告
|
||||
|
||||
> 分析日期:2026-08-25
|
||||
> 范围:本地 Unity 逆向归档,离线静态分析与资源导出
|
||||
> 结论:已建立 24,859 条视觉相关对象目录,识别 6,431 条资产对象,并成功导出 2,964 张可直接审阅的 PNG。
|
||||
|
||||
## 执行摘要
|
||||
|
||||
目标是 Unity 2D 像素游戏资源。核心美术数据集中在 `sharedassets3.assets`、`sharedassets4.assets`、`level3`、`level4`、`level6` 等容器。视觉语言由像素角色/棋盘场景、高清像素 UI、Sprite 动画与大量粒子组件构成。
|
||||
|
||||
| 分类 | 资产对象 | 去重名称 | 典型内容 |
|
||||
|---|---:|---:|---|
|
||||
| UI | 2,333 | 1,204 | 按钮、面板、图标、HUD、商店、抽卡、奖励、教程 |
|
||||
| 待人工复核 | 1,624 | 950 | 无语义命名的 Sprite/Texture2D |
|
||||
| 角色 | 772 | 390 | 玩家、Boss、怪物、宠物、NPC、装备拆件 |
|
||||
| 动作/动画 | 619 | 614 | 427 AnimationClip、180 Controller、12 Override Controller |
|
||||
| VFX | 456 | 301 | 斩击、发光、火焰、冲击、粒子贴图与技术资源 |
|
||||
| 场景 | 332 | 215 | 六类生态背景、棋盘 Tile、环境道具、地图层 |
|
||||
| 技术美术 | 290 | 69 | Material、Shader、Mesh、RenderTexture |
|
||||
| 字体 | 5 | 5 | 本地化字体资源 |
|
||||
|
||||
另记录 5,786 个 ParticleSystem、5,786 个 ParticleSystemRenderer、982 个 Animator、430 个 Tilemap 等场景组件,用于依赖与复杂度评估,不与独立资产对象混算。
|
||||
|
||||
## 资源位置与使用方式
|
||||
|
||||
- 全量目录:[`art-asset-catalog.csv`](../work/heroll-art-assets/catalog/art-asset-catalog.csv)
|
||||
- 已分类 PNG:[`classified-assets`](../work/heroll-art-assets/classified-assets)
|
||||
- 导出清单与哈希:[`export-manifest.csv`](../work/heroll-art-assets/catalog/export-manifest.csv)
|
||||
- 同名/重复关系:[`duplicate-logical-assets.csv`](../work/heroll-art-assets/catalog/duplicate-logical-assets.csv)
|
||||
- 人工复核队列:[`manual-review-queue.csv`](../work/heroll-art-assets/catalog/manual-review-queue.csv)
|
||||
- 已有证据板:[`evidence-boards`](../analysis/visual-study/evidence-boards)
|
||||
- 动画明细:[`animation-clips.csv`](../analysis/visual-study/animation/animation-clips.csv)
|
||||
|
||||
导出目录结构为:
|
||||
|
||||
```text
|
||||
classified-assets/
|
||||
UI/<subcategory>/Sprite/
|
||||
Scene/<subcategory>/{Sprite,Texture2D}/
|
||||
Character/<subcategory>/{Sprite,Texture2D}/
|
||||
VFX/<subcategory>/{Sprite,Texture2D}/
|
||||
UnclassifiedVisual/<subcategory>/{Sprite,Texture2D}/
|
||||
```
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[Unity APK/XAPK 逆向归档] --> B[204,145 条对象索引]
|
||||
B --> C[视觉类型与名称规则]
|
||||
C --> D[6,431 条资产对象]
|
||||
C --> E[18,428 条组件证据]
|
||||
D --> F[去重 Sprite/Texture2D]
|
||||
F --> G[2,964 张分类 PNG]
|
||||
D --> H[人工复核队列 1,624 条]
|
||||
```
|
||||
|
||||
## 美术分类结论
|
||||
|
||||
### UI
|
||||
|
||||
UI 是最大可直接生产参考类,包含战斗 HUD、Boss/骰子图标、按钮控件、面板框体、商店/抽卡/奖励、装备与教程。命名规律以 `btn`、`icon`、`panel`、`bg`、`shop`、`gacha`、`reward`、`ingame`、`tutorial` 为主。UI 与世界层共用像素语言,但面板和控件的描边、九宫格与信息密度更高。
|
||||
|
||||
### 场景
|
||||
|
||||
场景资源呈明显分层:`chapter_select_back_*` 是远景,`chapter_select_front_*` 是前景城墙/地表。确认草原、沙漠、火山、石地、深渊、雪地六类生态。棋盘资源由 Tilemap、Tile、节点、地面与路径元素组成。
|
||||
|
||||
### 角色
|
||||
|
||||
角色以小尺寸像素精灵为主,分玩家骑士、Boss、普通敌人、宠物/支援、NPC 与装备拆件。Boss 使用大轮廓、武器和头饰强化辨识;玩家与怪物动作帧存在独立贴图与 Sprite 组合。
|
||||
|
||||
### 动作与特效
|
||||
|
||||
共 427 个 AnimationClip。现有动画规则清单中已归出 Boss 67、战斗 38、骰子 15、棋盘/Tile 10、奖励/抽卡 29、局外/大厅 4,剩余 233 个待进一步语义标注。特效侧同时存在贴图序列、材质/Mesh 和粒子组件;仅以贴图数量衡量会严重低估特效规模。
|
||||
|
||||
### 技术美术与字体
|
||||
|
||||
技术美术包含 261 个 Material、61 个 Shader、4 个 Mesh、13 个 RenderTexture。字体包含 5 个 Font 与配套材质/纹理。当前索引容器没有 AudioClip 或 VideoClip;工作区中的 MP4 为参考录像,不应混入游戏美术资产目录。
|
||||
|
||||
## Evidence
|
||||
|
||||
| ID | source_ref | content_hash | repro_command |
|
||||
|---|---|---|---|
|
||||
| E-001 | `work/heroll-art-assets/catalog/art-asset-catalog.csv` | `5F4EEAA9587073807BE13B4EA8A024A628DC36247386C653CE201AC21CEBE12C` | 运行 `work/heroll-art-assets/scripts/classify_art_assets.py` |
|
||||
| E-002 | `work/heroll-art-assets/catalog/export-manifest.csv` | `BC4EFF100EB21744507907AD73BEF978E0240E53B5726753C431D218C72AEC0C` | 运行 `work/heroll-art-assets/scripts/export_classified_visuals.py` |
|
||||
| E-003 | `analysis/visual-study/evidence-boards/*.png` | n/a | 打开角色、场景、UI、VFX 四张证据板 |
|
||||
| E-004 | `analysis/visual-study/animation/summary.json` | n/a | 读取动画统计与时长区间 |
|
||||
|
||||
## Findings
|
||||
|
||||
| ID | 结论 | evidence_ids | confidence | location | status |
|
||||
|---|---|---|---|---|---|
|
||||
| F-001 | 目标为 Unity 2D 像素项目,美术资源以 Sprite/Texture2D、Tilemap、Animator 和 ParticleSystem 组织 | E-001,E-003 | high | Unity 资产归档 | validated |
|
||||
| F-002 | UI 是最大可命名资产族;场景为六生态分层背景与棋盘 Tile 体系 | E-001,E-003 | high | sharedassets3/4 | validated |
|
||||
| F-003 | 动作资源至少含 427 Clip、180 Controller、12 Override Controller | E-001,E-004 | high | sharedassets3-7 | validated |
|
||||
| F-004 | 成功导出 2,964 张 PNG;5 张字体纹理因流路径解析失败 | E-002 | high | classified-assets | validated |
|
||||
| F-005 | 1,624 条资产缺少足够语义命名,需要结合缩略图进行二次人工标注 | E-001,E-002 | high | manual-review-queue.csv | validated |
|
||||
|
||||
## Path
|
||||
|
||||
### P-001 美术资源还原路径
|
||||
|
||||
- path_type: solve
|
||||
- start: APK/XAPK 解包后的 Unity 资产容器
|
||||
- goal: 可审阅、可追溯、可继续人工精修的分类资源库
|
||||
- steps:
|
||||
1. 读取 Unity 对象清单并筛出视觉类型 — E-001 — F-001
|
||||
2. 依据类型、名称与人工样例划分 UI/场景/角色/动作/VFX — E-001,E-003 — F-002,F-003
|
||||
3. 以 Sprite 优先、Texture2D 去重策略导出 PNG — E-002 — F-004
|
||||
4. 将低语义命名资产送入人工复核队列 — E-001,E-002 — F-005
|
||||
- residual_risks: 规则分类存在少量跨类资源;ParticleSystem 的完整材质/贴图依赖尚未反向连边。
|
||||
|
||||
## 复现
|
||||
|
||||
```powershell
|
||||
& 'C:\Users\toshio\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' `
|
||||
'C:\Users\toshio\Documents\ChatGPT\heroll\work\heroll-art-assets\scripts\classify_art_assets.py'
|
||||
|
||||
& 'C:\Users\toshio\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe' `
|
||||
'C:\Users\toshio\Documents\ChatGPT\heroll\work\heroll-art-assets\scripts\export_classified_visuals.py'
|
||||
```
|
||||
|
||||
## 资源管理建议
|
||||
|
||||
1. 以 `category/subcategory/type` 作为物理目录,以 `asset_id` 作为不可变追溯键。
|
||||
2. 保留 Sprite 与 Texture2D 的逻辑重复关系,不直接删除原对象;发布库只保留 Sprite 优先导出结果。
|
||||
3. 先处理 `manual-review-queue.csv` 中面积大、字节高、重复次数少的资产,收益最高。
|
||||
4. 下一阶段应建立 `AnimationClip → Sprite/Renderer` 与 `ParticleSystem → Material → Texture` 依赖图,才能形成可迁移的完整资源包。
|
||||
|
||||
## 限制
|
||||
|
||||
- 本轮是离线静态分析,未运行游戏验证每个资源的实际屏幕归属。
|
||||
- 规则分类是生产级初筛,不替代美术负责人最终确认。
|
||||
- `tool-index.md` 在技能包中缺失;本轮使用了已验证的本机 Python、UnityPy 与 Pillow 路径。
|
||||
- 5 张 `Font Texture` 未导出,错误已完整记录在 `export-manifest.csv`。
|
||||
|
||||
## Timeline
|
||||
|
||||
完整记录见 [`timeline.md`](../work/heroll-art-assets/timeline.md)。
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user