![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
A nie lepiej zapisać to w plik xml?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 3 Dołączył: 21.04.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
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) Ten post edytował Landon 28.05.2008, 22:16:51 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Skie: bazy nie dasz rady zabić - chyba, że źle ją zaprojektowałeś (IMG:http://forum.php.pl/style_emoticons/default/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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:29 |