Palworld Zuchtalgorithmus-Formel (durch Reverse ermittelt,keine Garantie für die Richtigkeit)
Disclaimer: Der in diesem Artikel vorgestellte Algorithmus wurde durch das Entpacken von Daten und die Analyse von tatsächlich gesammelten Zuchtdaten rückentwickelt. Es kann keine 100%ige Korrektheit garantiert werden. Wir bitten um Ihr Verständnis für eventuelle Fehler. Ausschlaggebend ist immer die tatsächliche Situation im Spiel.
Wird gerendert...
Haftungsausschluss: Der in diesem Artikel beschriebene Algorithmus wurde durch das Entpacken von Daten und die Rückentwicklung von tatsächlichen Zuchtdaten abgeleitet. Wir können keine 100%ige Richtigkeit garantieren. Bitte entschuldigen Sie etwaige Fehler. Alle Informationen basieren auf den tatsächlichen Gegebenheiten im Spiel.
Online-Zuchtrechner-Tool: https://www.maingamers.com/games/palworld/tools/breeding
---
## 1. Algorithmus-Übersicht
Die Zucht besteht aus vier Entscheidungsebenen:
```
Eingabe: Elternteil A, Elternteil B
│
├─① DT_PalCombiUnique Ausnahmetabelle-Treffer → Gibt ein festes Kind zurück
│
├─② Inzucht derselben Art (A.id === B.id) und A kann ein Kind sein → Gibt sich selbst zurück
│
└─③ Reguläre Formel
├─ target = floor((CombiRank_ElternteilA + CombiRank_ElternteilB + 1) / 2)
├─ Erstellt einen Kandidatenpool für Kinder (pool) gemäß den Regeln
└─ Wählt den Kandidaten im pool mit dem kleinsten |CombiRank - target|; bei gleichem Abstand entscheidet die Gleichstandsregel
```
---
## 2. Datenquellen und Felder
### 2.1 Datentabellen
| Tabelle | Entpackungspfad | Verwendung |
|----|----------|------|
| `DT_PalMonsterParameter` | `Pal/DataTable/Character/DT_PalMonsterParameter.json` | Pal-Parameter |
| `DT_PalCombiUnique` | `Pal/DataTable/Character/DT_PalCombiUnique.json` | Spezialzucht |
### 2.2 Felder, die in die Berechnung einfließen
| Feld | Funktion |
|------|------|
| `CombiRank` | Berechnet target; Abstand zur Kindauswahl; Gleichstandsvergleich |
| `IgnoreCombi` | Elternteil nutzbar, Kind nicht nutzbar; beeinflusst den Kinderpool und Gleichstand |
| `Tribe` | Elternteil-Abgleich in der Ausnahmetabelle |
| `Gender` | Optionale Bedingung in der Ausnahmetabelle |
| `ZukanIndex` | Zulassung für Elternteil/Kind (muss ≥ 0 sein) |
| `ZukanIndexSuffix` | B-Varianten-Erkennung; Kinderpool und Gleichstand |
| `IsBoss` / `IsTowerBoss` / `IsRaidBoss` | Ausschluss aus dem Kinderpool |
| `ChildCharacterID` | Ausgabe des speziellen Kindes |
### 2.3 Terminologie
- **IgnoreCombi-Elternteil**: Ein Pal mit `IgnoreCombi === true` kann als Elternteil verwendet werden, aber nicht als Kind in der Formel.
- **B-Variante**: Ein nicht-leeres `ZukanIndexSuffix` (normalerweise `B`), kann einen anderen CombiRank als die Standardzeile haben.
- **Einseitige Legendäre Kombination**: Genau ein Elternteil hat `IgnoreCombi` (`oneLegend`).
- **dominantNonLegend**: Der Elternteil ohne IgnoreCombi mit dem höheren CombiRank.
---
## 3. Indexerstellung
Für jede Zeile in `DT_PalMonsterParameter` mit `IsPal=true`:
1. **Kanonische Zeile**: Bei mehreren Zeilen mit derselben `BPClass` wird die Standardzeile (`sourceKey === BPClass`) verwendet; interne Zeilen wie `BOSS_`/`RAID_`/`GYM_`/`QUEST_` sowie `*_Oilrig` und `*_Tower` werden ausgeschlossen.
2. **Elternteil-Pool** `breedable`: Gültiger `CombiRank` (< 9000), mit Zukan-Index, kein Raid-/Tower-Boss, keine interne Variante; `IgnoreCombi=true` kann ebenfalls als Elternteil verwendet werden.
3. **Kinder-Pool** `childCandidates`: Erfüllt die Elternteil-Bedingungen, und `IgnoreCombi=false`, kein `IsBoss`.
---
## 4. Spezialzucht
Überprüfung von `DT_PalCombiUnique`: Abgleich nach `Tribe` beider Elternteile (Reihenfolge irrelevant), wenn die `Gender`-Bedingung erfüllt ist, wird `ChildCharacterID` zurückgegeben und die Formel nicht weiter angewendet.
---
## 5. Inzucht derselben Art
`parentA.id === parentB.id` und der Pal befindet sich im Kinderpool → Das Kind ist er selbst.
---
## 6. Reguläre Formel
### 6.1 target
```
target = floor((CombiRank_ElternteilA + CombiRank_ElternteilB + 1) / 2)
```
### 6.2 Kinder-Kandidatenpool
Sei `nonB` = Kinderkandidaten ohne B-Suffix, `maxParentRank` = max(CombiRank der Elternteile). Ausführung in Reihenfolge, bei Treffer beendet:
**Regel A — Elternteil mit B-Suffix**
```
Wenn ZukanIndexSuffix von Elternteil A oder Elternteil B === "B"
→ pool = nonB
```
**Regel B — Beide IgnoreCombi**
```
Wenn ElternteilA.ignored && ElternteilB.ignored
→ pool = Kandidaten aus nonB, die CombiRank === target haben, werden ausgeschlossen
```
**Regel C — Einseitiges IgnoreCombi + Nicht-Legendäres mit hoher Zuchtfähigkeit**
```
Wenn oneLegend && dominantNonLegend.rank >= 1700
probe = Kinderkandidaten \ { B und CombiRank === target }
Wenn der nächste B in probe einen |rank - target| >= 20 hat
→ pool = nonB
```
**Regel D — Grundpool und einziges nächstes B**
```
pool = Kinderkandidaten \ { B und CombiRank === target }
poolNonB = Nicht-B-Kandidaten im pool
poolB = B-Kandidaten im pool
bestBDist = Minimaler Abstand von poolB zu target
bestNDist = Minimaler Abstand von poolNonB zu target
uniqueClosestB = Genau 1 B, das target am nächsten ist und dessen Abstand === bestBDist ist
Wenn bestBDist < bestNDist und uniqueClosestB:
Wenn oneLegend:
Wenn dominantNonLegend.rank >= 1000
→ Entferne diese einzigartige nächste B-Zeile aus pool, behalte pool
Sonst
→ pool = poolNonB
Sonst
→ pool = poolNonB
```
**Regel E — Nächste Stufe nur B (beide nicht IgnoreCombi)**
```
tierDist = Minimaler Abstand von pool zu target
tier = Kandidaten im pool, bei denen |rank - target| === tierDist
Wenn nicht oneLegend
und alle in tier sind B-Varianten
und bestNDist - tierDist >= 10
und maxParentRank > 2000
→ pool = poolNonB
```
**Regel F — Standard**
```
Gibt den aktuellen pool zurück
```
### 6.3 Kindauswahl
Wählt im `pool` denjenigen mit dem kleinsten `|CombiRank - target|`; bei mehreren mit gleichem Abstand wird die Gleichstandsregel angewendet.
---
## 7. Gleichstandsregeln
Angenommen, `best` und `candidate` haben den gleichen Abstand zu target.
### 7.1 Gleicher Typ (beide B oder beide nicht B)
```
Wenn beide B-Varianten sind und oneLegend und 650 <= maxParentRank < 1200:
Wenn ein rank < target und der andere rank >= target
→ Wählt den mit rank < target
Sonst
→ Wählt den mit dem höheren CombiRank
Sonst:
→ Wählt den mit dem höheren CombiRank
```
### 7.2 Gemischt (ein B, ein Nicht-B)
Prüfung in Reihenfolge, bei Treffer wird zurückgegeben:
| Bedingung | Ergebnis |
|------|------|
| `oneLegend` und `dominantNonLegend.rank > 1000` | Priorisiert die Seite mit `CombiRank >= target`; auf derselben Seite den höheren CombiRank wählen |
| `maxParentRank >= 1500` | Priorisiert Nicht-B |
| `650 <= maxParentRank < 1100` | Wählt den mit dem höheren CombiRank |
| Sonstiges | Priorisiert Nicht-B |Kommentar
Melde dich an, um Kommentare anzuzeigen und zu veröffentlichen
Zur Anmeldung