Rennspiel '12 (Titel TBD)

Kommentare anzeigen Worklog abonnieren

Worklogs Rennspiel '12 (Titel TBD)

Eintrag #3

Samstag, 14. April 2012 von ZaP
Seid gegrüßt!

Ich arbeite ja am Streckeneditor, der nicht nur als Werkzeug zur Streckenerstellung dient, sondern auch die Spielwelt generiert.
So eine Rennstrecke besteht natürlich nicht nur aus Asphalt, sondern auch einigen anderen Materialien, am besten alle auf einmal. Da unsere Strecken immer in Abschnitte unterteilt sind (da ja ein Bézier-Pfad, mehr dazu im ersten Eintrag) kann einfach jedem Abschnitt ein neues material zugewiesen werden. Ein solches beinhaltet eine Textur und physikalische Eigenschaften, wobei der Plural hier falsch ist, denn im Moment ist das nur die Oberflächenreibung.
Zurück zum eigentlichen Problem: Man fährt auf einer Asphaltigen Straße, und *plopp* auf einmal ist es ein Sandweg... Ist doch hässlich. Um das zu vermeiden, wird bei der Streckengenerierung ein Texturübergang geschaffen, indem einfach zu Streckenabschnitt B zwei Vertices hinzugefügt werden, die an die Positionen der letzten beiden Vertices von Streckenabschnitt A gebracht werden, und einen Alphawert von 0 haben.

Screenshot

Weiterhin habe ich mir um die Umgebung Gedanken gemacht. Wie auf dem Screenshot zu sehen, kann eine Skybox (bzw. eine Skysphere) eingestellt werden, aber das ist ja sozusagen obligatorisch. Viel wichtiger als das ist aber "das drumherum" der Rennstrecke. Der erste Ansatz war, einfach Planes als Untergrund zu nehmen, und Meshes darauf zu platzieren, die der Landschaft Struktur verleihen, also auch Felsen und Baumketten. Da die Strecke aber auch vertikal variabel sein soll, musste dieser Ansatz verworfen werden.
Stattdessen befasse ich mich zur Zeit damit, die Rennstrecke in ein Terrain einzufassen. ZEVS hatte praktischweise ein Snippet parat, das über Perlin Noise eine Höhenmatrix generiert. Zusätzlich dazu muss die Strecke natürlich in das Terrain eingebettet werden. Dazu wird einfach der Pfad der Strecke durch einen Gaussian Blur Algorithmus gejagt und zu der Höhenmatrix dazuaddiert.
MiniB3D hat leider keine Möglichkeit an Bord, um Terrains zu laden, aber hier gibt es ein Snippet aus der englischen Community, das leider nicht ganz so gut funktioniert, wie ein B3D Terrain, aber zumindest rudimentär seinen Dienst verrichtet. Rudimentär deshalb, weil es kein dynamisches LOD unterstützt, und das gerenderte Mesh entsprechend unprickelnd aussieht. Deswegen versuche im mich momentan an einem Terrain LOD Algorithmus mit Quadtree.

Wenn das einmal läuft, kann ich mich mit den Grafiken befassen. Wie ja im ersten Post schon erwähnt, soll das Spiel im Cartoon-Style daherkommen, daher macht sich Inkscape sicherlich ganz hervorragend für Texturen. Aber hier geht wohl Probieren über Studieren Smile

Erstes Alpha und schon süchtig

Freitag, 9. März 2012 von ZEVS
Es ist viel passiert, seit dem letzten Eintrag. Der Plan war aufgestellt, danach wurde er nach BlitzMax übersetzt. Es ist schon ein tolles Gefühl, nach (gefühlt) sehr langer Programmierzeit die erste Runde zu drehen. Merkwürdig war zwar, dass man auf zwei Metern ausrollte, aber diesen Faktor hatte ich schnell behoben. ZaP hat den Trackeditor perfektioniert, sodass nun die Tracks ohne Probleme erstellt und getestet werden können. Außerdem hat er die Kameraklasse geschrieben, die das Geschehen nun ideal filmt. Neugierig? Screenshot:
user posted image
Der graue Klotz ist der Spieler. Wer ihn in Aktion sehen will, klickt ihn an. Sein Nachfolger fährt bereits auf der
ToDo-Liste:
Arrow Fahrzeug-Mesh
Arrow Rundenzeiten können aufgenommen werden (die Klasse steht), was aber leider noch nicht passiert.
Arrow Das gleiche gilt für CheckPoints, also Punkt, die man durchfahren muss.
Damit wäre das erste Zwischenziel erreicht. Danach werden Kollision und weiteres in Angriff genommen.

so long

Am Anfang war die Planung

Mittwoch, 7. März 2012 von ZaP
Ein Rennspiel! In 3D! Mit Autos! Und coolem Comic-Look! Im Netzwerk!
Vielleicht kennt man das, da hat man auf einmal dieses Bild im Kopf, von diesem einen Spiel und man würde am liebsten sofort drauflos tippen. Diesmal dachte ich jedoch, etwas Planung könnte vielleicht nicht schaden, und außerdem wollte ich auch mal im Team arbeiten. Smile
Also, neues Dokument auf, Konzept schreiben. Wie schreibt man eigentlich ein Konzept? Google. Aha, mit einer kurzen Beschreibung des Spiels anfangen, daran entscheiden Publisher, ob das Spiel was taugt. Ok, an einen Publisher wollte ich nicht gleich rantreten, also nur eine einfache Beschreibung (Auszug aus besagtem Konzept):

Bei diesem Projekt soll es sich um ein 3D (Multiplayer?) Autorennspiel im Cartoon-Style handeln. Als Sprache wird BlitzMax mit MiniB3D 0.54 als Grafik-Engine verwendet. Die Spieler können zwischen verschiedenen Rennstrecken wählen, die sich durch unterschiedliche Eigenschaften unterscheiden sollen, mehr dazu unter "Spielwelt". Zuerst soll es nur den klassischen Rennmodus geben. Außerdem werden Streckenzeiten Highscore-like online gespeichert, damit sich die Spieler weltweit aneinander messen können. Es ist keine Hintergrundgeschichte geplant, das Spiel soll durch das Gameplay bestechen.

Gut, das wäre geschafft, was haben wir denn hier noch? Aha, einige Punkte, die Spielmechanik, Spielwelt, Grafik, usw. beschreiben. Das kriege ich auch noch hin. Da war doch dieses Bild in meinem Kopf, mal sehen... Upps, auf einmal ist das Konzept zwei Seiten lang! Und dabei bin ich doch so lesefaul! Ok, genug damit, Thread in den Stellenmarkt, Team suchen!

Und da sind wir, es haben sich tatsächlich zwei Leute gemeldet! Hurra! Inzwischen haben wir das Konzept auf vier Seiten aufgebläht und uns bereits an die Arbeit gemacht.
Aber wie genau soll das Spiel denn nun aussehen? Nun, ein handelsübliches Rennspiel eben. Die Spieler starten alle am selben Punkt, und fahren um die Wette, wer zuerst ans Ziel kommt, hat gewonnen. Die Strecken sollen sich aber stark unterscheiden. Die Schwierigkeit soll nicht nur sein, die Idealkurve abzufahren, sondern viel mehr mit der Strecke klarzukommen. Wir hatten uns da so einige Gedanken gemacht, wie man Rennstrecken spannend gestalten könnte:

Arrow Abschnitte aus Eis und Treibsand, die die Steuerung erschweren
Arrow Schluchten und enge Streckenabschnitte
Arrow Wetterbedingte Sichtverhältnisse, z.B. Sandstürme, die die Sicht einschränken
Arrow Bewegliche Hindernisse auf der Piste, denen die Spieler ausweichen müssen

Die Spieler sollen außerdem ihr Fahrzeug und ihren Fahrer auswählen und anpassen können, z.B. verschieden Texturensets, Fahrzeug- und Spielermeshes, und individuelle Farben.
Die Rennstrecken können über einen Streckeneditor mit ein paar einfachen Handgriffen erstellt werden, wobei die Strecken als Bézierkurven vorliegen. Das hat den Vorteil, dass die Strecken schön geschwungen aussehen, und man ein dynamisches LOD auf bestimmte (z.B. weiter entfernte) Streckenabschnitte anwenden kann. Einen Screenshot gibt's auch, von der rudimentären Implementation:

user posted image

Das Spiel soll auch über das Internet spielbar sein, aber das steht erst weiter hinten in der ToDo-Liste. Wir würden uns aber freuen, irgendwann ein paar Runden auf der Piste mit dem BBP zu drehen Wink

Soweit, so gut, danke für's Lesen! Smile