우선 나는 수학 전공이랑은 먼 수알못임을 밝힘. 예체능하느라 미적분부터 수학 공부는 관뒀고, 대학도 상관없는 전공으로 나왔음. 취미가 게임인데 한번 만들어보고도 싶어서 독자적인 대미지 공식을 만들어보기로 함.
https://www.desmos.com/calculator/ideuywzhmi
대미지 계산법(단일속성 피해) - Ⓒ 2024-2025 EJOh
www.desmos.com
위 링크 타면 식이랑 그래프랑 다 나옴. 상수 조절도 원하는 대로 가능
y = kl(a + fg - x((100 - c)/100) + d)(1 - ((x(100 - c)/100) - d)/(x(100 - c)/100 - d + b(a + fg)))(1 + h(j - 1)/100)
식만 뜯어내면 위와 같음. 식을 한 문장으로 표현하면:
'방어력을 c%, d만큼 무시하고, 사용자/적의 특정 스테이터스(f)의 g배만큼 추가 피해를 입히며, 잃은 or 현재 Hp/Mp%(h)에 비례해 j배까지 최종 피해가 증가하고, k배의 크리티컬 대미지가 적용되는 공식(최종 피해 배수 l)'
| x | 방어력(마법 방어력) |
| y | 최종 대미지 |
상수 의미는 다음과 같음.
| a | 공격력(마력) |
| b | 방어력 효율 상수(기본값 0.5) (<-- 공수 밸런스를 맞추고 그래프의 굴곡을 조절하는 장치인데 적절한 명칭이 안떠올라서 일단 저렇게 이름 지음) (게임 내에서 기본값으로 고정됨. 플레이어는 못 건드리는 변수) |
| c | 무시하려는 방어력(마법 방어력)% |
| d | 무시하려는 방어력(마법 방어력) (고정수치) |
| f | 사용자 or 적의 특정 스테이터스 값 (<-- 상대의 특정한 스탯 값을 의미하는 건데, 가령 상대의 민첩성에 비례한 피해를 입히고 싶으면 민첩성 값을 f에 놓으면 됨.) |
| g | 사용자 or 적의 특정 스테이터스 값(f)에 곱해지는 배수 (<-- f랑 상호작용하는 변수인데 g=5라면 '상대 민첩성의 5배'만큼 공격력에 가중되는 거) |
| h | 잃은 or 현재 Hp/Mp% (<-- 잃은 대상이 플레이어인지 적인지는 내가 정할 수 있음) |
| j | 잃은 or 현재 Hp/Mp%에 비례해 증폭되는 최종 피해 배수(j배만큼 최종 피해 증가) |
| k | 크리티컬 대미지 배수(k=1일 때 치명타 미적용 피해) |
| l | 최종 피해 배수(1일 때 최종 피해 = 기존 피해) |
설계할 때 스토리:
- 게임에서의 가장 기본적인 계산식은 '공격력 - 방어력'인데 나는 이 과도하게 직관적이고 단순한 방식이 맘에 안들었음. 방어력 +500 증가라면 사실상 공격력 -500랑 똑같은데 나는 서로의 변수가 갖는 의미가 상황에 따라 달라지게끔 만들고 싶었음. 당장 위에 Desmos 링크 타고 들어가서 보면 방어력(x) 값에 따라 각각의 나름 복잡한 결과가 도출될 거임.
- 롤은 위랑 다른 방식을 채용하고 있는데 공식이 '피해량 = 1 / (1 + 방어력 x 0.01)'일 거임. 직관적으로 완벽하게 파악할 수 없다는 점은 좋은데, 아무리 방어력이 극단적으로 높아도 절대 피해량이 0이 될 수 없다는 게 흠이었음. 때문에 나는 이 공식을 바탕으로 변형해서, 방어력이 공격력 이상이 되면 피해량이 0이 되게끔 설계하기로 했음.
- 크리티컬 대미지 배수(k)가 높아도, 최종 피해에 곱해지는 배수(l)가 높아도 방어력이 공격력 이상이면 피해량이 0이 될 거. 근데 방어력을 고정 수치만큼 감소시키는 값(d)가 과도하게 크다면(= 실질적인 방어력이 음수가 되면) 대미지가 원래보다 훨씬 증폭됨. 의도된 인과율이긴 한데 이거 값을 조절하는 방법은 잘 모르겠음.
지피티나 제미나이한테 물어보면 답변에 흠이 있거나 내가 못 알아먹을 용어로 설명함;; 식을 더 간략하게 하거나 보완하는 등 훈수를 받고 싶어서 물어보러 옴!
쓰레기 RPG게임들 뒤져보면 별 희한한 대미지 공식 많다
https://gall.dcinside.com/board/view/?id=latale&no=489745
여기선
방어력 N이면 대미지에 e^-N/3761 곱해서 들어간다더라
전공 아니면 토나오겠네 ㄷㄷ