본문 바로가기
유니티

[유니티] Mathf.Log 함수와 레벨당 증가량 계산

by 디버그러 2025. 1. 24.

 

Mathf.Log(x, y) 는 y를 밑으로 한 x의 로그 값을 반환하는 함수다.

로그 함수의 특징 중 하나는 log(x)에서 x는 반드시 양수여야 한다는 점이다. (x > 0)

따라서 x = 0 일 때 작동하지 않으므로, x + 1로 최소값을 보장할 수 있다.

 

 

Mathf.Log 함수

 

1. 경험치 시스템

 

로그를 사용하면 레벨이 올라갈수록 경험치 요구량이 점차 느리게 증가한다.

예를 들어 1레벨에서는 100, 3레벨에서는 200, 7레벨에서는 300이 필요하다.

레벨이 높아져도 요구량이 미미하게 증가하기 때문에,

만렙이 높고 꾸준히 성장감을 주는 게임에 적합할 것이다.

 

 

2. UI 크기 조정

 

로그 정규화를 통해 값의 변화를 부드럽게 처리할 수 있다.

UI 크기 조정에 활용하면 값이 클수록 변화가 적게 느껴지는 비율을 구현할 수 있다.

 

 

3. 거리 기반 감소 계산

 

로그를 활용하면 거리에 따라 볼륨을 점차 감소시킬 수 있다.

거리가 멀어질수록 볼륨이 줄어들지만, 완전히 0에 도달하지 않는다.

특정 거리 이상에서는 조건문으로 음소거 처리하면 좋을 것 같다.

 

 

 

레벨당 수집량 계산

 

1. 선형 증가

 

레벨당 일정한 양이 증가하는 방식이다.

꾸준한 성장감을 줄 수 있는 구조로 구현이 간단하다.

10레벨 - 300 |  20레벨 - 500 |  30레벨 - 700

 

 

2. 비율 증가

Mathf.Pow(2, 3) → 2³
Mathf.Pow(1.1, 3) → 1.1³
Mathf.Pow(x, 1) → x
Mathf.Pow(x, 0) → 1

 

레벨당 비율로 증가하는 방식이다.

초반에는 완만하지만 고레벨에서는 급격히 증가한다.

 

10레벨 - 259 |  20레벨 - 672 |  30레벨 - 1744

 

성장률이 높으면 수집량이 너무 많아질 수 있으니

성장률에 상한선을 두는 방식으로 조정이 필요할 수 있다.

 

은행의 복리 이자와 똑같은 원리로 작동한다.

금액 = 원금 * Mathf.Pow(1 + 이자율, 년수)

 

 

3. 로그와 선형 증가 조합

 

레벨당 선형 증가와 로그 증가를 결합한 방식이다.

초반에는 완만하게 증가하고, 고레벨에서는 적당히 급격해지며,

현실적인 성장 곡선을 만들어낸다.

 

10레벨 - 472 |  20레벨 - 719 |  30레벨 - 947