Also mich würde sehr interessieren we ihr damals die Grafiken für Robot, PC Bakterien usw. gemacht habt. Auch Karotte hatte ja sehr viele Grafiken.
Ich benutze für meinen Clone einen eigenen Bildeditor. Bei American Hero sind die ja sehr primitiv integriert und beim RPG-Maker sinds ja ganz normale PNGs.
Auch bei alten DOS-Spielen mit 256 Farben (Radix, Larry 5-6...) sind diese ja auch sehr aufwendig gestaltet. Gibt es da irgendelche Tricks?
Kannst du mehr darüber sagen? Würde mich freuen.
Grüße,
LordEverything
R: Grafiken...
Ich denke dass jeder, der halbwegs anspruchsvolle Spiele implementiert, sich seinen eigenen Shape-Editor schreiben muß. Die unterschiedlichen Anforderung an Bit-Tiefe, Farb-Palette, Animations-Folgen sind viel zu unterschiedlich, als daß man dies mit einem fertigen Produkt realisieren könnte.
Das gilt natürlich auch für unsere Spiele-Palette. Natürlich kann ich da einen kurzen Abriss geben:
- Robot
Die Basis-Engine von Robot entstand Mitte der 1980er. Da war Rechenleistung und insbesondere Speicher ein ziemlich teures Gut, und nicht jeder hatte seinerzeit überhaupt eine Festplatte oder ein Floppy-Laufwerk mit 720kB. Wenn man da viele Grafiken brauchte, kam man um Kacheln nicht herum, wenn es farbig sein sollte, war die einzige Wahl die 16-Farb-Modi der EGA-Karte. Ein Blick in die technischen Unterlagen dazu zeigt, daß diese Karte die Grafik nicht pixelweise, sondern in Farb-Ebenen à 8 Pixel verwaltet. Will man nicht umkodieren, orientiert man sich beim Speicher-Format genau daran und organisiert die Bitmaps ebenfalls in Ebenen. Definiert man, so wie wir, eine 0 als farblos und eine 1 als EXOR mit einer Farbe, kann man aus einer solchen Bitmap durch ODER-Verknüpfung aller Ebenen auch leicht eine Maske berechnen.
Tja, und um den Code für einen Loader zu sparen, ist das Speicher-Format für die Robot-Bitmaps auch eine Objekt-Datei, welche beim Linken einfach statisch mit in's Programm eingebunden wird. So etwas gab und gibt es natürlich nicht fertig.
- 256-Farb-VGA-Engine (PC-Bakterien, Nicolausi, Karotte)
Das schwierigste hierbei war eine vernünftige Farb-Palette zu definieren, mit welcher zur Laufzeit auch die Berechnung von Schatten und Licht möglich war. Da es kein Grafik-Format gab, welches so etwas ermöglicht, und man bereits im Editor die Möglichkeit haben muß, sein Werk optisch zu überprüfen, mußte hier natürlich auch wieder ein eigener Editor ran.
Der macht allerdings noch viel mehr, als nur Bitmaps editieren. Dazu muß man wissen, daß mit der Engine auch die Objekte Einzug in unsere Programme gefunden haben. Alles, was man im Spiel sieht, sind Objekte, welche eine genau definierte Schnittstelle und ein Aussehen haben. Die Funktionalität war korrekt kompilierte Objekt-Datei, die mit dem grafischen Editor mit den benötigten Bitmaps als Objekt gebunden wurde. Dazu kommt noch ein recht komplexes Animations-Modul, in welchem auf drei Ebenen Bitmaps im Zeitverlauf arrangiert werden konnten. Eine solche Animation war ebenfalls wieder Bestandteil des Objektes und wurde vom Programm im Ablauf gesteuert.
- High-Color-SVGA-Engine (FlipOut)
Prinzipiell ist diese Engine eine Weiterentwicklung der VGA-Engine, mit dem Unterschied, daß alle Grafiken mit hoher Auflösung und Bit-Tiefe definiert wurden und mindestens eine Auflösung von 640x480 verwendet wird. Den dazu notwendigen Speicher schafften wir durch einen eigenen DOS-Extender, der über XMS oder DPMI für die Grafik-Zugriffe komplett im 32-Bit-Protected-Mode lief.
Da es seinerzeit keinen einheitlichen Standard für das Ansprechen der notwendigen Video-Modi gab (VESA war gerade erst im Kommen), bringt die SVGA-Engine eine ganze Reihe an Grafik-Treibern und Erkennungs-Mechanismen mit. Um das alles von den Grafik-Routinen zu entkoppeln, wurde der gesamte Zugriff auf den Bildschirm virtualisiert und als linearer Frame-Buffer zur Verfügung gestellt. Das korrekte Mapping des physikalischen Puffer übernahm dann der passende Treiber über eine Exception. Die Engine läuft übrigens, wie auch Windows, in einem virtuellen Adressraum mit Auslagerungsdatei etc.
Der Editor selber hatte natürlich noch weitere nette Kniffe und Gimmicks eingebaut. Eines davon ist ein kompletter, skriptgesteuerter Ray-Tracer. Alle FlipOut-Grafiken entstammen dieser Renderer-Engine.
Eines muß man dabei natürlich immer beachten: Die Technik, die man einsetzt, ist fast egal, man braucht vor allem bei den niedrig aufgelösten Bitmaps ein gutes, grafisches Auge, um z.B. angenehme Farbverläufe realisieren zu können. Christian hat das (im Gegensatz zu mir, ähem) bis zur Perfektion drauf gehabt.
Tja, insgesamt können wir auf die ganzen Sachen schon ein wenig stolz sein... 😉
Mein Editor ist eigentlich primitiv. Mit dem Grafikormat bin ich zufrieden, aber die Palette wird nicht gespeichert. Ich hab da wirklich jedes Bit gespart. Sogar ein Header ist nicht zu finden.
Bei großen Grafiken (z.B meiner Schriftart in der nächsten Version) benutze ich einen Windows-Editor und konvertiere die Grafik in mein Format.
Nächste nervige Frage:😛
Wie habt ihr das mit der Schrift gemacht? Ihr habt ja eine kleine und eine große. Soweit ich weiß kann man diese nicht gleichzeitig einstellen, und die Große läuft garnicht bei dieser Aulösung. Oder irre ich mich?
Grüße,
LordEverything
Quote:
Wie habt ihr das mit der Schrift gemacht? Ihr habt ja eine kleine und eine große. Soweit ich weiß kann man diese nicht gleichzeitig einstellen, und die Große läuft garnicht bei dieser Aulösung.
Hmm, worauf beziehst Du das? Die Schriften, die innerhalb eines Spieles auftauchen, sind natürlich ebenfalls von uns selber gezeichnet. Bei Robot ist das ein Fixed-Pitch Font im Format 8x12, der für die fette Schrift zur Laufzeit breit gerechnet wird.
Achso! Es gibt ja so einen Textmodus mit 25x40 Zeichen. Da ähnelte die große Schrift sehr. Ihr habt also die für die Info-Boxen die Schrift nur vergrößert. Und ich hab meine Schrift so groß gepixelt *aua*.
Naja, wenn mir noch ein paar Fragen kommen zum Thema Grafik werde ich sie sicher weiter reinschreiben. (Mach dich auf was gefasst)
Bei Andreas' Antworten hat wieder gemerkt das es wahnsinnig schwer und kompliziert ist ein Spiel wie Robot zu programmieren. Und auch dafür solche tollen Grafiken zu pixeln sowie sich auch eine gute Story einfallen zu lassen, Christian. 😉
Für meinen Clone sind schon viele Storys in den Mülleimer gewandert. Entweder waren sie zu lang, zu unrealistisch oder die Logik fehlte.
Grüße,
LordEverything
R=Restore (Wiederherstellung)
Durch einen präzisen Angriff auf ezboard Mitte 2005 waren sämtliche Beiträge der Foren verloren gegangen. Durch Restore-Prozesse seitens ezboards konnte leider nur ein winziger Teil aller Beiträge gerettet werden. Das Robot-Forum hatte es auch schwer getroffen. Durch Google-Caches und Web.Archive.org konnten viele Beiträge wieder gefunden werden. Diese hier gehören dazu. Die Diskussion kann weitergeführt werden.