mam pytanko czy op?aca sie licznik robic w onplayerupdate czy lepiej stworzyc timer co iles tam ms? a jak timer to co ile msnajoptymalniej i najp?ynniej pokazuje ?
W zasadzie to w OPU nie robi si? nic (opr?cz ma?ych kod?w) poniewa? przy wi?kszej ilo?ci
graczy nieoptymalny kod m?g?by zawiesi? serwer. http://wiki.sa-mp.com/wiki/OnPlayerUpdate
(Czerwona ramka). Timer co 1 sek do 2 sek by?by optymalniejszy gdyby te? doda? do niego warunek, tablice ?e gracz jest w poje?dzie i jest kierowc? by niepotrzebnie nie wykonywa? kodu tego licznika. W skr?cie (OnPlayerStateChange + tablica bool +timer 1 - 2sek).
Nie dostaniesz odpowiedzi na to pytanie, bo na to nie ma rozwi?zania. Masz wyb?r:
1. Nieoptymalne rozwi?zanie - p?ynny licznik i timer co 100ms (jeszcze p?ynniej b?dzie w OPU, bez przesady, ?e licznik mo?e zawiesi? serwer xD),
2. Optymalne rozwi?zanie - niep?ynny licznik i timer co 1000ms.
Jakie rozwi?zanie polecam? Licznik to tylko g?upi dodatek, jad?c jakimkolwiek pojazdem w og?le si? na niego nie patrzysz, tylko patrzysz na drog?, wi?c bez sensu b?dzie robi? p?ynny licznik.
Ja mam spraw? rozwi?zan? tak, ?e mam licznik driftu i pr?dko?ci po??czony razem ze sob? (jako ?e oba korzystaj? z pr?dko?ci - wi?c ograniczamy zb?dne wywo?ania funkcji).
Licznik jest zoptymalizowany jak si? tylko da?o (no mo?e nie a? tak strasznie bo czasem wole czytelno?? ni? super mega optymalizejszyn), jakie? customowe funkcje od oblicze? k?t?w, pr?dko?ci itp s? przeniesione prosto do niego ?eby nie wywo?ywa? zb?dnych funkcji itd.
Sam licznik wywo?ywany jest w OnPlayerUpdate, ale nie w zwyk?y spos?b. Licznik sam reguluje sw?j interwa? w zale?no?ci od potrzeb. Gdy gracz driftuje, ogranicznik czasowy zmniejsza si? do ~190ms, natomiast im mniej p?ynno?ci potrzeba tym czas jest wi?kszy (do 500ms i wi?cej)
Wygl?da to mniej wi?cej tak:
funkcja DriftCounter_OPU() zwraca op??nienie kt?re sobie wybra?a (np. 300), przy okazji zamiast kolejny raz wywo?ywa? np, GetPlayerVehicleID w funkcji, przekazuje je jako argument poniewa? i tak wcze?niej gdzie? tych zmiennych u?ywam (np. do sprawdzania zmian pojazd?w przez gracza)
Plusy tego rozwi?zania:
+ Licznik jest p?ynniejszy ni? w przypadku zwyk?ego timera, kt?ry ma ustalony na sztywno interwa? i nawet gdy gracz wykonuje jak?? akcj? timer dalej b?dzie wykonywa? si? z okre?lonym odst?pem czasu. Tutaj gdy chcemy mo?emy doda? troch? "gazu" ?eby uzyska? lepsz? p?ynno?? lub zwolni? je?li nie dzieje si? nic ciekawego.
+ Licznik operuje na ?wie?ych danych od razu po aktualizacji wys?anej przez gracza
+ Licznik w pewnym sensie dostosowuje si? do pingu gracza (bo OPU wykonywane jest gdy gracz wysy?a aktualizacje, a gdy ich nie wysy?a nie wykonuje si? w og?le - wi?c nie ma ?adnego obci??enia serwera (w odr??nieniu od timera kt?ry wykonuje si? ci?gle)
+ Dzi?ki r??nych odst?pach czasowych + pingowi, wykonywanie oblicze? roz?o?one jest w losowych odst?pach czasowych, co rozk?ada ca?? prac?. W przypadku timer?w cz?sto robimy jeden timer kt?ry ma p?tle na wszystkich graczy - wtedy wykonujemy taki kod np 50 krotnie, dlatego w?tek serwera zatrzymany jest 50 krotnie d?u?ej i inny kod nie mo?e si? wykona?
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach