Hello, Guest the thread was viewed878 times and contains 9 replies

last post from Korodny at the

Spiele ohne Sprites

  • Hallo,


    da der C16 keine Sprites kann, frage ich mich, wie man z.B. Hektik geschrieben hat.

    siehe:


    Leitern und Boden sind einfach Zeichen mit geändertem Zeichensatz. Das ist leicht.

    Ohne Sprites würde ich mir das jetzt so verstellen, wie man es bei der VC-20 Version sieht. Wenn das Männchen auf der Leiter steht, dann kann man das Männchen sehen, aber die Leiter nicht, weil man nur ein Zeichen darstellen kann.

    Die C64 Version kann ich leicht mit Sprites erklären.


    Aber wie hat man den Effekt beim C16 gemacht?

    a) Den Grafikmodus benutzt? Der ist doch viel zu langsam, oder?

    b) Den Zeichensatz so geändert, dass es auch Zeichen gibt, wie Leiter und Männchen gleichzeitig darstellen. Dann braucht man aber zum einen recht viele Zeichen und zum anderen wird die Programmierung wesentlich komplizierter.

    c) ...


    Ich würde es mit b) ausprobieren. Aber evtl. sehe ich nur nicht Trick c).


    Wie hat man das gemacht?

  • Wie wäre es mit der Option b), bei der aber immer nur das eine Zeichen (oder die vier, wenn die Spielfigur entsprechend groß ist) geändert werden, in denen sich die Spielfigur gerade befindet?


    Dann müsste man bei einem Zeichen nur das eine Zeichen und seine Definition (also 9 Bytes) oder bei vier Zeichen diese und ihre Defintionen (also 36 Bytes anpassen) - das sollte zu machen zu sein.


    Klar: Das ist jetzt erst einmal nur eine grundlegende Idee, bei der solche Sachen wie Scrolling bzw. die pixelweise Bewegung der Figur fehlen ...

  • Zum Bewegen einer Ein-Zeichen-Spielfigur muss man mindestens zwei Zeichen verändern (da sie sich ja über Rastergrenzen bewegt). Erlaubt man pixelgenaues Positionieren (ohne "Einrastern"), sind es sogar vier Zeichen. Geht durchaus, wird aber im Zusammenspiel mit Hintergrundgrafik schnell unübersichtlich, und vermutlich bleibt das nicht grundsätzlich immer schneller als alles mit Grafik zu machen.

  • Die VC20 Version hier im Vergleich ist eigentlich ein ganz anderes Spiel. Da wäre sicher mehr möglich gewesen.

  • Zum Bewegen einer Ein-Zeichen-Spielfigur muss man mindestens zwei Zeichen verändern (da sie sich ja über Rastergrenzen bewegt). Erlaubt man pixelgenaues Positionieren (ohne "Einrastern"), sind es sogar vier Zeichen. Geht durchaus, wird aber im Zusammenspiel mit Hintergrundgrafik schnell unübersichtlich, und vermutlich bleibt das nicht grundsätzlich immer schneller als alles mit Grafik zu machen.

    Passend dazu:



    8-Bit Show And Tell zeigt das in Turbo Rascal auf dem VIC20, da sieht man das auch mal grafisch mit den 4 Zeichen.

  • Wenn ich es richtig verstehe, dann kopieren die Hintergrund und Vordergrund in nur 4 Zeichen. Ich hätte nicht gedacht, dass das schnell genug ist für ein Spiel.

    Ich hatte angenommen, dass die vorher alle Kombinationsmöglichkeiten schon "berechnen", damit man es nicht während des Spiels neu berechnen muss. Andererseits, wenn ich so darüber nachdenke, dürfte das Setzen der Spielfigur somit viel einfacher sein, weil es immer die gleichen 4 Zeichen sind und man keine Logik benötigt, die über die korrekte Abfolge der verschiedenen Zeichen nachdenken muss. Macht Sinn.

    Danke für den guten Link!

  • Es gab früher einige Originalspiele, wo Version von allen 3 auf einer Kassette waren, also C64, C16 und VC20 meist mit +8 oder 16 KB.


    Da wurden dann oft C16 und VC20 ziemlich zeitgleich programmiert. Da ist mit Softwaresprites doch schon einiges möglich am VC20. Größter Nachteil eben das Bildformat und teilweise nur 8 oder 16 Farben.

  • Hektik nutzt keine Bitmap-Grafik: Es sind deutlich Multicolor-Pixel (Leitern, Monster, Spielfigur) und Hires-Pixel (die Mauersteine) zu erkennen - das geht mit Grafik und ohne Sprites nicht, sondern nur mit Zeichensatzgrafik.


    Für das eigentlich Spielfeld werden nur 6 Zeichen benötigt (2x Rahmen oben/unten, 2x Mauerwerk, 2x Leiter) - der Rest ist verfügbar, um die "beweglichen" Elemente zu animieren.


    Die Monster sind 2x2 Zeichen groß. Sie sollen sich ja pixelweise bewegen können, also brauchen wir 3x3 Zeichen. Horizontale Bewegung (in Zwei-Pixel-Schritten, wegen Mutlicolor) vor schwarzem Hintergrund sind also 3x3x3 Zeichen. Für das Vorbeilaufen an einer Leiter - das geht, da wir ja Multicolor-Zeichen nutzen und die Leiter nur eine Farbe braucht - sind es dann noch mal so viele Zeichen, für vertikale Bewegung auf einer Leiter auch. Und dann noch mal so viele für vertikale Bewegung (=Absturz) vor schwarzem Hintergrund. Also 36 Zeichen - das ganze dann noch mal zwei, da die Monster ja animiert sind (Augen links/rechts, Fühler bewegen sich).


    Um die Monster weich über das ganze Bild zu bewegen muss ich also ermitteln, welche der 24 verschiedenen Darstellungen für das Monster gerade benötigt wird und diese 3x3 Zeichen an die richtige Stelle im Bildschirm schreiben. Und u.U. - falls wir uns seit der letzten "Zeichnung" des Monsters eine komplette Zeile/Spalte weiter bewegt haben - die drei Zeichen, die nicht mehr vom Monster "besetzt" sind, wieder mit den normalen Spielfeldzeichen beschreiben.


    Im ungünstigsten Fall (Spieler und drei Monster haben sich alle um ein komplettes Zeichen bewegt) müssen also 48 Bildschirmpositionen neu beschrieben werden, dazu noch ein bisschen Logik drum herum. Das ist machbar, wie man sieht.