BlitzLLVM
Ein funktionierende Recompiler/Transpiler für Blitz3D?!
Die Vergangenheit
Alles fängt irgendwo mal an, und für dieses Projekt war es mit einem reverse engineertem build von Blitz3D - ein paar hacks hier und da und zack gingen schon 2560x1440 statt nur 2048x2048. Ein meilenweiter sprung für moderne systeme, aber die Geschwindigkeit ließ leider auf sich warten. Später gab es dann den Source Code für Blitz3D und daraus wurde BlitzNext - leider musste ich dies Aufgrund meiner Arbeit aufgeben, oder eher zum Glück.
Denn ohne diese Vergangenheit wäre BlitzLLVM nicht entstanden. Anstatt mit etwas existierendem anzufangen und es zwanghaft auf moderne standards zu bringen, warum nicht einfach von vorne anfangen? Es kann ja schließlich nicht so schwer sein und sicherlich werde ich nicht unterbr- oh geil, mein Lohn reicht auf einmal nicht mehr. Ging also wieder in die Schublade zurück.
Und jetzt ist es endlich hier, aber nur \\\"dank\\\" AI - Claude Sonnet um genau zu sein. Für mich hieß es: Geil ich kann Stranded 2 wieder auf mehr als 3 fps spielen, für andere heißt es wohl \\\"cool mein Blitz3D projekt läuft nun unter modernen Systemen\\\" und für noch andere heißts wohl \\\"wieder so ein scheiß AI projekt das nur Arbeitsplätze klaut\\\" usw. Mir Wurst, Stranded 2 läuft!
Und was ist es nun?
Das ist echt einfach: BlitzLLVM ist ein LLVM basierter transpiler für BlitzBasic, Blitz3D und BlitzPlus! Es nutzt Vulkan+SDL3 für Grafik, FFmpeg+SDL3 für Audio und Video, unterstützt Windows, Linux, und macOS, kann x86, x86-64, arm64, und einiges mehr. Die ganze Liste an features ist inzwischen extrem lang, aber dafür ist dieser worklog ja da. Gucken wir uns doch mal die größten unterschiede so an:
Transpiler / Compiler:
Syntax:
Grundfunktionen:
und noch so viel mehr. Es ist einfach so viel neu drin das ich das nicht in einem post unterbringen kann. Aber willkommen in 2026, kompiliert eure alten Blitz3D titel doch mal neu und zeigt so ob es noch läuft.
Wenn ihr darauf bock habt: DOWNLOAD <- immer aktuell!
Nachwort
Ein großes Danke geht noch an DexBeyond für den Zugriff auf ein Projekt das tatsächlich noch in Blitz3D entwickelt wurde - So konnten einige Probleme schnell gefunden und behoben werden. Guckt euch beyond.frontiers mal an wenn man lust drauf hat.
Alles fängt irgendwo mal an, und für dieses Projekt war es mit einem reverse engineertem build von Blitz3D - ein paar hacks hier und da und zack gingen schon 2560x1440 statt nur 2048x2048. Ein meilenweiter sprung für moderne systeme, aber die Geschwindigkeit ließ leider auf sich warten. Später gab es dann den Source Code für Blitz3D und daraus wurde BlitzNext - leider musste ich dies Aufgrund meiner Arbeit aufgeben, oder eher zum Glück.
Denn ohne diese Vergangenheit wäre BlitzLLVM nicht entstanden. Anstatt mit etwas existierendem anzufangen und es zwanghaft auf moderne standards zu bringen, warum nicht einfach von vorne anfangen? Es kann ja schließlich nicht so schwer sein und sicherlich werde ich nicht unterbr- oh geil, mein Lohn reicht auf einmal nicht mehr. Ging also wieder in die Schublade zurück.
Und jetzt ist es endlich hier, aber nur \\\"dank\\\" AI - Claude Sonnet um genau zu sein. Für mich hieß es: Geil ich kann Stranded 2 wieder auf mehr als 3 fps spielen, für andere heißt es wohl \\\"cool mein Blitz3D projekt läuft nun unter modernen Systemen\\\" und für noch andere heißts wohl \\\"wieder so ein scheiß AI projekt das nur Arbeitsplätze klaut\\\" usw. Mir Wurst, Stranded 2 läuft!
Und was ist es nun?
Das ist echt einfach: BlitzLLVM ist ein LLVM basierter transpiler für BlitzBasic, Blitz3D und BlitzPlus! Es nutzt Vulkan+SDL3 für Grafik, FFmpeg+SDL3 für Audio und Video, unterstützt Windows, Linux, und macOS, kann x86, x86-64, arm64, und einiges mehr. Die ganze Liste an features ist inzwischen extrem lang, aber dafür ist dieser worklog ja da. Gucken wir uns doch mal die größten unterschiede so an:
Transpiler / Compiler:
- Echte Optimierungen dank LLVM: Der Unterschied zwischen Debug und Release ist nun nicht mehr ob da ein Debugger fenster dran klebt.
- Multi-Platform und Multi-Arch: Windows 32-bit ist nicht mehr das limit, alles was LLVM/clang hat kann nun verwendet werden - Linux, macOS, 64-bit, ARM, x86, x86-64.
- Deutlich schnellere Speicheralloziierungen: Der Heap allocator vom System wird nicht mehr mit anfrangen zugebombt, sondern es wird ein großer Block geholt und der wird unterteilt.
- Echte Warnungen und Fehler vom Lexer und Parser: -W0 bis -W4 schaltet nun weitere Warnungen an oder aus, der Standard ist -W2. Z.b. -Wunused-result gibt eine Warnung aus wenn eine Funktion etwas zurückgibt aber das Ergebnis ignoriert wird.
- Kein BLITZPATH zwang mehr!
Syntax:
- Neue Datentypen: Byte/Int8, UByte/UInt8, Short/Int16, UShort/UInt16, Int/Int32, UInt/UInt32, Long/Int64, ULong/UInt64, Half/Float16, Float/Float32, Double/Float64. Verwendbar mit dem Syntax \\\"Variable:Type\\\"
- Parameter können nun In, Out oder InOut sein. Ein In parameter ist der alte standard, ein Out parameter kann in eine funktion gegeben werden und muss geschrieben werden, und ein InOut ist beides in einem.[syntax=\\\"bb\\\"]Function MyFunction(In A:Int32, Out B:Int32 = 0, InOut C:Int32 = 2)
B = C
End Function[/syntax] - Funktionen können nun mit dem Void Datentyp angeben das nichts zurückgegeben wird. Eine Funktion mit :Void lässt Return mit Daten (z.b. Return 4) als Fehler ausgeben.
- For ... Step ... erlaubt nun das der Step eine variable ist, wenn man sich selbst sabotieren will.
Grundfunktionen:
- Int(String) lässt nun $ (0x) und % (0b) zu für String to Int konvertierungen.
- Include ... ist nun immer relativ zur Datei die man kompiliert anstatt relativ zum ordner in dem man blitzcc ausführt.
- Input, Print, Write und ähnliche Befehle gehen nun in die Konsole.
und noch so viel mehr. Es ist einfach so viel neu drin das ich das nicht in einem post unterbringen kann. Aber willkommen in 2026, kompiliert eure alten Blitz3D titel doch mal neu und zeigt so ob es noch läuft.
Wenn ihr darauf bock habt: DOWNLOAD <- immer aktuell!
Nachwort
Ein großes Danke geht noch an DexBeyond für den Zugriff auf ein Projekt das tatsächlich noch in Blitz3D entwickelt wurde - So konnten einige Probleme schnell gefunden und behoben werden. Guckt euch beyond.frontiers mal an wenn man lust drauf hat.

