I was curious about writing one-off scripts in Godot, so here's a tiny example for doing that in Godot 4.
./hello-godot.gd (also in my dotfiles):
#!/usr/bin/env -S godot --headless --script
extends SceneTree
func _init():
print("hello godot!")
print("args", OS.get_cmdline_args())
quit()
Note the first line, which invokes godot and includes the --headless
and --script
arguments. You can read more about these args via godot --help
.
Once the script has executable permissions (typically via chmod +x hello-godot.gd
), you can run it in a shell like:
./hello-godot.gd "some arg" "some other arg" 123
That should output something like:
hello godot!
args["-s", "/home/russ/.local/bin/hello-godot.gd", "some arg", "some other arg", "123"]
This kind of thing can be useful for running tests via something like GUT (which is where I started digging into this), or exporting games in scripts/CI.
Which makes me think I should look into how some of those godot CI docker images run - maybe there are other arguments/features/best-practices there to build on.