π 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:
- Create a new repo using this template
- Clone the new repository locally
- Open the project in Godot (GDScript)
- Go to https://github.com/crystal-bit/godot-game-template/releases
- Download Source code (zip)
- Unzip the project
- Open the project in Godot Engine (GDScript) and create your game!
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/
- Contains textures, sprites, sounds, music, fonts, ...
builds/
- output directory for game builds (ignored by .gitignore and .gdignore)
scenes/
- Contains Godot scenes (both entities, reusable scenes and "game screen" scenes)
- Scene folders can contain
.gd
scripts or resources used by the scene
Mostly inspired by the official Godot Engine guidelines:
- snake_case for files and folders (eg: game.gd, game.tscn)
- PascalCase for node names (eg: Game, Player)
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()
.
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:
- automatic exports for every commit push (see push-export.yml)
- manual exports via Github CI (see dispatch-export.yml )
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.
- For support & inspiration:
- All the contributors
- Crystal Bit community
- GameLoop.it
- Godot Engine Italia
- Godot Engine
- For their work on free and open source software: