Life

is

slow

Dokumentation

Maturaarbeit

14.03.2023 - 08.10.2023


Lucius Amberg

MacOS

Betreuende Lehrperson: Samuel Aggeler

Koreferentin: Melis Ipek

Schule: Gymnasium Leonhard, Basel

Konsum ohne Wert

Unsere Generation ist eine Generation der Beschleunigung, des Kontrasts und des Konsums.


Doch beim Betrachten einer kleinen Pflanze kommt mir eine Idee:


Wäre es möglich, die entschleunigende Wirkung der Natur in einem digitalen Kunstwerk zu reproduzieren? Kann ich mich der Tendenz zu passivem, profitorientiertem Konsum in den heutigen digitalen Medien entgegenstellen und in eine andere Richtung gehen?

Chronologisch geordnete Dokumentation:

Konzept:

14. März 2023

Nach einer dritten Überarbeitung und einigen Unterredungen mit meiner Betreuungslehrperson, Samuel Aggeler, stelle ich mein Konzept fertig.


Zusammengefasst: Ich will ein animiertes Kunstwerk mit dem Thema „Leben“ kreieren, dass sich dem immer schneller und belohnungsorientierter werdenden Konsumverhalten von digitalen Medien entgegensetzt. Das will ich bewerkstelligen, indem ich eine kleine Pflanze in den Mittelpunkt des Werks stelle und eine ruhige, kraftvolle Atmosphäre und Ästhetik mit selbst komponierter Musik und dezenten Texten kombiniere.

Aus der Sicht eines unsichtbaren Betrachters wird eine Pflanze mit dem Namen «Life» beobachtet, die mehr oder weniger in Echtzeit die Stufen ihres Lebens durchläuft. Auch um sie herum schreitet das Leben stets voran – zum Beispiel fliegt ein Schmetterling durch das Bild oder ein Blatt fällt auf den Boden, während die Sonne hinter dem Horizont erscheint und die Bienen erwachen. Mein Ziel ist es, eine andere Herangehensweise zum Konsum digitaler Kunst zu erforschen.


In einer Zeit von schnellem, belohnungsorientiertem Konsumverhalten über Medien wie TikTok, YouTube oder Instagram soll mein ebenfalls im digitalen Raum erscheinendes Werk als Rebellion wirken.


Dieses Kunstwerk soll die Aufmerksamkeitsspanne eines willigen Beobachters herausfordern und verlängern, zugleich jedoch auch Ruhe und Kraft vermitteln. Schlussendlich wäre die Idee, Unterstützung bei der bewussten Entschleunigung des jeweiligen Konsumverhaltens zu bieten.


Das funktioniert nur dann, wenn die Betrachtung auch über eine grössere Zeitspanne erfolgen kann. Deshalb wähle ich auch das digitale, portable Medium. Unterbrechungen sind nicht nur toleriert, sondern sogar willkommen.


Es wäre schön, wenn das Öffnen dieser entschleunigten Applikation an Stelle anderer, meiner Meinung nach, eher schädlichen Apps erfolgen würde. Viele Computerspiele bestrafen es, wenn man über längere Zeit nicht anwesend ist. Mein Programm ist kein Computerspiel: Es soll voll und ganz zwangs- und stressfrei sein. Meine Idee ist zwar, den ungefähren Tag-Nacht Zyklus des Betrachters im Kunstwerk darzustellen, jedoch soll dieser sich keine Sorgen machen müssen, dass die Pflanze stirbt oder etwas anderes Negatives durch seine Abwesenheit passieren könnte.


Trotzdem muss es einen gewissen Anreiz geben, das Werk zu betrachten.

Den will ich einerseits durch ein ästhetisches Gesamtprodukt erzeugen, andererseits durch bestimmte interaktive Elemente und kleine Aufgaben.


Ein Benutzer soll keinen imminenten Einfluss auf das Kunstwerk haben, dessen Verlauf jedoch leicht beeinflussen können. Vor allem soll das Gefühl vermittelt werden, ein wichtiger und geschätzter Teil dieser kleinen, digitalen Biosphäre zu sein.


Es soll versucht werden, das Konsumverhalten eines veränderungsgewillten Betrachters auf subtile Art und Weise zu entschleunigen.

Experimente:

29. März 2023

Ich beschliesse, einige Tests auszuführen, bevor ich mit dem Projekt beginne.

Als Erstes erstelle ich eine simple Datei in meiner Scripting-Umgebung Unity und experimentiere mit einer Mischung aus 3D- und 2D-Elementen. Diese Mischung funktioniert einigermassen, jedoch kommt sie mir zurzeit wie eine unnötige Abkürzung vor, welche das Gesamtbild eher schlechter als besser wirken lassen würde.

Nach einigen Stunden, in denen ich verschiedene Elemente ausprobiere, erstelle ich ein zweites Projekt, diesmal als 2D URP (Universal Render Pipeline), damit ich mit Licht und Schatten experimentieren kann. Ich lasse die 3D-Elemente vorerst aussen vor und fokussiere mich auf ein kohärentes Licht.


Dies ist mehr Arbeit, als man denken würde, und sieht in Form eines Videos so aus:

Schliesslich kreiere ich ein Script für das kleine Quadrat, welches es mir erlaubt, dieses in der «Welt» hin und her zu bewegen und visualisiere die Sonne:

+

=

Experimente mit Shadern:

29. März 2023

Dank eines Tutorials von "Brackeys" gelingt es mir, einen simplen Shader aufzusetzen und mithilfe eines Gaussischen Blurs und einer Step Node ein Material zu erstellen, welches ein schönes, handgezeichnet wirkendes Fade-In der Box ermöglicht. Ich weiss nicht, ob ich diesen Effekt im finalen Projekt je benutzen werde, aber der Prozess war super, um zu lernen, mit Unitys Shadern und Materials umzugehen. In einem Video sieht das Produkt so aus:

Im roten Kreis ist der Float zu sehen, mit dem ich die Phase / Stärke des Fade-Ins kontrolliere.

29.04 / 09.05

Erste Kunst

01

Seedling at Night / 29.04.2023

Mit nur meinem Grafiktablett und einem selbsterstellten groben Pinsel zeichne ich in Adobe Photoshop eine erste Skizze. Meine derzeitige Vision ist es, den Zoom in der App anfangs sehr nah auf der kleinen Pflanze zu haben, den Blickwinkel dann mit dem Wachstum aber immer weiter zu erweitern. So kann ein Betrachter mit der Zeit immer mehr und mehr von der Welt erblicken und "wächst" sozusagen mit.

Skizzen-Sprites / 09.05.2023

02

Damit ich einen besseren Überblick habe und den Kunststil ausarbeiten kann (und, um ehrlich zu sein, ich mehr Motivation beim Programmieren habe), zeichne ich einige Platzhalter-Objekte in Photoshop. Diesen werde ich dann mit Code Aufgaben zuweisen und ihre „Sprites“ (die Bilder in der App), wenn die Zeit kommt, durch finale, gründlich ausgearbeitete Kunstwerke ersetzen.

Doch auch in diese Platzhalter-Bilder stecke ich einiges an Arbeit, da sie mich wahrscheinlich noch für eine Weile begleiten werden.

Projektstart & Coding:

11. Mai 2023

Es ist Zeit, mit der richtigen Arbeit anzufangen. Ich öffne ein neues, leeres Unity-Projekt. Hier werde ich die gesamte App von Grund auf aufbauen.

Ich importiere alle meine Platzhalter-Sprites und platziere sie im Projekt. Dann konfiguriere ich die Kamera und füge ein Global Light 2D Script hinzu. Ich setze die Lichtfarbe auf Dunkelblau und dessen Intensität sehr niedrig – das wird das Basislicht des „Universums“ sein. Mir ist es sehr wichtig, während des gesamten Projekts Ordnung zu halten, darum erstelle ich für jede Assetgruppe einen eigenen Ordner. Meine Platzhalter-Sprites sind zum Beispiel unter Assets → Sprites → Placeholders zu finden. Des Weiteren lege ich für jede Gruppe (Vordergrund, Hintergrund, Himmel, usw.) einen Sorting-Layer fest, so dass alles säuberlich getrennt & organisiert ist.

Dann erstelle ich ein Spotlight 2D Script für die „Sonne“. Dessen Lichtfarbe setze ich auf Hellbeige. Nun wird das Bild von einer beweglichen Lichtquelle erleuchtet. Unity hat ein sehr simples System, um dieses „Licht“ zu simulieren, doch nach einer Weile schaffe ich es, ein akzeptables Resultat zu erreichen. In Kombination mit dem dunklen Global Light 2D lässt sich so ein nahtloser Übergang zwischen Tag und Nacht schaffen.

Mithilfe des gratis Assets „Light Rays 2D“ von Andrii Sudyn erstelle ich eine simple Lichtstrahlen-Textur, die für etwas mehr Atmosphäre sorgt und das Werk magischer aussehen lässt. Diese haben jedoch noch einiges an Überarbeitung nötig, darum inaktiviere ich sie vorerst.

Animation & Coding:

11. Mai 2023

Ich erstelle einen Pivot für die Sonne – also erstelle ich ein Parent-Objekt in Unity und lege die Sonne als ihr Child fest. Ein Child bewegt sich mit jeder Bewegung des Parents mit, also setze ich den Parent-Pivot auf die Koordinaten (0|0) zentrieren und die Sonne 5u über diesem Pivot, auf (0|5). Nun kreiere ich mithilfe von Keyframes in Unitys eingebautem Animationssystem eine Rotation von 0° zu 360° und voilà – die Sonne geht auf und wieder unter. Ich werde in der Zukunft die provisorische Animation wieder entfernen und sie durch einen Script ersetzen, der die Rotation des Pivots mit der Tageszeit synchronisiert.

Nun erstelle ich eine Sonnenuntergang- und Sonnenaufgang-Animation für die Sonne, indem ich die Variablen für Falloff, Intensity & Colour des Spotlight Scripts auf dieser manipuliere. Das hat den Vorteil, dass die gesamte Beleuchtung des Bilds verändert wird und somit ein sehr realistisch wirkender Übergang möglich ist.

Zusätzlich schreibe ich ein Script, der die X & Y Koordinaten der Sonne nutzt, um den Beginn dieser Animationen durch Parameter zu starten.

In einem sehr schnellen Zeitraffer sieht das Resultat dann so aus:

Realistische Schatten: 13. Mai 2023

In meinen vorigen Experimenten habe ich schon mit Schatten und Licht experimentiert, jedoch habe ich es nur geschafft, sehr simple geometrische Schatten zu erzeugen, die sich für eine unendliche Distanz aus dem Bild herausstreckten. In einem Kunstwerk sind Schatten und Licht jedoch ungemein wichtig, darum verbringe ich einige Stunden damit, eine Lösung zu finden. Schlussendlich lade ich das Asset Modern2D von Leafousio herunter, welches es mir theoretisch ermöglicht, Schatten zu generieren. Jedoch habe ich erst mit einigen Bugs zu kämpfen und muss einiges selbst erstellen und konfigurieren, bis ich es schaffe, einen schönen Schlagschatten für die Pflanze zu erstellen.

Mein System zur Schattengenerierung funktioniert, indem eine Kopie des ursprünglichen GameObjects erstellt wird, dieses gespiegelt wird und ein Material hinzugefügt wird, dessen Farbe, Reflektivität, Transparenz, Länge, Schmälerung, Falloff und Winkel in einem Editor-Script verändert werden kann. Diese Kopie wird dann wieder an einem Pivot (Ankerpunkt) festgemacht und lässt sich je nach Lichteinfall um das Originalobjekt drehen, wodurch die Illusion eines Schlagschattens erzeugt wird.

Das Ergebnis sieht dann so aus:

Im Programmieren ist es oft so, dass die subtilsten Sachen am meisten Arbeit benötigen. So brauche ich zum Beispiel um die 2 Stunden, um den Schatten, der zuvor Nachts auch im Himmel sichtbar war, nur auf den Boden einzuschränken. Die meisten Menschen werden das wahrscheinlich nicht bemerken, doch ich glaube, dass sowas für das Gesamterlebnis sehr wichtig ist. Ausserdem werde ich die entwickelte Methode nun auch für weitere Objekte mit Schlagschatten benutzen können. Sie funktioniert, indem ich den Boden als Parent-Objekt festlege, dann eine Sprite-Mask mit der eigenen Textur erstelle und die Sprite-Mask-Interaction auf Visible Inside Mask setze. Die Schritte an sich sind ziemlich schnell, doch bis ich diese Methode herausgefunden habe, vergeht einiges an Zeit. Mit dem Endresultat bin ich sehr zufrieden:

Kreation des Monds:

14. Mai 2023

Ich male einen Platzhalter-Mond in Photoshop:

Auf diesem wende ich in Unity die gleichen Techniken wie bei der Sonne an und erstelle einen eigenen Mond-Script. Ich kreiere eine weitere Animation und stelle ihn der Sonne direkt gegenüber. Das sieht dann so aus:

Aufnehmen des Hintergrundsounds

17. - 19. Juni 2023

Ich fahre mit zwei Freundinnen zu einer abgelegenen Stelle am Altrhein, in der Nähe von Frankreich. Wir nehmen genug Verpflegung und Wasser für zwei Tage mit und schlagen dort unser Lager auf. Am Ende vom Tag übernachten wir auf einer Matratze in einem VW-Bus.

Während wir am Rhein ein Lagerfeuer machen, stelle ich meinen mitgebrachten Computer und mein Mikrofon unter den Bus und erstelle eine mehr als fünfstündige Aufnahme der Abendgeräusche in der Natur. Eigentlich hatte ich vorgehabt, durch den ganzen Nachmittag, Nacht und Morgen aufzunehmen, doch da für die Nacht Regen vorhergesagt ist, muss ich meine Ausrüstung vor dem Schlafengehen (circa um zwei Uhr nachts) mit ins Auto nehmen. Das ist schlussendlich auch gut so, da einige Stunden später ein gewaltiger Wolkenbruch über unseren Köpfen niedergeht.

Hier sind einige Ausschnitte der Aufnahme, die später Teil des Soundtracks von meinem Kunstwerk werden wird:

Später Nachmittag:

Sound Wave

Abenddämmerung:

Sound Wave

Tief in der Nacht:

Sound Wave

Ich werde diese später mit GarageBand bearbeiten, einen musikalischen Soundtrack erstellen und das Hintergrundrauschen entfernen.

Ästhetik und Collider

21. Juni 2023

Ich arbeite einige Zeit an der generellen Ästhetik des Kunstwerks und kreiere ein Global Volume, also ein Post-Processing Programm, das auf der «Kamera» läuft. Hier erstelle ich einen Leinwand-Effekt, füge einen Film-Grain hinzu und arbeite an Licht, Schatten und Farbbalance. Durch «Bloom» lässt sich ein gewisses magisches Leuchten einbringen und durch eine Veränderung der «Gain» Werte erhöhe ich die Klarheit bei Nacht. Schliesslich arbeite ich noch einige Zeit an der Illumination des Mondes, um eine bessere Sicht bei gleichbleibendem nächtlichen Gefühl zu ermöglichen. Als Letztes füge ich einen Motion-Blur, also eine Bewegungsunschärfe hinzu, um das ganze etwas weicher zu machen.

Ich verkleinere das Sichtfeld, da in der ersten Phase nur ein sehr kleiner Ausschnitt des Bildes sichtbar sein soll. Das Ergebnis sieht dann so aus:

Dann verbringe ich mehrere Stunden damit, eine Weise auszutüfteln, den Collider, also sozusagen eine Form / Linie, die testet, ob ein Objekt gerade etwas berührt, jede Sekunde zu updaten. Ich muss das machen, da meine Pflanze ständig ihren Sprite, also ihre Form ändern wird, und es nötig ist, dass die Kollisionen trotzdem richtig erfasst werden. Ich kann jedoch nicht jeden Frame (also 60 bis 120 Mal pro Sekunde) diese Funktion aufrufen, da die Veränderung des Colliders sehr arbeitsintensiv für den Computer ist und das Spiel stark verlangsamen würde. Mithilfe von Kommentaren auf StackOverflow gelingt es mir, dieses Script zusammenzubasteln:

Ich bin extrem glücklich als es dann endlich funktioniert. Zurzeit hat diese Funktion zwar noch keinen Einfluss auf die Szene, aber in der Zukunft wird sie extrem nützlich sein. Hier teste ich mein Script aus, indem ich den Sprite der Pflanze mit dem Sprite für den Mond austausche. Da die Funktion nur jede Sekunde aufgerufen wird, gibt es ein leichtes Delay. Die dünnen grünen Linien repräsentieren den Collider und werden im Kunstwerk nicht sichtbar sein.

Startszene

22. Juni 2023

Ich habe die Idee, das Kunstwerk mit einem kleinen, magischen Samen der an eine Pusteblume erinnert einzuführen, also erstelle ich einen Platzhalter-Sprite in Photoshop und importiere ihn. Dann verbringe ich gut 3–4 Stunden damit, mehrere Scripts zu schreiben, um bei erstmaligem Öffnen der App eine kleine Szene anzuzeigen und die „Steuerung“ des Samens zu ermöglichen.

Zuerst erstelle ich ein globales Script namens publicVariables, das alle vorhandenen Licht-Scripts ausschaltet und nur das Licht-Script des kleinen Samens aktiv lässt.

Daraufhin füge ich einen Rigidbody2D (ein eingebautes, Physik simulierendes Script von Unity) hinzu und schreibe das folgende Script, das es mir ermöglicht, bei Tippen den Samen wie durch einen Windstoss zu bewegen.

Ich will, dass die „Kamera“ dem Samen von Anfang an folgt, darum muss ich auch noch dieses Script für sie schreiben:

Schlussendlich füge ich noch einen UIText hinzu, der „Feel free to touch this painting“ aussagt. Dieser soll aussagen, dass es sich hier um ein Kunstwerk oder Gemälde handelt und nicht um ein Handyspiel sowie den Benutzer auffordern, die Screen zu berühren. Für diesen muss ich ein Script und einen Animator erstellen, um weiche Fade-Ins und Fade-Outs zu ermöglichen.

Und die erste Version der Startszene ist fertig! Hier der jetzige Stand:

Übergang

23. Juni 2023

Daraufhin arbeite ich noch eine Weile an einem glatten Übergang zwischen Start- und Hauptszene und setze durch PlayerPrefs, also festgelegte Zahlen, die im lokalen Speicher gespeichert werden, fest, dass die anfängliche Startszene nur bei erstmaligem Öffnen der App erscheinen sollte. Weiterhin wechsle ich die Mechanik für den Tag-Nacht-Zyklus des Mondes und der Sonne zu einer scriptbasierten Methode an Stelle des vorherigen, mit Keyframes animiertem Loops. Das wird mir ermöglichen, in Zukunft die Zeiten im Werk durch reelle Tageszeiten bestimmen zu lassen. Ausserdem erlaubt es mir, von der schwarzen Introduktions-Szene nahtlos in das Kunstwerk überzugehen.

Hier ist das Ergebnis:

Tag- und Nachtzyklus

25. - 29. Juni 2023

Mit einem cleveren Script, das die Tageszeiten in Quaternion-Rotationen umwandelt, schaffe ich es, den Pivot, also den Drehpunkt von Sonne und Mond genau auf die dementsprechende Uhrzeit auszurichten. Das Script ist verhältnismässig simpel, das heisst, um 12:00 Uhr Mittags steht die Sonne im Zenit, zwischen 18:00 und 20:00 Uhr geht sie unter und zwischen 6:00 und 8:00 Uhr wieder auf. Um 00:00 steht dann der Mond im Zenit und erfüllt die Aufgabe der Lichtquelle.

Zu diesem Zyklus gehört natürlich noch viel mehr als jene Scripte. Das dementsprechende Resultat werde ich weiter unten kurz aufzeigen.

Animation

18. - 20. Juli 2023

Den Grossteil der Sommerferien schreibe ich am theoretischen Teil meiner Maturaarbeit, doch in der Woche, in der ich in Basel bin, beschliesse ich, mit der finalen Kunst zu beginnen und die Platzhalter zu ersetzen. Ich beginne mit der Startszene. In dem kostenlosen Animationsprogramm OpenToonz erstelle ich eine kurze Idle-Animation (die "Basisbewegung") und eine Jump-Animation, bei der der kleine Samen "aufwärts springt". Bei dessen Design bin ich definitiv inspiriert vom Aussehen des Schirmfliegers einer Pusteblume, will jedoch auch meine eigenen, übernatürlichen Elemente mit einbringen. So kann sich der Samen zusätzlich zu der Kraft des Windes auch mit seiner eigenen Bewegung fortbewegen.

Hier sieht man mein Zeichentablet und mich. Ich bin dabei, an einem Frame der Animation zu arbeiten. Zuerst hatte ich eine Skizze gemacht, die als orange Zeichnung im Hintergrund zu sehen ist. Die leicht transparenten, beigen Bilder werden OnionSkin genannt und sind meine Zeichnungen aus bis zu 3 Frames vorher. Diese Technik ermöglicht mir, zu sehen, was der letzte Standpunkt der Animation war und von diesem aus aufzubauen. Diese spezifische Animation besteht aus 21 finalen Frames.

Hier ist die fertige Animation, samt Skizze, in OpenToonz zu sehen.

Und, zu guter Letzt, alles flüssig im Kunstwerk eingebaut.

Kunst

23. - 25. Juli 2023

Auf meinem Tablet male ich mit einem virtuellen Pinsel die Hügel, welche die Fundamente des interaktiven Kunstwerks bilden sollen. Hier ist ein Screenshot des Prozesses.

Die Highlights, also die Stellen, die am häufigsten im Licht liegen werden, male ich auf einer separaten Ebene, sodass ich diese exportieren und in Unity separat und interaktiv verändern kann. Die Highlights in Rot markiert:

Ich verbringe eine durchaus lange Zeit damit, den Hintergrund und die Fundamenthügel zu designen, da diese im Kunstwerk ständig zu sehen sein werden. Das finale Hintergrundwerk sieht dann so aus:

Zum Teil war ich hier inspiriert von dem Computerspiel Samorost von Amanita Design, 24. März 2016:

Kunst

28. Juli - 13. August

Ich verbringe viele schwer dokumentierbare Stunden mit dem Polieren, Einbinden und Programmieren der einzelnen künstlerischen Elemente.

Revolutionär ist vor allem die Methode, welche ich für die hellen Stellen des Kunstwerks benutze. Statt ein herkömmliches virtuelles Licht zu programmieren, das alle Stellen mehr oder weniger gleichförmig beleuchtet, male ich für jedes Element einen eigenen Beleuchtungs-Sprite. Diesen setze ich in einen Sorting-Layer, der von einer einzigen, isolierten Lichtquelle beleuchtet wird. So kommen die harten, nahezu gelben Highlights zustande. Besonders ist hier jedoch die Tatsache, dass diese Stellen nun reaktiv auf ihre Aussenwelt programmiert werden können. So ist zum Beispiel bei Sonnenuntergang nur eine Seite des Hügels hell erleuchtet - und die Farbe der Highlights lässt sich auch ändern.


In Kombination mit der zuvor programmierten realen Uhrzeit trägt dies viel zur Immersion des Nutzers bei. Im folgenden Video modifiziere ich direkt die Systemzeit meines Computers und lasse meinen Code darauf reagieren. Solche Zeitsprünge würden im finalen Werk nicht vorkommen:

Hier eine kurze Galerie der verschiedenen Tageszeiten:

Musikkomposition

19. Juli - 13. August

Während fast den gesamten Sommerferien arbeite ich an einem vollständig selbst komponierten Musikstück, welches als Hintergrundmusik eingesetzt werden soll. Ich nehme alle Töne mit einer MIDI-Klaviertastatur auf und nutze als SFX die Vogelgeräusche, die ich zuvor während meiner Übernachtung am See aufgenommen hatte. Meine Betreuungslehrperson hatte mir empfohlen, das Mikrofonrauschen in Nachbearbeitung zu entfernen, jedoch befinde ich beim Ausprobieren eine Art „weisses Rauschen“ als sehr beruhigend und meditativ. Daraufhin recherchiere ich ein wenig und finde mehrere Quellen, die ungefähr diese Aussage unterstützen:

(hier: https://www.studysmarter.de):


"Das Geräusch reduziert bewiesenermaßen Stress, weil Lärm subjektiv weniger wahrgenommen wird. Daher wird dem Rauschen eine beruhigende Wirkung zugesprochen. Außerdem hilft das weiße Rauschen bei Tinnitus, schlechtem Schlaf und Konzentrationsproblemen."


Da ich diese Behauptung persönlich bestätigen kann, beschliesse ich, nicht weiter zu recherchieren, sondern das Rauschen in die Musik aufzunehmen.


Das Stück ist eine Mischung aus Klaviernoten & Akkorden, Bass und einem elektronischem Drumset. Ich nehme meine Inspiration vor allem von modernem Lo-Fi und klassischer Klaviermusik.


(Vgl.: Daylight [Lo-Fi Luke], It's Foggy Today [Evgeny Grinko])


Ich arbeite durchgängig mit dem kostenlos verfügbaren Programm GarageBand, in dem man einzelne Aufnahmen bearbeiten, verschieben und zusammenfügen kann.

Ich achte ganz besonders darauf, dass die Musik nicht zu aufdringlich oder spannend wird. Der Betrachter des Werks sollte möglichst weder genervt noch abgelenkt werden. Vielmehr sollen die Instrumente einen Nutzer sanft im Hintergrund begleiten und für Ruhe und Entspannung sorgen.


Nach etlichen Revisionen ist das Stück endlich fertig. Ursprünglich hatte ich im Kopf, je einen Soundtrack für Nachts, Morgens, Mittags und Abends zu komponieren. Der folgende Track war anfangs nur für den Mittag gedacht, doch da die Zeit immer knapper wird, beschliesse ich, die restlichen Musikstücke vorerst auf „nicht dringend“ zu schieben und das 16 Minuten lange Werk für die gesamte Applikation im Loop zu benutzen:


Sound Wave

Adaptive Highlights

14. August

Die selbst gemalten, adaptiven Highlights können ohne Probleme für statische Elemente wie Hügel und Berge genutzt werden. Für bewegliche Elemente, die ihren Sprite je nach Wachstumsphase oder Animation ändern, wird jedoch eine andere Methode benötigt. Also schreibe ich ein Script, welches eine Sektion (unten in Rot markiert) erstellt, die von beweglichen „Lichtquellen“ verändert werden kann.

In einem Video sieht das so aus:

Musikkomposition

14. - 15. August

Ich entscheide mich, doch für jede Tageszeit einen anderen Soundtrack zu machen – Immersion des Benutzers ist einer der Grundpfeiler meiner Arbeit. Jedoch kreiere ich keine komplett neue Komposition, sondern verändere mein Werk „Noon“ der Tageszeit entsprechend, indem ich Instrumente, Melodien und Master-Effekte je nach Gefühl anpasse.


So entstehen die vier Werke „Dawn“, „Noon“, „Nightfall“ und „Midnight“:

Life is Slow: Dawn

Life is Slow: Noon

Life is Slow: Nightfall

Life is Slow: Midnight

Zoom & Text

19. August

In der Zukunft soll durch jede gelöste kleine „Aufgabe“ ein wenig aus dem Bild herausgezoomt werden. Ich programmiere ein Script, das die den Aufgaben zugeordnete Nummer mit dem Zoom korrelieren lässt. Dabei fällt mir auf, dass das auf einem Smartphone zwar wunderbar funktioniert, auf einem Tablet aber einen unschönen Rand hinterlässt. Darum erweitere ich die Hügel so lange nach unten, bis selbst beim kleinsten Zoom auf dem grössten Tablet keine Abgrenzung zu sehen ist.

Wie einem hier vielleicht schon aufgefallen ist, programmiere ich zuvor einen „Begrüssungstext“. Dieser ist an die jeweilige Tageszeit angepasst und von mir geschrieben. Das funktioniert, indem ich eine sogenannte List für jede Tageszeit erstelle und aus dieser beim Start des Spiels zufällig einen Text auswähle und anzeige.

Mein Ziel ist es, schlussendlich circa fünfzig verschiedene „Nachrichten“ pro Tageszeit geschrieben zu haben, um mein Werk möglichst menschlich, abwechslungsreich und der psychischen Gesundheit zuträglich zu gestalten.

Kunst & mehr Kunst

1.-25. September

Ich verbringe fast den gesamten September damit, die Illustrationen in meinem Projekt zu finalisieren oder erst zu erstellen. Etliche verschiedene Wachstumsstufen muss ich von Hand malen, nicht nur für den Baum im Mittelpunkt des Werkes, sondern auch für jede kleine, wachsende Pflanze. Ich male Schmetterlinge, Bienen, Gräser, Blumen und Himmelskörper, überarbeite alles noch einmal und stimme Licht und Schatten neu ab. Durch die Illustrationen nimmt die Programmierung endlich mehr Gestalt an, gewinnt an Ästhetik und Sinn. Es folgt ein Screenshot vom 19. September:

Hier sind alle Wachstumsstufen des Baumes aufgelistet:

Samenphase:

Baumphase:

Fauna & Animationen

18.-29. September

Ich animiere von Hand im Programm OpenToonz einen blauen Schmetterling und einige Bienen. Hierfür muss ich jeden Frame, also jedes Bild der Bewegung, einzeln malen. Es folgt die Skizze für den Schmetterling:

Die finale Version, die auch in der App zu finden ist:

Und die Animation, die ich für die Bienen kreiert habe:

Ich programmiere diese kleinen Tiere so, dass sie von Blume zu Blume fliegen und teilweise sinnlos in der Luft herumtanzen. Dazu erstelle ich zufällige Geschwindigkeitswechsel und korrelierende Anpassungen der Animation.

Kleine Pflanzen

18.-26. September

Insgesamt male ich von Hand achtundsechzig kleine Pflanzen, Blumen, Gräser und Büsche im Programm Adobe Photoshop© auf meinem Zeichentablet. Diese importiere ich und erstelle eine Windanimation. Die adaptiven Schatten von zuvor werden nun nützlich. In Kombination mit dem gemalten Baum sieht alles inzwischen ganz anders aus. Des Weiteren male ich eine finale Sonne und einen finalen Mond und Wolken / Nebel. Hier ist ein kurzes Video mit Tieren und Pflanzen, aufgenommen um 17:21:

Es folgt eine Kompilation einiger von mir gemalten Pflanzen:

Schlussendlich male ich noch sechsundvierzig kleine Blumen und Gräser, die im Gegensatz zu den grösseren Pflanzen nicht sechs bis sieben „Wachstumsphasen“ haben:

Ich male neun Felsen, um die Szenerie interessanter zu gestalten. Nachdem mir bei einer Unterredung mit meiner Maturaalehrperson gesagt wird, dass die Felsen aufgeklebt aussehen und sie mehr im Gras versinken sollten, nehme ich mir das zu Herzen und male für jeden Felsen eine Umrahmung aus Gräsern und kleinen Pflanzen. Die sechsundvierzig Blumen und Gräser sollen dann in der Applikation zufällig verteilt werden und wachsen.

Körperschatten

20.-26. September

In einer letzten Besprechung mit meiner Betreuungslehrperson wird mir gesagt, dass der Boden zwar gute dynamische Körperschatten aufzeigt, diese aber auf der Pflanze im Mittelpunkt des Bildes fehlen. Die dynamischen Körperschatten für den Boden habe ich durch eine Aufteilung von Highlights und Schatten erreicht – die gleiche Methode wende ich nun auch für die Pflanze an. Für jede Wachstumsstufe, bis hin zum uralten Baum, male ich Highlights auf einem separaten Layer, als würde der Baum komplett gleichmässig erleuchtet werden. Dann programmiere ich die Highlights so, dass diese an Stellen, die von der „Sonne erleuchtet“ werden, sichtbar sind und an den „Schattenstellen“ dunkel werden.

Hier male ich die gleichmässig erleuchteten Highlights:

Zusätzlich erstelle ich einen Additiven Shader, der die einzelnen Farbwerte in den übereinanderliegenden Pixeln addiert und somit für ein natürlicheres Licht sorgt. Im Programm sieht das dann so aus:

Um die Effektivität meiner Methode zu demonstrieren, bewege ich hier den Mond manuell hin und her und zeige die Reaktivität der Highlights:

Fliegende Samen

26.-30. September

Um mein Werk auch interaktiv zu gestalten, programmiere ich Scripts, die meine gemalten Pflanzen zum Schweben befähigen. So sinken nach einiger Zeit kleinen Samenkörner mit „Fallschirmen“ vom Himmel. Diese muss man dann sicher auf dem Boden pflanzen. Nach einiger Zeit verändern sie sich und werden zu grossen, sich im Wind wiegenden Pflanzen. Für die Erstellung der Samen, deren Steuerung und deren Wachstum schreibe ich etwa 600 Zeilen Script, die ich hier nicht alle zeigen kann. Alle Scripts sind jedoch hier zu finden. Ein kleiner Ausschnitt aus der Steuerung:

Zudem programmiere ich eine Funktion, welche kleine Blumen und Gräser pflanzt, wenn man nach dem Regen auf den Boden klickt. Alles in allem sieht das so aus:

Save / Load System

1.-7. Oktober

Ich verbringe um die achtzehn Stunden damit, ein System zu programmieren, um den Spielstand nach Verlassen der App zu speichern und bei Start wieder zu regenerieren. Das fühlt sich zwar nach einem ganz normalen Feature an, ist jedoch ein schwieriges Unterfangen, da ich jede noch so kleine Information (Position, Grösse, Wachstumsphase, Bild) separat als „String“, also als Textfile speichern und wieder korrekt abrufen muss. Dafür muss ich zum Beispiel jede Blume und jedes Gras automatisch mit einem Index versehen und dessen Information einzeln speichern. Hier ist das Script, das ich zum Laden der Daten der zwölf grossen Pflanzen geschrieben habe:

Das Safe / Load System besteht aus noch viel mehr Scripts und ich kämpfe mit Bugs und Errors bis es endlich funktioniert. Nun kann die App geschlossen und automatisch wieder auf den gleichen Stand gebracht werden, wie als der Benutzer zum letzten Mal präsent war.

Wolken & Regen

3.-8. Oktober

Ich male in Photoshop sechzehn verschiedene Wolken. Für diese schreibe ich ein Script, das dafür sorgt, dass sie sich um den Mausbutton / Finger gruppieren und eine andere Funktion ausführen, die einem starken Regen ähnelt. Hier habe ich etliche Probleme, vor allem mit der Kooperation zwischen dem Script für die Bewegung der Samen und der Interaktivität der Wolken. Hier ist ein kurzer Ausschnitt aus meinem Code:

Das Abregnen der Wolken wird die erste Phase meines „Aufgabensystems“ sein, dass ich später programmieren werde. Der Regen sieht so aus:

Aufgabenstellungen

1.-10. Oktober

Parallel erstelle ich ein System, welches den Benutzer langsam an mein Werk heranführt. Es wechseln sich kurze, von mir verfasste Texte, Gedichte, Gedanken und Zitate von Philosoph:innen mit kleinen Aufgabenstellungen ab. So wird man nach erstmaligen Öffnen aufgefordert, es regnen zu lassen. Daraufhin muss man die Wolken wegschieben und kann kleine Pflanzen wachsen lassen, die Bienen anlocken. Nun wird man gefragt, ob man auch die grösseren, schwebenden Samen pflanzen könnte. Deren ausgewachsene Version lockt wiederum den Schmetterling heran. So fühlt sich ein Nutzer auch während der „Entspannung“ so, als würde er:sie etwas Sinnvolles machen. Zudem sollen die Begrüssungen und Gedanken eine menschliche Seite in dieses natürliche Kunstwerk bringen.

Hier: Eine Begrüssung, gefolgt von “Life is yearning for rain.” Nach Abregnen wechselt der Text zu “Thank you for your water.”

Fehler und Errors

7.-11. Oktober

In den letzten Tagen vor der Abgabe feile ich an kleinen, übriggebliebenen Fehlern, wie zum Beispiel dem partiellen Rendern von Schlagschatten im Himmel, einer unerwarteten Zurücksetzung auf den Nullpunkt von fliegenden Samen oder einer Fixierung des Schmetterlings auf eine bestimmte Blume. Ich repariere noch unzählige andere Imperfektionen, auf die ich hier nicht alle eingehen kann – und dann bin ich fertig!


Ein stark gekürzter Spieldurchlauf kann in diesem Video beobachtet werden:

Veröffentlichung

10.-12. Oktober

Nach der vermeintlichen Fertigstellung meiner App renne ich während der Veröffentlichung auf den Stores noch in einige Probleme.


Bei der Erstellung meiner .apk für Android crasht meine App auf dem Testgerät jedes Mal unerwartet – und es wird kein Error angezeigt. Nach mehreren Stunden und einer Nacht darüber schlafen verringere ich die max size der Texturen und stelle alle Kompressoren von Normal auf Fast. Zudem ändere ich das Format auf RGB + 1-bit Alpha Compressed ETC2 4 bits und es funktioniert!


Nun wende ich mich an das xCode-Porten meiner App für Apple – und stosse prompt auf jenen Error:


Library\PackageCache\com.unity.collections@0.12.0-preview.13\Unity.Collections\NativeList.cs(731,24): error CS7036: There is no argument given that corresponds to the required formal parameter 'safety' of 'NativeArray<T>.ReadOnly.ReadOnly(void*, int, ref AtomicSafetyHandle)'


Er treibt mich an den Rand der Verzweiflung, da ich nur einen Artikel zu dem Thema finde und nur nicht funktionierende Lösungen vorgeschlagen werden. In einem letzten Versuch starte ich meinen Computer neu, wechsle den Editor von Silicon M1 zu einer Intel-Prozessor-optimierten Version und downloade die neuste Version von xCode aus dem App Store. Schlussendlich weiss ich nicht, welcher dieser Schritte dazu führt, doch – auch eine iOS-Version kann endlich erstellt werden! Das Verifizierungs-verfahren für den App Store ist jedoch langwierig und kompliziert. Glücklicherweise hatte ich schon eine Woche vor der Abgabe mit diesen Verfahren begonnen, doch allein die Veröffentlichung der App benötigt mehrere Stunden.


Letztendlich habe ich noch Probleme mit den Keystore-Dateien von Google Play, doch nach einigen Stunden habe ich auch dieses Problem gelöst.


Alle Versionen sind mit den folgenden Buttons verlinkt. Des Weiteren sind die volle MacOS- und Windows-Version auch auf dem der Maturaarbeit beigelegten USB-Stick zu finden. (Für Windows die .exe im Ordner öffnen)

MacOS

Vielen Dank für Ihre Aufmerksamkeit!

Mit freundlichen Grüssen

Lucius Amberg

Lucius Amberg

Black Right Arrow
linkedin
Black Instagram Logo

work.luciusamberg@icloud.com