Bernd das Brot – der ASCII-Film

Dieses Dokument beschäftigt sich mit der Entstehung und Bezugsquellen meines Films „Bernd, das Brot”, der vollständig mit ASCII-Art gedreht wurde. Das bedeutet, daß er keinerlei Grafik verwendet, sondern alle Bilder nur aus passend zusammengesetzen Zeichen einer Schriftart bestehen.

Inhaltsverzeichnis

Wie alles begann

Der ASCII-Bernd

Es war einmal, vor langer, langer Zeit, da trug sich im Lande de.alt.rec.ascii-art eine kleine Diskussion zwischen ziemlich zahlreichen Zeichenkünstlern zu. Und so geschah es auch, daß Philipp Schwartz das (Schwartz-)Brot postete, das schließlich zum Dreh des Films führen sollte. Doch das allein hätte nicht genügt. Es fehlte noch ein winzige Zutat. Eine Person, die die Hauptschuld tragen muß: Michael Wolf. Am 6. Mai des Jahres 2003 legte er eine Kopie des Schwartz-Brotes in einer Neuigkeitengruppe (Newsgroup) ab, die ich wenig später sah. Innerhalb von wenigen Stunden lief die erste Version des Brotfilms, aus immerhin vier Bildern bestehend, auf meinem Floppy-RAID.

Inzwischen sind die am Brotfilm beteiligten Rechner etwas moderner geworden. Der langsamste unter ihnen ist ein Pentium-1-Gerät, das mit etwa 100 MHz vor sich hinrechnet. Aber für Streaming braucht man nicht unbedingt fette Kisten. Aber das nur am Rande.

Player muß sein

Die erste Version in wenigen Stunden? Das scheint eine recht kurze Zeit zu sein, wird mancher meinen. Doch man irrt leicht, weiß man nicht um die Vorgeschichte. Springen wir einige Wochen in der Zeit zurück. Der Star-Wars-Film auf towel.blinkenlights.nl faszinierte mich schon lange. Und nachdem ich kurz darauf auf das Java-Applet zum Film stieß, kam ich an den „Film-Quellcode”. Das wundervoll einfache Prinzip der Bilder, die sich mit Wartezeiten abwechselten, war genial.

Kurz darauf hatte ich in Turbo Pascal flink einen Player (namens pvidasc) gebastelt, um mir Star-Wars lokal im Textmodus flüssig ansehen zu können. Ein kleines Shell-Script (vidasc) scheiterte zuvor, da es viel zu träge lief. Der Pascal-Player war aber nicht schlecht. Und somit hatte ich den allerersten nutzbaren Brot-Player pvidasc geschaffen, der kurz darauf die ersten vier Szenen abspielen konnte.

Nun, der Player lief, doch ich war unzufrieden. Schließlich wuchs der Brotfilm langsam, und ich wollte ihn auch anderen Leuten zeigen. Und sie sollten nicht immer erst den Player installieren müssen. Alles lag klar vor mir: Ich muß den Film -- wie bei der Star-Wars-Variante -- schlicht an den telnet-Port bringen. Das versuchte ich dann auch. Leider war der verwendete Free-Pascal-Compiler etwas zu gründlich, und hat beim Kompilieren die Sonderzeichen zur Film-Wiedergabe-Steuerung verschluckt. Daher rollte der Film nach oben weg, was recht irritierend wirkte. Nachdem die Probleme mit dem Compiler nicht zu lösen waren, mußte also ein neuer, besserer Player her.

So kam es, daß ich einen neuen Versuch startete, diesmal in C mit dem Namen cvidasc. Bei C wußte ich zumindest, daß eher selten Sonderzeichen geschluckt werden. Zunächst hatte ich noch einige Probleme, weil C Dinge tat, um die ich nicht gebeten hatte, und der Film daher zeitweilig etwas ulkig über den Schirm wabbelte. Nach einer Zeile zur Überredung — und Abschaltung der Ausgabepuffer — zeigte sich C kooperativ, der Player lief. Einige Verbesserungen später war eine recht zuverlässige Version in Benutzung.

Im Frühjahr 2006 begann ich mit dem Bau einer Perl-Variante. Es gab eine große Neuerung: Der Player wurde nun interaktiv. In einer frühen Version konnte man den Film bereits pausieren und die Abspiel-Geschwindigkeit ändern. Zudem wurden zunehmend mehr Terminal-Codes integriert, um unnötigen Bildneuaufbau minimieren und den Code insgesamt eleganter schreiben zu können.

Im Jahre 2007 wurde in Version 0.0.7 einfacher Menü-Support hinzugefügt. Falls zum Film eine entsprechende Menüdeklaration existiert, wird daraus automatisch eine Szenenauswahl eingeblendet. Dieses Funktion soll in den Versionen 0.1.* weiter ausgebaut werden.

Für die Zukunft ist geplant, daß der Player im Video auch vor- und zurückspulen und zu bestimmen Bildern in einzelnen Szenen springen kann. Die Abwärtskompatiblität zum Original-Brotfilm und zum Star-Wars-Film soll so gut wie möglich erhalten bleiben.

In Zukunft ist eine Internationalisierung des Players angedacht. Beim Brotfilm ist dies zwar auch geplant, allerdings mit erheblich mehr Aufwand zu bewältigen. Da mir gerade beim Film noch ein sinnvolles Konzept fehlt, beschränke ich mich vorerst auf den Player.

Der Film

Doch kommen wir zurück zum Brot. Auch der Film wuchs. Zunächst war es nur eine Datei. Doch nach dem Erreichen von über zehntausend Zeilen wurde es nach und nach etwas unübersichtlich, wenn man zu einem bestimmten Bild wollte. Zugegeben, über die Bild-Nummer ist die Zeilennummer berechenbar, aber hunderte von Bild-Nummern habe ich nicht im Kopf. So geschah es, daß ich den Film in einzelne Szenen zerlegte, die ich in je einer Datei ablegte. Dadurch wurde es viel einfacher, die passende Stelle zu finden, und außerdem konnte ich leichter Szenen auswechseln. Das ist bisher schon zweimal passiert:

Zu dem neuen Vorspann gibt es noch etwas zu sagen: Er hat, zusammen mit der Szene im Saal auf der Ehrenpreis, wohl am meisten Zeit gekostet. Und das lag primär daran, daß in der Szene so viele Animationen vorkommen. Bei jedem Bild mußte ich die Wellen nach links bewegen. Dazu kamen noch die Wolken, das Flugzeug und die Kranhaken. Und wenn man bei einem Bild eines dieser Elemente vergißt, geht es leichter und schneller, noch einmal ab der Stelle zu beginnen, wo es gerade noch stimmte, als den Fehler in den Folgebildern zu korrigieren. Das ist mir mehrfach passiert, und trotz der Tatsache, daß es schneller geht, heißt aber nicht, daß es schnell geht. Daher ist es eine der aufwendigsten Szenen bisher.

Doch auch ein weiterer Vorteil entstand: Mehrere Leute konnten gleichzeitig am Film basteln, so sie unterschiedliche Szenen ausgewählt hatten. Bisher sind nur zwei Szenen nicht von mir, und zwar die Original-Szene aus dem schwartzschen Posting, und dem „dara-a”-Titelschirm, die Thomas 'PointedEars' Lahn animiert hat.

Wie der Film aus Szenen entsteht, ist denkbar einfach: Man hängt sie in der richtigen Reihenfolge aneinander. Doch dazu muß die Szene erst einmal entstehen. Doch auch dies ist nur Fleißarbeit, kann man sagen. Es läuft etwa so ab: Zeichner öffnet den Editor, tippt wild auf der Tastatur herum, bis das Bild fertig ist, und schreibt eine Wartezeit darunter. Dann kopiert er das Bild, setzt es unter das aktuelle Bild, ändert, was geändert werden muß, paßt die Wartezeit an, und kopiert das Bild. Und das macht er, bis die Szene fertig ist. Klingt komisch, ist es aber nicht immer. Aber immerhin ist es aufwendig. Und zeitraubend.

Man erkennt leicht: Nur mit Handarbeit kommt man nicht weit. Bisher existiert kaum ein Viertel des fertigen Films, sofern ich das überhaupt abschätzen kann. Also braucht man Unterstützung. Und da ich nur Computer habe, die mir bei so etwas helfen wollen, schreibe ich eben ein Programm dafür. Das Programm habe ich bisher sogar einmal benutzt, und zwar für die Rauhfaser-Tapeten-Szene. Das Programm ließ die Leute laufen, die restliche Nacharbeit mußte ich selbst erledigen.

Doch das ist nicht alles: Ich habe vor einer Weile mit dem Schreiben eines Programms begonnen, daß tolle Überblend-Effekte bauen soll. Fertig geworden ist es bisher nicht. Aber es ist auch nicht so wichtig. Die Schnitte zwischen den Szenen kann man auch problemlos während des letzten Feinschliffs einbauen.

Selbst mit tollen Programmen gilt aber: Es bleibt trotzdem ein gewisser Aufwand. Man muß ja alle Figuren zeichnen. Doch da gibt es ein nützliches Bilder-Archiv, in dem Unmengen ASCII-Art-Zeichnungen gesammelt sind. Dort entnehme ich ganz gern ein paar Elemente, um sie in die Szenen einzufügen, oder lasse mich inspirieren. Und anschließend füge ich die ursprünglichen Künstler in den Abspann ein, so sie vermerkt waren. Das Material im Archiv erleichtert die Bastelei ungemein.

Nun, jetzt wißt ihr alles über ASCII-Art-Filme, was ich auch weiß. Abgesehen vielleicht vom Drehbuch. Aber es ist besser, wenn ich hier nicht alles verrate. Sonst freut sich möglicherweise niemand mehr auf neue Szenen.

Wie zum Teufel sieht das aus?

Nun, durch glückliche Umstände (ich war so sicher, mein uraltes Backup inzwischen entsorgt zu haben) existiert noch die Original-Version vom Brotfilm mit ihren vier Bildern. Ich blende mal über ins Studio zum ersten Bild.

ASCII-Art überspringen

           ,------------.---------.
           |             \         \   o O ,-.
           |              |         |      `-'
           |              |         |     Jetzt muß ich auch
           |              |         |     noch für ASCII-Art
           |        -------------   |     herhalten.
           |        ((o  )|(o  ))   |
           |         ``=' | `=''    |
           |              |         |
       _,--'              |         |-._
     ,'        .       ---+---      |   `.
    / , ,  ,    )         |         |  y  \
   ( / /  /  y  \         |         |-  \  )
    ( (  (  / `._)        |         | `._)"
     `"`" "|              |         |
           |              |         |
           |              |         |
  ---------'------------------------'-------------PhS
20

Bild 2 ist ein Klassiker:


           ,------------.---------.
           |             \         \   o O ,-.
           |              |         |      `-'
           |              |         |     *MIST*
           |              |         |
           |        -------------   |
           |        (( o )|( o ))   |
           |         ``=' | `=''    |
           |              |         |
       _,--'           ___|___      |-._
     ,'        .        \___/       |   `.
    / , ,  ,    )         /         |  y  \
   ( / /  /  y  \         |         |-  \  )
    ( (  (  / `._)        |         | `._)"
     `"`" "|              |         |
           |              |         |
           |              |         |
  ---------'------------------------'-------------PhS
15

Manchmal kann Bernd richtig verzweifelt aussehen.


           ,------------.---------.
           |             \         \
           |              |         |
           |              |         |
           |              |         |
           |        -------------   |
           |        ((  o)|(  o))   |
           |         ``=' | `=''    |
           |              |         |
       _,--'              |         |-._
     ,'        .       /--+--\      |   `.
    / , ,  ,    )         |         |  y  \
   ( / /  /  y  \         |         |-  \  )
    ( (  (  / `._)        |         | `._)"
     `"`" "|              |         |
           |              |         |
           |              |         |
  ---------'------------------------'-------------PhS
10

I'll be back war definitiv keine Alternative zu diesen letzten Worten:


           ,------------.---------.
           |             \         \   o O ,-.
           |              |         |      `-'
           |              |         |     Am besten ver-
           |              |         |     schwinde ich
           |        -------------   |     jetzt
           |        ((  o)|(  o))   |
           |         ``=' | `=''    |
           |              |         |
       _,--'              |         |-._
     ,'        .       ---+---      |   `.
    / , ,  ,    )         |         |  y  \
   ( / /  /  y  \         |         |-  \  )
    ( (  (  / `._)        |         | `._)"
     `"`" "|              |         |
           |              |         |
           |              |         |
  ---------'------------------------'-------------PhS
15

Nun, wie bereits erläutert, war das nur der Anfang. Später entstand beispielsweise noch der Ratssaal auf der Ehrenpreis. Man beachte vor allem den Kronleuchter.

ASCII-Art überspringen

.      |    _________________|_________________    |      .
.      |   | ) ,}            O            {, ( |   |      .
.      |   | } )          i/(_)\i          ( { |   |      .
.      |   |) )          i_/(_)\_i          ( (|   |      .
.   /| |   |}/'    %%      ;/"\;      %%    `\{|   |      .
.  / | |   |@      )(                 )(      @|   | |\   .
. | &| |   |}),---(__)---------------(__)---,({|   | | \  .
. |* | |   `-------,--,---------------,-,------'   | |i$| .
. |%#| |   [*#]   /,,/    '-,,,-`     |,|   [#*]   | |o\| .
. |#/  |         (o,o)     (O.O)     (@ @)         |  \"| .
. |/   |________ / ~ \ ___ / - \ ___ / U \ ________|   \| .
.     /       ,-`-----'---`-----'---`-----'-,       \     .
. ^\_/^   v  /_______________________________\  v   ^\_/^ .
. (0,0)   |  |---------------|---------------|  |   (0,0) .
.,/  =\,__| cO /      /     oOo     \      \ Co |__,/  =\,.
.||___|   |  /       /       ,       \       \  |   |___||.
.'`-^-'   |/        /        |        \        \|   `-^-'`.
/ _( )_  /O        /         |         \        O\  _( )_ \
20

Und hier noch einen Ausblick auf den neuen Film-Titel.


-----------------------------------------------------------
    ____                      _                   ,-.
   |  _ \                    | |        _,.      /  /
   | |_) | ___ _ __ _ __   __| |       ; \____,-==-._  ,
   |  _ < / _ \ ‘__| ‘_ \ / _’ |"""""""//_    ’----‘ {+>
   | |_) |  __/ |  | | | | (_| |_      ’  ’‘--/  /-‘’‘
   |____/ \___|_|  |_| |_|\__,_( )           /  /
                               |/      dew   ’=‘
              _             ____              _
             | |           |  _ \            | |
           __| | __ _ ___  | |_) | _ __  ___ | |_
          / _’ |/ _’ / __| |  _ < | ‘__|/ _ \| __|
         | (_| | (_| \__ \ | |_) || |  | (_) | |_
          \__,_|\__,_|___/ |____/ |_|   \___/ \__|

"‘-..,  ,..-‘"‘-..,  ,..-‘"‘-..,  ,..-‘"‘-..,  ,..-‘"‘-..,
      ""           ""           ""           ""           "
-----------------------------------------------------------
4

Das muß ich mir ansehen!

Viele Browser können, sobald sie auf eine URI stoßen, die mit „telnet://” beginnt, entsprechende Programme zum Angucken nachladen. In diesem Fall funktionieren folgende Links:

Falls das nicht klappt, muß man das telnet-Programm manuell aufrufen. Dazu suche man sich einen Eingabe-Prompt und tippe munter daher:

telnet das-mehdorn.de
Anschauen auf „Das Mehdorn”,
telnet judy.domain.example
Zum Ansehen auf Judy bzw.
telnet gavatooth.fem.tu-ilmenau.de
auf gavatooth.

Was technisch Interessierte noch wissen sollten: „Das Mehdorn” ist der Rechner für Betatests und bekommt den Film von Judy, die hinter einem Router an einer DSL-Leitung lauert. Und Judy ist der Hauptentwicklungsrechner des Brotfilms. Anders formuliert: Bei „Das Mehdorn” ist die Verbindung flink und fein, während Judy ab und an nicht erreichbar und ihre die Verbindung langsam und manchmal etwas verstopft ist. Judy kann man also notfalls ansprechen, falls „Das Mehdorn” einmal streiken sollte. Auf Judy läuft aktuell keinen Brotfilm-Player. Ansonsten werden Änderungen am Brotfilm normalerweise so schnell propagiert, daß man schon sehr flink sein muß, um eine neue Film-Version auf Judy zu sehen, bevor sie auch auf „Das Mehdorn” auftaucht.

Und falls kein Telnet auf dem Rechner vorliegt, kann man sich mit der Netzkatze und dem Programm PuTTY behelfen. In dem Fall sollte man zusätzlich zu den obigen Rechnernamen noch den Port 23 angeben.

So, jetzt aber viel Spaß beim Ansehen!

Christoph Weber, Mail an Webmaster
Jabber: mehdorn@jabber.ccc.de
2014-05-07