Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Ajax][MySQL] Mapa
Forum PHP.pl > Forum > PHP
Skie
Witajcie, wiem, że ten temat był już poruszany kilkakrotnie na tym forum, ale w żadnym temacie nie znalazłem żadnej wskazówki co do zagadnienia w tworzeniu mapy wraz ze skryptem poruszania się po niej.

Myślę nad tym przez długi czas i odkładam pracę nad tym aspektem strony już od dłuższego czasu, pewnie skończy się tak, że zrobię to na końcu.

Jak sądzicie? Jak tworzona jest mapa w takich grach via www jak np. plemiona, travian czy my-fantasy.

Przy swoich przemyśleniach doszedłem do dwóch sposobów stworzenia takiej mapy.

1. Przy starcie mapy plik PHP pobiera z bazy MySQL niezbędne dane, a następnie edytuje je za pomocą skryptu napisanego w AJAX. (podczas poruszania się itd.). Zapisywanie danych do bazy występowałoby tylko po opuszczeniu mapy. Mankamentem takiego pomysłu jest to, że ładwo można byłoby taki skrypt oszukać - np. restartując przeglądarkę.

2. Przy starcie mapy plik PHP pobiera z bazy MySQL niezbędne dane, a następnie przy pomocy AJAX'a przy każdym ruchu wczytuje inny plik PHP do obliczeń. To byłby sposób lepszy i dokładniejszy od poprzedniego, lecz z kolei sądzę iż "zabiłby" mi serwer, więc odpada.

Czy macie jakieś rady jak wyeliminować wady tych pomysłów?
A może zrobić pseudo bazę danych poprzez zapisywanie danych w osobnym pliku .txt?

Czekam na wasze sugestie.
Kshyhoo
A nie lepiej zapisać to w plik xml?
nithajasz
Za bardzo kombinujesz..

Masz skrypt do poruszania się po mapie prawo, lewo, góra, dół. Nic trudnego. Kwestią ważniejszą jest zorganizowanie mapy w sposób taki by dało się prosto poruszać po polach. Prosty przykład to kwadrat dzielony na pola i numerowane od 1 do iluś tam. Poruszając się w zależności od kierunku dodajesz, odejmujesz nr pól i zapisujesz do bazy. Tak to działa np. w travianie.

Przykład :

Mapa i pola :

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

Stoisz na polu nr 1 ruszasz się w prawo [trafiasz na pole 2 w bazie nadpisujesz dla uzytkownika nr pola na ktorym przebywa] ruszasz sie w dol trafiasz na pole 7 [ponownie nadpisujesz].

Obliczeń wiele nie ma. Jedyna wada to ciągłe zapisywanie do bazy. Ewentualnie pozycję można zapisywać do sesji i w jakiś sposób przed jej wygaśnięciem zapisywać dane do bazy.
Skie
U mnie jest zrobione to dosyć inaczej, gdyż pola są numerowane współrzędnymi x i y. Np. 1:1, 1:2, 1:3 itd.
Działa to dobrze, ale jeżeli po każdym ruchu będę to zapisywał do bazy danych to chyba mi to zabije serwer.
Bo jak np. poruszam się z miejsca A do B i idę przykładowo 10 pól, to będzie musiał się wykonać 10 razy plik PHP oraz 10 razy połączyć z bazą danych. Pomnożyć to przykładowo przez 1000 graczy i już jest 10 tys. połączeń w ciągu pół minuty.
Landon
No więc tak:

Proponuje pobierać dane z mysql i generowanie pliku xml nastepnie odbieranie go przez ajax'a zapisywanie do tablicy i z tej tablicy generowanie mapy przyjmijmy że stworzysz 2 tablice 1 odpowiedzialną za załadowane sektory a drógą przechowywującą dane o wszystkich polach...

Z ostatniego posta zrozumiałem że chodzi o grę więc musisz pobierać za każdym razem współrzedne graczy któży są aktualnie (mam taki skrypt tylko napisz na gg:11861269)
Kocurro
Skie: bazy nie dasz rady zabić - chyba, że źle ją zaprojektowałeś winksmiley.jpg

Gra MuOnline chodzi na MsSQL'u i co chwila zapisuje/odczytuje dane dotyczące aktualnego stanu gracza - pozycja, wskaźniki itp.

Daje radę przy 5 tysiącach osób online więc ... w czym problem ?

pozdr
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.