Parish napisał(a):
Oooooo.....widzę, że znasz algorytm na dropa. Tylko 2 paramerty? To oficjalna funkcja zaimplementowana w L2? Mogę prosić o źródło informacji?
hmmm.... Nikt poza developerami nie może Ci takiej w pełni wiarygodnej sytuacji dać.
Co do ilości parametrów funkcji.. A czego się spodziewałeś ?
Funkcji n-parametrowej, gdzie n to bardzo duża liczba ?
![;)](./images/smilies/icon_wink.gif)
To by było absurdalne z punktu widzenia wydajności, bo funkcja ta liczona jest po stronie serwera.
![:]](./images/smilies/icon_har1.gif)
Najważniejsza zasada jakiegokolwiek algorytmu - im prostszy tym lepszy.
![:]](./images/smilies/icon_har1.gif)
Istnieją dwie możliwości:
- dropy są liczone przy każdym respawnie moba
- dropy są liczone podczas zabicia moba
* Zgodność miejsc, osób i dropów w tej uproszczonej wersji przypadkowa
Przypadek pierwszyPrzypuśćmy, że moba o nazwie UBERDRAGON lvl 60 ma 70% szansę na dropa Dragon Slayera.
Do akcji poraz pierwszy wkracza generator liczb pseudolosowych.
Losuje liczbę z przedziału [1-100].
Wylosował liczbę 60. Czyli mob ma tym razem dropnać tego cholernego DragonSlayera ze 100% szansą.
Do UBERDRAGONA dobiera się gracz SuperHero lvl 70. Różnica między levelem UBERDRAGONA i SuperHero jest na tyle duża, że gracz ma penatly na dropa - przypuśćmy, że 20%.
To oznacza, że do akcji poraz kolejny wkracza generator liczb pseudlosowych.
Losuje liczbę z przedziału [1-100] - szansa na dropa w tym przypadku to 80%.
Wylosował 95 - więc guzik z dropa.
Przypadek drugiTen sam mob, ten sam gracz, ten sam drop rate, te samo penatly:
Czyli szansa na dropa w tym przypadku - po uwzględnieniu penatly wynosi 56%.
Do akcji wkracza generator liczb pseudolosowych .
Wylosował 40.
oooo....Mamy dropa. DragonSLayer jest nasz.
![:D](./images/smilies/icon_biggrin.gif)
Ot i cała filozofia.
Oczywiście algorytm losujący i modyfikujący szansę na dropa prawie na pewno jest bardziej skomplikowany, ale powyższy opis oddaje ideę.
I nie jest to funkcja n-parametrowa, gdzie n dąży do ukochanej przez matematyków nieskończoności.
![:]](./images/smilies/icon_har1.gif)
Więcej parametrów może być potrzebnych co najwyżej dla zwiększenia funkcjonalności (np. eventy lub do szybkiej zmiany droprate'u)
Sylvian napisał(a):
Parish pomyśl choć chwilę - gdy zabijasz moba wykonywana zostaje funkcja losująca drop (pomijam fakt, że nie jest to do końca losowa liczba), jedyne parametry jakie dostaje na wejściu to rodzaj moba który ginie i różnica leveli między nim a os. która zadała największy dmg. Więc tu nie ma miejsca na dziwne teorie.
To jest liczba losowa Sylv. Są twierdzenia i dowody, które mierzą siłę generatorów liczb pseudolosowych.
Koleś z mojej grupy na studiach miał zadanie to udowodnić.
Przy bardzo dużej próbie wynikiem ich działania jest liczba losowa.
Ciąg liczb wygenerowanych przez generator mają właściwości statyczne prawdziwych liczb losowych.
Jedynym problemem mogą być krótkie ciągi losowań.
Jedyna różnica pomiędzy liczbami losowymi a pseudolosowymi jest taka, że te drugie są liczone według algorytmu.
Znając algorytm możemy na podstawie wylosowanych poprzednio liczb przewidzieć kolejną wylosowaną liczbę.
My algorytmu nie znamy, więc są one dla Nas losowe.
Dla zainteresowanych algorytmy generatorów liczb pseudolosowych:
Generatory dla dociekliwych ![;)](./images/smilies/icon_wink.gif)