기획 단계의 밸런스
밸런스 기획의 절차를 생각 해 보자.
- 밸런스 시나리오 큰 그림 잡기 (역할군 나누기)
- 밸런스에 사용될 능력치 정리 (밸런스 요소)
- 밸런스 기준 설정 (기준 설정 or 최소, 최대값 목표 설정)
- 능력치를 항목에 배분 (각각의 중요도에 따라)
- 능력치를 통한 계산식 만들기
밸런스에 사용될 능력치 정리
Health Point : 게임에서 캐릭터가 피해를 버틸 수 있는 능력을 수치로 표현한 것
Defensive Point : 상대편의 공격을 막는 능력을 수치로 표현한 것
'기준'을 잡으면 대부분의 밸런스는 의미를 가지게 된다.
일반 타입 1마리를 사냥할 때 전투의 평균 시간이 15초라면
- 극 공격 타입 1마리를 사냥할 때 전투의 평균 시간은 8초
- 방어 타입 1마리를 사냥할 때 전투의 평균 시간은 30초
능력치를 각 항목에 배분
능력치를 정할 때 최소와 최대를 정해놓으면 좋다.
스탯에 힘이 있고, 최소 10 ~ 최대 250일 경우.
외부로 공개되어있지 않을지언정 정해져 있어야 한다.
- 힘 120 민첩 220 감각 80과 힘 240 민첩 80 감각 30의 캐릭터가 있다면.
예정된 능력치를 어디에 어떻게 배분할 것인가.
HP는 어떻게 지정 해 줘야 할까?
- 클래스
- 스킬
- 아이템
- 버프
체력 능력치 아이템이 30%이면 또 다시 배분해야 한다.
- 투구
- 갑옷
- 펫
각각은 몇 퍼센트인가?
레벨별로 능력치가 다른가?
기준의 적용 범위를 확대 해 보면
- 아이템 : 기본 능력의 50%
- 버프 : 기본 능력의 100%
프리스타일 2의 능력치의 획득 배분이 다음과 같을 때, 밸런스 컨셉은?
- 전체 100%
- 캐릭터 기본 : 비중 80%
- 캐릭터 성장 : 비중 8%
- BM 모델 : 비중 12%
1. 명확한 캐릭터성
2. 성장 차이로 인한 실력 격차 최소화 (하지만 성장의 제공은 필요하다.)
3. 착한 BM 설계
능력치 배분 방식의 핵심
조삼모사 ... 어차피 7개!
목표를 정하고 배분하는 것에 가깝다.
- 6*2
- 4*3
- 3*4
목표 값을 미리 정하고 배분하여 밸런스를 잡을 때의 장단점
- [장점] 배분 방식으로 인한 밸런스가 용이하다.
- [장점] 최대 밸런스를 뛰어넘는 문제가 발생하지 않는다.
- [단점] 라이브 업데이트를 하려면 추가 밸런스의 확장이 필요하다.
1차 능력치를 계산식에 적용하여 2차 능력치 만들기
프리스타일2의 밸런스는 최소값, 최대값 설정으로 되어 있다.
장점 : 확률 밸런스가 많다.
현실 기반 밸런스이기 때문에 어색하지 않은 높이의 선이 있다. 이에 맞게 밸런스가 진행됨.
슛확률 100%, 110%, 200%는 차이가 있을까?
차이가 있다. 수비 저항 스탯과 계산하여 슛 성공률이 정의되기 때문.
즉... 수비를 완전히 따돌리고 슛을 쏠 수 있다면 슛확률을 100% 이상 높이지 않아도 된다.
(실력이 중요한 게임, 공격보다 수비가 더 중요한 게임의 경우)
점차적으로 플레이어의 실력이 서로 높아지면 수비를 완전하게 벗겨내기 어렵다.
코어 유저들에게는 슛 확률을 100% 이상 높여야 한다.
점프슛을 만든다면...
점프슛 확률을 최소 25%~최대95%로 설정하여
점프슛 능력치가 20일 때 25%, 100일 때 95%로 하려면 어떻게 해야 할까?
등가 그래프로 슛 확률을 컨트롤 해 보자.
점프슛 능력치를 20개로 나눴을 때, 점프슛 능력치 1의 가치는 1.25%
점20 * 1.25% = 25%
점프슛 능력치가 20을 초과할 시 계산식을 다르게 짜려면?
IF 함수는 엑셀에서 중요도가 가장 높은 함수이기 때문에 꼭 기억하고 많이 써 봐야 한다.
문법 : =IF(조건, 참일때리턴값, 거짓일때리턴값)
실습 진행 : 리바운드 계산식 만들기
- [리바운드 능력치]라는 1차 능력치를 만든 후
- 계산식을 통해 [리바운드 높이]라는 2차 능력치를 만들어보자.
- 리바운드 능력치는 최소 10부터 최대 100으로 구성된다.
리바운드 가능한 높이 범위는 최소 150cm에서 최대 370cm으로 한다.
최대값까지의 구간은 몇 개인가?
단계를 나눠서 각 단계를 분할한다.
계산식은 덩어리로 나누어 이해하자.
* 계산식에 대한 구조적 이해는 계산시을 덩어리 별로 나누어 이해하는 것에서 시작한다.
- Tip1. 더하거나 빼기의 경우 별도의 덩어리로 판단한다.
ex : 레벨 + 힘 + 민첩 = x
- Tip2. 괄호, 곱하기, 나누기의 경우 하나의 덩어리로 판단한다.
덩어리가 두 개가 되는 것. 레벨에 대한 부분과 힘에 대한 부분.
ex : 레벨 * 12 + (힘 * 1.2 + 150) = y
- Tip3. 능력치에 상관없이 주는 수치는 상수로 제공한다. (당연함)
ex : 250 + (힘 * 1.5) = z
- Tip4. 제곱이나 루트의 경우에도 하나의 덩어리로 판단한다.
ex : 레벨 2 ^ 3 - sqrt(상대레벨) * 2 = z
각 계산식의 값 이동 경향을 그래프로 이해하자
- Tip1. 분모에만 증가하는 변수가 있는 경우 비선형으로 조금씩 작아진다.
ex : 100/(100+증가하는 변수) = x
- Tip2. 분자에만 증가하는 변수가 있는 경우 선형으로 조금씩 커진다.
ex : (100+증가하는 변수)/100 = y
- Tip3. 분자, 분모에 모두 증가하는 변수가 있고 상수가 분모에 있는 경우 비선형으로 조금씩 커진다.
결과적으로 1에 가까워진다.
ex : 증가하는 변수/(100+증가하는 변수) = x
- Tip4. 분자, 분모에 모두 증가하는 변수가 있고 상수가 분자에 있는 경우 비선형으로 조금씩 작아진다.
결과적으로 1에 가까워진다.
ex : (100+증가하는 변수)/증가하는 변수 = y
실제 게임에서 사용되는 계산식의 사례
- 체력 계산식 : [(레벨+5)*SQRT(레벨+20)*3.5+(힘 스탯*2)]+아이템 증가치
사실 대괄호는 의미가 없다. 레벨에 더한 값은 같은 가족과 같은 연산.
더하기를 기준으로 분리해서 보면 구분 할 수 있다. 곱하기였으면 대괄호의 의미가 있었을 것.
실습 진행
수업 중 실습 : 파이어볼 데미지에 대한 밸런스 기획
- 주문력 (스탯)
- 파이어볼 데미지 증가 (절대값)
- 항마력
능력치 목표
1. 주문력(능력치)과 항마력(능력치)은 최소 0부터 최대 100으로 한다.
2. 파이어볼 데미지 증가(능력치) 최소 0부터 최대 800으로 한다.
3. 주문력(능력치)과 파이어볼 데미지 증가(능력치) 수치에 따라 파이어볼 데미지(결과값)가 변화한다.
4. 파이어볼 데미지(결과값)는 최소 120에서부터 최대 2000으로 한다.
5, 항마력(능력치) 수치에 따라 파이어볼 데미지(결과값)는 최소 0%부터 최대 25%까지 낮아진다.
파이어볼 데미지 계산식은 어떻게 만들면 될까?
1. 모든 능력치가 0이라도 파이어볼 데미지는 최소 120을 나타낸다.
2. 주문력 능력치가 100, 파이어볼 데미지 증가가 800이 되면 파이어볼 데미지는 2000을 나타낸다.
3. 주문력 능력치가 100이 되면 파이어볼 데미지는 1200을 나타낸다. (2000-800으로 계산 !!)
4. 항마력 능력치가 100이 되면 파이어볼 데미지는 25% 감소한다.
위를 기반으로 계산식을 만들고 시뮬레이터를 제작 해 보자.
- 정수로 반올림하여 제작한다.
- 엑셀 시트와 그래프 차트를 제작한다.
'대학생활 > 수업' 카테고리의 다른 글
리얼타임엔진 4주차 - 시작해요 UEFN3 (0) | 2023.09.19 |
---|---|
게임인공지능 4주차 - FSM (0) | 2023.09.19 |
게임그래픽프로그래밍심화 4주차 - 그래픽스 API와 조명, 텍스처 (0) | 2023.09.18 |
게임배경음악과효과음 3주차 - 기초음향학과 머신건 이펙트 (0) | 2023.09.14 |
게임기획과비주얼스크립팅 3주차 - 게임 수학/ 물리 그리고 코딩 (0) | 2023.09.14 |