Godwright mods are plain INI files and PNG sprites. The game does not load Lua, DLLs, executables, or native plugins from mods.
Quick start
Open Godwright's install directory from Steam using Manage, then Browse local files. Create mods/my_first_mod/ beside the game executable and add this required file:
[mod]
name = My First Mod
author = Your Name
version = 1.0.0
enabled = true- Create the folder. The folder name controls local load order.
- Add content. Start with a power, stat override, or sprite.
- Restart Godwright. Mods are loaded once during startup.
- Check Mods. Your name and version should say Active this launch.
Use any plain-text editor. For pixel art, Aseprite, LibreSprite, GIMP, and similar PNG editors all work. Keep filenames lowercase and use forward slashes in INI paths.
Package layout
Only mod.ini is required. A local mod and a Workshop upload use the exact same content-root layout. Do not put the files inside an extra nested folder.
my_first_mod/
├── mod.ini
├── entities.ini optional stat overrides
├── simulation.ini optional world tuning
├── buildings/ optional building definitions
│ └── crystal_spire.ini
├── powers/ optional power definitions
│ └── verdant_pulse.ini
└── sprites/ optional PNG replacements
├── buildings/
│ └── crystal_spire.png
└── icons/tools/
└── verdant_pulse.pngLocal orderAlphabetical by folder name
Workshop orderNumeric Published File ID
Conflict ruleLater definitions and assets win
INI sections, keys, and enum values are case-insensitive. Use # or; for comments. Unknown keys and malformed lines are skipped, so watch the startup log when testing.
Custom powers
Add one lowercase .ini file per power under powers/. IDs are stored as bytes; use stable IDs from 200 through 255 and never renumber a published power. Check other required mods for collisions.
[power]
id = 200
name = Verdant Pulse
group = Nature
icon = assets/icons/tools/verdant_pulse.png
builtin =
radius = 12
ent_damage = -50
fire_add = 0
tile_set =
elevation_add = 0
moisture_add = 0.30
spawn_entity =
spawn_count = 0
spawn_on_water = false
shake = 2
particles = sparkle
sound = healPower field reference
| Field | Accepted value |
|---|---|
id | Required integer, 1–255; use 200–255 for mods |
name | Up to 47 characters |
group | Toolbar sorting label, up to 31 characters |
icon | Relative asset path; 24×24 PNG recommended |
builtin | Engine effect token, or empty for parametric effects |
radius | 0–64 tiles |
ent_damage | -1000–1000; negative values heal |
fire_add | 0–255 ignition strength |
tile_set | Terrain token, or empty |
elevation_add | -1 through 1 |
moisture_add | -1 through 1 |
spawn_entity | Entity name, or empty |
spawn_count | 0–32 |
spawn_on_water | true or false |
shake | 0–10 |
particles | none, explosion, smoke, sparkle, debris |
sound | Supported sound token, or empty |
Builtins, terrain, and sound tokens
Builtins
bomb nuke meteor earthquake tornado lightning plague acid_rain tsar_bomba black_hole volcano flood blizzard divine_smite firestorm maelstrom petrify soul_storm raise_ridge sink_land part_sea
Terrain
deep_water shallow_water water ice sand desert grass savanna forest jungle swamp tundra dirt stone mountain snow lava
Sounds
click place spawn combat_hit death build disaster event_chime chop hammer wolf_howl musket cannon jet_pass age_fanfare save_chime ship_bell explosion fire ice storm earth water bio holy summon chaos heal
Pixel art and asset overrides
Mirror a game asset's path beneath your mod's sprites/ directory. In definitions, always reference the portable assets/... path. This works both locally and after Steam installs the Workshop item under its numeric ID.
Definition path:
icon = assets/icons/tools/verdant_pulse.png
File in your mod:
sprites/icons/tools/verdant_pulse.png
Other examples:
sprites/buildings/house.png
sprites/sprites/human/walk_down_0.png
sprites/menu/logo_godwright.png- Use transparent PNGs for isolated icons and sprites.
- Power icons should be 24×24 pixels for a direct 1:1 toolbar fit.
- Match the original canvas and frame dimensions when replacing animation art.
- Animated buildings use equal-width frames in one horizontal strip.
- Keep artwork pixel-aligned and disable antialiasing.
- Never use absolute paths or
..segments inside definitions.
Entity overrides
Add entities.ini at the mod root. Each section changes one entity type; omitted fields keep their normal values.
[Dragon]
max_health = 2800
attack_damage = 65
color_r = 166
color_g = 104
color_b = 255Entity fields and valid sections
Fields
max_health speed attack_damage attack_range attack_cooldown size color_r color_g color_b aggressive hunt_radius hunts_humanlike
Sections
Human Elf Orc Dwarf Cow Chicken Sheep Wolf Bear Deer Bandit Dragon Kraken Tank Jet Car Fishing Boat Trade Ship Warship Settler Ship Zombie Skeleton Necromancer Horse Fish School Griffon Troll Giant Spider Sea Serpent Boar Fox Rabbit Shark Dolphin
Saved entities preserve health, maximum health, damage, and size. Test changed combat stats with newly spawned entities or a fresh world.
Simulation tuning
Add simulation.ini at the mod root to tune global world behavior. Later mods replace earlier values.
[simulation]
day_length = 180
veg_growth_mult = 1.20
tree_spread_mult = 1.10
disaster_damage_mult = 1.10| Key | Range | Vanilla |
|---|---|---|
day_length | 5–36000 | 120 |
veg_growth_mult | 0–10 | 1.0 |
tree_spread_mult | 0–10 | 1.0 |
fire_spread_mult | 0–10 | 1.0 |
fire_burn_intensity | 1–255 | 120 |
water_evap_chance | 0–100 | 2.0 |
water_flow_pct | 0–100 | 15 |
lava_cool_mult | 0.1–10 | 1.0 |
erosion_mult | 0–10 | 1.0 |
disaster_damage_mult | 0–10 | 1.0 |
Building definitions
Add one lowercase .ini file per definition under buildings/. Reusing a base-game ID changes that building. A new stable ID should use the 200–255 range.
[building]
id = 200
name = Crystal Spire
category = civic
sprite = assets/buildings/crystal_spire.png
anim_frames = 1
anim_fps = 6
cost_wood = 5
cost_stone = 20
cost_metal = 0
tier = 0
race = any
light_radius = 6
walkable = false
min_age = 0
race_variants = falseA new building ID can render and survive saves, but it does not automatically appear in the fixed Build tab or gain custom AI behavior. Override an existing building ID when you need its established placement and simulation behavior.
Building field reference
| Field | Accepted value |
|---|---|
id | Required integer, 1–255 |
name | Up to 47 characters |
category | misc, house, well, civic, infra, node, hall, nature |
sprite | Portable relative asset path |
anim_frames | 1–32 horizontal frames |
anim_fps | 0.1–60 |
cost_wood/stone/metal | 0–100000 |
tier | 0–9 |
race | any, human, elf, orc, dwarf |
light_radius | 0–32 tiles |
walkable | true or false |
min_age | 0–7, Stone through Future |
race_variants | true or false |
Test locally
- Set
enabled = trueinmod.ini. - Place the folder under the installed game's
mods/directory. - Launch Godwright and open Mods from the main menu.
- Confirm the mod says Active this launch.
- Start a fresh world and test every changed power, entity, building, and sprite.
- Quit completely before changing files; restart to reload them.
On Windows, the default install is usually under C:\Program Files (x86)\Steam\steamapps\common\Godwright\. On Linux, it is usually under ~/.local/share/Steam/steamapps/common/Godwright/. Use Steam's Browse local files action if your library is elsewhere.
Publish to Steam Workshop
Install Valve's SteamCMD, then create an upload VDF outside your mod's content folder. Use absolute paths. The contentfolder must point directly to the folder containing mod.ini.
"workshopitem"
{
"appid" "4884560"
"publishedfileid" "0"
"contentfolder" "C:\GodwrightMods\my_first_mod"
"previewfile" "C:\GodwrightMods\preview.png"
"visibility" "0"
"title" "My First Mod"
"description" "A short, clear description of the mod."
"changenote" "Initial release."
}Run SteamCMD from a terminal:
steamcmd +login "YOUR_STEAM_USERNAME" +workshop_build_item "C:\GodwrightMods\item.vdf" +quit- Approve the Steam Guard sign-in when prompted.
- Wait for
Success. SteamCMD writes a Published File ID into the VDF. - Never reset that ID to zero after the first successful creation.
- Open the new item page and accept the Workshop legal agreement if requested.
- Add screenshots, compatibility notes, and clear usage instructions.
- Subscribe, restart Godwright, and test the Steam-installed copy before announcing it.
Visibility values are 0 public, 1 friends-only, 2 private, and 3 unlisted. Start private while testing if you do not want an unfinished item visible.
Update a published mod
- Change your files and increment
versioninmod.ini. - Test the updated folder locally, including an existing save.
- Update
changenotein the VDF. - Run the same SteamCMD command with the existing Published File ID.
- Wait for Steam to download the update, then restart Godwright and verify it.
Never reuse a published building or power ID for unrelated content. IDs are stable identities and may be stored in player saves.
Troubleshooting
The mod does not appear
Confirm mod.ini is directly at the mod root, enabled = true, and the game was fully restarted.
The icon or sprite is missing
Use an assets/... path in the definition and mirror it beneath sprites/. Check spelling and filename case.
My Workshop item has an extra folder
Point contentfolder at the directory containing mod.ini, not its parent.
SteamCMD created an item, then failed
Keep the Published File ID SteamCMD wrote into your VDF. Fix the reported issue and retry, or you may create a duplicate item.
Two mods change the same content
Later mods win. Local folders load alphabetically; Workshop items load afterward by numeric Published File ID.
Build boldly. Test carefully.
Include your mod folder structure, relevant INI file, and startup log when asking for help. We can diagnose most issues quickly.
Contact support