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?