Smart Calculators

Smart

Calculators

ZDoom Schaden- und DPS-Rechner

Berechne den exakten Schadensbereich, den erwarteten DPS und die Zeit bis zum Kill für jede Waffe oder jedes Geschoss in ZDoom / GZDoom. Mit random(1,8)-Multiplikator, STRIFEDAMAGE-Flag und Tic-zu-Sekunden-Konverter für ACS-Skripte.

ZS>ZDoom Schaden und DPS

Schadensbereich, DPS und Tic-Konverter für Doom-Modder.

Berechnet Min/Schnitt/Max-Schaden für jedes Geschoss, jede Hitscan-Waffe oder eine eigene DamageFunction.

Schadensformel

Nutzt Damage × random(1, 8) — die Standard-Geschossformel von ZDoom.

Wähle ein Vanilla-Doom-Geschoss, um Damage automatisch zu füllen. Wenn du Damage später änderst, springt das Preset auf Benutzerdefiniert.

dmg

Das N nach Damage in DECORATE/ZScript (z. B. Damage 3 beim Imp-Feuerball).

Strife-artiger Multiplikator: damage × random(1, 4) statt × random(1, 8). Funktioniert mit jedem Actor in jedem ZDoom-Mod unabhängig vom Basis-Spiel.

Erwarteter Schaden pro Treffer
13,5
3–24 pro Treffer, Schnitt 13,5
Damage 3 × random(1, 8)
Minimaler Schaden pro Treffer
3
Maximaler Schaden pro Treffer
24

Schadensverteilung

random(1, N) ist gleichverteilt — jeder Multiplikator ist gleich wahrscheinlich.

Schadensverteilung3691215182124Schaden pro TrefferWahrscheinlichkeitSchnitt (13,5)
Schadensverteilungstabelle für Screenreader.
Schaden pro TrefferWahrscheinlichkeit
312,5%
612,5%
912,5%
1212,5%
1512,5%
1812,5%
2112,5%
2412,5%

Vanilla-Geschoss-Referenz

Klicke eine Zeile, um sie in die Felder oben zu laden.

GeschossDamageMultiplikatorMinMaxSchnittSpeed (mu/tic)
Imp-Feuerball — DoomImpBall3× random(1, 8)32413,510
Ball des Cacodemon — CacodemonBall5× random(1, 8)54022,510
Plasma des Arachnotron — ArachnotronPlasma5× random(1, 8)54022,525
Plasma-Ball — PlasmaBall5× random(1, 8)54022,525
Ball des Baron of Hell / Hell Knight — BaronBall8× random(1, 8)8643615
Mancubus-Feuerball — FatShot8× random(1, 8)8643620
Revenant-Tracer (zielsuchend) — RevenantTracer10× random(1, 8)10804510
Rakete (Direkttreffer) — Rocket20× random(1, 8)201609020
BFG-Spray (pro Strahl)67× 1..8 loop1512067,5
BFG-Ball (Direkttreffer) — BFGBall100× random(1, 8)10080045025

DECORATE/ZScript-Snippet, das diese Zahlen reproduziert.

ACTOR CustomProjectile : DoomImpBall
{
Damage 3
// Min 3 Max 24 Avg 13.5 (× random(1, 8))
}
Aktualisiert am 11. Mai 2026
OpenTTD Frachteinnahmen-RechnerGenshin Pity-Rechner

ZDoom Schadensrechner. Schaden, DPS und Tics für Doom-Modder.

Ein ZDoom Schadensrechner wandelt einen Damage-Wert in Min, Mittel und Max pro Treffer, den erwarteten DPS und die Tics für ACS Delay() um. Er bündelt den Zufallsmultiplikator, das +STRIFEDAMAGE-Flag, Vanilla-Presets für Projektile und Hitscans, eine HP-Tabelle mit 19 Monstern und den Tic-zu-Sekunden-Konverter auf einer Seite.

Was ist der ZDoom Schadens- und DPS-Rechner?

Der ZDoom Schadens- und DPS-Rechner ist ein Web-Tool, das dir aus der Damage-Eigenschaft eines Actors, einem Waffen- oder Projektil-Preset und einer Angriffsrate den exakten Schadensbereich, den erwarteten DPS, die Schüsse bis zum Tod jedes Vanilla-Monsters aus Doom oder Doom II und die Anzahl Tics für einen ACS-Delay()-Aufruf liefert. Er zielt auf ZDoom und GZDoom — die Source Ports, in denen DECORATE- und ZScript-Actoren leben —, gibt die gleiche Engine-Arithmetik wieder, die id Software Ende 1997 im Quellcode veröffentlicht hat, und löst die drei häufigsten Modder-Fragen in drei Modi auf einer einzigen Seite.
Die zentrale Verwirrung, die der Rechner aus der Welt schafft, ist der Zufallsmultiplikator. Standardmäßig trifft ein Projektil mit Damage 3 im Spiel nicht für 3 Schadenspunkte: Es trifft für 3 multipliziert mit einer zufälligen Ganzzahl von 1 bis 8, also fällt der Feuerball des Imps in eine Spanne von 3 bis 24 mit einem Erwartungswert von 13,5 pro Treffer. Ein eigenes Projektil mit Damage 10 im Default-Block macht 10, 20, 30, 40, 50, 60, 70 oder 80 — niemals exakt 10. Das Flag +STRIFEDAMAGE tauscht den Multiplikator gegen random(1, 4) aus: Dasselbe Damage 10 landet jetzt bei 10, 20, 30 oder 40. Die Hitscan-Waffen gehen einen anderen Weg: Pistole, Schrotflinte und Maschinengewehr nutzen 5 mal random(1, 3) pro Pellet (5, 10 oder 15), und Faust und Kettensäge nutzen 2 mal random(1, 10). Die Damage-Eigenschaft auf einem Hitscan-Actor wird ignoriert — die Formel ist fest in der Action-Funktion der Waffe verdrahtet. Das Berserk-Power-up multipliziert den Faustschaden nach dem Zufallswurf mit 10; keine andere Waffe profitiert davon.
Der zweite Modus wandelt diesen Bereich pro Schuss in den erwarteten DPS um. Trage Schaden pro Pellet, die Pelletanzahl, die Tics zwischen den Angriffen (die Dauer der Zustände zwischen zwei aufeinanderfolgenden A_FireProjectile- oder A_FireBullets-Aufrufen) und ein Ziel ein — Zombieman mit 20 HP, Cacodemon mit 400, Spider Mastermind mit 3.000, Cyberdemon mit 4.000 oder einen der 19 Vanilla-Monster aus den ZScript-Actorendefinitionen. Der Rechner liefert den erwarteten Schaden pro Schuss, den erwarteten DPS, die erwarteten Schüsse bis zum Tod, die Zeit bis zum Tod in Sekunden sowie die Schussanzahl im besten und schlechtesten Fall — damit du die volle Bandbreite siehst und nicht nur den Mittelwert. Das DamageFactor-Feld deckt den Fall von Resistenzen und Verwundbarkeiten ab (0,5 halbiert den Schaden, 2,0 verdoppelt ihn, 0 macht das Ziel unverwundbar).
Der dritte Modus liefert zwei Konverter, die jeder Doom-Modder braucht, sobald er ein ACS-Skript anfasst oder die Flugzeit eines Projektils balanciert. Der erste wandelt Tics in Sekunden über die Konstante TICRATE = 35: Delay(35 * 2) sind in modernem GZDoom (v3.2.2 und neuer) exakt zwei Sekunden, vor v3.2.2 zeigten dieselben 35 Tics 0,98 Sekunden an, weil eine Ganzzahldivision im Timer-Code abgeschnitten wurde. Der zweite wandelt die Speed-Eigenschaft eines Projektils (Karteneinheiten pro Tic) in Karteneinheiten pro Sekunde, Meter pro Sekunde, km/h und mph — über das in der Community etablierte Verhältnis 16 horizontale Karteneinheiten = 1 Fuß. Wenn du neben Speed eine Zieldistanz angibst, bekommst du auch die Flugzeit, aufgerundet auf den nächsten Tic — genau so, wie die Engine zwischen den Frames läuft.

So berechnest du Schaden, DPS und Tics in ZDoom (und so macht es der Rechner)

Hier laufen drei unabhängige Berechnungen nebeneinander, weil drei Fragen in jedem DECORATE-, ZScript- oder ACS-Thread immer wieder auftauchen. Der Rechner oben prüft alle drei bei jeder Eingabeänderung; die manuelle Version unten ist die, die du auf Papier durchgehst, bevor du das WAD neu lädst.
Mit dem Tool
1. Wähle oben den Modus: Schadensbereich, DPS und Zeit bis zum Tod oder Tic- und Geschwindigkeitskonverter. Jeder Modus behält beim Umschalten seine eigenen Eingaben.
2. Modus Schadensbereich. Wähle den Untermodus, der zu deinem Actor passt. Der Untermodus Projektil nimmt einen Damage-Wert und den optionalen +STRIFEDAMAGE-Schalter und gibt Damage × 1 (Min), Damage × 4,5 (Mittel) und Damage × 8 (Max) aus. Der Untermodus Hitscan nimmt ein Waffen-Preset und eine Pelletanzahl — die Formel pro Pellet ist fest verdrahtet. Der Untermodus Eigene Werte nimmt freie Min- und Max-Werte, falls du mit einem DamageFunction-Ausdruck arbeitest. Mit einem Projektil-Preset (Imp-Feuerball, Cacodemon-Ball, Plasmagewehr-Ball, Rakete, BFG-Ball, BFG-Spray-Strahl und sechs weitere) füllst du Damage automatisch aus dem Default-Block des Vanilla-Actors.
3. Modus DPS. Trage Schaden pro Pellet, Formeltyp (Projektil, STRIFEDAMAGE oder Hitscan), Pelletanzahl, Tics pro Angriff ein und wähle ein Monster aus der 19-Zeilen-Vanilla-Liste (oder tippe eigene HP ein). Der erweiterte Akkordeon-Bereich blendet DamageFactor und eine HP-Überschreibung für das Ziel ein. Die Hauptzeile zeigt den erwarteten DPS und die erwarteten Schüsse bis zum Tod; in den Nebenkarten erscheinen die Zeit bis zum Tod in Sekunden, der beste Fall (jeder Wurf landet im Maximum) und der schlechteste Fall (jeder Wurf landet im Minimum).
4. Modus Tics und Geschwindigkeit. Tippe eine Tic-Anzahl ein und du siehst die Sekunden, oder umgekehrt. Darunter trägst du Speed (Karteneinheiten pro Tic) und optional eine Distanz in Karteneinheiten ein und bekommst die Geschwindigkeit in KE/s, m/s, km/h und mph sowie die Flugzeit in Tics und Sekunden.
Von Hand
1. Schadensbereich eines Projektils: Min = $D$, Max = $D \times 8$, Mittel = $D \times 4{,}5$. Mit +STRIFEDAMAGE: Max = $D \times 4$, Mittel = $D \times 2{,}5$. Die Verteilung ist gleichmäßig — jeder Multiplikator von 1 bis 8 (bzw. von 1 bis 4) ist gleich wahrscheinlich.
2. Hitscan-Schaden pro Pellet: Pistole / Schrotflinte / Maschinengewehr = $5 \times \text{random}(1, 3)$, Mittel 10 pro Pellet. Faust / Kettensäge = $2 \times \text{random}(1, 10)$, Mittel 11. Berserk multipliziert den Faustschaden nach dem Wurf mit 10. Multipliziere mit der Pelletanzahl: Schrotflinte 7, Super-Schrotflinte 20, alles andere 1.
3. Erwarteter DPS: $\text{DPS} = \frac{\text{erwarteter Schaden pro Schuss} \times 35}{\text{Tics pro Angriff}}$. Die 35 ist TICRATE; die Tics pro Angriff sind die Summe der Zustandsdauern zwischen zwei aufeinanderfolgenden A_FireProjectile- oder A_FireBullets-Aufrufen im States-Block des Actors.
4. Schüsse bis zum Tod: $\lceil \frac{\text{HP}}{\text{erwarteter Schaden pro Schuss} \times \text{damageFactor}} \rceil$. Zeit bis zum Tod: Schüsse bis zum Tod mal Tics pro Angriff geteilt durch 35.
5. Tics in Sekunden: Tics geteilt durch 35. Sekunden in Tics: round(Sekunden × 35). Für Delay() in ACS schreibst du `Delay(35 * sekunden)` direkt — der Compiler kümmert sich um die Multiplikation beim Bauen des Skripts.
6. Projektilflug: Tics = $\lceil \frac{\text{Distanz}}{\text{Speed}} \rceil$, Sekunden = Tics geteilt durch 35. Die Engine bewegt sich in ganzen Tics, also wird immer aufgerundet. Reale Geschwindigkeit: $\text{mph} \approx \text{Speed} \times 1{,}49$, $\text{km/h} \approx \text{Speed} \times 2{,}4$, $\text{m/s} \approx \text{Speed} \times 0{,}667$.
Nachgerechneter Standardfall: Der Feuerball des Imps mit Damage 3 trifft einen Cacodemon (HP 400). Erwarteter Schaden pro Schuss = $3 \times 4{,}5 = 13{,}5$. 400 geteilt durch 13,5 = 29,6, also liegen die erwarteten Schüsse bis zum Tod bei 30. Derselbe Cacodemon fällt mit 2 bis 4 Schüssen aus der Super-Schrotflinte (bester Fall 2, schlechtester 4, erwartet 2), weil jeder Schuss bei der kanonischen 20-Pellet-Formel im Mittel 200 Schadenspunkte austeilt — eine Differenz von 15× pro Schuss, die sich direkt darin zeigt, wie viele Sekunden du je nach Waffe vor demselben Cacodemon stehst.

Schaden, DPS und Tics — die Engine-Formeln

schadenmin=Dmmin,schadenmax=Dmmax,E[schaden]=Dmmin+mmax2DPS=E[schaden pro Schuss]35tangriff,schu¨sse=HE[schaden pro Schuss]ftics=round(s35),flug=dv\begin{aligned} \text{schaden}_{\min} &= D \cdot m_{\min}, \quad \text{schaden}_{\max} = D \cdot m_{\max}, \quad \mathbb{E}[\text{schaden}] = D \cdot \tfrac{m_{\min} + m_{\max}}{2} \\ \text{DPS} &= \frac{\mathbb{E}[\text{schaden pro Schuss}] \cdot 35}{t_{\text{angriff}}}, \quad \text{schüsse} = \left\lceil \frac{H}{\mathbb{E}[\text{schaden pro Schuss}] \cdot f} \right\rceil \\ \text{tics} &= \text{round}(s \cdot 35), \quad \text{flug} = \left\lceil \frac{d}{v} \right\rceil \end{aligned}
  • DD = Damage-Eigenschaft aus dem Default-Block des Actors in DECORATE oder ZScript (eine Ganzzahl)
  • mmin,mmaxm_{\min}, m_{\max} = Grenzen des Zufallsmultiplikators — 1 und 8 standardmäßig; 1 und 4 mit +STRIFEDAMAGE; 1 und 3 für Pellets von Pistole/Schrotflinte/Maschinengewehr; 1 und 10 für Faust/Kettensäge
  • tangrifft_{\text{angriff}} = Tics pro Angriff — die Dauer der Zustandsmaschine zwischen zwei aufeinanderfolgenden Schussaufrufen im States-Block des Actors
  • HH = HP des Ziels — 20 für Zombieman, 60 für Imp, 400 für Cacodemon, 1.000 für Baron of Hell, 3.000 für Spider Mastermind, 4.000 für Cyberdemon
  • ff = DamageFactor-Multiplikator — 1,0 normal, 0,5 Resistenz, 2,0 Verwundbarkeit, 0,0 unverwundbar
  • ss = Zeit in Sekunden — wird mit TICRATE = 35 multipliziert und für Zustandsdauern und das Delay()-Argument auf ganze Tics gerundet
  • d,vd, v = Flugdistanz in Karteneinheiten und Projektil-Speed in Karteneinheiten pro Tic; die Aufrundungsdivision ergibt die Tics, weil die Engine in ganzen Schritten läuft
Die 35 im Nenner des DPS ist TICRATE, die Konstante, die id Software 1993 oben in doomdef.h festgenagelt hat und die ZDoom, GZDoom und jeder andere Doom-Source-Port wortwörtlich übernehmen. Dieselbe Konstante steuert jede Zustandsdauer in DECORATE und ZScript: Ein Zustand `TNT1 A 24` dauert 24 Tics — genau die Zahl, die im Nenner des DPS landet. Der BFG-Spray ist die einzige Ausnahme von der gleichmäßigen random(1, 8)-Regel: Innerhalb von A_BFGSpray wird der Schaden pro Strahl als Summe von 15 unabhängigen random(1, 8) berechnet, also liegt der Bereich pro Strahl bei 15 bis 120 mit einem Erwartungswert von 67,5; ein BFG-Ball gibt bis zu 40 Strahlen im Frontkegel ab. Der Berserk-Multiplikator wird nach dem random(1, 10)-Wurf angewandt, sodass ein Faustschlag mit aktivem Berserk im Bereich 20 bis 200 mit einem Erwartungswert von 110 landet.

Durchgerechnete Beispiele mit allen Zahlen

Imp-Feuerball gegen Cacodemon — das Standard-Szenario

Der Imp-Feuerball hat Damage 3 im Default-Block des Actors DoomImpBall. Bereich pro Schuss = 3 bis 24 (3 × random(1, 8)), erwartet = 13,5. HP des Cacodemon = 400 (aus der Health-Eigenschaft des Cacodemon-Actors, identisch mit dem Wert auf der englischen Doom-Wiki). Erwartete Schüsse bis zum Tod = $\lceil 400 / 13{,}5 \rceil$ = 30. Schlechtester Fall (jeder Wurf landet im Minimum) = $\lceil 400 / 3 \rceil$ = 134. Bester Fall (jeder Wurf landet im Maximum) = $\lceil 400 / 24 \rceil$ = 17. Diese Spanne 17 bis 134 überrascht Modder-Neulinge: Der Zufallsmultiplikator ist die dominierende Variable, viel stärker als das skalierte Damage selbst. Ein Feuerball mit Damage 6 halbiert die erwartete Zahl (15 Schüsse), aber der schlechteste Fall sinkt nur auf 67.

Pistolen-DPS gegen einen Zombieman — \"ist die Pistole wirklich nutzlos?\"

Pistolen-Formel: $5 \times \text{random}(1, 3)$ pro Schuss, Pellets 1. Bereich pro Schuss = 5 bis 15, erwartet = 10. A_FirePistol feuert im Vanilla-Doom rund 150 Mal pro Minute (~14 Tics pro Zyklus). DPS = $10 \times 35 / 14$ ≈ 25 erwartete Schadenspunkte pro Sekunde. HP des Zombieman = 20. Erwartete Schüsse bis zum Tod = $\lceil 20 / 10 \rceil$ = 2. Bester Fall = 2 (zwei 15er hintereinander), schlechtester Fall = 4 (vier 5er). Zeit bis zum Tod bei 14 Tics pro Angriff = $2 \times (14/35) = 0{,}8$ Sekunden erwartet, bis zu 1,6 im schlechtesten Fall. Die Pistole ist nicht nutzlos — sie streckt einen Zombieman in 2 Schüssen nieder und kaut sich in 6 durch einen Imp — aber ihr DPS liegt bei etwa einem Drittel des Maschinengewehrs (gleiche Formel pro Schuss, aber ~4 Tics pro Angriff statt 14) und einem Zehntel des Raketenwerfers. Genau deshalb ersetzt das Maschinengewehr sie, sobald die erste in deiner Hand landet.

Super-Schrotflinte auf einen Hell Knight — Realität auf kurze Distanz

Formel der Super-Schrotflinte: $5 \times \text{random}(1, 3)$ pro Pellet, Pellets 20. Bereich pro Schuss = 100 bis 300, erwartet = 200. HP des Hell Knight = 500. Erwartete Schüsse bis zum Tod = $\lceil 500 / 200 \rceil$ = 3. Schlechtester Fall = $\lceil 500 / 100 \rceil$ = 5 Schüsse (jedes Pellet würfelt eine 1). Bester Fall = $\lceil 500 / 300 \rceil$ = 2 Schüsse (jedes Pellet würfelt eine 3). A_FireShotgun2 zykliert bei ~36,8 Schuss/min (etwa 57 Tics pro Angriff inklusive Spannen und Nachladen), also Zeit bis zum Tod bei 3 Schüssen = $3 \times (57/35) \approx 4{,}9$ Sekunden. Das passt zum Konsens in den Foren: Zwei Schüsse legen den Hell Knight nur, wenn die Würfe glücklich fallen; drei ist der realistische Plan.

Direkter Treffer mit dem BFG-Ball auf einen Cyberdemon (ohne Spray)

Der BFG-Ball hat Damage 100 im Actor BFGBall. Bereich des direkten Treffers = 100 bis 800, erwartet = 450. HP des Cyberdemon = 4.000, kein Splash (der Cyberdemon ist immun gegen Explosionsschaden, also zählen nur direkte Treffer). Erwartete Direkttreffer = $\lceil 4000 / 450 \rceil$ = 9. Bester Fall = $\lceil 4000 / 800 \rceil$ = 5. Schlechtester Fall = $\lceil 4000 / 100 \rceil$ = 40 Treffer (jeder Wurf landet im Minimum). Der klassische Wiki-Rat \"drei bis vier BFG-Treffer killen einen Cyberdemon\" geht davon aus, dass die Spray-Strahlen ebenfalls treffen und dass die Distanz das Vieh im Kegel hält. Die echte Effizienz der BFG kommt vom Spray: Ein Ball mit voller Abdeckung von 40 Strahlen summiert 450 + 40 × 67,5 = 3.150 erwartete Schadenspunkte pro Abzug, was den Cyberdemon in 2 Schüssen umlegt, wenn du Direkttreffer und Kegel gleichzeitig sitzt.

ACS-Delay-Arithmetik — \"wie viele Tics sind 2,5 Sekunden?\"

Tics pro Sekunde = 35. Sekunden in Tics für 2,5 = $\text{round}(2{,}5 \times 35)$ = round(87,5) = 88 Tics. In ACS schreibst du `Delay(35 * 25 / 10)`, wenn die Arithmetik lesbar bleiben soll, oder direkt `Delay(88)`. Die Werte, die jeder Modder im Kopf hat: 0,1 s = 4 Tics, 0,5 s = 18, 1 s = 35, 1,5 s = 53, 2 s = 70, 3 s = 105, 5 s = 175, 10 s = 350. Speed des Imp-Feuerballs = 10 Karteneinheiten pro Tic. Flug über 1.024 Karteneinheiten = $\lceil 1024 / 10 \rceil$ = 103 Tics ≈ 2,94 Sekunden, also rund 15 mph (10 × 1,49 ≈ 14,9). Der Plasmagewehr-Ball mit Speed 25 schafft dieselben 1.024 KE in 41 Tics ≈ 1,17 Sekunden, also etwa 60 km/h.

Tipps zu Schaden und Balance in ZDoom für Modder, Mapper und Neugierige

  • Lies die Damage-Eigenschaft deines Actors als Erwartungswert, nicht als Literalwert. Ein Projektil mit Damage 5 macht im Spiel im Mittel 22,5 (5 × 4,5), nicht 5. Wenn dein neues Monster mit dem 13,5er-Feuerball des Imps konkurrieren soll, setze Damage 3 — nicht Damage 10. Der häufigste Balance-Fehler in DECORATE ist, Damage 10 als \"trifft für 10\" zu lesen, obwohl es zwischen 10 und 80 trifft, mit einem Mittel von 45.
  • Das Flag +STRIFEDAMAGE ist die billigste Möglichkeit, den Bereich eines Projektils enger zu fassen. Gleiches Damage, der maximale Multiplikator fällt von 8 auf 4, der Erwartungswert von 4,5× auf 2,5×. Sinnvoll, wenn du ein vorhersehbares Mittelklasse-Projektil willst (z. B. eine eigene Rakete, die sich nach 60 bis 240 anfühlen soll statt nach 60 bis 480). Funktioniert in jedem ZDoom-Mod unabhängig vom Basisspiel — der Name kommt von Strife (dem ersten Nicht-Doom-IWAD der Engine), aber das Flag selbst ist portabel und taucht in Doom-Mods regelmäßig auf.
  • Hitscan-Waffen ignorieren die Damage-Eigenschaft komplett. Pistole, Schrotflinte, Maschinengewehr und Super-Schrotflinte verdrahten $5 \times \text{random}(1, 3)$ pro Pellet fest in A_FireBullets / A_FirePistol / A_FireShotgun. Um den Schaden einer Hitscan-Waffe zu erhöhen, schraubst du an der Pelletanzahl, am damage-Argument von A_CustomBulletAttack oder du baust die Waffe auf Projektil um. Faust und Kettensäge nutzen $2 \times \text{random}(1, 10)$; Berserk wirkt nur auf die Faust und multipliziert nach dem Wurf mit 10 (also 20 bis 200 pro Schlag, erwartet 110).
  • Die Tics zwischen den Angriffen wiegen für DPS-Vergleiche schwerer als der Schaden pro Schuss. Maschinengewehr und Pistole haben identischen Schaden pro Schuss (5 bis 15, erwartet 10), aber das Maschinengewehr feuert mit ~4 Tics pro Angriff gegen die ~14 der Pistole — rund 3,5× DPS bei gleicher Pellet-Mathematik. Wenn du einen Waffen-Mod balancierst, entscheide zuerst den Ziel-DPS (Vanilla-Pistole ~25 DPS, Schrotflinte ~70, Super-Schrotflinte ~150, Maschinengewehr ~88, Plasmagewehr ~263, Raketenwerfer direkt ~159) und leite daraus den Schaden pro Schuss und die Tics pro Angriff ab.
  • Nutze den Spickzettel mit 19 Monstern, um den Begegnungs-Entwurf zu prüfen. Zombieman (HP 20), Shotgun Guy (30), Wolfenstein SS (50), Imp (60), Chaingunner (70), Lost Soul / Commander Keen (100), Demon / Spectre (150), Revenant (300), Pain Elemental / Cacodemon (400), Hell Knight / Arachnotron (500), Mancubus (600), Arch-vile (700), Baron of Hell (1.000), Spider Mastermind (3.000), Cyberdemon (4.000). Ein Schuss aus der Super-Schrotflinte (erwartet 200, max 300) legt im besten Fall alles bis zum Revenant (HP 300) um; Pain Elemental und Cacodemon (HP 400) brauchen mindestens zwei gute Treffer. Ein Pistolenschuss (erwartet 10) erledigt nur den Zombieman. Den Demon im ersten Raum gegen einen Mancubus zu tauschen, ist kein 1,5-facher Schwierigkeitssprung — es ist 4×, weil die HP-Kurve geometrisch ist, nicht linear.
  • GZDoom v3.2.2 (Ende 2017) und neuer garantieren, dass 35 Tics genau einer Sekunde Realzeit entsprechen. Frühere Versionen zeigten das Intervall als 28 ms pro Tic an (35 Tics erschienen als 0,98 Sekunden), weil im Timer-Code eine Ganzzahldivision abgeschnitten wurde. Wenn deine ACS-Delay()-Arithmetik Subsekunden-Präzision braucht und das Publikum auf einem alten Port spielt, rechne mit 2 % Drift: `Delay(35 * 60)` auf dem Legacy-Timer sind 58,8 reale Sekunden, 1,2 Sekunden weniger als eine volle Minute.
  • Der BFG-Spray ist das einzige Projektil, das die Regel $\text{Damage} \times \text{random}(1, 8)$ nicht befolgt. Innerhalb von A_BFGSpray wird der Schaden pro Strahl als Summe von 15 unabhängigen random(1, 8) berechnet — Bereich 15 bis 120, erwartet 67,5, glockenförmige Verteilung (nicht gleichmäßig). Der BFG-Ball gibt bis zu 40 Strahlen in einem 90°-Frontkegel ab, also summieren sich bei voller Abdeckung 40 × 67,5 = 2.700 erwartete Schadenspunkte auf die 100 bis 800 des Balls selbst. Genau dieser Spray-Beitrag erklärt den berühmten \"Cyberdemon in zwei Schüssen\"-Effekt — nur dann, wenn sowohl der direkte Treffer als auch der Kegel sitzen.
  • Karteneinheiten haben zwei Umrechnungen, nicht eine. Horizontal sind 16 Einheiten = 1 Fuß (0,3048 m); vertikal sind nur 10 Einheiten = 1 Fuß, weil der ursprüngliche 320×200-Modus von Doom das Bild um 20 % in der Höhe streckte. Für Speed nutzt der Rechner das horizontale Verhältnis, weil Projektile in der Kartenebene fliegen: Speed 10 (Imp-Feuerball) ≈ 6,67 m/s ≈ 15 mph; Speed 25 (Plasma, BFG-Ball) ≈ 16,67 m/s ≈ 60 km/h ≈ 37 mph. Doomguys Lauftempo liegt bei rund Speed 16 — etwa 24 mph, weshalb dich ein Imp im Korridor manchmal einholt.
  • DamageFactor löst Resistenzen und Verwundbarkeiten, ohne dass du den Schadenscode neu schreiben musst. DamageFactor 'Fire', 0.5 auf einem Monster halbiert allen Schaden vom Typ Fire; 2.0 verdoppelt ihn; 0.0 macht das Monster immun. Im DPS-Modus des Rechners modelliert ein einziges Skalar-Feld DamageFactor den Resistenzfall ohne eigenen Schadenstyp — praktisch, wenn du den TTK einer Vanilla-Waffe gegen, sagen wir, eine Cacodemon-Variante mit 0,7 Plasma-Resistenz vergleichst.
  • Schlechtester Fall und Bandbreite zählen für knappes Kampf-Design mehr als der Mittelwert. \"Erwartete Schüsse bis zum Tod = 30\" verbirgt, dass ein Cacodemon im pathologischen schlechtesten Fall 134 Imp-Feuerbälle überleben kann. Der Rechner zeigt den besten und schlechtesten Fall neben dem Erwartungswert genau deshalb: Wenn du eine Slaughter-Map baust und ein Monster innerhalb eines harten Schussbudgets sterben MUSS, dimensionierst du nach dem schlechtesten Fall. Bei einer normalen Map dimensionierst du nach dem Erwartungswert. Beide Zahlen können bei random(1, 8)-Projektilen um Faktor 5 bis 10 auseinanderliegen.
  • Wenn du auf Deutsch moddest, behalte die Actor- und Property-Namen genau so auf Englisch, wie sie in der Engine stehen (Damage, Speed, Health, +STRIFEDAMAGE, Cacodemon, Cyberdemon). DECORATE und ZScript akzeptieren keine lokalisierten Bezeichner, also bleibt der Actor auch dann Cacodemon im Code, wenn die deutsche Doom-Wiki ihn in Fließtext mal als \"Kakodämon\" beschreibt. Englische Bezeichner in deinen PK3-Dateien sparen Stunden Debugging, sobald ein anderer Modder dein WAD öffnet.

ZDoom Schadensrechner — häufige Fragen

Warum trifft mein Projektil mit Damage 10 manchmal für 80?

ZDoom multipliziert die Damage-Eigenschaft eines Projektils bei jedem Treffer mit random(1, 8). Damage 10 ergibt 10, 20, 30, 40, 50, 60, 70 oder 80 — alle Werte gleich wahrscheinlich. Der Mittelwert ist 45. Das Flag +STRIFEDAMAGE tauscht den Multiplikator gegen random(1, 4) aus: 10, 20, 30 oder 40 mit einem Mittel von 25.

Wie lautet die Schadensformel der Pistole im klassischen Doom?

Die Pistole nutzt $5 \times \text{random}(1, 3)$ pro Schuss, also macht jeder Schuss 5, 10 oder 15 Schaden bei einem Erwartungswert von 10. Maschinengewehr und Schrotflinte (pro Pellet) nutzen dieselbe Formel. Die Damage-Eigenschaft auf einem Hitscan-Actor wird ignoriert — die Formel ist fest in A_FirePistol, A_FireShotgun und A_FireCGun verdrahtet.

Wie viele Tics sind eine Sekunde in ZDoom?

35 Tics pro Sekunde. TICRATE ist seit dem ursprünglichen Release 1993 auf 35 festgelegt. GZDoom v3.2.2 und neuer garantieren, dass 35 Tics exakt 1,000 Sekunden Realzeit sind; in früheren Versionen wurde auf 28 ms pro Tic abgeschnitten, weshalb 35 Tics als 0,98 Sekunden angezeigt wurden — eine 2 % Drift, die nur in langen Delay()-Ketten ins Gewicht fällt.

Wie rechne ich ACS Delay() für X Sekunden aus?

Sekunden mal 35 nehmen und auf eine Ganzzahl runden. 0,5 s = 18 Tics, 1 s = 35, 2 s = 70, 5 s = 175, 10 s = 350, 60 s = 2.100. In ACS schreibst du `Delay(35 * sekunden)` direkt — der Compiler löst die Multiplikation beim Bauen des Skripts auf.

Was macht das Flag +STRIFEDAMAGE?

+STRIFEDAMAGE ändert den Multiplikator des Projektilschadens von random(1, 8) auf random(1, 4). Gleicher Damage-Wert, engerer Bereich, niedrigerer Mittelwert. Funktioniert auf jedem Actor in jedem ZDoom-Mod unabhängig vom Basisspiel — der Name kommt von Strife, aber das Flag ist portabel. Sinnvoll, wenn du ein vorhersehbares Mittelklasse-Projektil brauchst.

Wie viele HP hat der Cyberdemon?

4.000 HP. Der Cyberdemon nimmt nur direkten Schaden — Splash von Raketen und Mancubus-Schüssen prallt an ihm ab. Die BFG9000 ist die kanonische Tötungsmethode (etwa 2 bis 4 Abzüge mit Spray); ungefähr 20 Super-Schrotflinten-Schüsse aus nächster Nähe oder ~45 erwartete Raketen-Direkttreffer erledigen ihn auch, wenn dir die Munition reicht. Die 19-Zeilen-Tabelle unter dem Rechner zeigt alle Vanilla-Doom-HP-Werte.

Warum ist der BFG-Schaden so eigen — was soll diese 15er-Schleife mit random?

Der Hauptball der BFG nutzt die Standardformel (Damage 100 × random(1, 8) = 100 bis 800), die Spray-Strahlen aber nicht. Jeder der bis zu 40 Strahlen summiert 15 unabhängige random(1, 8): Bereich 15 bis 120 pro Strahl mit einem Erwartungswert von 67,5. Die Doom-Wiki weist darauf hin, dass der Determinismus der pseudozufälligen Tabelle P_Random (256 fixe Bytes) den praktischen Bereich auf 49 bis 87 verengt, das theoretische Maximum pro Strahl bleibt aber 120.

Funktioniert der Rechner auch für ZScript-Actoren?

Ja. ZScript und DECORATE teilen sich dieselbe Semantik von Damage / DamageFunction / Speed / Health / +STRIFEDAMAGE — nur die Syntax unterscheidet sich. Ein ZScript-Actor mit `Damage 5;` im Default-Block würfelt exakt dieselbe Formel $5 \times \text{random}(1, 8)$ wie ein DECORATE-Actor mit derselben Eigenschaft. Die Ausgaben des Rechners gelten für beide.

Funktioniert der Rechner mit Brutal Doom oder Project Brutality?

Nur für die Actoren, die die Standard-Damage-Eigenschaft und die Vanilla-Hitscan-Funktionen beibehalten. Brutal Doom von Sergeant Mark IV und Project Brutality definieren die meisten Waffen mit eigenen DamageFunction-Ausdrücken und angepassten A_FireCustomMissile-Routinen, die den random(1, 8)-Multiplikator nicht respektieren. Für diese Waffen zeigt der Rechner das Vanilla-Äquivalent, das du beim Lesen des DECORATE-/ZScript-Codes des konkreten Mod-Actors manuell nachjustieren musst.

Spielt die deutsche GZDoom-Übersetzung eine Rolle?

Nein. Die deutsche Sprachdatei von GZDoom (gepflegt im offiziellen Translation-Thread des ZDoom-Forums) übersetzt nur Menü-, HUD- und Log-Strings — die Engine-Mathematik bleibt unangetastet. Dieselben random(1, 8)-Würfe, TICRATE = 35, +STRIFEDAMAGE und Monster-HP verhalten sich identisch auf einem englischen GZDoom-Build und auf einem mit deutscher Sprachdatei. Auch eine zensierte BFG-Edition oder ein deutsch lokalisiertes Doom-Sammler-Pack ändert daran nichts.

Gibt es Schadensunterschiede zwischen PrBoom+, ZDoom, GZDoom und Zandronum?

Für Vanilla-Doom und Doom II nein. PrBoom+, ZDoom, GZDoom und Zandronum bewahren TICRATE 35, die Formeln random(1, 8) und random(1, 3) und die Original-HP-Werte wortwörtlich. Unterschiede zwischen den Ports tauchen erst bei fortgeschrittenen Features auf (Physik, MAPINFO, ZScript, Monster-Skripte in MBF21), nicht in der Basis-Schadensmathematik. Ein Cacodemon mit HP 400 fällt mit derselben Wurfreihenfolge in allen vier Engines gleich.

Worin unterscheiden sich ZScript und DECORATE beim Schaden?

Mathematisch in nichts, nur in der Syntax. ZScript ist eine Obermenge von DECORATE: Dasselbe `Damage 10` im Default-Block würfelt dasselbe random(1, 8), und dasselbe Flag +STRIFEDAMAGE tauscht den Multiplikator gegen random(1, 4). DECORATE ist in GZDoom als veraltet markiert, bleibt aber kompatibel; für neue Mods wird ZScript empfohlen, aber für die Schadensmathematik des Rechners ist es egal.

Warum trifft der Revenant-Tracker für 10 bis 80 und nicht für 10 bis 40?

Der Actor RevenantTracer hat Damage 10 im Block, trägt aber NICHT das Flag +STRIFEDAMAGE — er nutzt den Standardmultiplikator random(1, 8). Deshalb liegt der Bereich bei 10 bis 80 mit einem Mittel von 45, nicht bei 10 bis 40. Eine klassische Verwechslung, weil sich die Raketen des Revenants nach Strife-Mathematik anfühlen; tatsächlich ist es eine andere.

Erhöht der Schwierigkeitsgrad (UV / Nightmare) den Waffenschaden?

Nein. Nightmare verdoppelt die Aggressivität der Monster und die aufgesammelte Munition, aber der Waffenschaden ist auf allen fünf Schwierigkeitsstufen identisch. Der einzige Schadensmultiplikator im Vanilla-Doom ist das Berserk-Power-up, das den Faustschaden mit 10 multipliziert. Der Schwierigkeitsgrad ändert, wer zuerst und wie oft schießt — nicht, wie hart die Schüsse treffen.

Wie genau ist der Rechner im Vergleich zum echten Spiel?

Engine-exakt für das Vanilla-Verhalten von Doom und Doom II unter ZDoom / GZDoom. Die Verifikation deckt alle Projektil-Presets, alle Hitscan-Waffen, alle Monster-HP-Werte und die 15er-Schleife des BFG-Sprays ab — jeder Schadensbereich, jeder HP-Wert und jeder Projektil-Speed stimmt auf die Einheit genau mit den Vanilla-Actorendefinitionen überein. Ersatz-Actoren in DECORATE / ZScript, eigene DamageFunction-Ausdrücke und die modernen Doom-Titel (2016, Eternal, The Dark Ages) verwenden andere Mathematik und sind nicht abgedeckt.


Glossar zu Schaden und Zeit in ZDoom

Damage-Eigenschaft

Numerische Eigenschaft im Default-Block eines DECORATE- oder ZScript-Actors, die die Engine bei jedem Treffer mit random(1, 8) multipliziert (random(1, 4) mit +STRIFEDAMAGE). Damage 10 erzeugt im Spiel einen Bereich von 10 bis 80, keine glatten 10.

+STRIFEDAMAGE

Actor-Flag, das den Multiplikator des Projektilschadens von random(1, 8) auf random(1, 4) ändert. Gleicher Damage-Wert, engerer Bereich, niedrigerer Mittelwert (Damage × 2,5 statt Damage × 4,5). Funktioniert auf jedem Actor in jedem ZDoom-Mod unabhängig vom Basisspiel.

Tic

Atomare Zeiteinheit der Doom-Engine. TICRATE = 35 Tics pro Sekunde; 1 Tic ≈ 28,5714 ms. Zustandsdauern in DECORATE / ZScript und das Argument von ACS Delay() werden in Tics ausgedrückt. GZDoom v3.2.2 und neuer garantieren 35 Tics = 1,000 Sekunden exakt; frühere Versionen schnitten auf 28 ms ab.

Hitscan-Waffe

Waffe, deren Schaden sofort entlang einer geraden Linie aufgelöst wird, ohne Projektil-Actor dazwischen. Pistole, Schrotflinte, Super-Schrotflinte und Maschinengewehr sind Hitscans; ihre Formeln sind in den Action-Funktionen A_Fire* fest verdrahtet ($5 \times \text{random}(1, 3)$ pro Pellet), und die Damage-Eigenschaft des Actors wird ignoriert.

DamageFactor

Multiplikator des eingehenden Schadens eines bestimmten Typs. DamageFactor 'Fire', 0.5 halbiert Fire-Schaden; 2.0 verdoppelt ihn; 0.0 macht den Actor immun. Im DPS-Modus des Rechners deckt ein einzelnes Skalar-Feld DamageFactor den resistenten oder verwundbaren Fall ab.

Berserk

Power-up, das den Faustschaden nach dem random(1, 10)-Wurf mit 10 multipliziert und so einen Bereich von 20 bis 200 mit einem Erwartungswert von 110 erzeugt. Nur die Faust bekommt den Bonus; Kettensäge, Hitscans und Projektilwaffen profitieren nicht.

Karteneinheit (map unit)

Koordinateneinheit des Doom-Raums. Nach Konsens der Community sind 16 horizontale Einheiten = 1 Fuß = 0,3048 m (Doomguy ist 56 vertikale Einheiten groß = 5 Fuß 7 Zoll). Der Rechner wandelt den Projektil-Speed (Karteneinheiten pro Tic) über das horizontale Verhältnis 16 KE/Fuß in m/s, km/h und mph um.

Speed-Eigenschaft

Geschwindigkeit eines Projektil-Actors in Karteneinheiten pro Tic. Imp-Feuerball Speed 10; Rakete Speed 20; Plasmagewehr-Ball und BFG-Ball Speed 25. Mit 35 multiplizieren ergibt Karteneinheiten pro Sekunde; mit 0,667 multiplizieren ergibt Meter pro Sekunde; mit 1,49 multiplizieren ergibt Meilen pro Stunde.

BFG-Spray

Der Kegel aus bis zu 40 Strahlen, den der BFG-Ball beim Aufprall ausstößt (der Spray feuert aus dem Death-State des Balls über A_BFGSpray). Der Schaden jedes Strahls ist die Summe von 15 unabhängigen random(1, 8): Bereich 15 bis 120 pro Strahl mit einem Erwartungswert von 67,5. Der Ruf der BFG, einen Cyberdemon in einem Schuss niederzulegen, geht auf den Spray zurück — nicht auf den Ball selbst.

TICRATE

Engine-Konstante, die die Doom-Frequenz seit 1993 auf 35 Tics pro Sekunde festnagelt. Deklariert in der doomdef.h von id Software; wortwörtlich übernommen von ZDoom, GZDoom, Zandronum, PrBoom+, Boom, MBF21 und jedem anderen vanilla-kompatiblen Source Port. Jede Zustandsdauer, jedes Delay()-Argument und jede Berechnung der Projektilflugzeit nutzt 35 als Umrechnungskonstante.

DamageFunction

Alternative zur Damage-Eigenschaft, mit der ein Modder über einen ZScript-Ausdruck eine beliebige Ganzzahl im Trefferzeitpunkt zurückgeben kann. Umgeht den Multiplikator random(1, 8) — gib eine glatte Zahl für deterministischen Schaden zurück oder berechne ihn aus inflictor / target / distance für kontextabhängiges Verhalten.

P_Random

Pseudozufallsfunktion der Doom-Engine: Ein Index läuft durch eine statische 256-Byte-Tabelle mit gemischten Werten zwischen 0 und 255 und gibt bei jedem Aufruf das nächste Byte zurück. Nicht gleichverteilt (der Wert 1 kommt nie vor, 145 fünfmal), aber ausreichend für Kampf-Arithmetik. Wird in allen Schadenswürfen genutzt; M_Random führt einen eigenen Index für nicht-spielbare Effekte, um die Mehrspieler-Synchronisation nicht zu zerstören.


Inhalt verifiziert vom Smart Calculators Team