Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Jak rozmieszczać "potwory"
ols1994
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 29.06.2009

Ostrzeżenie: (0%)
-----


Pisząc grę RPG natknąłem się na przeszkodę w postaci rozmieszczenia potworów na mapie. Wiadomo mapa nie jest duża i mogłoby być od kilku do kilkunastu potworów na jednym polu. Zastanawia mnie tylko możliwość jak to zrobić. Widzę jedno wyjście:
1) Nowa tabela w bazie danych z potworami, na każdym polu. Jednak przy mapce z 625 rekordami niech będzie min 10 potworów na jedno pole(rekord) to już jest 6250 potworów na całą mapę. Później gdybym robił nowe mapy to byłoby jeszcze więcej. Ciągłe operacje na bazie przez graczy też raczej nie byłyby optymalnym wyjściem.

Chciałbym również żeby pokonane potwory znikały a po jakimś czasie dochodziły nowe. I tak wkoło... Macie jakieś pomysły? Czy jest coś lepszego od używania bazy danych tak jak to wyżej przedstawiłem?
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DiH
post
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


Nie taki AJAX straszny. Używając jQuery jest to naprawdę góra paręnaście linijek kodu (jeżeli chodzi o sam AJAX oczywiście). Jeżeli już coś robimy, to róbmy to dobrze.
Cytat
- Tworząc mapę, dodaję również do tabeli z potworami rekordy(10 potworów na jedno pole na mapie = 6250 potworów na całej mapie) gdy gracz wejdzie na pole pobieram żywe lub te monsterki gdzie czas zgonu(czas zgonu+5min) >= czasu aktualnemu.

Wydaje się, że tak właśnie powinno się to odbywać. Jeżeli liczba graczy będzie naprawdę duża, to na pewno zdarzy się taka sytacja, kiedy powiedzmy 3 lub 4 graczy znajdzie się w jednym sektorze mapy. Co wtedy? Poruszają się cały czas po jednym i tym samym miejscu, więc reload potworów po zmianie sektora nie zadziała. Myślę, że wtedy konieczne będzie jedno zapytanie ajaxem, które wyśle info do bazy o po każdym zabitym potworze (lub grupie potworów), oraz drugie, które będzie sprawdzało, czy coś w danym sektorze się zmieniło. Jeżeli tak, to reload mapy dla każdego gracza. Wymagałoby to oczywiście jakiegoś timera, który co jakiś czas będzie owo zapytanie do bazy wysyłał.

Żeby nie zjeść dużo transferu, mógłbyś pokusić się o stworzenie kodów odpowiedzi. Np. wysyłasz ajaxem do bazy zapytanie czy coś się zmieniło. Jeżeli tak, to trzymujesz 1, jeżeli bez zmian to 0.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 17:26