| .forgejo | ||
| .github | ||
| .godot | ||
| addons | ||
| bin | ||
| docker | ||
| gdsbin | ||
| gdUnit4@b641a131a4 | ||
| zig-template@88d43fcede | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| build | ||
| build.zig | ||
| CONTRIBUTING.md | ||
| CREDITS.md | ||
| Godot-v.svg | ||
| Godot-v.svg.import | ||
| icon.svg | ||
| icon.svg.import | ||
| LICENSE.md | ||
| mit.svg | ||
| mit.svg.import | ||
| preview.gif | ||
| project.godot | ||
| python.svg | ||
| python.svg.import | ||
| README.md | ||
| zigc++ | ||
| zigcc | ||
GDScript to Python to C Transpiler
gdscript-transpiler-bin is a GDScript compiler (using Nuitka), minimal scripts can be transpiled to Python.
Binary builds are compiled using Forgejo Actions for Alpine Linux, macOS and Windows x86_64.
Other compatible platforms: Android (aarch64 and x86_64).
Also see generated Python source from GDScript.
Example
git clone https://codeberg.org/LinuxUserGD/gdscript-transpiler-bin.git
cd gdscript-transpiler-bin
git submodule update --init --remote --progress
Godot Engine command line (stage0)
-
./godot4 -s bin/gds.gd --headless help -
./godot4 -s bin/gds.gd --headless run=bin/gds.gd(for running GDScript directly using x-python) -
./godot4 -s bin/gds.gd --headless format=bin/gds.gd(for generating Python project) -
./godot4 -s bin/gds.gd --headless compile=bin/gds.gd(for compiling GDScript to binary using Clang and Nuitka)
Python environment (stage1)
Installing python gds
python -m pip install gdsbin
python -m pip install git+https://codeberg.org/LinuxUserGD/gdscript-transpiler-bin.git@python
-
python -m gdsbin help -
python -m gdsbin run=bin/gds.gd -
python -m gdsbin format=bin/gds.gd -
python -m gdsbin compile=bin/gds.gd
Nuitka compiled binary (stage2)
Installing gds binary (available at itch.io)
unzip gdscript-transpiler-bin.zip
cd gdscript-transpiler-bin
chmod +x gds
-
./gds[.exe] help -
./gds[.exe] run=bin/gds.gd -
./gds[.exe] format=bin/gds.gd -
./gds[.exe] compile=bin/gds.gd
Benchmark
Time for running GDScript code:
func string() -> int:
var x: String = ""
for i in range(0, 300000):
x += " "
return x.length()
func add() -> int:
var x: int = -100000000
for i in range(0, 100000000):
x += 1
return x
| Godot | Python | Nuitka | |
|---|---|---|---|
| benchmark.gd | 11.639s | 4.678s | 1.857s |
