Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [GRA] Kolizje na mapie
Trzebu
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 13.09.2014

Ostrzeżenie: (0%)
-----


Witam,
Potrzebuję pomocy co do kolizji na mapie 2d. Mapy mam takie same jak w grze Margonem, ale nie mam pojęcia jak zrobić kolizje, czyli jak zrobić żeby gracz nie mógł wchozić np na drzewa na mapie.
Za każdą pomoc dziękuję,
Pozdrawiam
//Proszę o przeniesienie do działu programowanie w PHP

Ten post edytował Trzebu 13.09.2014, 10:25:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
404
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

Ostrzeżenie: (0%)
-----


http://blog.vim.pl/2012/11/gra-izometryczn...kolizje-i-ruch/
Go to the top of the page
+Quote Post
404
post
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

Ostrzeżenie: (0%)
-----


Chodziło żebyś zobaczył algorytm i sposób implementacji kolizji.
Go to the top of the page
+Quote Post
Trzebu
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 13.09.2014

Ostrzeżenie: (0%)
-----


Właściwie pomyślałem, że można zrobić to własnie tak:
MAP = [[2,2,2,2,2,2,2,2,2,2,2,2],
[2,1,1,1,1,2,1,1,1,1,1,2],
[2,1,1,1,1,2,1,1,1,1,1,2],
[2,1,1,1,1,2,1,1,2,1,1,2],
[2,1,1,1,1,2,1,1,1,1,1,2],
[2,1,1,2,2,2,1,1,1,1,1,2],
[2,1,1,1,1,1,1,1,1,1,1,2],
[2,1,1,1,1,1,1,1,1,1,1,2],
[2,1,1,1,2,2,2,2,2,1,1,2],
[2,1,1,1,1,1,1,1,1,1,1,2],
[2,1,1,1,1,1,1,1,1,1,1,2],
[2,2,2,2,2,2,2,2,2,2,2,2]]
Ale nasuwają się pytania jak to zrobić, bo u mnie mapą jest obraz png i wszystko trzeba podawać w px. Generalnie, to nie ogarniam jakim kodem wywołać kolizję na mapie i w tym tkwię od dłuższego czasu
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Dodajesz sobie do tablicy wsp. kwadratu opisującego obiekt kolizyjny, podczas ruchu sprawdzasz czy nowe koordynaty ruchu nie wchodzą w żaden kwadrat kolizji.
Go to the top of the page
+Quote Post
tzm
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Śmiejemy się tu w pracy... pozdrowienia z Garmory.
Nie mogę Ci powiedzieć jak to jest w Margonem napisane ale..
W bazie trzymaj współrzędne stałych obiektów na mapie i je sobie do jakiejś globalnej zmiennej zapisuj.
No a potem to już przy każdym ruchu graczem musisz sprawdzać ifem czy może wejść na to pole czy akurat jest na nie blok założony.

edit: aha... i po stronie serwera za każdym razem sprawdzaj też czy gracz stoi tam gdzie stać może. Różnych magików widziałem.

Ten post edytował tzm 24.09.2014, 09:02:42
Go to the top of the page
+Quote Post
Trzebu
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 13.09.2014

Ostrzeżenie: (0%)
-----


Oo, jak miło. Padły o mnie słowa w Garmory, to zaszczyt dla mnie. Także pozdrawiam, wierny gracz Trzebu.
Ponieważ nie chce mi się na razie robić zapisywania pozycji gracza w bazie zrobiłem to chyba w najprostszy sposób:
  1. if((int)$_POST['x']==0 && (int)$_POST['y']==-32){
  2. echo false;
  3. }

Zrobiłem zaledwie 1/4 mapy w taki sposób i już odczuwa się, że php nie jest zbyt dobrym pomysłem na kolizje.
Go to the top of the page
+Quote Post
tzm
post
Post #8





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Zrób no jakiegoś print screena i rzuć mi na pw bo nie bardzo rozumiem o jakie kolizje Ci chodzi. Kolizje w margonem nie są takie jak na przykład w grach platformowych.
Wiesz co jestem w garmory tylko na stażu ale jakby Thinker rzucił temat zrobienia mini gierki ala margonem to bym to osobiście rozwiązał tak...
Masz X elementów i koordynatów na mapie pobranych z bazy danych, np market, albo karczmę i javascriptem dajesz możliwość kliknięcia w hrefa dopiero jak ktoś jest blisko, powiedzmy 32 pixele od obiektu - to jest pikuś żeby zrobić. Ale klikając w ten link i wysyłając ajaxem dane żądanie do serwera - MUSISZ sprawdzić czy gracz jest w odpowiednim miejscu żeby ten link kliknąć z tego powodu że JS łatwo oszukać.. z drugiego końca świata bym klikał na karczmę w mieście gdzieś w c* daleko. Mówię.. chcesz to dawaj PS na PW bo mam zajawe na pisanie gierek ostatnio.
Go to the top of the page
+Quote Post
zegarek84
post
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


by zoptymalizować całość mapę powinieneś podzielić na rejony by nie sprawdzać kolizji na całej mapie (zależy jak duża itd...), ogólnie powinieneś poczytać o algorytmach a zwłaszcza o sortowaniu kubełkowym by zminimalizować liczbę przeglądanych elementów na mapie względem odległości, potem możesz niemal wszystkie warunki przyrównywać jakie będziesz potrzebował... zależy co chcesz zrobić i jak bardzo zaawansowanego, jednak i tak celem optymalizacji powinieneś poczytać o algorytmach by wiedzieć jak w aplikacji ułożyć sobie dostęp do danych... np. przy dużej mapie jeśli masz współrzędne gracza i chcesz rzadziej pobierać elementy z bazy to gdy jest nałożony index na X i Y to obiekty możesz pobrać pomiędzy [(X_gracza - zasięg);(X_gracza + zasięg)] oraz [(Y_gracza - zasięg);(Y_gracza + zasięg)], oczywiście jeśli np. w JS masz zaciągniętą całą mapę musisz sobie zaimplementować właśnie odpowiednie algorytmy do przeszukiwania mapy względem pozycji gdyż jeśli ta mapka jest duuuuża to będzie cieło co każde sprawdzenie ruchu/akcji...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
tzm
post
Post #10





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


@zegarek84 , wystarczy że podzieli mapę na mniejsze czesci i poki jest w ich zasiegu bedzie to trzymal w zmiennej globalnej map - to czy se ja pan kowalski edytuje zeby sie teleportowac gowno mu da pod warunkiem ze serwer bedzie zabezpieczony przed tego typu akcjami. ja tu nie widze zadnej matematyki i algorytmow. proste ify w zasiegu jakiegos obszaru mapy ktore beda sie wykonywaly po stronie klienta, serwer jest zwolniony od niepotrzebnych przeliczen i kazdemu to pasuje. chocbys nie wiem jak duzy swiat mial to serwera nie zajedziesz przy tym rozwiazaniu. gdzies jak pisalem gre w zycie to mialem funkcje do sprawdzania elementu w tablicy XY.. poszukam tego potem.
Go to the top of the page
+Quote Post
zegarek84
post
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(tzm @ 27.09.2014, 17:18:30 ) *
@zegarek84 , wystarczy że podzieli mapę na mniejsze czesci...

może nie potrzebnie rozpisałem się ale czego dotyczy algorytm sortowania kubełkowego [a o podzieleniu mapy to już pewnie skleroze miałem ;-D ;p)questionmark.gif algorytm ten polega na zatraceniu precyzji, wykorzystując to można efektywnie podzielić mapę i odnajdować sąsiednie kwadraty względem gracza... ale zapomnijmy to co pisałem, to przeszłość gry w plemiona przy intensywnym farmieniu (a znajomym jakoś pasowało udostępnić podobne dogodne narzędzia bez owijania w bawełnę jak to zrobić samemu ;p)...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Trzebu
post
Post #12





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 13.09.2014

Ostrzeżenie: (0%)
-----


tzm:
Wysłałem Ci na PV tego ss'a. Co do tego, że mam podzielić tą mapę na fragmenty, słyszałem o tej technice, tylko jak? Mam mapę podzielić na mniejsze kawałki i potem ją w bazie jakoś poskładać i dopiero wyświetlać?

To robimy coś z tymi kolizjami?
Go to the top of the page
+Quote Post
tzm
post
Post #13





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Nie mam czasu ostatnio stąd to milczenie...
Zobacz... Masz mapę 256 x 256 klocków.
Żeby nie pobierać całości od razu i nie zawalać pamięci nie potrzebnie pobieraj sobie 32x32 i zawsze jak jesteś przy granicy to rób sobie update z bazy. No nie wiem jak prościej Ci to wyjaśnić... kolizje kolizjami ale tutaj temat wchodzi na troszkę modelowanie świata gry.
Mam Ci to narysować i pokazać przykład jakbym to zrobił?
Go to the top of the page
+Quote Post
Trzebu
post
Post #14





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 13.09.2014

Ostrzeżenie: (0%)
-----


Jeżeli Ci się chce, to rozrysuj mi to
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:50