Fajny
Wersja do druku
Fajny
jakie ip?
serverek on??
jakies open beta testy beda czy cos w tym stylu ? jestem zainteresowany serverkiem :)
Cześć, no właśnie twardy orzech bo zastanawiam się jak to ugrać. Czy robić beta testy czy ich nie robić. Na razie i tak jest etap produkcji i w głowie mam za dużo do zrobienia i z takim planem to pół roku zejdzie zanim odpalę testy ;P. Ale strzelam, że jak dobrze wiatr zawieje to może za 2-4tyg jakaś info powinna pójść o beta testach. Na razie jestem na etapie dopisywania skryptów do NPC i Questów, a w trakcie robię też mapę. Na samym końcu muszę przetestować to wszystko sam (co i tak na bierząco robię) i zabezpieczyć serwer. Trochę pracy w to wkładam i mam nadzieję, że nie wyjdzie jakiś bubel przy odpaleniu :zaba
https://i.imgur.com/bP7KM3N.jpg
jak przetrzyma 50koz kilofów to wszystko przetrzyma:ezy
Co ty bedzie ogien jak bedziesz odpalac to wez mnie oznacz moge sie zwiesic a chetnie pogram ;p
Raczej na każdym dostępnym, jak na 50k nie wywala to spróbuj na 70k, 100k itd itd.
To jest z powodu zapisywania itemów gracza w depo przy każdym login/logout. Wysyłanie zapytania do bazy danych zajmuje więcej niż 3,5,10,15 sekund aż w końcu dochodzi do timeoutu serwera. Z tego samego powodu tibia, żeby zapisać progress postaci i itemy w domkach, resetuje się raz dziennie.
Można przebudować pół silnika pod binary safe, ale i to nie daje gwarancji - a tylko zmniejszy obciążenie zapisu. Nie rozwiązuje to jednak problemu, bo tak jak wcześniej komuś wywalało się przy 50k, to teraz mu się wywali przy 150k - ale dalej zapis będzie wyłączał serwer, tylko przy większej ilości itemów.
Czy ma to wpływ na normalnych graczy? Tak długo jak nie trzyma 50k itemów w depo (a uwierz mi, raczej nikt tyle nie ma, bo gra sobie RPG na serwerze), to nie. Jednak jest to pewien exploit, który pozwala na zbombardowanie bazy danych, a co za tym idzie - całego serwera.
Nie pomaga takiego zapytania rozdzielenie na kilka zapytań - bo dalej zapis musi się wykonać. Nie pomaga też rzucenie tego zapisu do innego wątku, bo wciąż gdy gracz się przeloguje, to musi jednocześnie wykonać zapis i odczyt - co jest fizycznie nie możliwe = memory access violation. Nie pomaga również przeniesienie zapisu na server save, bo wtedy przy większych ilościach itemów, ten save nie wykona się wcale.
Najlogiczniejszym rozwiązaniem jest przy starcie serwera sprawdzanie który z graczy w bazie danych ma za dużo itemów w depo i ładowanie takiego gracza bezpośrednio na serwer. Te dodatkowe 2 MB pamięci zajęte przez gracza nie wiele "kosztują" ze względu na dostępny w dzisiejszych czasach sprzęt.
Pozostaje kwestia logoutu, w przypadku kiedy gracz nazbiera te itemy i nie chce czekać na serwer save... No cóż, na to nie ma idealnych rozwiązań; bo możesz nie zapisywać tych itemów w ogóle (chyba najgorsze możliwe wyjście), możesz próbować ten zapis przerzucić na serwer save (ale wtedy gracz się do server save nie zaloguje)... itd itd.
Ja bym proponował, choć to rozwiązanie zostało parę razy odrzucone, zrobić na totalnym zadupiu, kordach 99999,99999,9 domek, do którego dostęp jest tylko adminowy.
Przy próbie zapisu takich itemów, itemy te przerzucać do SQMa w domku - z adnotacją/listem, do kogo te itemy należą. Gracz traciłby tymczasowo dostęp do itemów, ale mógłby logować się na postać. Jak to rozwiązuje problem?
No więc, save tych przedmiotów przerzucany jest po pierwsze na server save, czyli do momentu na którym na serwerze nie znajduje się żaden z graczy, a po drugie do zapisu domku - a nie depo, co zapisuje się nieco szybciej, bo dane przenosi do tabeli nielinkowowanych, i choć w relacyjnej bazie danych, to w kontekście nosqlowym.
Ale ja bym każdego usera, który przekroczył "dozwoloną" ilość (~50k) itemów sprawdzał ręcznie - czy to jest najbogatszy człowiek na serwerze, który kolekcjonuje wszystkie itemy ze śmietnika, czy może już desctructive behaviour, którego celem jest psucie serwera?
Gotowego rozwiązania nie podam, bo w świecie otsów jest warte cztero, a może i pięciocyfrową sumę, ale jak masz jakiegoś konkretne pytania na ten temat, możesz śmiało pisać PW - w miarę możliwości pomogę.
@ochmar ale po co tak kombinować? Nie można po prostu ustawić odpowiedniego limitu itemów w depo? Na przykład taki jak na rl, czyli 2k itemów dla facc i 10k dla pacc (według tibia wikia).
Można.
Ale można też próbować rozwiązać problem bez ograniczania graczy - kwestia podejścia.
@bpawel10 Taki limit i tak da się zwykle przekroczyć wysyłając śmieci parcelem :P
Da się przecież i przed tym zabezpieczyć.
1 wersja - sprawdza czy parcel przekracza X capa - ja przekracza X capa - nie wysyła się
2 wersja - sprawdza ile parcel ma itemów w środku, jak przekracza liczbę X - nie wysyła się
3 wersja - sprawdza ilość itemów w depo odbiorcy - jak przekracza limity - nie wysyła się
Dodatkowo, dawno temu nawet na real Tibi istniał podobny błąd - jeden gracz miał od chuja itemków w domku, lecz skończył mu się pacc/kasa na czynsz = itemki poszły do depo. To była taka ilość itemków, że przy każdym nadepnięciu na depo tile - serwer padał. Po 2/3 crashu gracz zorientował się, że to on jest winą ów crashy, a że był uczciwy - zgłosił to. Niestety nie pamiętam jaka to była Tibia, ale raczej przed 8.60.
Lecz nawet i to w/w jest zablokowane - da się przecież ustawić maksymalną ilość itemków na jedna kratkę.