Gra multiplayer

0

Witajcie :) Cóż zacznę jak każdy, że mam wspaniały pomysł na gierkę na android. W sumie pomysł jest realizowany bo jestem w trakcie programowania jej i tworzenia grafiki. Do końca nie mogę zdradzić o co w niej chodzi...Mój problem jest taki, że chciałbym aby ona była w trybie multiplayer. Korzystam z silnika andengine i on niby jakiś ten tryb obdsługuje tylko, że w sieciach lokalnych :) A mi chodzi o globalną rozgrywkę z zarejestrowanymi użytkownikami. Znalazłem też taką bibliotekę http://www.skiller-games.com/ i zacząłem się temu przyglądać.
Jednak moje pytanie jest takie bo ja w swojej głowie zaplanowałem to tak. Gość loguje się do gry tam przypuścmy trwa połączenie z serwerem niech będzie początkowo PHP i odpowiedzi w foramcie json. Dostaje w zwrocie liste zalogowanych gości ich ip ping ostatni. Potem dzięki ip może sie z nim połączyć. Nie jestem doswiadczony w takiej dziedzinie nie wiem czy moje rozumowanie jest tutaj dobre bo jednak jeśli ktoś by korzystał z połączenia internetowego z danych pakietowych karty sim to nie wiem czy ip nie było by jakieś publiczne. Albo z wifi jakby ktoś akurat korzystał. nie wiem jak takie coś rozwiązać. Proszę o pomoc ;) I przepraszam za ewentualne błędy ale akurat wstałem :P

ps. Rozgrywka potrzebuje połączenia no nie wiem jak to nazwać ale jest dynamiczna i musi być odwzorowane na drugim ekranie co przeciwnik robi. O różne rozdzielczości i przekazywanie punktów gdzie się znajduje przeciwnik też sie obawiam ale jakoś jest to do rozwiązania ( chyba)

2
zuck napisał(a):

Dostaje w zwrocie liste zalogowanych gości ich ip ping ostatni. Potem dzięki ip może sie z nim połączyć.
Nie!

  • Nie każdy klient może się łączyć z każdym klientem (np. jak są za NAT'em)
  • Gracz łącząc się z innym graczem bez pośrednictwa serwera mógłby oszukiwać odpowiednio modyfikując wysyłane dane. Np. mógłby wysłać wiadomość, że dostał jakiegoś losowego bonusa.
  • Nie powinieneś udostępniać adresów IP jednych graczy innym graczom ot choćby dlatego, żeby skłóceni się nie DDOS'owali.

Odizoluj klientów od siebie, niech wszystko idzie przez serwer.

0
adf88 napisał(a):

Odizoluj klientów od siebie, niech wszystko idzie przez serwer.

Nie chodziło mi, że dostaje w postaci jawnej ip.

Mam ich odizolować? Czyli nie tak, że jest połączenie bezpośrednie między nimi a potem raport jest jakiś tam zczytywany z obydwu telefonów na serwer który analizuje go i ustawia odpowiednie wyniki.
Nie wiem czy dobrze rozumiem ale to zapewne miało by działać tak, że jeden i drugi gracz połączeni są do serwera a on wysyła każdemu położenie przeciwnika ? Czy takie połączenie nie będzie "lagowało" ?
Ja początkowo myślałem, żeby aplikacje użytkowe miały być klientem i serwerem w jednym do połączenia między dwoma graczami. Ale w tej sytuacji na nic mi proste PHP trzeba napisać serwer aplikacji i raczej to będzie java.

1

Nie powinno to wyglądać tak, że tylko serwer wykonuje obliczenia i przesyła ich wynik do klientów. Niech zarówno serwer jak i klient wykonuje obliczenia (te same). Przesyłaj pomiędzy klientem a serwerem tylko niezbędne dane do wykonania obliczeń tak aby zminimalizować ruch sieciowy.

0

Rozumiem. chodzi mi o grę typu pong :) Mam nadzieję, że kojarzysz po lewej i prawej stronie zawodnicy sterują platformami tak aby piłka nie wpadła do "bramki" :) Oczywiście nie taką gre pisze tylko przyklad jak to ma być niestety ( stety) dynamiczne. Prawdopodobnie przesyłał bym do serwera tylko położenie swoje i to jak została piłka uderzona a aplikacja u przeciwnika obliczy to. Np przed rozpoczeciem rozgrywki przesłane na serwer beda rozdzielczosci uzytkownikow by ich klienty mogły odpowiednio przeliczyć pozycję piłki i zawodnika ( platformy).

Czyli po prostu muszę napisać aplikację z wykorzystaniem biblioteki Robot ( z tego co kojarzę ) która by tym zarządzała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1