Ich versuche, die Grundlagen der C64-Spieleentwicklung nach BASIC herauszufinden, und ich könnte einige Ratschläge zu etwas sehr Grundlegendem, aber Wichtigem gebrauchen: Was ist eigentlich alles auf dem Bildschirm und wie zeichnet man es?
Schauen Sie sich Katakis / Denaris an :
Es gibt mindestens 9 verschiedene Dinge auf dem Bildschirm:
- Die Score-Leiste mit verschiedenen Schriftarten
- Das Schiff selbst
- Ein am Schiff befestigter Satellit, abnehmbar
- Sekundärwaffengeschosse
- Primärwaffengeschosse
- Objekte bewegen (können feindliche Schiffe sein)
- Die Statusleiste mit einem Bild des Schiffes, der Anzahl der Leben und drei Abschnitten, die gefüllt werden können
- Die primäre Waffenladeleiste kann bis zum Ende gefüllt werden
- Ein scrollendes Sternenfeld im Hintergrund
- (nicht auf dem Bildschirm nummeriert) Feste Objekte wie Steine oder Metallwände, die Teil des Hintergrunds sind
Der C64 unterstützt nur 8 Sprites pro horizontaler Scanlinie. Ich glaube also nicht, dass alles in der Mitte des Bildschirms ein Sprite sein kann. Ich würde annehmen, dass alles, was eine Kollision erfordert, ein Sprite ist (da ich Hardware-Kollisionserkennung mit Sprites erhalten kann), aber selbst dann habe ich schnell das Limit von 8 Sprites erreicht. Außerdem können meine Waffen viel mehr als ein Projektil abfeuern - mein Schiff, der Satellit und 6 Kugeln wären bereits 8 Sprites hintereinander (siehe ca. 50 Sekunden im Video).
Welchen Grafikmodus würde ein solches Spiel verwenden? Das Programmierhandbuch listet den Bitmap-Modus auf, der den Bildschirmspeicher im Wesentlichen direkt ändert. Ist dies der Modus, in dem ich normalerweise arbeiten sollte? Wie würde ich alle Nicht-Sprite-Elemente zusammensetzen, um sie auf den Bildschirm zu bringen?
Viele Dinge in der Score- und Statusleiste sind statisch ("Area: 01" oder "Frame"), also werde ich sie wohl nur einmal füllen, wenn das Level beginnt. Dinge, die aktualisiert werden müssen - die Punktzahl, die Ladungsbalken unten - würden aktualisiert, indem der Bildschirmspeicher mit Schwarz gefüllt und dann in jedem Frame die neue Punktzahl gezeichnet wird?
Oder muss ich auf jedem Bild den gesamten Bildschirm zeichnen?
quelle
Ich habe vor einiger Zeit einen Artikel im deutschen C64 Magazine gelesen. Die Kugeln sind Charaktere, die als Sprites fungieren, wie bereits erwähnt. Schiff und Feinde sind Sprites.
Levels bestehen ebenfalls aus Charakteren, aber mit einer Wendung. Da die Levels so groß sind und der Speicher wertvoll ist, hat Trenz seine eigenen Tools geschrieben, um Charaktere in Modulen zu gruppieren.
So kann er größere Module verwenden und diese komponieren. Außerdem würde er bestimmte Patch-Module verwenden, um die Schnittmenge der Module schön und sauber zu machen.
Alles in allem handelt es sich um eine Art Komprimierung, bei der Ebenen als Bausteine anstelle von Zeichen für Zeichen beschrieben werden.
Vielleicht haben Sie auch bemerkt, dass in Katakis einige Ebenen Parallaxenhintergründe haben.
Dies geschieht, indem ein Muster zum Füllen des Hintergrunds erstellt wird, das hauptsächlich aus 2x2- oder 3x3-Zeichen besteht, und es gegen die Bildlaufrichtung animiert (Bitverschiebung). Wenn der Pegel beispielsweise 2 Pixel nach links rollt, wird das Hintergrundmuster 1 Pixel nach rechts gescrollt, daher scheint es langsamer gescrollt zu werden.
Ich hoffe, das hilft
Eine weitere Sache, die Sie tatsächlich sehen können, sind die einzelnen Module und dergleichen hier https://archive.org/details/64er_1989_10/page/n27. Scrollen Sie zu Seite 24
quelle