![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@DiH: Powiedzmy, że chcesz strzelić z jakiejś broni. Klikasz "strzał" i cała machina do obsługi tego rusza:
1. Klient wychwytuje zdarzenie i rozpoczyna się jego obsługa. 2. Do serwera wysyłana jest informacja o tym, że gracz wcisnął strzał. 3. Serwer (po sprawdzeniu czy do takiej akcji może w ogóle dojść - gracz musi mieć wystarczająco amunicji) wysyła informację zwrotną do klienta w stylu "ok, możesz strzelać". 4. Serwer wysyła do wszystkich graczy - którzy w tym przypadku znajdują się wystarczająco blisko miejsca akcji - trochę informacji o nowym obiekcie - naboju. W tym przypadku będą to informacje o tym jaki to obiekt i jaki jest jego wektor ruchu. 5. Klient każdego z graczy renderuje wszystkie animacje. 6. Po upływie sekundy pocisk dociera do celu - jakiegoś potworka. 7. Serwer po sprawdzeniu czy wszystko się zgadza decyduje o tym czy pocisk trafił cel i jeżeli tak to jakie zadał obrażenia, czy potwór zginął itp. 8. Informacje o trafieniu wędrują do wszystkich klientów, którzy są odpowiednio blisko miejsca akcji. 9. Po stronie użytkownika renderowana są animacje. Tak naprawdę jest to jeszcze nieco bardziej skomplikowane, bo z reguły jest tak, że klient - by polepszyć wrażenia użytkownika - rozpoczyna renderowanie pewnych rzeczy jeszcze zanim otrzyma informacje zwrotną z serwera, później jeżeli jest taka potrzeba synchronizuje to co już wyświetla z tym co otrzymał z serwera. Generalnie - jeżeli to ma być gra czasu rzeczywistego przez sieć to trzeba naprawdę w cholerę niezbyt ciekawych problemów rozwiązać. A praca w środowisku jakim jest przeglądarka dodaje jedynie nowych problemów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 14:16 |