[Projekt] Ring Racer

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

[Projekt] Ring Racer

Beitrag von scheichs »

Ich hatte das Projekt ja schonmal kurz beim ZFX-Stammtisch im -oh Schreck- Januar gezeigt. Jetzt haben wir schon Ende Mai. Verdammt, die Zeit rast! Weiss jetzt gar nicht mehr so genau was da für ein Stand war. Die ganze Portierung und Optimierung für Nintendo Switch (auf der es zuerst releast werden soll) und vor allem die Implementierung der Online Highscore mit ihren zig Ausnahmefällen, die alle korrekt -gemäß Nintendo Richtlinien- gehandelt werden müssen, haben dabei die meiste Zeit verschlungen. Das grosse Problem dabei sind die beschränkten/aufwendigen Debugmöglichkeiten, sowie die langen Deployzeiten auf die Hardware und damit verbundenen Iterationszeiten. Aber genug davon! Lieber mal übers Spiel reden...

[Spielprinzip]
"Ring Racer" ist ein arcadiger Single Player Flug-Rennspiel, bei dem man innerhalb eines Zeitlimits in der richtigen Reihenfolge durch Ringe fliegen muss.
Wenn man einen Ring durchfliegt bekommt man einen kleinen Zeitbonus, der das Zeitlimit wieder erhöht, sowie einen kleinen Boostbonus. Dieser füllt die Boostleiste auf und kann natürlich auch per Knopfdruck als "Nachbrenner" benutzt werden.

Die 5 Rennstrecken finden auf Inselgruppen im Meer statt und sind zum größten Teil als "Canyon"-Rennen ausgelegt. Die Idee dazu entstand dabei beim Schauen von Top Gun 2. Die Levels steigern sich im Anspruch und sind deswegen auch erst nach und nach zugänglich.
Eine Energiekuppel verhindert, dass der Spieler sich beliebig weit von der Rennstrecke entfernt.

[Engine/Technik]
Umgesetzt wurde das Spiel mit Unity. Die Landschaft wurde mit der Technik, die ich hier im Showroom auch schonmal vorgestellt hatte, prozedural vorgeneriert. Zusätzlich habe ich noch ein paar Tools geschrieben um besondere Objekte ebenfalls prozedural zu generieren. In den meisten Fällen dienen diese als "Eyecandy", teilweise aber auch als Hindernisse und Orientierungsanker.
Das Landschaftsdarstellung und Shader habe ich so optimiert, dass sie besonders gut für die Nintendo Switch laufen. Ich wollte unbedingt die native Auflösung, sowie konstante 60FPS und eine "grosse" Weitsicht. Letzteres ist natürlich relativ zu sehen und wäre sicher noch besser zu machen. Es gibt z.B. kein LOD. Aber iwo will man für so eine Art von Spiel auch mal einen Schlussstrich ziehen. Ich denke ich habe da einen passablen Kompromiss gefunden.

Was habe ich genau gemacht?
Ich habe das Lightbaking von Unity verworfen, weil es in meinen Tests für solch grosse Landschaften zu wenig performant und zu viel Speicher frisst.
Stattdessen mache ich mein eigenes Lightbaking auf einer sehr hoch aufgelösten Version der Landschaft und speichere Farbe und NDotL-Beleuchtung in einer einzigen 4K Textur für die ganze Landschaft. Schatten werden im Alphakanal gespeichert, damit ich diese im Shader nach Bedarf finetunen kann. Diese einzige Textur nutze ich für die ganze Landschaft, welche selber in Chunks organisiert ist und deren Mesh dann wesentlich niedriger aufgelöst ist als in der Bake Phase. Das bemerkt man dann aber nur in seltenen Fällen. Um die virtuelle Texturauflösung noch zu erhöhen, gibt es eine Detail-Normal Map obendrauf.
Das Prinzip ist natürlich nicht neu, musste ich aber halt für meinen Fall nachimplementieren.

Hier z.B. die Textur für Level 1, mit dem Shadow-Alpha-Kanal in Schwarz.
Lightmap_Level1_Tiles.jpg
Für Die Bäume bestimme ich lediglich ob sie im Schatten liegen oder nicht und dunkle dann entsprechend ab.
Auf Echtzeitschatten verzichte ich komplett, es gibt lediglich einen Blobshadow für das Spielerschiff.


Das Ergebnis des Ganzen kann man sich hier im Vorabtrailer (basierend auf Nintendo Switch) ansschauen.


Sind jetzt noch ein paar Kleinigkeiten zu machen (Icons, Submissionpackage finalisieren, etc.) zu machen und dann gehts zur Zertifizierung an Nintendo.
Release plane ich gegen Ende Juni. Ausserdem soll es zeitgleich auch eine Demoversion geben.
Zuletzt geändert von scheichs am 18.07.2023, 12:13, insgesamt 2-mal geändert.
NytroX
Establishment
Beiträge: 387
Registriert: 03.10.2003, 12:47

Re: [Projekt] Ring Racer

Beitrag von NytroX »

Ich mag den StarFox-ähnlichen Stil :-)
Wünsche dir viel Glück beim Release.
Benutzeravatar
xq
Establishment
Beiträge: 1589
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von xq »

Goil! Gefällt mir sehr, sieht auch optisch sehr ansprechend aus.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
bruebaker
Establishment
Beiträge: 433
Registriert: 08.12.2015, 10:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: [Projekt] Ring Racer

Beitrag von bruebaker »

Schaut echt gut aus, scheint aber auch ein krampf zu sein ein spiel aif der switch zu veröffentlichen (-:
Benutzeravatar
Hannes
Beiträge: 43
Registriert: 11.06.2008, 06:04

Re: [Projekt] Ring Racer

Beitrag von Hannes »

Sieht gut aus. Ich bin gespannt wie es läuft. Viel Glück. Ich drücke dir die Daumen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5047
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Schrompf »

Sieht cool aus, und mit den Sprach-Schnipseln hast Du echt was erreicht. Detail-Kram: bei 0:56 gibt's irgendnen Würfel mit Pfeilen nach Rechts einzusammeln - ich dachte, das wär ein Richtungshinweis. Vielleicht eher Pfeile nach oben für "VORWÄRTS!!!!"? Oder irgendwas Richtungsneutrales, konnte nicht erkennen, was man da eigentlich einsammelt. Hab nix vom Boost gesehen... wird der angemessen illustriert? Die Luftstreifen vermitteln ein schönes Geschwindigkeitsgefühl. Vielleicht die Vignette noch ein bissl bedrohlich pulsieren lassen, wenn die Zeit fast um ist, um das Gefühl von Dringlichkeit zu verstärken.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2095
Registriert: 18.10.2010, 23:26

Re: [Projekt] Ring Racer

Beitrag von marcgfx »

Sieht richtig nice/arcady aus und der Sound passt auch. Die flachen Wolken stören mich aber ein bisschen, vor allem wenn der Spieler sehr nah rankommt. Viel Erfolg!
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Krishty »

Die Konkurrenz schläft nicht und hat auch schon eine Möglichkeit gefunden, das Spielkonzept um DLC und Micro-Transactions zu erweitern:

seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Krishty hat geschrieben: 02.06.2023, 14:16 Die Konkurrenz schläft nicht und hat auch schon eine Möglichkeit gefunden, das Spielkonzept um DLC und Micro-Transactions zu erweitern:

Oha... Krass! XD
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Schrompf hat geschrieben: 27.05.2023, 21:57 Sieht cool aus, und mit den Sprach-Schnipseln hast Du echt was erreicht.
Danke, ja ist so'n kleines Detail. Da könnte man noch mehr Liebe reinstecken. Vielleicht bei 'nem Nachfolger.
Schrompf hat geschrieben: Detail-Kram: bei 0:56 gibt's irgendnen Würfel mit Pfeilen nach Rechts einzusammeln - ich dachte, das wär ein Richtungshinweis. Vielleicht eher Pfeile nach oben für "VORWÄRTS!!!!"? Oder irgendwas Richtungsneutrales, konnte nicht erkennen, was man da eigentlich einsammelt. Hab nix vom Boost gesehen... wird der angemessen illustriert?
Ja, das ist'n Boost und da gibt's eigentlich 'nen Soundsample mit "Power-Up".
Schrompf hat geschrieben: Die Luftstreifen vermitteln ein schönes Geschwindigkeitsgefühl. Vielleicht die Vignette noch ein bissl bedrohlich pulsieren lassen, wenn die Zeit fast um ist, um das Gefühl von Dringlichkeit zu verstärken.
Das is 'ne super Idee! Werd ich mit 'nem Patch nachliefern.
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

An alle anderen: Danke für das Lob! Ich werde berichten wie's weitergeht. Es ist heute bei Nintendo mit ein paar Issues durchgefallen. Hab 1 Testcase übersehen und sind noch ein 2-3 andere Bugs drin gewesen, weil ich im falschen Modus der Switch getestet hab.
mtorc1
Beiträge: 88
Registriert: 20.02.2021, 16:24

Re: [Projekt] Ring Racer

Beitrag von mtorc1 »

Das Video schaut sehr cool aus und macht Lust auf mehr! Gefällt mir.
Kannst du etwas darüber verraten, was die Test Cases von Nintendo so vorsehen?
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2545
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Jonathan »

Kann nur zustimmen, sieht echt gut aus!
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Danke Leute!
Ich bin grade dabei von Unitys Built-In Renderpipeline auf die Universal Render Pipeline zu wechseln, weil erstere auf neueren Platformen (z.B. PSVR2) jetzt nicht mehr supportet wird.
In meinem Fall heisst das alle Customshader auf HLSL umzuschreiben.
Die Performance scheint durch die leichtere Pipeline doch etwas zu steigen. Jedenfalls kann ich jetzt einige "heavy" PostProcessing Sachen einschalten (Motion Blur, Depth Of Field), die vorher undenkbar waren. Schon erstaunlich was auf 'nem 8? Jahre alten mobile SoC noch geht. Laut Debugoverlay übrigens bei ca. 5W für den Chip.
Ich bin noch nicht ganz fertig aber hier ist mal das vorläufige Ergebnis meiner Konvertierung, aufgenommen direkt mittels HDMI Capture von der Switch.

Benutzeravatar
Jonathan
Establishment
Beiträge: 2545
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Jonathan »

Huh, find ich sehr interessant: Ich Spiele keine Handyspiele weil die Steuerung schlecht ist und habe keine Switch oder ähnliches. Und in dem Video sehe ich jetzt diese merkwürdige Kombination aus Fancy Shadern (Wasser / Postprocessing, etc) und mäßig detaillierten Landschaften mit Billboardbäumen (also von der Geometrie her auf dem Stand von vor 20 Jahren oder so). Aber das macht natürlich total Sinn, wenn der Bildschirm nicht sehr groß ist und die Bewegung relativ schnell ist, die der Detailgrad der Geometrie genau richtig. Man würde mehr Dreiecke eh nicht sehen und die Shader lassen es dann ziemlich gut aussehen. Ich weiß gar nicht, ob ich sowas in der Form schonmal gesehen habe.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 597
Registriert: 05.07.2003, 11:17

Re: [Projekt] Ring Racer

Beitrag von Lord Delvin »

Ich find's gut. Jenachdem was das Ziel ist würde ich's vielleicht noch ein bisschen Pixeliger aussehen lassen, um dem Ganzen einen gewollten Retrolook zu geben.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Das hast Du genau richtig beschrieben. Eigentlich ist die TerrainTech für die FarTerrain-Darstellung eines anderen Spiels gedacht gewesen. Ich habe sie für Ring Racer nur angepasst. Aber während des Spiels hat man ja auch keine Zeit jeden einzelnen Baum im Detail zu betrachten.

Auch andere Rennspiele (auf Switch) haben lächerlich geringe Geoometriedetails und kaschieren das mit überladenem PostProcessing und Fancy FX. "Fast RMX" z.B. wird hochgelobt wegen seiner tollen, superflüssigen Grafik und Effekte. Wenn man sich aber mal einen Screenhot anschaut, und sich das PP wegdenkt, sieht das eigentlich relativ arm aus.

BTW: Das sind auch Billboardbäume. Die sehen nur schöner aus als meine. ;)

Bild
Bild
Benutzeravatar
grinseengel
Establishment
Beiträge: 887
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: [Projekt] Ring Racer

Beitrag von grinseengel »

Wenn die Hardware nicht mitmacht, dann muss man halt tricksen. Ich meine, wenn man das im laufenden Spiel wegen der Geschwindigkeit nicht sehen kann, dann ist doch egal wie es im Screenshot aussieht.
Benutzeravatar
Hannes
Beiträge: 43
Registriert: 11.06.2008, 06:04

Re: [Projekt] Ring Racer

Beitrag von Hannes »

Das Wasser sieht gut aus. Die Felsenlandschaft auch. Nur es sieht für mich so aus, als wären die Bäume alle geklont. Weiß nicht ob das wirklich so ist, oder sie sich nur zu ähnlich sehen.

Hannes

P.S. Meine Switch freut sich schon.
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Ja, die Bäume... da müsste ich etwas mehr Variation reinbringen. Das wäre sogar sehr einfach machbar. Unterschiedliche Größen, Ausrichtung, Typen, Farben. Ist eigentlich alles einfach umsetzbar. Glaube, das würde nochmal einiges an optischen Gewinn bringen.

Übrigens... die sind nicht mal instanziiert oder so, sondern alle, pro Chunk, in einem grossen VertexBuffer.
Naja. Es muss ja noch Luft für 1 Ring Racer 2 geben.
scheichs
Establishment
Beiträge: 893
Registriert: 28.07.2010, 20:18

Re: [Projekt] Ring Racer

Beitrag von scheichs »

Die Demoversion wurde heute übrigens von Nintendo genehmigt. Die Vollversion leider noch nicht... :(
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 597
Registriert: 05.07.2003, 11:17

Re: [Projekt] Ring Racer

Beitrag von Lord Delvin »

Wenn sich das Geschwindigkeitsmäßig wie Trackmania oder Redout anfühlt, dann wird das keinen ernsthaft stören, weil du das eh nur bemerken kannst, wenn du irgendwo dagegen geknallt bist und deswegen stehenbleibst was in der Regel nicht dazu führt, dass du anfängst dir die Landschaft anzusehen. Bei so Spielen würde ich auch eher flüssige Physiksimulation optimieren als alles andere weil das mehr zum Feeling beiträgt. Gerade bei Trackmania war man irgendwann an dem Punkt an dem man ganz bestimmt schräg aus dem Looping fahren musste, um später wieder auf der Bahn zu landen. Da hätte man gerne, dass sich das jedes Mal gleich anfühlt und man am selben Ort landet, wenn man mit derselben Geschwindigkeit denselben Punkt im Looping trifft.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
joeydee
Establishment
Beiträge: 1127
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von joeydee »

Das sieht brauchbar aus :)
die sind nicht mal instanziiert oder so, sondern alle, pro Chunk, in einem grossen VertexBuffer.
Würde ich bei statisch platzierten kleinen Meshes genauso machen (bzw. mache das auch immer so :))
Ich habe da zwar kaum Praxiserfahrung mit Instancing-Performance, aber bin mir nicht sicher ob da Instancing überhaupt noch was in der Rendergeschwindigkeit bringen würde? Vielleicht aber noch interessant wenn Buffersize ein Thema ist, 8 Verts vs. 1 Matrix z.B.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5047
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Schrompf »

Instancing bringt schon noch was gegenüber einzelnen DrawCalls. Gegenüber einem Buffer mit allen Instanzen sind sie aber langsamer, weil der Input Assembler komplexer ist. Das merkt man aber nur bei wirklich vielen Instanzen. Sechsstellig, würd ich sagen.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
joeydee
Establishment
Beiträge: 1127
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von joeydee »

Instancing bringt schon noch was gegenüber einzelnen DrawCalls.
Das ist klar, ging nur um den 1-Drawcall-Vergleich z.B. n Cross-Billboards == n * 8 vortransformierte Verts im VB, vs. n mal 1 Matrix (== n * 4 Verts) im Instancebuffer, beides würde ja nur einmalig statisch als Buffer angelegt, beides benötigt nur 1 Call. VB in dem Fall zwar doppelt so groß, aber der Weg ist direkter.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Krishty »

Huch, das Thema hatte ich jetzt glatt verpasst.

Die Leistungsverbesserung durch Instancing kann schon bei ein paar Dutzend Modellen bemerkbar sein; je nachdem, wie hoch die Render-Last ist und wie viele Dreiecke in jeder Instanz stecken.

Bei sehr einfachen Modellen sind Geometry Shaders nochmal schneller als Instancing. „Einfach“ hängt hier von der Anzahl Vertices ab (bedenken, dass Geometry Shader keine indizierten Dreiecke erzeugen können!). Ganz hilfreich fand ich diese beiden Artikel:
Instancing vs Geometry Shader vs Vertex Shader – Round 1
Instancing vs Geometry Shader vs Vertex Shader – Round 2

Die Bäume sehen sehr einfach aus – vier Dreiecke aus acht Vertices? Die sind eigentlich perfekte Kandidaten für Geometry Shaders. Da würde ich Instancing erst gar nicht versuchen. Aber ich habe auch keine Erfahrung mit der Switch.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Matthias Gubisch
Establishment
Beiträge: 488
Registriert: 01.03.2009, 19:09

Re: [Projekt] Ring Racer

Beitrag von Matthias Gubisch »

Heutzutage macht man Indirekte Drawcalls
Da braucht man kein Instancing mehr 😉

Und die Drawcalls lässt man auch noch die GPU zusammen bauen
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
Schrompf
Moderator
Beiträge: 5047
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Schrompf »

AAaaaangeber :-)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] Ring Racer

Beitrag von Krishty »

Auch wenn’s wahr ist, ist die Implementierung eine echte PITA :( Noch mehr als Instancing, meine ich.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten