Game Configuration

Where a game's identity, starting map, spawn tile, tabs, HUD bars, gameplay systems and project-wide defaults are edited, and which file each setting lands in.

8 min read

What game configuration is#

A project carries two small configuration files at its root, and "game configuration" is everything that ends up in them:

  • game_config.json is the player-facing file. It is packed into the data pack and uploaded alongside every build, so whatever it says is what the game ships with: title, description, developer, website, genre, tags, the starting map and the spawn tile.
  • project.vastopia is the editor-facing file. It records the same starting map and spawn tile for the editor's own use, plus things a player never sees: the template the project came from, which gameplay systems are enabled, the platform game id, branding paths, export options, and the machine-specific server and client checkouts.

The layout of both files is documented in Project structure. This page is about the places in the editor where you change them.

There is no single "game config" screen. The settings are spread across the surfaces where they make sense:

WhatWhere it is editedLands in
Title, description, developer, website, genre, tagsNew Project page (Basics and Presentation steps); afterwards the Creator Dashboard or the update_game_config MCP toolgame_config.json
Game logo / iconNew Project page (Basics step)assets/branding/game_icon.<ext>, project.vastopia [branding]
Starting map, spawn tileGame Settings tabgame_config.json and project.vastopia [game]
Server and client checkouts for Dev TestGame Settings tabproject.vastopia [server] / [client] only
Tab bar layoutNew Project page (Tabs step); afterwards the GUI editor's Game Screen modeassets/data/tab_config.json
HUD stat barsNew Project page (Presentation step); afterwards the GUI editor's Game Screen modeassets/data/map_area_config.json
Gameplay systemsNew Project page (Systems step)project.vastopia [systems], server/data/systems.json
Max world size, new-map defaultsSettings ▸ Project Settings..., Project tabproject.vastopia [world] / [map_defaults]

The Game Settings tab#

Game Settings is a button in the top bar of the main window. It is also the screen the project hub opens when you choose Open Game Settings from a project card's menu. Every change on it is saved the moment you make it; the footer reads "Changes are saved automatically." and flips to "Saved" after each write.

World#

FieldWhat it does
Starting mapThe map players spawn into when they join the game. The dropdown lists every directory under assets/maps/ that contains a <name>_region.tscn scene. Click Refresh after creating a map in another tab to see it here. If the project has no maps the dropdown is disabled and reads "No maps found".
Spawn X (tile)Player spawn tile on the X axis. Maps are centred on 0, and the standard playable area is tiles -64 to 63. The spinner accepts -1024 to 1024.
Spawn Z (tile)Player spawn tile on the Z axis. Same range.

Selecting a map writes its name (just the folder name, not a path) to starting_map in game_config.json and to [game] starting_map in project.vastopia. Changing a spinner writes start_x and start_z to both files in the same way. game_config.json is treated as the authoritative copy; the project.vastopia values are a mirror the editor uses itself, for example to pick which map's thumbnail to show on the project card in the hub.

To set where players start:

  1. Click Game Settings in the top bar.
  2. Under World, choose the map in Starting map. If you just created the map, click Refresh first.
  3. Set Spawn X (tile) and Spawn Z (tile) to the tile the player should appear on. Use the Map Editor's Regions mode to read tile coordinates off the grid (see Regions and elements).
  4. Confirm the footer says "Saved". No separate save step is needed.

Development#

The Development section holds two folder paths used by Dev Test and Play Local (see Test your game):

FieldWhat it expects
Server project pathThe folder containing RealmServer.csproj. Dev Test builds and runs the local server from here.
Client project pathThe folder containing the client's project.godot. Optional; auto-detected next to the server repo when empty.

Each has a Browse... button, and a hint line under the server path tells you whether the folder checks out: "Server project found", "Folder not found: ...", "RealmServer.csproj not found here — point at the Server/ folder of the server repo", or "Not set — Dev Test can't launch the local server without it."

These two paths describe your machine, not your game. They are stored only in project.vastopia ([server] project_path and [client] project_path), never in game_config.json, and they are re-stamped with the local checkouts whenever a project is created or downloaded from the cloud. New projects are pre-filled from the editor-wide defaults under Settings ▸ Editor ▸ Source Checkouts, which auto-detect a sibling checkout the first time.

Identity and store listing#

The text a player reads about your game is set on the New Project page and shipped in game_config.json:

  • Basics step: the game name becomes title. A logo chosen here is copied to assets/branding/game_icon.<ext> and recorded as [branding] icon_path in project.vastopia (with icon_cdn_url left empty until it is uploaded).
  • Presentation step, Store Listing card: a description ("What is your game about?"), a Genre dropdown (Adventure, RPG, MMO, Survival, Sandbox, Action, Puzzle, Social, Other), Tags (comma separated), Developer and Website. These land in description, genre, tags (as an array), developer and website. version keeps the template's 1.0.0.

After the project exists, the platform listing players browse is edited in the Creator Dashboard, which also covers cover art, screenshots and the loading screen: Game details and branding. The file in the project is edited with the update_game_config MCP tool or by hand.

Tabs and HUD#

The in-game tab bar and the HUD's stat orbs are game configuration too, but they are authored visually:

  • The Tabs step of the New Project page lays out the two rows of tabs and their per-row width and spacing, written to assets/data/tab_config.json. Tabs belonging to a gameplay system you switch off are removed from the file; the inventory, equipment and skills tabs are built into the client and always stay. See Tabs.
  • The Presentation step's HUD Stat Bars card picks which orbs sit beside the minimap: Health, Stamina, Mana and Energy, with Health and Stamina on by default. The choice is written as progress_bars in assets/data/map_area_config.json, leaving the template's bottom buttons alone. See Game screen and HUD.

Both can be changed later in the GUI editor's Game Screen mode, which edits the same two files.

Gameplay Systems#

Which gameplay systems a project ships is decided on the Systems step of the New Project page and applied while the template is copied: the files of a system you left off are never in the new project. The editor has no screen for revisiting that choice afterwards. The result is recorded in project.vastopia [systems] enabled and in server/data/systems.json, which is what stops a game server running a module the project no longer carries. The full list of systems, what each owns, and the server-enforced ones are on Templates and gameplay systems.

Project settings#

Settings ▸ Project Settings... opens the editor's settings dialog on its Project tab (the same dialog also holds the Editor and Keybinds tabs). With no project open the tab only says "Open a project to edit project settings." Otherwise it has three sections:

SectionSettingDetails
WorldMax world sizeLargest map footprint per side, in world units (1 unit = 2 tiles). 0 = unlimited. Steps of 64 up to 32768. Maps exceeding this show a warning when saved. Stored as [world] max_world_size.
New Map DefaultsTerrain typePreselected terrain when creating a new map: Empty, Flat Grass, Hills, Mountains, Desert, Islands. Stored as [map_defaults] terrain_type.
Lighting themePreselected lighting for new maps: Daylight, Sunset, Night, Overcast, Dawn. Stored as [map_defaults] lighting_theme.
ProjectName, Version, Platform game ID, LocationRead-only. The game id shows "Not linked" when [platform] game_id is empty.

Changes here apply immediately, the same as the Game Settings tab.

Reference: what lands where#

game_config.json#

KeyTypeWritten by
titlestringNew Project page (the game name)
description, developer, website, genrestringNew Project page, Presentation step
tagsarray of stringsNew Project page, Presentation step
versionstringTemplate default 1.0.0; update_game_config can change it
starting_mapstring (map folder name)Game Settings tab, set_starting_map
start_x, start_zintegerGame Settings tab

project.vastopia#

SectionKeyWritten by
[game]titleProject creation
starting_map, start_x, start_zGame Settings tab (mirror of game_config.json)
[project]template_id, template_versionProject creation
[systems]enabledProject creation
[branding]icon_path, icon_cdn_urlNew Project page logo
[server], [client]project_pathGame Settings tab, or auto-stamped from Settings ▸ Editor ▸ Source Checkouts
[world]max_world_sizeProject tab of the settings dialog
[map_defaults]terrain_type, lighting_themeProject tab of the settings dialog
[export]pack_only_used_modelsDefaults to true; see Project structure
[platform]game_idGenerated at creation; re-stamped on cloud download

With AI (MCP)#

  • update_game_config - edit title, description, version, developer, website or starting_map in game_config.json; only the fields you pass change, and dryRun previews the diff.
  • set_starting_map - set the starting map, validating that it exists and syncing project.vastopia [game] starting_map with game_config.json.
  • get_project_config - read every section of project.vastopia.
  • set_project_paths - change [paths] entries (maps_dir, data_dir, interface_dir, ui_dir) without touching the rest of the file.
Spotted a mistake or something missing?Tell us on Discord