train-scene¶
train-scene
| 项目信息 | |
|---|---|
| 仓库 | https://github.com/Maicarons/train-scene |
| 主要语言 | GDScript |
| Stars | 0 |
| 类型 | 原创项目 |
| 许可证 | MIT |
| 最近更新 | 2024-11-16 |

🌟 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.
Get started¶
You have 2 options:
1. Get started with Github Templates:¶
- Create a new repo using this template
- Clone the new repository locally
- Open the project in Godot (GDScript)
2. Get started with a local project:¶
- 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!
Used by¶
| 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!
How to...¶
Change scene¶
Game.change_scene("res://scenes/gameplay/gameplay.tscn")

Change scene and show progress bar¶
Game.change_scene("res://scenes/gameplay/gameplay.tscn", {
"show_progress_bar": true
})

Change scene and pass parameters¶
## 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
_ready() vs pre_start() vs start()¶
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, ... |
Restart the current scene¶
Game.restart_scene() # old params will be reused
Restart the current scene and override params¶
var new_params = {
"level": 5,
}
Game.restart_scene_with_params(new_params)
Center a Node2D into the viewport¶
$Sprite.position = Game.size / 2
## Game.size it's just a shortcut to get_viewport().get_visible_rect().size
Conventions and project structure¶
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
.gdscripts 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)
Lower Case file names¶
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().
Export utilities¶
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
Github Actions¶
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
Contributing¶
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.
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.
Thanks¶
- 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:
- aBARICHELLO
- croconut
- josephbmanley
- GDQuest
- Scony
- myood
