Rückblick auf die GDC und den Mobile-Platform-Blitz
Eine echte Engine mit echtem laufendem Code schlägt jedes Deck. RakuAI hat eine zur GDC mitgenommen, in derselben Woche zwei mobile Plattformen ausgeliefert und bewiesen, dass eine neue Oberfläche hinzuzufügen eine bekannte Form ist — kein Rewrite.
Die GDC war vor einem Monat. Der Rückflug war voller Notizen. Die Gespräche, die in den Fluren und Nebentreffen begannen, hallen immer noch durch den Posteingang nach. Heute ist der richtige Samstag, um aufzuschreiben, was im Vorlauf zur Reise ausgeliefert wurde, was fast nicht klappte, und was dabei herauskam.
Die GDC ist der Ort, an dem man in drei Tagen dichter Gespräche herausfindet, welche der eigenen Annahmen halten und welche eine Vermutung waren, die man als Fakt behandelt hatte. Ich kam mit beiden Arten von Antworten nach Hause und einer längeren Liste an Leuten, denen ich nachgehen sollte, als erwartet.
Der Release-Tag erzählt die Geschichte
Die Version, die auf dem Laptop lief, den ich mitgebracht habe, ist v1.3.8.26.10.09. Der Commit, der die Version erhöhte, hatte eine einzeilige Nachricht: „GDC 2026 Eve Release.” Das war der 25. März. Ich war am nächsten Morgen im Flugzeug.
Der Vorabend-GDC-Commit ist der, über den ich schreiben möchte, weil er derjenige ist, der fast nicht gelandet wäre.
Achtundvierzig Stunden bevor ich abgeflogen bin
Der Build, bei dem sich alle einig waren, dass er „der Demo-Build” sei, scheiterte in der Woche vor der GDC auf vier verschiedene Arten. Der Fix-Commit ist b70a48dc vom 7. März, in einem einzigen PR mit dem Titel „fix(demos): fix black screens, crashes, and expand API test coverage” eingebracht. Die vier Arten:
Schwarze Bildschirme. Der Animations-Showcase, der KI-Verhaltenstest, der CSG-Boolean-Test und der Gameplay-Framework-Test rendeten alle schwarz. Die Ursache war ein fehlender Aufruf von raku_editor_init(), den die Demos brauchten, um Debug-Draw-Ressourcen zu registrieren. Die CMake-Link-Targets waren einen Sprint zuvor refaktoriert worden, und die Editor-Bibliothek war aus den Demo-Binärdateien herausgeschnitten worden, weil niemand bemerkt hatte, dass sie davon abhingen. Fix: den Link wieder hinzufügen, den Init-Aufruf wiederherstellen.
Ein Null-Absturz. Die SLM-Dialog-Demo stürzte beim Start mit einem Null-QA-Zeiger ab. Der Dialogmodell-Loader gab bei einem Config-nicht-gefunden-Pfad früh zurück, ohne den Fehler zu markieren. Fix: den Fehler sichtbar machen und eine funktionierende Konfiguration ausliefern.
Eine Netzwerk-Demo, die sich sofort trennte. Die Netzwerk-Echo-Demo öffnete einen Socket, bekam den Handshake, dann schloss sie. Die Trennungserkennung löste beim ersten Idle-Frame aus statt nach einem echten Timeout. Fix: ein echtes Timeout statt „erster Idle-Frame.”
Ein XR-Test, der ohne OpenXR-Runtime mit 1 beendete. Mit ungleich null zu beenden, wenn keine Runtime vorhanden ist, ist der falsche Standard für eine Demo-Maschine, auf der möglicherweise keine XR-Runtime installiert ist. Fix: graziös mit 0 beenden, das Fehlen loggen.
Keiner dieser Fixes ist clever. Alle sind die Art von Sache, die auf der Maschine des Entwicklers gut aussieht und auf der Maschine eines Fremden kaputt aussieht. Achtundvierzig Stunden vor so einer Reise sind genau der Zeitpunkt, an dem diese Fehlschläge zutage treten, weil die Demo endlich auf dem Laptop läuft, auf dem sie die nächste Woche tatsächlich leben wird, vor Leuten, die sich in fünfzehn Sekunden eine Meinung bilden.
Die Politur-Commits, die ich rechtzeitig funktionsfähig brauchte
Zwei weitere Commits vom 26. März, dem Tag, bevor ich abgeflogen bin.
Bodenebenen-Speckularität. Die Weltmodell-Demo hatte eine grüne Bodenebene und ein paar schwebende Formen. Mit einem globalen Specular-Material wurde der grüne Boden unter der Demo-Beleuchtung weiß ausgewaschen. Der Fix waren zehn Zeilen: mattes Material auf der Bodenebene, Specular nur auf den dynamischen Objekten. Plötzlich sah die Demo aus wie eine bewusste Art-Direction statt wie eine Engine mitten im Debugging.
Erzwungene NVIDIA-dGPU auf dem Konferenz-Laptop. Hybrid-Laptops mit sowohl Intel UHD als auch einer diskreten NVIDIA-Karte greifen standardmäßig auf den Intel-Chip zurück, sofern kein expliziter Hinweis etwas anderes sagt. Der Hinweis besteht aus zwei exportierten Symbolen: NvOptimusEnablement für NVIDIA Optimus, AmdPowerXpressRequestHighPerformance für AMDs Äquivalent. Sie zur Demo-Binärdatei hinzuzufügen erzwang die dGPU. Das HUD druckt jetzt auch den GPU-Namen in der Titelleiste, sodass ich auf einen Blick sehen kann, worauf die Demo tatsächlich läuft. Ergebnis: lief auf der Quadro T2000 statt auf der integrierten UHD. Die Frame-Zeit fiel um mehr als die Hälfte.
Keiner dieser beiden Commits ist mehr als fünfzig Zeilen lang. Beide zusammen sind der Unterschied zwischen „die Demo läuft mit dreißig Bildern” und „die Demo läuft mit neunzig und sieht beabsichtigt aus.”
Der Browser-Fallback, der zum besseren Show-and-Tell wurde
Das andere, was in der GDC-Woche landete, war eine eigenständige Browser-Demo unter web/seed-explorer/. Eine einzige HTML-Datei, null Abhängigkeiten, ein JavaScript-Port des Simplex-Noise-Terrain-Generators, den die Runtime nativ verwendet. Sie rendert drei Ansichten einer generierten Welt auf eine 512x512-Canvas mit putImageData: Biom-Karte, Höhenkarte, Temperaturkarte. Es gibt ein raku://seed/-URL-Schema eingebaut, sodass ein Seed teilbar ist.
Das war eigentlich als Rückfalloption gedacht, falls der Laptop ausfällt oder das WLAN am Veranstaltungsort ein Chaos ist. Es wurde zu dem, was ich in Nebengesprächen tatsächlich am häufigsten geöffnet habe. Der Laptop einer anderen Person auf einem Café-Tisch kann unser SDK nicht spontan installieren, aber er kann eine URL laden. Das Gespräch geht von „schick mir die Binärdateien” zu „öffne diesen Link.” Das ist eine andere Art von Gespräch. Die Browser-Demo bleibt in der Rotation.
Der Mobile-Platform-Blitz
Die andere Hälfte des März war iOS und Android, beide in derselben Woche ausgeliefert.
Android. Zwölf Commits in der F1-Serie (F1.2 bis F1.15), beginnend mit dem NativeActivity- und JNI-Bridge-Gerüst und endend mit dem Android-Performance-Profiler. Dazwischen: Touch-Input über JNI verdrahtet, GitHub-Actions-Workflow für AAB-Builds, Firebase-Crashlytics-Integration und Oboe als Audio-Backend aktiviert. Oboe ist die richtige Wahl für Audio mit niedriger Latenz auf Android. Der C-API-Wrapper darum erlaubt, dass dieselben Audio-Callbacks plattformübergreifend funktionieren.
iOS. Sieben Commits in der F2-Serie (F2.1 bis F2.7) über zwei Tage. Begonnen mit dem Xcode-Projekt und der Swift-App-Hülle. Eine arm64-Cross-Compilation-Toolchain hinzugefügt. Metal als Renderer verdrahtet (der F2.2-Commit-Nachricht liest sich „iOS Metal renderer integration, glue layer, CMake toolchain, 51 tests”, und die Testanzahl ist der Teil, auf den ich am stolzesten bin). Gestenerkennung über UIGestureRecognizer hinzugefügt. Das Räumlichaudio-Backend auf Basis von AVAudioEngine gebaut. Asset-Bundle-Download und Caching über URLSession verdrahtet.
Beide Plattformen bekamen dieselbe Form: eine dünne native Schicht, die Touch, Audio, GPU und Asset-Auslieferung derselben C-API offenlegt, die die Desktop-Runtime verwendet. Das ist der Vertrag. Der plattformspezifische Code ist die Implementierung. Von hier aus eine neue Plattform hinzuzufügen ist eine bekannte Form, kein offenes Architekturproblem.
Räumliches Audio ist der unterschätzte Gewinn
Das Stück Arbeit, zu dem ich immer wieder Fragen bekomme, ist räumliches Audio. Der Header liegt unter include/raku/raku_spatial_audio.h. Die Implementierung ist zwischen Plattformen aufgeteilt: HRTF-Verarbeitung für räumliche Lokalisierung, Mixer-Gruppen für kanalweise Kontrolle, Effekte (Hall, Delay) und Hallzonen für Raumakustik. Auf Android ist der Audio-Pfad Oboe. Auf iOS ist es AVAudioEngine. Der Räumlichaudio-Commit ist e0aef6c6 vom 6. März.
Der Grund, warum das für eine AR-Engine wichtig ist, ist, dass Audio die Hälfte der Präsenz ausmacht. Visuelles AR mit Stereo- (oder schlimmer, Mono-)Audio bricht die Immersion in dem Moment, in dem der Nutzer den Kopf dreht. Räumliches Audio, das sich aktualisiert, während sich der Nutzer bewegt, lässt den virtuellen Inhalt sich anfühlen, als wäre er im Raum. Die Kosten sind real: HRTF-Verarbeitung ist nicht umsonst. Der Nutzen ist ebenfalls real: Niemand ist je von einer guten Räumlichaudio-Demo zurückgekommen und wollte sie deaktiviert haben.
Was die GDC tatsächlich bewegt hat
Drei Dinge, die es wert sind, aufgeschrieben zu werden.
Partnergespräche. Die Flurgespräche und die Nebentreffen sind die, die jetzt auf dem Kalender landen. Die Konferenzvorträge waren exzellent. Die Gespräche zwischen den Vorträgen waren der Grund, warum sich die Reise ausgezahlt hat. Wenn ich an einem zukünftigen Samstag konkret über Partnerrichtungen schreibe, werden diese Fäden der Inhalt sein.
Ein klarerer Blick darauf, wo das Feld steht. Es gab Sessions über Weltmodelle, über KI-getriebene Content-Pipelines, über die Lücke zwischen Forschungsdemos und ausliefer-fähigen Runtimes, über die Roadmap für räumliche-AR-Hardware von ein paar verschiedenen Anbietern. Manches, was ich über die Wettbewerbslandschaft angenommen hatte, stimmte. Ein paar Dinge, über die ich mir still Sorgen gemacht hatte, stellten sich als weniger bedrohlich heraus, als ich dachte. Ein paar Dinge, über die ich mir keine Sorgen gemacht hatte, stellten sich als mehr Aufmerksamkeit verdienend heraus. Allein diese Neukalibrierung war den Flug wert.
Erlaubnis, weiterzumachen. Die GDC war eine erzwingende Funktion. Die Demo, die ich mit mir herumtrug, war nicht perfekt. Sie war konkret, sie war eine echte Engine mit echtem laufendem Code, und sie beantwortete eine andere Kategorie von Frage als ein Deck. Die Anzahl der „schick mir eine Follow-up-E-Mail”-Antworten war hoch genug, um zu bestätigen, dass die Richtung die richtige ist. Das ist die Metrik.
Die mobilen Plattformen wurden ausgeliefert. Die Demos, die ich gezeigt habe, funktionierten. Der Browser-Fallback wurde zu einem Feature. Samstag gut genutzt.
Die Runtime, gebaut für das Gerät auf deinem Gesicht
Eine C-API, räumliches Audio überall, und eine thermisch bewusste Runtime, konstruiert für Smart Glasses — keine PC-Engine, die auf Größe gequetscht wurde. Sieh, wo deine KI in der realen Welt lebt.