パルワールド配合アルゴリズム公式(逆算により導き出したものであり、正確性は保証できません)
声明:本記事で述べられているアルゴリズムは、データ解析と実際の配合データに基づいて逆算されたものであり、100%の正確性を保証するものではありません。誤りがある場合はご容赦ください。全てゲーム内の実際の状況を基準とします。
レンダリング中...
> 声明:本文所说算法は、データ解包と実測の配合データから逆算したアルゴリズムであり、100%の正確性を保証するものではありません。誤りがある場合はご容赦ください。すべてゲーム内の実際の状況を基準とします。
>
> オンライン配合計算ツール:https://www.maingamers.com/ja/games/palworld/tools/breeding
---
## 1. アルゴリズム概要
配合は4層の意思決定で構成されます:
```
入力:親 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
コメント
ログインしてコメントを閲覧・投稿してください
ログインへ