Initial import of HEROLL source and design documents
This commit is contained in:
@@ -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)。
|
||||
|
||||
Reference in New Issue
Block a user