Powiedziałbym, że zależy to, przynajmniej częściowo, od rodzaju doświadczenia, które chcesz stworzyć dla gracza. Rozważ dwa przykłady, z których pierwszy to klasyczna turowa gra RPG, a drugi to Gradius III typu , w której chcesz, aby moc gracza skalowała się w zależności od postępu od jego śmierci na liście, a nie od ulepszeń (nie powiedzieć, że to dobry system, tylko przykład).
W przypadku RPG twój system prawdopodobnie działa przy założeniu, że gracz nigdy nie traci doświadczenia. Podobnie prawdopodobnie będzie chciał działać w oparciu o założenie, że stosunkowo łatwo jest osiągnąć pewien poziom biegłości w czymś, ale trudno go opanować (jak większość rzeczy w prawdziwym świecie). W takim przypadku możesz opracować formułę (jak sugerowany program kodujący), która pod pewnym względem ma charakter wykładniczy. Gdzie ilość doświadczenia wymagana do osiągnięcia następnego poziomu jest w jakiś sposób wykładniczo oparta na twoim obecnym poziomie. Ważne jest, aby wziąć pod uwagę, jednak szybkość, z jaką twój gracz będzie otrzymywać doświadczenie podczas gry. Na przykład gracz zabijający Ognistego Demona na poziomie 63 oczekiwałby więcej doświadczenia za zabicie, niż gdyby zabił Lady Bug na poziomie 2. Projektując formułę, pamiętaj, aby wziąć pod uwagę swój system XP. Zwłaszcza, że jeśli tego nie zrobisz, zabicie biedronki będzie tak samo opłacalne jak zabicie trudniejszych wrogów.
Przykład 1 (prawdopodobnie nie byłby to formularz, którego byś użył): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Przykład 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Gdzie XP_TO_LEVEL to XP potrzebne do osiągnięcia następnego poziomu. CURRENT_LEVEL to aktualny poziom gracza. XP_BASE to dowolna liczba decydująca o tym, ile każdy poziom jest „wart” w XP. SKALA to wykładnik określający szybkość skalowania XP potrzebnego do wyrównania. Jeśli SCALE ma wartość 1, każdy poziom będzie wymagał doświadczenia XP_BASE. Jeśli SKALA jest mniejsza niż 1, to każdy poziom będzie wymagał mniej doświadczenia niż ostatni poziom. Jeśli SKALA jest większa niż 1, to każdy poziom zajmie więcej doświadczenia niż ostatni poziom.
W poniższej tabeli przyjęto SKALĘ 1.1 i XP_BASE 100 na przykładzie 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Przykład 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1,5) * XP_BASE
Gdzie SCALE wciąż określa, jak szybko skalować XP_TO_LEVEL, ale działa nieco inaczej.
W poniższej tabeli przyjęto SKALĘ 22 i XP_BASE 10 na przykładzie 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
W przypadku klona Gradius możesz wybrać inną strategię. Możesz chcieć, aby gracz konsekwentnie zdobywał kolejne poziomy, co około dwie minuty. Ponadto, po tym, jak gra straci życie i w konsekwencji straci wszystkie swoje nabyte moce, możesz mu pomóc, podnosząc go na wyższy poziom, aż osiągnie odpowiedni poziom dla jego postępu w grze. W takim przypadku Twoja formuła będzie prawdopodobnie bardziej liniowa, zwłaszcza że użytkownik nie zobaczy, ile doświadczenia dostaje na zabójstwo. Coś w rodzaju, potrzeba 50 XP, aby osiągnąć nowy poziom, a każdy wróg jest wart 1 XP. Działa to świetnie, pod warunkiem, że zaopatrujesz go w stosunkowo stały strumień wrogów. Ale kiedy gracz umiera, traci wszystko! Co teraz robisz? Każdy wróg powinien być wart więcej niż 1 XP, aby osiągnąć cel, jakim jest dogonienie go, aby gra znów była sprawiedliwa.
Przykład: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Gdzie XP_FROM_EACH_ENEMY to ilość PD, którą wróg przyznałby po zabiciu. BASE_XP to domyślnie wartość XP wroga (może różnić się w zależności od typu). CURRENT_LEVEL to poziom gracza. DESIRED_LEVEL to poziom, na którym Twoim zdaniem powinien być ten gracz.