Update

14 12 2010

Das wir so selten was auf diesem Blog posten hat weniger damit zu tun, dass wir nicht an rohXel arbeiten sondern eher, dass wir ihn immer vergessen 🙂

rohXel hat jetzt Twitter. Sinn: Wir schauen häufiger in Twitter als in WordPress -> Vielleicht denken wir häufiger dran Neuigkeiten zu posten 🙂

Zum Spiel:

Wir schreiben zur Zeit hauptsächlich am Netzwerkcode.

Bisher war unser Ziel immer, das komplette Spiel, samt Logik dem Client zu übermitteln, so dass ohne Steuerung durch Spieler auf beiden exakt das gleiche passiert. Da dadurch für fast jedes neue Spielobjekt eine eigene Methode zur Synchronisation geschrieben und getestet werden muss ist es 1. relativ aufwändig zu programmieren und 2. schwierig instand zu halten, gerade bei Erweiterungen des Spielcodes.

Nachdem wir einige Versuche dieser Art gestartet und ziemlich schnell wieder aufgegeben hatten, beschlossen wir dem Client nur die physikalischen Objekte (Körper und Verbindungen zwischen Körpern), deren Aussehen (Farbe, …) und grafische Effekte wie Explosionen, Lichter, … mitzuteilen. In den relativ seltenen Fällen in denen von außerhalb Kräfte auf Objekte ausgewirkt werden (durch Explosionen, gescriptete Objekte wie Aufzüge o.Ä.) bekommt der Client Information über die neuen Geschwindigkeiten und Positionen der Körper mitgeteilt ohne dass er weiss, warum das jetzt passiert ist.

Der Client teilt dem Server nur seine Mausklicks und Tastenanschläge mit, die dieser entsprechend behandelt.

Der Code für diese Art der Synchronisation ist fast komplett fertig und funktioniert wunderbar, allerdings wird bisher kein Netzwerk an sich verwendet, sondern nur ein Testprogramm das einen Server und mehrere Clients verwaltet, die dann untereinander direkt Nachrichten austauschen.

Der eigentliche Netzwerkcode (Das sichere und schnelle Übermitteln von byte-arrays :)) funktioniert noch nicht hundertprozentig, wird aber wahrscheinlich nicht mehr lange dauern.

Wir arbeiten außerdem an Verschönerungen und Erweiterungen des Spielcodes. Es ist mittlerweile relativ angenehm den Spieler zu steuern, es gibt außerdem relativ umfangreiche Möglichkeiten Levels zu designen (Einfügen von Aufzügen, Setzen von Spawnpoints für Fahrzeuge oder Spieler, Gestaltung der Beleuchtung, Objekte im Vordergrund und Hintergrund, etc. )

Levels werden immernoch in .svg Dateien durch Vektorgrafiken erstellt, da sich diese Methode für uns gut bewährt hat.

Wie schon beim Punkt „Spawnpoints für Fahrzeuge“ verraten, arbeiten wir auch noch an Fahrzeugen in die die Spielerfigur sich setzen kann, bisher ist das zwar nur ein Auto, es ist aber kein Problem auch Hubschrauber oder Raumschiffe zu schreiben, da das grundlegende Konzept das gleiche bleibt.

Um für das spätere Spiel eine faire Aufteilung der Punkte zu garantieren gibt es ein „InfluenceSystem“, das für jeden Körper in der Welt den aktuellen Besitzer bestimmt. Stösst ein Spieler einen großen, schweren Block von einem Hausdach auf einen anderen Spieler und kriegt Schaden davon, so sollte dieser Schaden dem Spieler der den Block gestossen hat angerechnet werden.

Das funktioniert soweit auch ganz gut, wann immer ein Körper eine Weile umher steht wird sein Besitzer gelöscht, erst wenn ein Körper, dessen Besitzer ein bestimmter Spieler ist einen Impuls auf den Körper überträgt (dessen Betrag über einer bestimmten Grenze liegt), wird ein neuer Besitzer zugewiesen.

Das Modell zur Berechnung von Schaden ist ebenfalls angepasst worden, so dass es realistischer ist, und es vorallem leichter wird, einen Spieler auch durch andere Methoden als nur Schüsse oder Explosionen zu töten.

Falls jemand daran interessiert ist, den Code von rohXel anzuschauen, findet er ihn hier. Auch Beiträge, seien es Ideen oder sogar Code sind natürlich dringend erwünscht.


Aktionen

Information

Hinterlasse einen Kommentar