Skie
27.05.2008, 19:12:30
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
27.05.2008, 21:31:10
A nie lepiej zapisać to w plik xml?
nithajasz
27.05.2008, 21:48:39
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
28.05.2008, 20:44:54
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
28.05.2008, 22:14:45
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
29.05.2008, 09:12:29
Skie: bazy nie dasz rady zabić - chyba, że źle ją zaprojektowałeś

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.