- install godot 4.2.1
- install python3
pip3 install --user pre-commit gdtoolkit
pre-commit install
GitHub Actions automatically builds and exports a playable copy of the game to https://anthologen.github.io/attentchunted upon merging into the main branch. However, due to an open issue with Godot 4 web builds, it is not compatible with Github Pages so the final product will need to be distributed elsewhere.
- Custom enemy asset
- Kenney
- Airplane icons created by Freepik - Flaticon
🌟 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
Development of new versions is made on the dev
branch.
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: