Post-Effekte und Loot-Pools: die zwei Hälften einer Truhe
Die Gewichte eines Loot-Pools entscheiden, was fällt; der Befehl /posteffect entscheidet, wie es sich anfühlt. Beides sind Zahlen, die man prüfen kann, bevor man das Datenpaket schreibt.
Ein gewichteter Loot-Pool und ein /posteffect-Befehl werden normalerweise in verschiedenen Dateien von verschiedenen Leuten geschrieben, und sie scheitern auf dieselbe Weise: Die Zahlen werden nie geprüft, bevor das Datenpaket ausgeliefert wird. Beides lässt sich günstig vorab verifizieren.
Der Loot-Pool ist Arithmetik, kein Bauchgefühl
Ein Pool-Eintrag hat ein weight, und die Chance eines Eintrags ist sein Gewicht geteilt durch die Summe aller Gewichte in diesem Pool. Es gibt keine versteckte Normalisierung und kein Minimum — ein Gewicht von 0 bedeutet, dass der Eintrag nie gewürfelt wird, und ein Pool, dessen Gewichte sich zu irgendetwas aufsummieren, verhält sich immer gleich. Die Falle ist das Mischen von Würfen: Ein Pool mit rolls: 2 zieht zweimal, also erscheint ein Eintrag mit einem Viertel des Gewichts in ungefähr der Hälfte aller Truhen, nicht in einem Viertel.
| Eintrag | Gewicht | Anteil an einem Wurf |
|---|---|---|
| Eisenbarren | 20 | 20 ÷ 40 = 50% |
| Goldbarren | 12 | 30% |
| Diamant | 8 | 20% |
Füge einen vierten Eintrag mit Gewicht 40 hinzu, und jede Zahl oben halbiert sich. Das ist die ganze Balancing-Arbeit, und deshalb ist „die Diamantrate fühlt sich falsch an" fast immer ein Gewicht, das man vergessen hat zu skalieren.
Loot-Tabellen sind eine der größeren Registry-Familien im Spiel — die 26.2-Daten, die diese Seite erfasst, listen 1355 davon — also ist ein Pool, über den man nicht numerisch nachdenken kann, ein Pool, den man von Hand nie fertig abstimmen wird.
/posteffect ist ein Snapshot-Befehl
Java's /posteffect ist ein Befehl aus der Snapshot-Ära und existiert in aktuellen Release-Builds nicht, und es gibt überhaupt kein Bedrock-Äquivalent. Bedrock handhabt Bildschirmtönung stattdessen über Ressourcenpakete und das Kamera-Shake-System, also lässt sich ein Java-Tutorial hier nicht übertragen.
Der Befehl nimmt eine Effekt-ID und eine Stärke, und die Stärke ist ein Float statt eines Prozentsatzes. Effekte sind eine kleine Registry — 40 in den 26.2-Daten — also ist die ID-Liste kurz genug, um sie von Hand zu prüfen statt zu raten. Das Nennen eines Effekts, der nicht existiert, schlägt in manchen Snapshot-Builds still fehl, was der zweite Grund ist, vor dem Festschreiben zu verifizieren.
Wo die beiden aufeinandertreffen
Eine Truhe, die einen seltenen Gegenstand fallen lässt, und eine Truhe, die einen gewöhnlichen fallen lässt, sollten nicht identisch aussehen. Würfle zuerst den Pool, um die echte Verteilung zu erhalten, und wähle dann die Post-Effekt-Stärke, die dazu passt, wie oft der Spieler sie tatsächlich sehen wird. Die andere Reihenfolge erzeugt einen dramatischen Effekt, der ständig ausgelöst wird, was als Rauschen wahrgenommen wird.
Für ein Stadt-Bauwerk bedeutet das normalerweise einen Effekt mit niedriger Stärke auf dem gewöhnlichen Pool und den starken reserviert für den Eintrag mit dem kleinsten Gewicht — dasselbe Verhältnis, das man bereits berechnet hat.
Baue den /posteffect-Befehl und würfle den gewichteten Pool in den Post Effect & Loot Tools.