Jak wdrożyć system doświadczenia?

14

Obecnie piszę małą grę opartą na zdobywaniu doświadczenia podczas zabijania wrogów. Jak zwykle, każdy poziom wymaga większego doświadczenia niż poziom poprzedni, a na wyższych poziomach zabijanie wrogów zapewnia więcej doświadczenia.

Ale mam problem z wyważeniem tego systemu. Czy są jakieś wstępnie wbudowane algorytmy, które pomagają obliczyć, jak powinna wyglądać krzywa doświadczenia wymagana dla każdego poziomu? A ile doświadczenia powinien zapewnić przeciętny wróg na określonym poziomie?

RoflcoptrException
źródło

Odpowiedzi:

14

Chciałbyś mieć jakąś krzywą wykładniczą, prawdopodobnie coś w stylu:

base_xp * (level_to_get ^ factor)

base_xp jest stałą, która decyduje o tym, ile xp potrzebujesz, aby przejść poziom wyżej.
level_to_get to poziom, do którego dążysz; na poziomie 1 będzie to poziom 2.
współczynnik jest kolejną stałą, która decyduje o tym, ile wzrostu xp potrzebujesz na każdym poziomie.

Posiadanie base_xp 200 i współczynnik powiedzmy 2 daje coś takiego:

enter image description here

Natomiast base_xp 50 i współczynnik 2,6 daje:

enter image description here

Drugi ma znacznie niższą początkową szybkość xp, ale bardzo szybko potrzebujesz więcej xp.

Co do potworów xp, jest to coś, co chcesz przetestować. Wypróbuj różne wartości. Chcesz czegoś, co nie będzie zbyt wysokie (szybko zostaniesz obezwładniony), ale nie za niskie (gracze nie chcą grindować). Pomyśl na przykład, ilu „standardowych” wrogów chciałbyś zabić na poziomie 10–> 11.

Kaczka komunistyczna
źródło
3
Możesz chcieć ostrzejszej krzywej niż te tutaj. Na przykład RuneScape ma bardzo stromą krzywą, prawie przypominającą krzywą logarytmiczną (oczywiście odwróconą / obróconą); zobacz to tutaj . Przynajmniej z mojego osobistego doświadczenia, wydaje się, że działa to BARDZO dobrze, aby dać ci wiele szybkich nagród na początku, a zanim przejdziesz do wyższych poziomów, dostosowujesz się do dłuższych czasów gry, aż kilka ostatnich poziomów zajmie ZAWSZE, ale gracz w jakiś sposób toleruje to. 99s są dość częste, pomimo STEEP !! zakręt, aby się tam dostać.
Ricket
Z pewnością powiedziałbym, że krzywe tutaj będą płytkie.
Kaczka komunistyczna
proszę nie exp. curve =, (- poziomowanie trwa tak długo, a tym dłużej, im bliżej celu, plssss no =. (
Dave O.
Linia liniowa nie działałaby. Jeśli potrzebujesz 1000 xp więcej na poziom, to w miarę stania się silniejszym przekonasz się, że osiągnięcie poziomu zajmuje coraz mniej czasu.
Kaczka komunistyczna
1
Funkcja pokazana ( base_xp * (level_to_get ^ factor)) jest w rzeczywistości funkcją kwadratową, ponieważ level_to_getjest wartością x, a nie współczynnikiem, a jeśli się nie mylę, base_xpnależy ją dodawać, a nie mnożyć, aby przełożyć funkcję w górę? Przepraszam, jeśli to tylko ja jestem wybredny w kwestii semantyki, chcę się tego upewnić, ponieważ tworzenie wykresów tej funkcji zdecydowanie nie daje żadnej starej wykładniczej.
chockie
6

Nie ma właściwej odpowiedzi na pytanie, ile doświadczenia powinien dać wróg lub jak stroma powinna być krzywa doświadczenia. Pomocne może być przemyślenie czasu gry wymaganego do zdobycia poziomu na każdym poziomie, a następnie oparcie na tym wymaganego doświadczenia na poziomie, a także średniego doświadczenia nagradzanego na wroga.

Ten artykuł jest szczegółowym podziałem matematyki niwelacyjnej w Lineage II. http://web.archive.org/web/20100303164314/http://www.tstonramp.com/~mykel/lineage/

CiscoIPPhone
źródło
1
Nie mogę głosować wystarczająco za odpowiedzią. Na przykład nie ma powodu, dla którego istniałaby jakakolwiek faktyczna krzywa dla różnych ilości exp na poziom, ponieważ możesz zmniejszyć ilość doświadczenia, które daje ci wróg w stosunku do twojego poziomu, aby uzyskać ten sam efekt, ale łatwiejsze do opanowania liczby . Nic nie zastąpi zrozumienia własnego systemu walki i tego, w jaki sposób chcesz grać, a następnie dopasowania do niego systemu doświadczenia.
Kylotan
4
Ten link nie istnieje. Oto stary link, który działa: web.archive.org/web/20100303164314/http://www.tstonramp.com/…
Daniel Kaplan
Właśnie dlatego nie linkujemy do stron; nie możesz zagwarantować, że zawsze będą istnieć. Zanotowałem i oznaczyłem twoją odpowiedź.
Krythic,
@Krythic Zaktualizowałem link.
CiscoIPPhone