RND Unleashed 1.0

Raumschiff

Es ist mal wieder Zeit für eine neue Version meines multiplayerfähigen Asteroids Weltraum Shooter ;)

Seit der letzten Version war ja geplant auf OpenGL umzusteigen. Ich hatte dies auch versucht und die komplette Grafik mit OpenGL dargestellt, aber es waren eben immer noch einface Bitmaps die gezeichnet wurden, nur eben diesmal mit der OpenGL Engine. Dafür ist die Engine sicher nicht gemacht. Auch das Anzeigen von einfachen Fonts gestaltete sich mit OpenGL aufwendiger als gedacht. Der Programmcode wurde durch die OpenGL Befehle auch etwas unverständlicher, da OpenGL normalerweise eher für den 3D Bereich ausgerichtet ist. Eine leichte Verbesserung in den FPS war jedoch erkennbar. Aber allein dieser Vorteil war es mir dann doch nicht wert, dass der Programmcode kaum noch lesbar war ;).

Insofern habe ich lieber den Spieleserver etwas überarbeitet. Alle Spielobjekte werden nun in einem mehrdimensionalen Array gespeichert. Dadurch kann viel performanter auf Kollisionen zwischen Spielobjekten reagiert werden, da nicht immer für jedes Spielobjekt alle anderen auf Kollision geprüft werden müssen, sondern eben nur jene die sich im aktuellen “Cluster” befinden (oder vielleicht noch in den Nachbarclustern).

Außerdem können jetzt Konfigurationen für Karten in XML-Dateien abgelegt werden. Ich plane dadurch dann später ein paar sachen vorgeben zu können wie z.b. die Startbasis der Spieler wo man für Geld Waffen kaufen kann, als auch schwarze Löcher oder Weltraumnebelfelder ;)

Außerdem hat mein GameServer nun eine EventQueue bekommen, in welcher er alle eingehenden Nachrichten von Clients puffert und somit braucht der GameServer viel weniger Synchronize-Blöcke als zuvor, da nun weniger Nebenläufigkeit herrscht. Alles wird einfach in der großen Spielschleife auf dem Server verarbeitet und diese Spielschleife arbeitet auch die Event-Queue regelmäßig ab. Außer der Spielschleife greifen keine anderen Klassen oder Threads direkt auf das Model zu, sondern sie legen ihre Events einfach in die Event-Queue. Hier mal ein Überblick der Java-Klassen:

Außerdem haben Raumschiffe auch noch nen Schild spendiert bekommen und ein Radar wurde eingefügt, der momentan einfach alles in einem Radar-Bereich anzeigt, also auch Asteroiden und andere Objekte. Der wird als nächstes ausgebaut, so dass er nur noch feindliche Spieler und andere wichtige Objekte anzeigt.

Danke auch an []D für die Grafik für das Raumschiff.

Kommandos für das Spiel sind wie üblich:

  • F - Feuer
  • Cursortasten - Raumschiff bewegen
  • S - für den Zusatzschild (muss noch besser animiert werden)

Hier kann die aktuelle Version heruntergeladen werden:

RND-Unleashed-1.0

comments powered by Disqus