![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Witam.
Pragnął bym otrzymać pare interesujących mnie porad i pomocy. Jestem w trakcie pisania w php silnika mapy, Tzn chodzenie chłopkiem poprzez przeglądarke rozumiecie z resztą o co chodzi, Lecz kazda zmiana pozycji np: z $x=0 | $y=50 na $x=0 | $y=51 itp itd musi byc realizowana poprzez przeładowanie przeglądarki czy jest jakiś prostsz sposób, Nie chce zbytnio przebudowywac całego silnika teraz, który umożliwiał by to bez przeładowania, coś słyszałem o funkcji Ajax, tylko macie moze jakieś poradniczki które mogły podczas pisania takiego czegoś się przydac bo nigdy w tej technologi nie pracowałem A czas zacząć (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Ok a jak się tyczy sprawa Ile takie pobieranie i wysyłanie danych pobiera?
Czyli jakie jest obciążenie serwera przez to może inaczej o ile mniejsze niż przeładowanie strony (IMG:style_emoticons/default/smile.gif) I Widzę również że główną role grac tu będzie XMLHttpRequest zgadza się? Ten post edytował _Martin_ 19.12.2009, 10:49:06 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
Tu był podobny temat: [PHP]Mapa jak w plemionach
Ja widzę takie rozwiązania: 1. Jeśli mapa jest niewielka, warto wczytać ją całą, pokazywać tyko wybrany fragment, w momencie ruchu postaci przesuwać tło pod spodem. 2. Mapa jest większa, doczytujemy fragmenty w miarę poruszania się postaci. Krok w prawo, ukrywamy kolumnę pól po lewej, doczytujemy kolumnę z prawej. Krok w pawo-dół, ukrywamy górny wiersz i lewą kolumnę, doczytujemy prawą i dolny wiersz. Ad.1. Wystarczy sam javascript, bo przy ruchu robimy tylko zmianę pozycji tła, ewentualnie obracamy obrazek postaci. Ad.2. Tu już potrzeba zastosować ajax'a, ale pobieranych danych też nie będzie dużo, więc powinno to dość szybko działać. Poza tym można buforować dodatkowe wiersze i pola. Czyli jeśli mamy widoczny obszar 10x10 pól, to wczytujemy 12x12. Dzięki temu w momencie ruchu możemy od razu przesunąć pozycję, a w tle doczytać dodatkowe pola. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Chyba zmieniłęm intencje bo mapa ma 600 x 600 px i stała wartość tylko trzeba odświezyć przeglądare zeby zauwazyć ruch innego człowieczka.
To raczej łatwiejsze do roboty co nie (IMG:style_emoticons/default/smile.gif) Czyli podsumowując: Ja jestem na x=100 y=100 ide na x=150 y=100 To ten co sobie stoi i się nie rusza musi otrzymac info ze sie ruszyłem na tym sektorze i zeby mu nie tyle co przeglądare odświezyło tylko mojego hipka (IMG:style_emoticons/default/smile.gif) który zajmuje ok: 0,5 kb i ma rozmiar 50x20px Więc niepotrzebnie by było przeładowywać, całek przeglądarki (IMG:style_emoticons/default/smile.gif) Ten post edytował _Martin_ 19.12.2009, 11:49:49 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
Jeśli to jest gra interaktywna to się ciut komplikuje, zależy ilu użytkowników masz na raz na planszy. Przed każdym ruchem trzeba sprawdzić np czy pole jest wolne. Ustawić np odświeżanie co 5sec, które pobierze pozycję innych graczy i przestawić markery tych postaci we właściwe miejsce. Trzeba zaplanować sposób radzenia sobie z konfliktami. Bo jeśli jeden użytkownik ze chce postawić swojego człowieczka na pole (120, 100) i w tym samym czasie drugi zobaczy, że pole jest wolne i zechce tam wstawić swojego.
Swojego hipka nie musisz od nowa pobierać, wystarczy pobrać nową pozycję i przesunąć tego "hipka" |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Mam napisane to juz i moze 100 na jedym poolu byc tylko jak zrobic spr samego imgka jaką ma pozycje w bazie kazda zmiana pozycji jest updejtowana w mysqlu tabela "x" i "y" a potem po odświezeniu strony czyta pozycje i go potem tam pokazuje (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
Mam napisane to juz i moze 100 na jedym poolu byc tylko jak zrobic spr samego imgka jaką ma pozycje w bazie kazda zmiana pozycji jest updejtowana w mysqlu tabela "x" i "y" a potem po odświezeniu strony czyta pozycje i go potem tam pokazuje (IMG:style_emoticons/default/smile.gif) Teraz nie za bardzo wiem w czym problem (IMG:style_emoticons/default/blinksmiley.gif) Nie wiem na jakiej zasadzie działa poruszanie się po planszy u Ciebie, ale przykładowo: Klikasz na krok w prawo: Js przesuwa mapkę o kolumnę w lewo. Ajaxem wysyła nową pozycję (bądź samą zmianę pozycji). Robisz update w bazie. U danego użytkownika masz już wszystko zrobione. Każdy z innych użytkowników sprawdza pozycję pozostałych: ajax wywołuje skrypt, który pobiera id użytkownika i jego pozycję (możesz pobierać tylko tych, którzy u danego użytkownika będą widoczni), pobierasz to w formie np JSON, w javascript dla każdego użytkownika przesuwasz jego marker na planszy. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 9 Dołączył: 16.09.2005 Skąd: Rybnik Ostrzeżenie: (0%)
|
Tylko mam taki problem
Plik który odpowiada za mape to: index.php A Element za odświeżanie miejsca gracza to: Kod $output = drawsector(); Po jego załadowaniu ładuje się mapa i ludzik. I Musze odświzać cały index.php aby ponownie zmieniała miejscówa a to dużo kb i pamieci żżera (IMG:style_emoticons/default/sad.gif) jest iine rozwiązanie? |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
To stwórz sobie plik ajax.php i w nim zwracaj tylko pozycje
|
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 08:09 |