Wie man einen Animationsfilm in 8 kB macht
- Im November 2022 begann die Herausforderung, eine Echtzeit-Animation innerhalb von 8 Kilobyte zu erstellen.
- Das Ziel war, hochwertige Grafik, Animation, Regie, Kameraführung und Musik einzubeziehen.
- Im April 2023 wurde nach mehreren Monaten Arbeit „The Sheep and the Flower“ fertiggestellt und veröffentlicht.
Überblick
- Das Ergebnis ist eine Windows-Executable, bei der alle visuellen Elemente mit GLSL-Shadern erzeugt werden, die in Echtzeit auf der GPU berechnet werden.
- Das Rendering verwendet Raymarching, und die Shader wurden mit dem Tool Shader Minifier verkleinert.
- Die Musik wurde mit OpenMPT und dem 4klang-Synthesizer komponiert; die Instrumente sind prozedural beschrieben und die Notenlisten komprimiert.
- Der Code wurde in C++ geschrieben und verwendet das Leviathan-Framework, um Compiler-Flags und Initialisierung zu starten.
- Die finale Ausgabe wurde mit Crinkler komprimiert.
Der Beginn der Entstehung
- Das Projekt begann, nachdem ein ehemaliger Kollege ein vor langer Zeit erstelltes Video namens „Capoda“ geteilt hatte.
- Dieses Projekt könnte ein gutes Beispiel für Size Coding mit einer Geschichte sein, die zu 8 kB passt.
- Die neue Herausforderung wirkte reizvoll, weil sie sich vom bisherigen Ziel von 64 kB unterschied.
Eine Welt mit zwei Dreiecken rendern
- Es wird ein Rechteck gezeichnet, das den ganzen Bildschirm bedeckt (zwei Dreiecke), und ein in GLSL geschriebenes GPU-Programm (Shader) berechnet für jedes Pixel und jeden Frame die Farbe.
- Die Szene wird als Signed Distance Field dargestellt, und per Raymarching wird das Distanzfeld in Pixel umgewandelt.
Regie
- Es wurde darüber nachgedacht, wie sich mit begrenzten Figuren und Animationen eine Geschichte erzählen und Emotionen ausdrücken lassen.
- Unnötige Elemente für die Geschichte wurden weggelassen, stattdessen lag der Fokus auf Details, Inszenierung, Schnitt und der Synchronisierung mit der Musik.
- Kameraführung und Storytelling-Techniken wurden genutzt, um Emotionen zu vermitteln.
Entwicklungsprozess
- Der Quellcode enthält viele hartkodierte Konstanten, die jeweils durch zahlreiche Iterationen festgelegt wurden.
- Für eine schnelle Feedback-Schleife wurden Shader so genutzt, dass sie zur Laufzeit neu kompiliert werden konnten.
- Für Animation und Kamerasteuerung wurde ein nützlicher Player benötigt.
Musik
- Musik passend zur Geschichte benötigt verschiedene Abschnitte und Übergänge zu bestimmten Zeitpunkten.
- Die Musik wurde mit dem 4klang-Synthesizer komponiert, und die Daten wurden komprimiert, um Platz zu sparen.
Animation & Synchronisierung
- Alles in der Demo wird pro Frame neu ausgewertet und besteht aus etwa 25 manuell erstellten Kameraeinstellungen.
- Für jede Einstellung wird beschrieben, wie sich die einzelnen Kameraparameter im Zeitverlauf verändern.
Texturen & Materialien
- Anders als bei traditionellen Renderern werden 3D-Texturen in Echtzeit berechnet und verwendet.
- Texturen wie Verkehrsschilder werden durch die Kombination mehrerer Funktionen erzeugt.
Augen
- Zu Beginn der Entwicklung wirkten die Augen leblos und unbewegt, obwohl sie als Werkzeug des Storytellings wichtig sind.
- Reflektiertes Licht in den Augen wurde hinzugefügt, um ihnen mehr Lebendigkeit zu verleihen.
Nachbearbeitung
- Für den letzten visuellen Feinschliff und um die Stimmung der Geschichte festzulegen, wurden Farbkorrektur, Gammakorrektur, Vignettierung, FXAA-Filter und Ähnliches verwendet.
Komprimierung
- Anstatt Daten zu speichern, wurde ein Ansatz gewählt, bei dem Daten per Code erzeugt werden.
- Mit dem Komprimierungstool Crinkler wurde die Executable selbstextrahierend gemacht.
Minimierung
- Um den Shader-Quellcode so klein wie möglich zu machen, wurde das Tool Shader Minifier verwendet.
- Neue Funktionen wurden zu Shader Minifier hinzugefügt, um Shader-Code weiter zu minimieren und zu komprimieren.
Der Krieg zwischen dem Schaf und der Blume
- Denkst du, der Krieg zwischen dem Schaf und der Blume sei unwichtig? Dieses in „Der kleine Prinz“ erwähnte Thema ist ein wichtiger Teil der Geschichte.
Fazit
- Solche Demos basieren auf fortgeschrittener Technik und bestehender Forschung, die für ihre Erstellung nötig sind.
- Es besteht die Hoffnung, dass die neuen Funktionen anderen helfen, noch bessere Demos zu bauen.
- Die 8-kB-Kategorie bietet mehr Möglichkeiten als 4 kB und soll hoffentlich populärer werden.
Meinung von GN⁺
- Dieses Projekt ist ein Beispiel dafür, wie technische Grenzen überwunden und mit Kreativität erstaunliche Ergebnisse erzielt werden können.
- Die in extrem begrenztem Raum von 8 kB fertiggestellte Animation zeigt die Verbindung von Programmierung, Algorithmus-Optimierung und künstlerischem Ausdruck.
- Die Entwicklung von Tools wie Shader Minifier und der Einsatz des Komprimierungstools Crinkler unterstreichen innovative Ansätze in Software Engineering und Datenkomprimierung.
1 Kommentare
Hacker-News-Kommentare
Meinung des Originalautors:
Erwähnung des Sloot Digital Coding System:
Meinung zu Demoscene-Videos:
Analyse der Demoscene-Technik:
Erinnerung an das Spiel .kkrieger:
Empfehlung zu Cosmos Laundromat:
Positive Reaktion auf den Film:
Lob für die Kreativität:
Erinnerung an Razor 1911:
Informationen zu Demoscene-Kategorien: