3 Punkte von GN⁺ 2025-05-08 | 1 Kommentare | Auf WhatsApp teilen
  • Der Quellcode des Indie-Spiels VVVVVV von 2010 wurde veröffentlicht; das Spiel stammt von Terry Cavanagh, die Musik von Magnus Pålsson
  • Der Quellcode der Desktop-Version befindet sich im Ordner desktop_version des Repositorys
  • VVVVVV wird weiterhin kommerziell verkauft, aber Builds für den persönlichen Gebrauch können frei kompiliert werden
  • Wer kompilierte Versionen verteilen möchte, sollte die LICENSE.md im Repository prüfen
  • Diskussionen zu VVVVVV-Updates finden hauptsächlich im Kanal vvvvvv-code des inoffiziellen VVVVVV Discord statt

Veröffentlichter Quellcode

  • Dieses Repository enthält den Quellcode von Terry Cavanaghs Indie-Spiel VVVVVV aus dem Jahr 2010
  • Die Ankündigung zur Veröffentlichung des Quellcodes ist in Terrys Blog zu finden: announcement
  • Der Quellcode der Desktop-Version befindet sich im Ordner desktop_version

Nutzungs- und Vertriebsbedingungen

  • VVVVVV kann weiterhin kommerziell unter thelettervsixtim.es gekauft werden
  • Für den persönlichen Gebrauch kann man das Spiel selbst kompilieren
  • Wer eine kompilierte Version des Spiels verteilen möchte, sollte LICENSE.md prüfen

Kanal für Update-Diskussionen

  • Diskussionen zu VVVVVV-Updates finden hauptsächlich im inoffiziellen VVVVVV Discord statt
  • Der entsprechende Kanal ist vvvvvv-code

1 Kommentare

 
GN⁺ 2025-05-08
Hacker-News-Meinungen
  • Gegen Ende der Highschool war ich mit meiner Familie in London und wollte Spieleentwickler werden, also schrieb ich Terry Cavanagh eine E-Mail. Überraschenderweise sagte er sofort zu, sich zum Mittagessen zu treffen.
    Er war wirklich freundlich und gab mir einige Ratschläge fürs Leben. Ich erinnere mich, dass er sagte, die meisten Ideen kämen nicht aus einer großen Vision, sondern dadurch, dass man mit Spielmechaniken herumspielt und experimentiert. Jedenfalls ist er ein toller Mensch, und ich freue mich, dass er VVVVVV, das er V nannte, als Open Source veröffentlicht hat.

    • Der Teil „die meisten Ideen entstehen, indem man mit Mechaniken herumspielt und experimentiert“ ist wichtig. Zu viele Leute glauben, neue Ideen entstünden nur aus abstrakten Konzepten, aber sie können genauso gut entstehen, wenn man mit dem Medium selbst spielt.
    • Ich habe gelernt, dass zwei Sätze wahr sind: Wenn man nicht fragt, kann man auch keine Absage bekommen, und „Triff niemals deine Helden“ ist ein Trugbild.
      Man muss erst ein paar wirklich unangenehme Menschen treffen, um wirklich gute Menschen richtig erkennen zu können.
    • Eine schöne Sache. Ich frage mich, ob dieses Treffen seine spätere Berufswahl beeinflusst hat, ob er am Ende Spieleentwickler wurde oder es zumindest versucht hat. Ein Ausgang ist immer interessant.
    • Mich würde interessieren, was genau der Lebensrat war, den er gegeben hat.
  • Ein wirklich unterhaltsames Spiel. Ich spiele eigentlich nicht besonders viel, aber ich erinnere mich, dass ich das Humble Bundle gekauft habe, um dieses Spiel zu bekommen.
    Es war eines der wenigen Spiele, die ich bis zum Ende gespielt habe. Terry, danke für die tolle Arbeit und die gute Zeit. Nebenbei: veni vidi vici war wirklich verdammt schwer und hat ewig gedauert.
    https://www.youtube.com/watch?v=4CtiY5D6HCs

    • Ich kaufte das Bundle und dachte: „Während die größeren, interessanteren Spiele herunterladen, spiele ich mal ein leichtgewichtiges 2D-Plattformspiel.“ Am Ende verbrachte ich den ganzen Abend damit.
    • Dieses Video fängt das Erlebnis nicht richtig ein, wenn man es gerade so durch jeden Bildschirm schafft und dann links landet.
    • Entschuldigt hat es sich ja. Es gab schließlich einen Bildschirm mit „I’m sorry“ :P
    • Wenn ich mich richtig erinnere, habe ich es erst nach ein paar hundert Versuchen geschafft. Damit hatte ich praktisch die Geduld trainiert, die ich später brauchte, um den Pitioss-Dungeon in Final Fantasy XV zu beenden.
      Mein damaliger Freund war derjenige, der mir VVVVVV geschenkt hatte, und er versuchte einen No-Death-All-Trinkets-Run. Ich konnte nicht begreifen, wie gut man in Spielen sein kann. Und den VVVVVV-Soundtrack PPPPPP höre ich immer noch oft, besonders die zugehörigen osu!-Stream-Tracks.
    • Ich habe die frühen Humble Bundles gekauft, und VVVVVV lag seitdem in meiner Steam-Bibliothek herum. Jetzt sollte ich es wohl mal ausprobieren.
  • Das sind verwandte Beiträge. Ich frage mich, ob es noch weitere gibt.
    Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - Januar 2021
    Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - Januar 2020
    VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - Januar 2020
    VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - Januar 2020
    VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - März 2011

  • Im Kommentar zu Graphics::print_level_creator(...) steht, dass statt „by {author}“ ein Gesicht angezeigt wird.
    Die Begründung war, dass „by“ in einer anderen Sprache als der des Autors seltsam wirken kann, in anderen Sprachen länger werden und bestehende Level-Limits sprengen könnte, dass „by“ und der Autorenname möglicherweise unterschiedliche, nicht zueinander passende Schriftarten brauchen würden, dass man damit auch grammatische Probleme wie Genus oder Namensflexion vermeiden kann, dass die Darstellung per Gesicht sinnvoll ist und dass, falls diese Entscheidung jemanden traurig macht, ein lächelndes Gesicht ihn ohnehin wieder aufmuntern würde. Schwer zu widerlegen.

  • In dem im Beitrag verlinkten Artikel https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-... steht, dass es in der C++-Version viele merkwürdige Stellen gibt, die man nur versteht, wenn man sich daran erinnert, dass das Spiel zuerst in Flash entstand und dann direkt, mitsamt Macken, portiert wurde.
    Zum Beispiel hatte er die Angewohnheit, temporäre Variablen wie i, j und k nicht innerhalb von Funktionen zu deklarieren, sondern als Member jeder Klasse, weil Deklarationen innerhalb von Funktionen in Flash aus langweiligen Gründen lästig waren. Dadurch entstanden schwer nachzuverfolgende Bugs; insbesondere bei der Entity-Kollisionsbehandlung konnten mehrere Funktionen dieselbe Variable i teilen, was sogar Endlosschleifen möglich machte. Das klingt wirklich übel und bestätigt das Vorurteil, dass Game-Code chaotisch ist.

    • Für mich klingt das eher großartig und bestätigt den Verdacht, dass Spieleprogrammierer mehr lernen als normale Programmierer.
    • Um es festzuhalten, bevor ich es später vergesse: Code kann chaotisch und trotzdem unterhaltsam sein. Das ist der Fall, wenn in einer neuen Idee interessante Bugs entstehen und entdeckt werden.
      Code kann hervorragend und trotzdem langweilig sein, etwa eine gut geschriebene, aber unspektakulär umgesetzte Taschenrechner-App. Code kann chaotisch und langweilig sein, wie ein schlecht designtes B2B-Produkt mit Hunderten von Sonderfällen, die jeweils ähnliche, aber unterschiedliche Bugs haben. Code kann hervorragend und interessant sein, etwa Dinge wie Doom.
    • Machen Leute das wirklich so? Plötzlich stört es mich viel weniger, dass man in JavaScript vor jeden Member this. schreiben muss.
  • Ich möchte auch Super Hexagon vom selben Entwickler erwähnen. Ein extrem simples, aber wirklich spaßiges und stark süchtig machendes Spiel
    Ich erinnere mich, irgendwo gelesen zu haben, dass der Entwickler nur etwa einen Tag dafür gebraucht hat. Und der VVVVVV-Soundtrack PPPPPP ist ebenfalls großartig

    • Wenn es um Spiele desselben Entwicklers geht: Dicey Dungeons macht auch enorm viel Spaß. Es ähnelt einem Deckbuilding-Roguelike, nutzt aber Würfel statt Karten
      Es gibt etwa sechs einzigartige Charaktere, mehrere Challenges pro Charakter, und die Regeln ändern sich ständig, sodass man das Spiel immer wieder neu denken muss. Es hat auch viel Humor, außerdem kostenlose DLCs und Mod-Inhalte, die ich noch nicht ausprobiert habe
    • Ich wusste nicht, dass Super Hexagon vom selben Entwickler stammt. Obwohl es eine völlig andere Art von Spiel ist als VVVVVV, hat es wirklich Spaß gemacht
      Es ist immer spannend, wenn ein Indie-Entwickler nach einem frühen Erfolg in ein völlig neues Genre abbiegt, und auf diese Weise sind einige großartige Perlen entstanden. Zum Beispiel die Entwicklung Fallen London -> Sunless Sea -> Cultist Simulator
    • Es gibt keine zuverlässige Methode, in den Flow zu kommen, außer 10 Minuten Super Hexagon zu spielen
    • Dieser Empfehlung stimme ich zu. Der Lernprozess macht in diesem Spiel wirklich Spaß
      Anfangs wirkt es unmöglich, aber das Gehirn passt sich an. Es fühlt sich an, als würde man hinter die Matrix sehen
    • In dieses Spiel habe ich wirklich sehr viel Lebenszeit gesteckt
      Ich habe es auch mit mehreren Leuten geteilt und sie alle damit verrückt gemacht. Ich glaube, ich habe immer noch ungefähr 5–6 Exemplare in meinem Steam-Inventar liegen. Nur für den Fall. Mit V, SMB, Braid und vielen anderen Spielen ist es genauso. Manchmal reichen eine kleine Inspiration und grobe Grafik völlig aus
  • Es gab eine Zeit, in der ich gerade von Kanada nach California gezogen war und dringend einen Job brauchte; ich bekam einen Haustür-Vertriebsjob bei Comcast
    Ich hasste diese Arbeit und saß oft im Auto, entzog mich der Verantwortung und spielte auf dem Handy VVVVVV. Terry gab mir eine kurze Verschnaufpause

  • Großartiges Spiel. Wie es sich für ein Indie-Spiel jener Ära gehört, ist der Code wirklich ein einziges Chaos, was schön zu sehen ist

    • „Wirklich ein einziges Chaos“ trifft es genau. Mein Lieblingsteil ist die 3300 Zeilen lange Funktion Game::updatestate() und das riesige switch-Statement
    • Es wurde ursprünglich in Flash geschrieben und dann nach C++ portiert, das erklärt also einen Teil des Chaos. Nicht alles, aber einen Teil
    • Dieser Code ist wirklich inspirierend. Eine Lektion darin, dass es nicht immer das Beste ist, Codequalität übermäßig zu verehren
    • An diesem Code ist nichts auszusetzen. Das nennt man Loop Unrolling, und es hält die Performance des Spiels aufrecht
  • Ich habe es für Zig paketiert; man muss nur zig build ausführen, dann kann man das Spiel unter Linux, macOS und Windows spielen
    https://github.com/allyourcodebase/VVVVVV

  • Er gestand, dass er in jeder Klasse i, j, k deklariert hatte, weil er sie nicht überall innerhalb von Funktionen deklarieren wollte, wo er sie brauchte; erwartungsgemäß führte das zu unsauberen und schwer zu findenden Bugs
    Erstaunlich, dass er mit solchem Code ein gutes Spiel zustande gebracht hat

    • Fast jedes Spiel enthält alle möglichen schrecklichen Hack-Codes. Wobei das hier natürlich schon zu den schlimmeren gehört, die ich gesehen habe