RMI a rysowanie

0

Piszę grę sieciową (Asteroids) z użyciem RMI. Konecpcja jest taka że wszytskie obliczenia sa wykonywane na serwerze, a klient może tylko zmieniać prędkość i kąt swojego statku. Doszedłem do takiego momentu, że o ile wszytsko ładnie wyświetla się na serwerze (reaguje na działania klienta) to niestety w aplikacji klienta nie nie ma.
Do rysowania używam rozszerzenia JPanel i metody paintComponent(Graphics g). Chodzi najprawdopodobniej o to, że obiekty nie są przekazywane przez wartość. Zrobiłem mały ekperyment i dodałem do obiektów które przekazuje implements Serializable i wtedy ładnie się rysowało, ale nie reagowało na działania klienta.
Może ktoś zna jakąś sztuczkę żeby coś z tym zrobić?

0

Powiedz mi ty dobry człowieku czy ty chcesz przesyłać obiekty graficzne przez neta?

Generalnie by obiekt przesłać przez net MUSI on implementować Serializable. Moja propozycja to stworzenie obiektu komunikatu, który będzie nośnikiem pojedynczego "kwantu" danych. Taki obiekt wysyłasz na serwer i po obliczeniach odbierasz wynik w postaci takiego samego obiektu. Następnie wystarczy na podstawie wyników wprowadzić zmiany w komponencie rysowanym tak by wyglądał jak trzeba.

0

Nie.
Po prostu chciałbym, aby paintComponent(Graphics g) z JPanelu po stronie klienta wywoływało g.drawPolygon(...) po stronie serwera, który ma niezbędne informacje żeby wiedzieć co narysować. Może dałoby się jakoś sprytnie opakować klasę Graphics i by działało, bo to co proponujesz wymagało by sporo zmian w kodzie, a zawsze im się człowiek mniej narobi tym jest bardziej zadowolony :)

0

Rysowanie na serwerze to bardzo zły pomysł, serwer służy do liczenia nie do rysowania. Wbrew pozorom nie miał byś dużo roboty, bo:

  1. masz już sposób komunikacji serwer-klient
  2. masz już metody rysujące tyle tylko, że na serwerze
  3. masz już potrzebne interfejsy

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