Pseudo 3d Racer

Es gibt 20 Antworten in diesem Thema, welches 4.104 mal aufgerufen wurde. Der letzte Beitrag (9. August 2015 um 09:38) ist von Sokrates.

  • Mich würde mal interessieren, wie diverse Rennspiele die Pseudo-3d-Strecke verwirklicht haben. Es gibt da ja durchaus verschiedene Ansätze; sei es Charset oder Bitmap. Und auch da unterscheiden sich die Umsetzungen.

    Es gibt da eine recht interessante Seite (Bitte melde dich an, um diesen Link zu sehen.), die den Effekt erklärt, und wie man ihn auf neueren Rechnern nachbaut. Aber wie wurde der beim C64 verwirklicht? Dazu gibt es nur einen Absatz mit Zitaten von Simon Nichols, aber der überfliegt das nur kurz.

    Hat das jemand von hier schon mal gemacht? Und wie wurde das angegangen? Mich interessiert vor allem, wie man die Kurven so schön hinbiegt (kann man das mit Charset noch vernünftig, oder geht man da dann doch auf Bitmap?)
    Es sollen ja mindestens noch andere Fahrzeuge und/oder Hindernisse dargestellt werden können.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Das würde mich auch interessieren. Will schon lange mal Pit Stop analysieren.

    64er-Zeitschriften gesucht:
    1984: 9 in gutem Zustand

    Ansonsten 64er 1984-1994 sind komplett wieder da. :D

  • Hier ein Artikel, der die Basics, Maths, Raster, Distanzmarkierungen, Kurven, Hügel, Spriteplatzierung/Skalierung etc. sehr gut erklärt:
    Bitte melde dich an, um diesen Link zu sehen.

    Hier hat jemand schön die Probleme und mathematischen Grundlagen für ein Rennspiel in JavaScript erklärt und zeigt Codebeispiele.
    Es funktioniert dann auch im Browser.
    Bitte melde dich an, um diesen Link zu sehen.


    <Edit>Sorry, habe erst jetzt gesehen, dass Dein Link der Selbe ist. :schande:

    ___________________________________________________________
    Meine Kreationen: Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.
    | Bitte melde dich an, um diesen Link zu sehen.
    Avatar: Copyright 2017 by Saiki

  • Hat das jemand von hier schon mal gemacht? Und wie wurde das angegangen? Mich interessiert vor allem, wie man die Kurven so schön hinbiegt (kann man das mit Charset noch vernünftig, oder geht man da dann doch auf Bitmap?)


    Für mich hört sich das so an, als ob Du da evtl. selbst etwas implementieren willst. In meinen Augen ist der Anspruch bzgl. Spielgeschwindigkeit bei den C64-(noch)Nutzern gegenüber früher deutlich gestiegen.
    War die Geschwindigkeit von Revs oder Stunt Car Racer damals noch atemberaubend so wäre ein vergleichbares Spiel heute wohl "untermotorisiert" ("das habe ich in Demo XY aber schon schneller gesehen!").
    Von diesem Aspekt aus gesehen ist das Charset wohl die bessere Wahl, bei genügend Tempo fallen kleinere Graphikprobleme auch weniger auf (siehe Buggy Boy).

  • Da wurde praktisch jede denkbare Kombination mal ausprobiert, mit mehr oder weniger brauchbaren Ergebnissen, hier ein paar Beispiele:

    Pitstop: komplett Bitmapmodus, inklusive der Autos, und daher ziemlich ruckelig nach heutigen Massstäben.

    Pole Position: Strasse ist Bitmap, der Horizont Textmodus und die Autos und Streckenrandobjekte Sprites. Die Streifenmuster werden wie bei vielen Spielen dieser Art durch Farbwechsel an verschiedenen Rasterpositionen bewerkstelligt.

    The Great American ... Road Race: Strasse inkl. Mittelstreifenanimation ist Bitmap, alles andere sind gemultiplexte Sprites. Da Richtungsänderungen viel langsamer ablaufen als bei Pitstop oder Pole Position fällt die Langsamkeit des Bitmapmodus praktisch nicht auf, zumal man beim Spielen vor allem auf die Sprites achten muss, und die bewegen sich mit max. FPS.

    Pitstop II: Textmodus mit Doublebuffering sowohl für Screenram als auch für Charsets, wobei bei letzteren die für den nächsten Streckenabschnitt benötigten Pixelmuster "live" in den Backbuffer geschrieben werden, und Sprites für die Rennautos.

    Supercycle: wie Pitstop II, zusätzlich noch Objekte neben der Strecke aus Sprites. Streifenanimation wie auch bei Pitstop II nach dem Pole Position Prinzip.

    Outrun: Textmodus sowohl für die Strasse als auch für die Objekte neben der Strecke. Dadurch lassen sich zwar größere Objekte darstellen als mit Sprites, aber die Bewegungen werden dadurch auch deutlich gröber und ruckeliger.

  • Mein all-Time-Favorite ist da Grand prix circuit. Erstaunlich was die da aus dem Cevi rausgeholt haben.

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • @Kalter Gulli: Danke, das ist mal eine interessante Auflistung

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Oh weia. Hab mal mit Bitmap experimentiert. Wenn ich da generisch vorgehe, schaffe ich eine Seite der Strasse mit ca. 1.2 Frames :)

    Ich überlege gerade ernsthaft, ob ich mich da nicht einfach auf eine handvoll fixer Layouts festlegen soll und dafür Speedcode generiere.

    Wobei dazu kommt, dass man ja die Überlappung auf den vorherigen Frame mitnehmen muss, um die alten Frames zu übermalen *Kopfschmerz*

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • War alles viel zu langsam, da ich damit auf den RGCD compo abziele, habe ich mir jetzt ein C++-Programm geschrieben, dass direkt Speedcode ausspuckt, der einfach neun Frames zeichnet (Kurve links über Gerade bis Kurve rechts). Das geht jetzt flott genug für ein Spiel, nur muss man ja auch noch eins schreiben.
    Es muss natürlich noch die Überlappung zu den alten Kurven mit rein, dann wird das schon wieder mehr, aber es ist noch Luft.

    Mal guggen, was sich machen lässt :)

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Falls es nicht unbedingt der Bitmap-Modus sein muss wäre eine Alternative aus den Graphiken per CSAM Super ein Charset zu generieren. Dürfte bei den wenigen Frames qualitativ in Ordnung gehen und hätte den Charme Speed*8 und Speedcodesize/8. Bei Qualitätsproblemen könnten es per Rastersplit auch zwei Charsets werden, wäre immer noch Faktor 4.

  • Stimmt eigentlich auch. Müsste ich mal durchrechnen lassen. Charset hätte ja auch den Vorteil, dass man noch anderes Gedöns einbringen kann. Bei Bitmap sind ja eigentlich nur noch Sprites sinnvoll machbar.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • ...also wenn ich mir die Spiele nach all den Jahren nochmal anschaue, finde ich den 3D Effekt von Pitstop 2 und Super Cycle am besten. Auch die anderen Autos bewegen sich hier recht flüssig. Bei den anderen... naja...

    Ich vermisse einzig, dass die Strassen keine Hügel haben. (glaube das hat nur Out run? Allerdings zu ruckelig.) Das ist schade. Aber "damals" hab ichs nicht vermisst. "Wir hatten ja nichts anderes"...

  • Beim Charset komme ich auf 400 unique Chars, würde also für meine Ansprüche reichen. Bei Pit Stop 2 sind es locker doppelt so viele Einzelbilder, und auch noch Mittelstreifen :)

    Hügel gab's meine ich auch bei Enduro Racer und diesem 12-Spieler-Kart-Teil (hab den Namen vergessen)

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Machs doch mithilfe von Zeilen-IRQs und Zeichensatzgraphik:

    Die Linien für die Streckenberandung wird durch Zeichen dargestellt,
    dazu müssen die verschiedenen Linien in einen Zeichensatz
    gegossen werden. Dann noch Feinabstimmung per VIC/FineScrolling
    und die Streckenformen in eine Tabelle abgelegt:

    1. Fasse jeweils 4 Pixelzeilen (oder evtl. 8 oder 12) zu Blöcken zusammen.
    2. Je Block wird ein IRQ ausgelöst: Zeichen müssen gesetzt und
    mit VIC-Feinscrolling die genaue Pixelposition gesetz werden.
    3. Linien mit Höhe 4 und DeltaX=[-max:max] max z.B. = 16 und
    Schrittweite z.B. 2, ergibt grob 64 Zeichen.
    4. Die verschiedenen Kurvenformen können zu einer Tabelle
    vorberechnet werden.

    Zusätzlich muss vor jedem Bild noch das Alte gelöscht werden.
    Je Block sind grob 8 Zeichen und ein paar VIC-Register zu setzen,
    dazu noch das IRQ für den nächsten Block vorbereiten.
    Je nach Aufwand der Tabelle kannst du auch locker Berg/Tal-Kurven
    einbauen.

    Das wird iE dem Ansatz entsprechen, der auf einem Atari 2600
    implementiert wird. Da muss ja auch je Zeile gezeichnet und
    evtl. gerechnet werden.

  • Falls es nicht unbedingt der Bitmap-Modus sein muss wäre eine Alternative aus den Graphiken per CSAM Super ein Charset zu generieren. Dürfte bei den wenigen Frames qualitativ in Ordnung gehen und hätte den Charme Speed*8 und Speedcodesize/8. Bei Qualitätsproblemen könnten es per Rastersplit auch zwei Charsets werden, wäre immer noch Faktor 4.

    Stimmt eigentlich auch. Müsste ich mal durchrechnen lassen. Charset hätte ja auch den Vorteil, dass man noch anderes Gedöns einbringen kann. Bei Bitmap sind ja eigentlich nur noch Sprites sinnvoll machbar.


    Charset-Animationen (abhängig vom Joystick-Input) als Strasse zu nutzen war auch der erste Gedanke, bevor es bei mir Richtung Flugsequenz abdraf abdriftete abgedriftet ist: Bitte melde dich an, um diesen Link zu sehen.

    da ich damit auf den RGCD compo abziele

    Da wird´s mit Charset-Animation aber entweder sehr eng mit 16kb oder sehr grob mit der Darstellung / Framerate, oder..? :(

  • Nuja, die 9 (fixen) Strassen-Bilder bekomme ich in 400 Zeichen unter. Das klingt machbar, Packer sei dank. Die eigentliche Frage ist, was bekommt nach dann noch in den Rest der 16kB rein? :)

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • ...also wenn ich mir die Spiele nach all den Jahren nochmal anschaue, finde ich den 3D Effekt von Pitstop 2 und Super Cycle am besten.


    Super Cycle habe ich sowieso als das schnellste Rennspiel auf dem C64 in Erinnerung. Und sah zwar etwas karg, aber absolut nicht schlecht aus.

  • 9 (fixen) Strassen-Bilder

    Sind die als Background? Als Animation sind 9 Frames doch sehr wenig. Allerdings: anders als bei meinem Versuch könntest du Delta-Compression benutzen, und zwar nur für die Strassenbegrenzung (und ggfs. noch den Mittelstreifen). Dann könntest du viel mehr Frames nutzen und ganze Strecken nur mit Teilanimationen zusammenstellen. Diese malen sich ja über das bisherige letzte Frame, egal, was es war.

  • Nuja, die 9 (fixen) Strassen-Bilder bekomme ich in 400 Zeichen unter. Das klingt machbar, Packer sei dank. Die eigentliche Frage ist, was bekommt nach dann noch in den Rest der 16kB rein?


    Fein! Da könntest Du evtl. gleich auf 4 oder mehr Charsets gehen und skalierte Objekte mit aufnehmen...

  • Die 9 Frames sind einfach 9 Strassen, nicht animiert. Animation der Streifen würde ich per Farbumschaltung hinbiegen. 4 oder mehr Charsets, ich glaube, das passt dann beim besten Willen nicht mehr.

    Müsste mal tüfteln, inwieweit man da die Packrate optimieren kann (Strecke oder Skalierung selbst errechnen)

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.