경험 포인트를 기반으로 레벨을 동적으로 계산하기위한 알고리즘? [닫은]


41

게임 개발에서 항상 겪었던 어려움 중 하나는 레벨을 올리는 데 따른 경험 포인트를 구현하는 방법을 결정하는 것입니다. 내가 한 많은 게임에서 레벨을 얻는 데는 패턴이없는 것 같으므로 경험 포인트와 레벨을 포함하는 정적 사전 테이블이 있다고 가정합니다. 예 :

Experience   Level
0            1
100          2
175          3
280          4
800          5

... 280 포인트가 레벨 4와 같은 이유나 운율이 없습니다.

그 수준이 어떻게 결정되는지는 확실하지 않지만 확실히 역동적이지는 않습니다. 또한 별도의 조회 테이블을 유지할 필요가 없으므로 지수 수준의 가능성에 대해 생각했습니다.

Experience   Level
0            1
100          2
200          3
400          4
800          5
1600         6
3200         7
6400         8

... 그러나 상위 레벨을 향한 것처럼 게임의 적들은 레벨에 엄청난 경험을 제공해야하며 제어하기가 어려울 것입니다. 레벨링은 불가능한 작업이되었습니다.

경험을 바탕으로 캐릭터의 레벨을 조정 하는 방법을 결정하는 데 사용하는 포인터 나 방법 이 있습니까? 레벨링이 공정하고 새로운 경험 / 레벨 조회를 지속적으로 추가하는 것에 대해 걱정하지 않기 위해 플레이어보다 앞서 나가고 싶습니다.


4
아니요, 지수가 느립니다 (~ 3.3 레벨마다 10 또는 모든 레벨 대신 ~ 6.6 레벨마다 100을 곱함). 기하 도형은 1 [00], 4, 9, 25, 36 등과 같습니다. 1100 1210 1331 1464조차도 1.1을 곱한 지수 시리즈입니다.
Random832


1
@Stephen : @ Random832는 정확합니다. "지수"와 "기하학적"성장은 연속 / 등거리 항 사이에 일정한 비율 을 가짐 을 의미 합니다 (즉 , 성장률 은 현재 값에 비례합니다)- 지수 함수에는 f'(x) = c*f(x))가 있습니다. "형상"이라는 용어는 도메인 (입력)이 이산적일 때 (예를 들어, 정수) 사용된다. 레벨 1 이상인 @George의 예에 대한 공식은 Experience = 100 * 2^(Level-2)이며 이는 지수입니다. 레벨 1 이상의 진행에 대한 공식 Experience = 100^(Level-1)도 지수입니다.
BlueRaja-대니 Pflughoeft

답변:


36

제곱 관계를 사용하는 것이 일반적입니다.

level = constant * sqrt(XP)

또는 선형으로 상승하는 레벨 갭과 거의 같습니다.

Level   XP      Difference
1       0       -
2       100     100
3       300     200
4       600     300
5       1000    400

이 시스템은 XP 게인이 대략 선형 일 때 아주 잘 작동합니다. 상위 레벨 캐릭터가 하위 레벨 캐릭터보다 XP를 더 빨리 얻을 수 있다면 이것은 올바른 시스템이 아닙니다.


3
어치 버 유형의 플레이어에게는 캐릭터가 진행됨에 따라 XP 획득 량이 더 높아질 것으로 예상됩니다. 나는 당신의 해결책이 흥미 롭다는 것을 알게 될 것입니다. 아마도 107-214-321-428과 같은 차이점을 만들기 위해 약간만 조정하여 플레이어가 둥근 숫자 만 보지 못하게하고 게임 느낌을 더할 수 있기를 바랍니다. 조금 더 "유기농"(이것보다 더 나은 단어를 만들려고 노력하고 있지만 "유기농"이 지금 내가 가진 전부입니다).
Randolf Richardson

1
일이, 내가 과거에 무슨 짓을했는지 정확하게 잘 작동합니다
BlueRaja을 - 대니 Pflughoeft에게

3
선형 상승 레벨 갭에 대한 방정식. 레벨 = (sqrt (100 (2experience + 25)) + 50) / 100 및 경험 = (level ^ 2 + level) / 2 * 100- (level * 100)
C9HDN

3
좋은 대답과 나는 이것이 생성하는 곡선을 좋아합니다. 나는 0.04의 상수를 사용하여 끝났습니다. 궁금한 점이 있으시면 XP에 대해 계산하는이 공식의 반대는 XP = level ^ 2 / constant입니다.
BradH

3
@BradH 사실 XP = (레벨 / 상수) ^ 2 인 것 같습니다. PHP에서 이것은 XP = pow (level / constant, 2) 또는 이후 버전에서 (level / constant) ** 2로 표시 될 수 있습니다.
Taylor Dondich

17

당신은 아마 찾을 수 있습니다 로그 함수는 그들은 더 많은 경험치를 얻게됨에 따라 증가 속도를 느리게하는 데 사용할 수있는 유용한. 다음은 이러한 작동 방식을 설명하는 두 개의 웹 페이지입니다.

  대수 함수 그래프
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  로그 함수 그래프 소개
  http://www.purplemath.com/modules/graphlog.htm

그래프에 다음과 같이 표시되며 원하는대로 충족시킬 수 있습니다.

여기에 이미지 설명을 입력하십시오


1
@George 계수를 가지고 놀면 로그 함수를 사용하여 플레이어의 레벨링을 쉽게 조정할 수 있습니다. 수학 사용 +1
Stephen

2
이것은 지수 XP 요구 사항의 구현입니다. level = log(XP) <=> XP = e^level. 요구 사항은 마지막 수준에 약간 가파른 것으로 드러날 수 있지만 XP 누적이 적절하게 증가하면 정상적으로 작동합니다.
aaaaaaaaaaaa

@eBusiness : 좋은 지적이지만, 높은 레벨의 캐릭터는 더 빠르고 짧은 시간 내에 더 많은 점수를 얻는 경향이 있기 때문에 문제가되지 않을 수 있습니다 (예 : 더 빠른 적중률로 더 강력한 몬스터를 공격 / 사살하는 등). 이것이 제가이 수학이 비디오 게임에 특히 적합하다고 생각하는 이유 중 하나입니다 (특히 MMORPG 상황에서).
Randolf Richardson

2
OP가 지수 성장에 대해 특별히 걱정하고 다른 방법으로 동일한 것을 설명하는 대답을 받아들이는 것이 조금 이상합니다. 그러나 나는 이것이 그의 문제라고 생각합니다.
aaaaaaaaaaaa

1
@ eBusiness : 아마도 내 대답은 이전에 명확하지 않은 지수 성장에 대해 뭔가를 분명히 했습니까? 수학을 적용하는 방법에는 여러 가지가 있으며, 최고의 수학 교사조차도 모든 것을 알 수 있다고 확신하지 못합니다.
랜돌프 리차드슨

9

이것들은 내가 지금까지 사용한 몇 가지 방법입니다. 그것들은 성장률에 따라 정렬됩니다 (모든 방정식에 일정한 값을 곱하면됩니다).

  1. exp = 레벨

  2. exp = 레벨 * 로그 10 (레벨)

    1   0
    2   0.6
    3   1.4
    4   2.4
    5   3.5
    6   4.6
  3. exp = level ^ const_value : 내 예제에서는 const 값을 3/2로 설정했습니다.

    1   1
    2   2.8
    3   5.1
    4   8
    5   11.2
    6   14.7

4

플레이어가 경험을 얼마나 쉽게 얻을 수 있는지에 달려 있다고 생각합니다. 플레이어가 20 분 안에 레벨 1에서 200 xp를 얻은 다음 2 분 안에 레벨 2에서 200 xp를 얻을 수 있다면 xp를 기하 급수적으로 확장해야합니다.

그러나 레벨을 얻는 것만으로도 xp를 얻는 것이 조금 더 쉬워지면 더 많은 레벨 xp 기능을 수행해야합니다. (일부 계수가 1보다 큰 선형 일 수 있음)


4

레벨을 얻는 데 필요한 포인트는 종종 곡선을 기준으로합니다. 많은 RPG에는 레벨에 따라 증가하는 캐릭터의 다른 특성과 속성이 많이 있으며 자체 곡선에도 있습니다.

그들이 어떻게 행동하는지 RPGMaker를 살펴보십시오. 특히 메인 캐릭터 생성 문서 의 "시작 장비를 사용자 정의하여 일부 고유성 추가"섹션의 스크린 샷에서 파라미터 곡선을 확인하십시오 .

기본적으로 레벨 업에 필요한 XP의 양에 대한 곡선이 있고 각 레벨마다 얻는 HP, MP, 체력, 강도 등에 대한 다른 곡선이 있습니다.

여기에 이미지 설명을 입력하십시오


2

시간을 고려

먼저 경험 속도 가 레벨에 따라 어떻게 확장 되는지 알아 내야합니다 . 그런 다음 필요한 시간에 따라 레벨링을 조정할 수 있습니다 . 모든 추가 레벨을 통해 경험치를 두 배 빠르게 얻을 수 있고 레벨을 맞추기 위해 두 배의 경험이 필요한 경우 모든 레벨에는 동일한 시간 이 필요합니다 .

내 제안은 플레이어가 얼마나 많은 시간 을 소비 해야하는지 생각하고 그에 맞게 레벨링을 조정하는 것입니다.


-3

각 레벨마다 정확히 같은 양의 경험이 필요한 평평한 수평 시스템을 사용해야 할 수도 있습니다.


3
대답은 단순한 제안보다 조금 더 복잡해야합니다. 요청한 것과 같은 동적 시스템을 갖는 것보다이 전략의 이점 중 일부를 관련 시키십시오.
MichaelHouse

또한 추가 정보는 원저자 가 게시해야합니다 . 다른 사용자가 더 추가해야하는 경우 별도의 답변을 게시하는 것이 좋습니다.
Gnemlock
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.