2D-Netzwerk-Rennspiel

andi91

Mitglied
Frohe Weihnachten!

Für meine Facharbeit in Informatik möchte ich ein 2D-Spiel programmieren.Da wir nächstes Halbjahr das Thema "Netzwerk" behandeln,habe ich das Projekt auf ein Netzwerkspiel ausgeweitet.Entsprechende Literatur und andere Materialien besitze ich,um ein solches Projekt auf die Beine zu stellen und ich bin mit Java mittlerweile vertraut.Dennoch habe ich ein paar Fragen,die ich bisher nicht klären konnte.

Zur Netzwerk-Geschichte:
Ich habe vor,dass das ganze mit RMI realisiert wird.Der Spieler,der ein Spiel eröffnet wird gleichzeitig Hoster bzw. Server und die anderen greifen als Clients darauf zu.(bis zu 4 Spieler max.)

Zum Spiel selbst:
Ich habe z.B. die beiden Klassen "Car" und "Player".In Car werden die Attribute der Autos(maximale Geschwindigkeit,Beschleunigung etc. festgehalten und die get- bzw. set-Methoden).In Player gehören dann beispielsweise "besteRundenzeit" und so weiter.

Jetzt ist mein größtes Hindernis eigentlich die Grafik.Was eignet sich am besten für die Darstellung?Ich weiß nicht,ob ein JPanel bei solchem Umfang ausreicht?Wird alles flüssig dargestellt oder doch lieber ein Canvas?Lohnt sich der Einsatz einer Engine?

Kollisionen usw. muss ich auch noch "lernen",da hab ich bisher wenig von gesehen.


Es ist als eines der ersten Projekte sicherlich nicht leicht,aber ich habe einige Lernmaterialien,die mir beim Großteil helfen.

Gruß,
Andi
 

javimka

Top Contributor
Canvas erbt von Component, nicht aber von JComponent, gehört also nicht zu Swing. Deswegen würde ich es zuerst mit einem JPanel versuchen. Dort hast du auch bereits ein effizientes Buffering-Konzept. Wenn es dann doch nicht reicht, kannst du immer noch auf die Canvas ausweichen.

Was meinst du mit "Einsatz einer Engine"? Irgendwo muss dein Programm gemanaged werden, du kommst doch gar nicht umhin, sowas zu implementieren. Irgendwer muss deinem Spiel ja ständig den Befehl geben, den Status neu zu berechnen und sich anschliessend (an den richtigen Stellen) neuzuzeichnen. Das könnte ein Swing Timer übernehmen, den du in deiner Engine Klasse hast.
 

Oben