ZDoom 데미지·DPS 계산기
임의의 ZDoom / GZDoom 무기·투사체에 대해 정확한 데미지 범위, 기대 DPS, 처치 시간을 산출합니다. random(1,8) 배수, +STRIFEDAMAGE 플래그, ACS 스크립트용 tic↔초 변환기 지원.
둠 모더용 데미지 범위·DPS·tic 변환기.
임의의 투사체, 히트스캔 무기, 커스텀 DamageFunction에 대해 최소/평균/최대 데미지를 계산합니다.
데미지 공식
Damage × random(1, 8) 사용 — ZDoom 표준 투사체 공식.
바닐라 둠 투사체를 선택하면 Damage가 자동 입력됩니다. 이후 Damage를 편집하면 프리셋이 커스텀으로 돌아갑니다.
dmg
DECORATE/ZScript의 Damage 뒤에 적는 N 값(예: 임프 화염구는 Damage 3).
데미지 분포
random(1, N)은 균등 분포 — 각 배수가 같은 확률.
| 1발 데미지 | 확률 |
|---|---|
| 3 | 12.5% |
| 6 | 12.5% |
| 9 | 12.5% |
| 12 | 12.5% |
| 15 | 12.5% |
| 18 | 12.5% |
| 21 | 12.5% |
| 24 | 12.5% |
바닐라 투사체 참조표
행을 클릭하면 위의 입력란에 불러옵니다.
| 투사체 | Damage | 배수 | 최소 | 최대 | 평균 | Speed (mu/tic) |
|---|---|---|---|---|---|---|
| 임프 화염구 — DoomImpBall | 3 | × random(1, 8) | 3 | 24 | 13.5 | 10 |
| 카코데몬 볼 — CacodemonBall | 5 | × random(1, 8) | 5 | 40 | 22.5 | 10 |
| 아라크노트론 플라즈마 — ArachnotronPlasma | 5 | × random(1, 8) | 5 | 40 | 22.5 | 25 |
| 플라즈마 라이플 볼 — PlasmaBall | 5 | × random(1, 8) | 5 | 40 | 22.5 | 25 |
| 바론 오브 헬/헬 나이트 볼 — BaronBall | 8 | × random(1, 8) | 8 | 64 | 36 | 15 |
| 맨큐버스 화염구 — FatShot | 8 | × random(1, 8) | 8 | 64 | 36 | 20 |
| 리브넌트 추적 미사일 — RevenantTracer | 10 | × random(1, 8) | 10 | 80 | 45 | 10 |
| 로켓 (직격) — Rocket | 20 | × random(1, 8) | 20 | 160 | 90 | 20 |
| BFG 스프레이 (1광선당) | 67 | × 1..8 loop | 15 | 120 | 67.5 | — |
| BFG 볼 (직격) — BFGBall | 100 | × random(1, 8) | 100 | 800 | 450 | 25 |
이 숫자를 재현하는 DECORATE/ZScript 스니펫.
ACTOR CustomProjectile : DoomImpBall{ Damage 3 // Min 3 Max 24 Avg 13.5 (× random(1, 8))}ZDoom 데미지 계산기. 둠 모더용 데미지 범위·DPS·tic 한 페이지.
ZDoom 데미지·DPS 계산기란?
ZDoom 데미지·DPS·tic 계산법(그리고 이 계산기가 내부에서 하는 일)
데미지·DPS·tic 변환 공식(엔진 산술)
- = DECORATE 또는 ZScript 액터의 Default 블록에 적는 Damage 프로퍼티(정수)
- = 난수 배수 범위. 기본은 1과 8, +STRIFEDAMAGE는 1과 4, 권총/샷건/체인건 펠릿은 1과 3, 주먹/전기톱은 1과 10
- = 공격 간격 tic 수. 액터 States 블록에서 연속된 발사 호출 사이의 state 머신 길이
- = 대상의 HP. 좀비맨 20, 임프 60, 카코데몬 400, 바론 오브 헬 1000, 스파이더 마스터마인드 3000, 사이버데몬 4000
- = DamageFactor 배수. 1.0이면 정상, 0.5는 저항, 2.0은 약점, 0.0이면 무적
- = 초 단위 시간. TICRATE = 35를 곱해 정수 tic으로 반올림한 값이 state 길이와 Delay() 인자로 들어감
- = 비행 거리(맵 유닛)와 투사체 Speed(맵 유닛/tic). 엔진이 정수 step으로 움직이므로 올림 나눗셈으로 tic 수가 나옴
실제 숫자로 따라가는 계산 예시
임프 화염구 vs 카코데몬 — 기본 시나리오
권총 DPS로 좀비맨 — "권총은 정말 쓸모없는가?"
슈퍼 샷건으로 헬 나이트 — 근접 사거리의 현실
BFG 볼 직격으로 사이버데몬(스프레이 없음)
ACS Delay 계산 — "2.5초는 몇 tic?"
모더·매퍼·궁금한 플레이어를 위한 ZDoom 데미지·밸런스 팁
- 액터의 Damage 프로퍼티는 "문자 그대로의 값"이 아니라 "기대값"으로 읽으세요. Damage 5 투사체는 게임 내에서 평균 22.5(5 × 4.5)이며 5가 되지 않습니다. 자작 몬스터의 화염구를 임프(기대값 13.5) 수준으로 맞추고 싶다면 Damage 3을 잡으세요. Damage 10이 아닙니다. DECORATE 밸런스 조정에서 가장 흔한 실수는 Damage 10을 "10 고정"이라고 읽는 것입니다. 실제로는 10~80, 평균 45입니다.
- +STRIFEDAMAGE 플래그는 투사체 범위를 좁히고 싶을 때 가장 비용이 적은 방법입니다. Damage 값은 그대로, 최대 배수가 8에서 4로, 기대값이 4.5×에서 2.5×로 떨어집니다. 예를 들어 60~480이 아니라 60~240의 안정적인 커스텀 로켓을 만들고 싶을 때 유용합니다. Strife(엔진 최초의 비-Doom IWAD) 유래의 이름이지만 플래그 자체는 베이스 게임을 가리지 않고 ZDoom 위에서 도는 모든 모드에서 작동합니다.
- 히트스캔 무기는 Damage 프로퍼티를 완전히 무시합니다. 권총·샷건·체인건·슈퍼 샷건은 A_FireBullets/A_FirePistol/A_FireShotgun 내부에 펠릿당 $5 \times \text{random}(1, 3)$을 박아두었습니다. 히트스캔 무기 위력을 높이려면 펠릿 수를 늘리거나, A_CustomBulletAttack의 damage 인자를 바꾸거나, 투사체 방식으로 바꿔야 합니다. 주먹과 전기톱은 $2 \times \text{random}(1, 10)$. 버서크가 적용되는 것은 주먹뿐이며 난수 뒤에 ×10이 곱해집니다(20~200, 기대값 110).
- 공격 간격 tic 수가 1발 데미지보다 DPS 비교에서 더 중요합니다. 체인건과 권총은 1발 공식(5~15, 기대값 10)이 동일하지만, 체인건의 공격 간격은 약 4 tic, 권총은 약 14 tic입니다. 같은 펠릿 계산인데도 DPS는 약 3.5배 차이가 납니다. 무기 모드의 밸런스를 잡을 때는 먼저 목표 DPS(바닐라 권총 약 25, 샷건 약 70, 슈퍼 샷건 약 150, 체인건 약 88, 플라즈마 라이플 약 263, 로켓 런처 직격 약 159)를 정하고 그것을 만들어내는 1발 데미지와 공격 간격을 역산하세요.
- 19종 몬스터 한눈표로 전투 설계를 점검하세요. 좀비맨(HP 20), 샷건 가이(30), Wolfenstein SS(50), 임프(60), 체인거너(70), 로스트 소울/커맨더 킨(100), 데몬/스펙터(150), 리브넌트(300), 페인 엘리멘탈/카코데몬(400), 헬 나이트/아라크노트론(500), 맨큐버스(600), 아치바일(700), 바론 오브 헬(1000), 스파이더 마스터마인드(3000), 사이버데몬(4000). 슈퍼 샷건 1발(기대 200, 최대 300)은 베스트 케이스에서 리브넌트(HP 300)까지 1발에 떨어뜨립니다. 페인 엘리멘탈/카코데몬(HP 400)에는 최소 2발이 필요합니다. 권총 1발(기대 10)로 1발 처치가 가능한 것은 좀비맨뿐. 맵 초반 작은 방에 데몬을 놓을지 맨큐버스를 놓을지는 1.5배 난이도가 아니라 4배 난이도 차이입니다. HP 곡선은 선형이 아니라 기하적으로 올라갑니다.
- GZDoom v3.2.2(2017년 12월) 이상에서는 35 tic이 정확히 1초로 보장됩니다. 그 이전 버전은 tic 간격을 28 ms로 표시했기 때문에 35 tic이 0.98초로 보였습니다. 타이머 코드의 정수 나눗셈 절단 때문입니다. ACS Delay() 계산에 서브초 정밀도가 필요하고 2017년 이전 포트도 대상으로 잡는다면 2% 드리프트를 반영하세요. `Delay(35 * 60)`은 레거시 타이머에서 실제 58.8초이며 1분에서 1.2초가 부족합니다.
- BFG 스프레이는 $\text{Damage} \times \text{random}(1, 8)$ 법칙을 따르지 않는 유일한 투사체입니다. A_BFGSpray 내부에서 1광선 데미지는 독립적인 random(1, 8) 15회의 합으로 계산됩니다. 범위 15~120, 기대값 67.5, 분포는 균등이 아니라 종 모양입니다. BFG 볼은 전방 90도 콘에 최대 40개 광선을 방출하므로 풀 커버리지면 $40 \times 67{.}5 = 2700$ 데미지(기대값)가 BFG 볼 본체의 100~800 위에 얹힙니다. BFG 한 번 당기는 것으로 사이버데몬을 2발에 가라앉히는 전설의 정체는 이 스프레이입니다. 직격과 콘을 동시에 맞춰야 성립합니다.
- 맵 유닛에는 실측 환산이 한 가지가 아니라 두 가지입니다. 수평 방향은 16 맵 유닛 = 1피트(0.3048 m), 수직 방향은 10 맵 유닛 = 1피트(원래의 320×200 모드가 세로 20% 늘어났기 때문). 투사체는 지도 평면 위를 날아가므로 Speed 환산에는 수평 비율을 씁니다. Speed 10(임프 화염구) ≈ 6.67 m/s ≈ 15 mph, Speed 25(플라즈마, BFG 볼) ≈ 16.67 m/s ≈ 60 km/h ≈ 37 mph. 둠가이의 달리기 속도는 약 Speed 16, 약 24 mph. 복도에서 가끔 임프에게 따라잡히는 이유가 이 비교에서 분명해집니다.
- DamageFactor는 데미지 코드를 다시 쓰지 않고 저항·약점을 구현하는 수단입니다. 몬스터에 `DamageFactor 'Fire', 0.5`를 적으면 Fire 타입 데미지가 절반, 2.0이면 두 배, 0.0이면 완전 무효화됩니다. 계산기 DPS 모드는 스칼라 한 개로 DamageFactor를 입력하는 UI입니다. 자체 데미지 타입을 선언하지 않고도, 예를 들어 카코데몬의 플라즈마 저항 0.7 가상 변종에 대해 바닐라 무기의 TTK를 비교할 수 있습니다.
- 극단 케이스와 범위는 생존 판단에서 평균보다 더 중요합니다. "기대 처치 발수 = 30"이라는 숫자는 운이 나쁜 경우 카코데몬이 임프 화염구를 134발 흡수할 수 있다는 사실을 가립니다. 계산기가 기대값과 함께 베스트/워스트를 표시하는 이유가 이것입니다. 슬로터 맵에서 정해진 탄약 예산 안에 몬스터를 잡아야 할 때는 워스트 케이스로 설계합니다. 일반 맵이라면 기대값으로 설계합니다. random(1, 8) 투사체에서는 두 값이 5~10배까지 벌어지는 일이 드물지 않습니다.
- 한국어로 모드를 만들 때도 액터 이름과 프로퍼티 이름은 엔진이 알아보는 영문 표기 그대로 두세요(Damage, Speed, Health, +STRIFEDAMAGE, Cacodemon, Cyberdemon 등). DECORATE와 ZScript는 로컬라이즈된 식별자를 받지 않습니다. 디시인사이드 둠 마이너 갤러리(gall.dcinside.com/mgallery/board/lists/?id=doom), 루리웹의 둠 게시판, 나무위키의 둠 관련 문서에서는 "카코데몬"이나 "사이버데몬"이라고 번역되어 있지만 코드 안에서는 `Cacodemon` `Cyberdemon`입니다. PK3 안에 영문 표기를 유지해 두면 다른 모더가 WAD를 열었을 때 디버깅 시간을 몇 시간이나 절약합니다.
ZDoom 데미지 계산기 — 자주 묻는 질문
Damage 10 투사체가 가끔 80 데미지를 입히는 이유는?
ZDoom은 매번 명중할 때마다 투사체의 Damage 프로퍼티를 random(1, 8)으로 곱합니다. Damage 10이라면 10, 20, 30, 40, 50, 60, 70, 80 중 하나가 같은 확률로 나옵니다. 평균은 45. +STRIFEDAMAGE 플래그를 붙이면 배수가 random(1, 4)로 바뀌어 10, 20, 30, 40 중 하나, 평균 25가 됩니다.
클래식 둠의 권총 데미지 공식은?
권총은 1발당 $5 \times \text{random}(1, 3)$, 즉 1발에 5·10·15 중 하나로 기대값은 10입니다. 체인건과 샷건도 (펠릿마다) 같은 공식을 씁니다. 히트스캔 액터의 Damage 프로퍼티는 무시되고, 공식은 A_FirePistol, A_FireShotgun, A_FireCGun 내부에 박혀 있습니다.
ZDoom에서 1초는 몇 tic?
35 tic입니다. TICRATE는 1993년 오리지널 릴리스부터 35로 고정되어 있습니다. GZDoom v3.2.2(2017년 12월) 이상은 35 tic = 정확히 1.000초를 보장하지만, 그 이전 버전은 1 tic = 28 ms로 절단했기 때문에 35 tic이 0.98초로 표시되었습니다. 긴 Delay() 연쇄에서는 약 2%의 드리프트로 작동합니다.
ACS Delay()로 X초를 기다리게 하려면?
초에 35를 곱하고 정수로 반올림합니다. 0.5초 = 18 tic, 1초 = 35 tic, 2초 = 70 tic, 5초 = 175 tic, 10초 = 350 tic, 60초 = 2100 tic. ACS에서는 `Delay(35 * seconds)`라고 직접 적으면 엔진이 컴파일 타임에 곱셈을 처리해 줍니다.
+STRIFEDAMAGE 플래그는 무엇을 하나?
+STRIFEDAMAGE는 투사체 데미지 배수를 random(1, 8)에서 random(1, 4)로 바꿉니다. Damage 값은 그대로, 범위가 좁아지고 평균이 낮아집니다. Strife에서 유래한 이름이지만 ZDoom 위에서 도는 모드라면 베이스 게임을 가리지 않고 사용할 수 있습니다. 안정적인 중위력 투사체가 필요할 때 유용합니다.
사이버데몬 HP는?
4000 HP. 사이버데몬은 폭발 스플래시를 무효화하기 때문에 로켓과 맨큐버스 탄의 폭풍은 통하지 않습니다. BFG9000이 정석(스프레이 포함 약 2~4 트리거), 그 외에도 근접 슈퍼 샷건 약 20발, 로켓 직격 기대값 약 45발로도 잡을 수 있습니다(탄약이 받쳐주면). 계산기 하단의 19행 몬스터 표에 모든 바닐라 HP 값이 정리되어 있습니다.
BFG 데미지가 특이한 이유는? 15회 루프란 무엇인가?
BFG 볼 본체는 표준 공식(Damage 100 × random(1, 8) = 100~800)을 따르지만 스프레이 추적 광선만 다릅니다. 최대 40개 광선 각각이 독립적인 random(1, 8) 15회의 합을 굴려, 1광선 15~120, 기대값 67.5가 됩니다. Doom Wiki에 따르면 의사 난수 테이블 P_Random(256바이트 고정)의 결정론 때문에 실제 플레이 범위는 이론 최대보다 좁아지지만, 1광선당 이론 상한 120은 변하지 않습니다.
ZScript 액터에서도 이 계산기를 쓸 수 있나?
쓸 수 있습니다. ZScript와 DECORATE는 Damage/DamageFunction/Speed/Health/+STRIFEDAMAGE 시맨틱을 공유하며 다른 점은 문법뿐입니다. Default 블록에 `Damage 5;`라고 적은 ZScript 액터는 같은 프로퍼티를 가진 DECORATE 액터와 동일하게 $5 \times \text{random}(1, 8)$을 굴립니다. 계산기 출력은 둘 모두에 공통으로 유효합니다.
Brutal Doom이나 Project Brutality에서도 쓸 수 있나?
표준 Damage 프로퍼티와 바닐라 히트스캔 함수를 유지하는 액터에 대해서는 유효합니다. Brutal Doom(Sergeant Mark IV 제작)과 Project Brutality는 대부분의 무기를 자체 DamageFunction 식과 커스텀 A_FireCustomMissile 루틴으로 재정의하여 random(1, 8) 배수를 따르지 않습니다. 해당 무기에 대해서는 계산기가 바닐라 근사값을 표시하므로, 대상 모드의 DECORATE/ZScript를 직접 읽고 액터별로 수동 보정하세요.
GZDoom의 한국어 번역은 계산에 영향을 주나?
주지 않습니다. GZDoom 한국어 파일(공식 번역 프로젝트에서 관리)은 메뉴·HUD·로그만 번역하며 엔진 산술은 건드리지 않습니다. 동일한 random(1, 8), TICRATE = 35, +STRIFEDAMAGE, 몬스터 HP는 영문 빌드든 한국어 언어 파일을 로드한 빌드든 완전히 동일하게 작동합니다.
PrBoom+·ZDoom·GZDoom·Zandronum에서 데미지는 다른가?
바닐라 둠/둠 II에 대해서는 다르지 않습니다. PrBoom+, ZDoom, GZDoom, Zandronum 모두 TICRATE 35, random(1, 8)과 random(1, 3) 공식, 오리지널 HP 값을 글자 그대로 보존합니다. 포트 간 차이는 고급 기능(피직스, MAPINFO, ZScript, MBF21 몬스터 스크립트)에서 나타나지 기본 데미지 산술에서는 나타나지 않습니다. 같은 난수 시퀀스라면 HP 400 카코데몬은 네 엔진 모두에서 동일하게 떨어집니다.
ZScript와 DECORATE의 데미지 계산 차이는?
수학적인 차이는 없고 문법만 다릅니다. ZScript는 DECORATE의 상위 호환으로, Default 블록의 `Damage 10`은 같은 random(1, 8)을 굴리고, +STRIFEDAMAGE 플래그도 동일하게 random(1, 4)로 바꿉니다. GZDoom에서 DECORATE는 deprecated 마크가 붙어 있지만 호환성은 유지되며, 새 모드는 ZScript를 권장합니다. 이 계산기의 데미지 산술에 한해서는 둘 다 동일합니다.
리브넌트 추적 미사일이 10~40이 아니라 10~80인 이유는?
액터 `RevenantTracer`는 블록 안에 Damage 10을 가지지만 +STRIFEDAMAGE 플래그는 붙어 있지 않습니다. 기본 random(1, 8) 배수를 사용하므로 범위는 10~80, 기대값은 45입니다. 10~40이 아닙니다. 리브넌트 로켓은 Strife 계열 산술처럼 보인다는 오해가 많지만, 실체는 표준 random(1, 8)입니다.
난이도(UV/나이트메어)로 무기 데미지가 늘어나나?
늘어나지 않습니다. 나이트메어는 몬스터의 공격성과 탄약 픽업을 두 배로 늘리지만 무기 데미지는 5단계 난이도 모두에서 동일합니다. 바닐라 둠에 존재하는 데미지 배수는 버서크 효과뿐이며 주먹 데미지를 ×10배 합니다. 난이도가 바꾸는 것은 "누가 먼저, 얼마나 자주 쏘느냐"이지 "한 발이 얼마나 무겁느냐"가 아닙니다.
실제 게임 동작과 비교해서 이 계산기의 정확도는?
ZDoom/GZDoom에서 도는 바닐라 둠/둠 II 동작에 대해서는 엔진 단위로 정확합니다. 검증 범위는 모든 투사체 프리셋, 모든 히트스캔 무기, 모든 몬스터 HP, 그리고 BFG 스프레이의 15회 루프까지입니다. 데미지 범위·몬스터 HP·투사체 Speed는 바닐라 액터 정의와 단위 수준으로 일치합니다. DECORATE/ZScript로 교체한 액터, 자체 DamageFunction 식, 신세대 둠(2016·이터널·더 다크 에이지스)은 다른 계산식을 쓰므로 대상이 아닙니다.
이 도구를 트위치 둠 방송이나 유튜브 영상 자막에도 쓸 수 있나?
쓸 수 있습니다. "BFG로 사이버데몬은 몇 발에 떨어지나?" "슈퍼 샷건으로 헬 나이트는 확정 2발인가?" 같은 자막용 숫자를 빠르게 뽑을 때 편리합니다. 기대값·베스트·워스트를 동시에 표시해서 시청자에게 "평균과 최악 케이스의 차이"를 그대로 보여줄 수 있습니다. 방송 중에 메모용 URL을 남기고 싶다면 선택한 모드가 쿼리 문자열(?mode=damage / dps / tics)에 반영되므로 북마크에서 복원됩니다.
ZDoom 데미지·시간 용어집
Damage 프로퍼티
DECORATE 또는 ZScript 액터의 Default 블록에 적는 수치 프로퍼티로, 엔진이 명중할 때마다 random(1, 8)을 곱합니다(+STRIFEDAMAGE는 random(1, 4)). Damage 10이라고 적어도 게임 내에서 10 고정이 되지 않고 10~80 범위가 나옵니다.
+STRIFEDAMAGE
투사체 데미지 배수를 random(1, 8)에서 random(1, 4)로 바꾸는 액터 플래그. Damage 값은 같고 범위가 좁아지며 평균이 낮아집니다(Damage × 4.5 대신 Damage × 2.5). 베이스 게임을 가리지 않고 모든 ZDoom 모드에서 작동합니다.
tic
둠 엔진의 원자적 시간 단위. TICRATE = 1초당 35 tic, 1 tic ≈ 28.5714 ms. DECORATE/ZScript의 state 길이, ACS Delay()의 인자는 모두 tic으로 표현됩니다. GZDoom v3.2.2(2017년 12월) 이상은 35 tic = 1.000초를 보장하며, 이전에는 28 ms로 절단했습니다.
히트스캔 무기
투사체 액터를 거치지 않고 직선상에서 즉시 데미지가 결정되는 무기. 권총, 샷건, 슈퍼 샷건, 체인건이 히트스캔에 해당합니다. 공식은 액션 함수 A_Fire* 내부에 박혀 있고(펠릿당 $5 \times \text{random}(1, 3)$) 액터의 Damage 프로퍼티는 무시됩니다.
DamageFactor
특정 데미지 타입에 대한 피해 배수. `DamageFactor 'Fire', 0.5`는 Fire 피해 절반, 2.0은 두 배, 0.0은 완전 무효. 계산기의 DPS 모드에서는 저항·약점 케이스를 다루기 위한 스칼라 DamageFactor 입력란이 노출됩니다.
버서크
random(1, 10) 굴림 이후에 주먹 데미지를 ×10배 하는 파워업. 범위는 20~200, 기대값 110. 보너스를 받는 것은 주먹뿐이고 전기톱, 히트스캔, 투사체는 대상이 아닙니다.
맵 유닛(map unit)
둠의 공간 좌표 단위. 커뮤니티 합의는 수평 16 맵 유닛 = 1피트 = 0.3048 m(둠가이는 수직 56 유닛으로 5피트 7인치). 계산기는 수평 비율 16 mu/피트를 사용해 투사체 Speed(맵 유닛/tic)를 m/s·km/h·mph로 환산합니다.
Speed 프로퍼티
투사체 액터의 속도(맵 유닛/tic). 임프 화염구 Speed 10, 로켓 Speed 20, 플라즈마 라이플 볼과 BFG 볼은 Speed 25. 35를 곱하면 맵 유닛/초, 0.667을 곱하면 m/s, 1.49를 곱하면 mph가 됩니다.
BFG 스프레이
BFG 볼이 착탄 시 방출하는 최대 40광선의 콘(BFG 볼 Death state에서 A_BFGSpray가 발사). 각 광선의 데미지는 독립적인 random(1, 8) 15회의 합으로, 1광선당 15~120, 기대값 67.5. BFG가 사이버데몬을 1샷에 잡는다는 전설은 스프레이의 기여이고, 본체 플라즈마 볼만으로는 닿지 않습니다.
TICRATE
둠의 프레임레이트를 1993년부터 35 tic/초로 고정한 엔진 상수. id Software의 `doomdef.h`에 선언되어 있고 ZDoom, GZDoom, Zandronum, PrBoom+, Boom, MBF21 등 모든 바닐라 호환 소스 포트가 그대로 보존합니다. 모든 state 길이, Delay() 인자, 투사체 비행 시간 계산에서 변환 상수로 35가 사용됩니다.
DamageFunction
Damage 프로퍼티의 대체 수단으로, 모더가 명중 시점에 ZScript 식에서 임의의 정수를 반환할 수 있게 합니다. random(1, 8) 배수를 우회할 수 있어서 고정값을 반환해 결정론적 데미지를 내거나, inflictor/target/distance에서 계산해 컨텍스트에 민감한 동작을 만들 수 있습니다.
P_Random
둠 엔진의 의사 난수 함수. 0~255가 섞인 256바이트 고정 테이블의 인덱스가 순서대로 진행하며 호출할 때마다 다음 바이트를 반환합니다. 균등 분포는 아니지만(값 1은 한 번도 안 나오고 145는 5번 나옴) 전투 산술에는 충분합니다. 모든 데미지 굴림에 쓰입니다. M_Random은 게임 비효과용으로 별도 인덱스를 가져 멀티플레이 동기화를 깨지 않게 되어 있습니다.
Smart Calculators 팀 검증 콘텐츠