Godot 4 · GDScript
Downloadable content
Deliver data you publish online (levels, packs, event configs) without updating the game. You upload content to the panel; the player receives it automatically.
How You Receive It
Content marked for auto-download arrives on its own shortly after connecting. Each piece has a key (you define it in your panel) and you receive it via the content_loaded signal:
Gamdato.content_loaded.connect(_on_content)
Gamdato.content_sync_complete.connect(_on_content_done)
func _on_content(key: String, data: Variant) -> void:
if key == "levels":
_load_levels(data) # data is whatever you uploaded (Dictionary, Array...)
func _on_content_done(updated: Array, from_cache: Array) -> void:
print("Content ready.")# content_loaded(key: String, data: Variant)
# data is an envelope; your uploaded value lives at data[key]:
{
"schema_version": 1,
"generated_at": "2026-06-07T18:00:00.000Z",
"levels": [ ... ] # your uploaded value, under your content key
}Instant & On-Demand Reads
get_cached_content(key) instantly reads the saved copy. get_game_content(key) requests on-demand content (the kind that is not auto-downloaded).
Downloaded content is stored on the device for offline use and is only re-downloaded when you publish a new version. Remember to bump the key version when you edit content.
Load Everything at Once
get_bootstrap() fetches all auto-download content in a single response, handy on a loading screen. Listen to bootstrap_loaded.
Gamdato.bootstrap_loaded.connect(_on_bootstrap)
Gamdato.get_bootstrap()
func _on_bootstrap(payload: Dictionary) -> void:
# payload holds every auto-download key at the top level
if payload.has("levels"):
_load_levels(payload["levels"])