🌟 You make games, the template handles the boring stuff.
Godot Game Template is a generic starter project for Godot games.
Its main focus is to provide a solid base to build upon.
You have 2 options:
Logo | Godot | Title | Link |
---|---|---|---|
3.x | YouAreUto (2019) | Android, iOS, GitHub | |
3.x | Defending Todot (2020) | HTML5, GitHub | |
3.x | Karooto No Gase (2021) | Android, Itch.io | |
3.x | demo-godot-game-template (2021) | Android, GitHub |
Get in contact if you want to be featured here!
Game.change_scene("res://scenes/gameplay/gameplay.tscn")
Game.change_scene("res://scenes/gameplay/gameplay.tscn", {
"show_progress_bar": true
})
# you can pass whatever value you like: int, float, dictionary, ...
var params = {
"level": 4,
"skin": 'dark'
}
Game.change_scene("res://scenes/gameplay/gameplay.tscn", params)
# gameplay.gd
func pre_start(params):
print(params.level) # 4
print(params.skin) # 'dark'
# setup your scene here
They are called in this order:
method | description |
---|---|
_ready() |
gets called when the graphic transition covers the screen |
pre_start(params) |
gets called immediately after _ready, it receives params passed via Game.change_scene(scene_path, params) |
start |
it's called as soon as the graphic transition finishes. It's a good place to activate gameplay logic, enemy AI, timers, ... |
Game.restart_scene() # old params will be reused
var new_params = {
"level": 5,
}
Game.restart_scene_with_params(new_params)
$Sprite.position = Game.size / 2
# Game.size it's just a shortcut to get_viewport().get_visible_rect().size
assets/
builds/
scenes/
.gd
scripts or resources used by the sceneMostly inspired by the official Godot Engine guidelines:
This convention avoids having filesystem issues on different platforms. Stick with it and it will save you time. Read more here:
Windows and recent macOS versions use case-insensitive filesystems by default, whereas Linux distributions use a case-sensitive filesystem by default. This can cause issues after exporting a project, since Godot's PCK virtual filesystem is case-sensitive. To avoid this, it's recommended to stick to snake_case naming for all files in the project (and lowercase characters in general).
See also this PR that adds is_case_sensitive()
.
release.sh
From your project root:
./release.sh MyGameName # this assumes that you have a "godot" binary/alias in your $PATH
Look inside the ./builds/ directory:
builds
└── MyGameName
├── html5
│  ├── build.log # an export log + build datetime and git hash
│  ├── index.html
│  ├── ...
├── linux
│  ├── MyGameName.x86_64
│  └── build.log
├── osx
│  ├── MyGameName.dmg
│  └── build.log
└── windows
├── MyGameName.exe
└── build.log
If you are using Github you can take advantage of:
You can read more on Wiki - Continuos Integration
If you want to help the project, create games and feel free to get in touch and report any issue.
You can also join the Discord server (#godot-game-template
channel).
Before adding new features please open an issue to discuss it with other contributors.
Many features were implemented only thanks to the help of:
Also many tools were already available in the open source community, see the Thanks section.