幻兽帕鲁配种算法公式(逆推得出,不保证准确)
声明:本文所说算法,是通过解包数据 + 实测配种数据 逆推出来的算法,不保证100%正确,如有错误,请大家见谅,一切以游戏内实际情况为准。
渲染中...
> 声明:本文所说算法,是通过解包数据 + 实测配种数据 逆推出来的算法,不保证100%正确,如有错误,请大家见谅,一切以游戏内实际情况为准。
>
> 在线配种计算器工具:https://www.maingamers.com/zh/games/palworld/tools/breeding
---
## 1. 算法总览
配种由四层决策组成:
```
输入:亲本 A、亲本 B
│
├─① DT_PalCombiUnique 特例表命中 → 返回固定子代
│
├─② 同种自交(A.id === B.id)且 A 可作子代 → 返回自身
│
└─③ 常规公式
├─ target = floor((CombiRank_A + CombiRank_B + 1) / 2)
├─ 按规则构建子代候选池 pool
└─ 在 pool 中选 |CombiRank - target| 最小者;距离相同则按平局规则决胜
```
---
## 2. 数据来源与字段
### 2.1 数据表
| 表 | 解包路径 | 用途 |
|----|----------|------|
| `DT_PalMonsterParameter` | `Pal/DataTable/Character/DT_PalMonsterParameter.json` | 帕鲁参数 |
| `DT_PalCombiUnique` | `Pal/DataTable/Character/DT_PalCombiUnique.json` | 特例配种 |
### 2.2 参与计算的字段
| 字段 | 作用 |
|------|------|
| `CombiRank` | 计算 target;选子代距离;平局比较 |
| `IgnoreCombi` | 亲本可用、子代不可用;影响子代池与平局 |
| `Tribe` | 特例表亲本匹配 |
| `Gender` | 特例表可选条件 |
| `ZukanIndex` | 亲本/子代准入(须 ≥ 0) |
| `ZukanIndexSuffix` | B 变体识别;子代池与平局 |
| `IsBoss` / `IsTowerBoss` / `IsRaidBoss` | 子代池排除 |
| `ChildCharacterID` | 特例子代输出 |
### 2.3 术语
- **IgnoreCombi 亲本**:`IgnoreCombi === true` 的帕鲁可作亲本,不可作公式子代。
- **B 变体**:`ZukanIndexSuffix` 非空(通常为 `B`),与标准行 CombiRank 可不同。
- **单方传说组合**:恰一方 `IgnoreCombi`(`oneLegend`)。
- **dominantNonLegend**:非 IgnoreCombi 亲本中 CombiRank 较大者。
---
## 3. 索引构建
对 `DT_PalMonsterParameter` 中 `IsPal=true` 的每一行:
1. **Canonical 行**:同一 `BPClass` 多行时取标准行(`sourceKey === BPClass`);排除 `BOSS_`/`RAID_`/`GYM_`/`QUEST_` 等内部行及 `*_Oilrig`、`*_Tower`。
2. **亲本池** `breedable`:`CombiRank` 有效(< 9000)、有图鉴号、非 Raid/Tower Boss、非内部变体;`IgnoreCombi=true` 亦可作亲本。
3. **子代池** `childCandidates`:满足亲本条件,且 `IgnoreCombi=false`、非 `IsBoss`。
---
## 4. 特例配种
查 `DT_PalCombiUnique`:按双亲 `Tribe` 匹配(顺序无关),`Gender` 条件满足则返回 `ChildCharacterID`,不再走公式。
---
## 5. 同种自交
`parentA.id === parentB.id` 且该帕鲁在子代池中 → 子代为自身。
---
## 6. 常规公式
### 6.1 target
```
target = floor((CombiRank_父A + CombiRank_父B + 1) / 2)
```
### 6.2 子代候选池
记 `nonB` = 无 B 后缀的子代候选,`maxParentRank` = max(亲本 CombiRank)。按顺序执行,命中即结束:
**规则 A — 亲本带 B 后缀**
```
若 父A 或 父B 的 ZukanIndexSuffix === "B"
→ pool = nonB
```
**规则 B — 双方 IgnoreCombi**
```
若 父A.ignored && 父B.ignored
→ pool = nonB 中排除 CombiRank === target 的候选
```
**规则 C — 单方 IgnoreCombi + 高繁殖力非传说**
```
若 oneLegend && dominantNonLegend.rank >= 1700
probe = 子代候选 \ { B 且 CombiRank === target }
若 probe 中最近 B 的 |rank - target| >= 20
→ pool = nonB
```
**规则 D — 基础池与唯一最近 B**
```
pool = 子代候选 \ { B 且 CombiRank === target }
poolNonB = pool 中的非 B
poolB = pool 中的 B
bestBDist = poolB 到 target 的最小距离
bestNDist = poolNonB 到 target 的最小距离
uniqueClosestB = 距 target 最近且距离 === bestBDist 的 B 恰好 1 只
若 bestBDist < bestNDist 且 uniqueClosestB:
若 oneLegend:
若 dominantNonLegend.rank >= 1000
→ 从 pool 剔除该唯一最近 B 行,保留 pool
否则
→ pool = poolNonB
否则
→ pool = poolNonB
```
**规则 E — 最近档全 B(双方非 IgnoreCombi)**
```
tierDist = pool 到 target 的最小距离
tier = pool 中 |rank - target| === tierDist 的候选
若 非 oneLegend
且 tier 中均为 B 变体
且 bestNDist - tierDist >= 10
且 maxParentRank > 2000
→ pool = poolNonB
```
**规则 F — 默认**
```
返回当前 pool
```
### 6.3 选子代
在 `pool` 中取 `|CombiRank - target|` 最小者;多个同距则进入平局规则。
---
## 7. 平局规则
设 `best` 与 `candidate` 距 target 相同。
### 7.1 同类型(都 B 或都非 B)
```
若 均为 B 变体 且 oneLegend 且 650 <= maxParentRank < 1200:
若一方 rank < target、另一方 rank >= target
→ 取 rank < target 者
否则
→ 取 CombiRank 更大者
否则:
→ 取 CombiRank 更大者
```
### 7.2 混合(一方 B、一方非 B)
按序判断,命中即返回:
| 条件 | 结果 |
|------|------|
| `oneLegend` 且 `dominantNonLegend.rank > 1000` | 优先 `CombiRank >= target` 一侧;同侧取更大 CombiRank |
| `maxParentRank >= 1500` | 优先非 B |
| `650 <= maxParentRank < 1100` | 取 CombiRank 更大者 |
| 其余 | 优先非 B |
END
评论
登录后查看和发表评论
前往登录