Gra sieciowa- przesylanie informacji miedzy klientami

0

Witam
Próbuję zrobić grę sieciową coś w stylu Space Impact, z dedykowanym serwerem i dwoma klientami. Mam problem ponieważ nie umiem za bardzo zrobić, aby klienci widzieli swoje statki... Wiem jak działa zwykły czat z command lina i próbowałem to zrobić tak miej więcej na ten wzór, z wykorzystaniem ObjectOutputStream i ObjectInputStream. Wydaje mi się że dobrze klienci się łączą ze sobą i wysyłają informacje o obiekcie statku, robię to za pomocą: out.writeObject(ship) i shipPrz = (ShipObject)in.readObject(), ale kompletnie nie wiem jak je rysować... Mam nadzieje ze w miarę jasno opisałem o co mi chodzi, jeśli to będzie potrzebne to wkleję więcej kodu, będę wdzięczny za wszystkie rady i każdą pomoc ;)

0
  1. Napisz najpierw logikę samej gry, oderwaną od tego jaka będzie jej reprezentacja graficzna
  2. Napisz reprezentację graficzną niezależną od logiki (albo inaczej: niezależną od tego skąd pochodzą dane)
  3. Potem już będzie z górki.

dygresja: Piszesz to na socketach? A moze prosciej będzie ci wykorzystać RMI?

0

Właśnie zmieniłem koncepcje i będę robić na RMI ;) ale mój problem polega na tym, że nie wiem jak połączyć widok dwóch clientów w czasie rzeczywistym... Aby widzieli działanie drugiej osoby. W mojej nowej koncepcji pomyślałem, aby wszystko się działo na serwerze a clienci byli tak jakby tylko odpowiedzialni za czytanie klawiszy itp, tylko pojawia się tutaj moje pytanie, czy jest możliwość wysyłania całego np: JFrame z serwera do clienta, czy tylko jakieś dane dotyczące jego i rysowanie go już w cliencie?

1

Nie wygłupiaj się. Po co? Nie wystarczy tak:

  • klient A wykonuje ruch -> lokalnie u niego się ten ruch wykonuje + wysyłana jest do serwera informacja że ruch zostal wykonany.
  • serwer dostaje taką informację i przekazuje ja do klienta B
  • klient B po otrzymaniu takiej informacji aktualizuje sobie pozycję klienta A

Albo inaczej:

  • cała gra toczy sie na serwerze, klienci maja zarejestrowane listenery na "plansze"
  • jeśli gracz A robi grę (poprzez wywołanie zdalnej metody .makeMove() czy coś) to aktumatycznie wszystkie listenery są informowane o tym ruchu
  • każdy gracz który odbierze informacje z listenera aktualizuje sobie stan planszy
0

hmm dzięki za wskazówki będę kombinować i w razie czego jeszcze napisze ;)

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