ALPHA version - expect chaos
Documentation of configuration files on desktop
Updated Thu, 28 Sep 2017 17:56:47 +0100 by Wuzzy

Configuration files


This documents the structure and content of the configuration (.ini) files found in the desktop version of Hedgewars.



Graphics rendering settings, back-end (engine)

Setting Type Description
fullscreenResolution=1280x768 String Screen resolution the game is rendered when using fullscreen mode
windowedWidth=1280 Integer Window width when using window mode
windowedHeight=1024 Integer Window height when using window mode
fullscreen=false Boolean If the game is rendered in fullscreen
quality=5 Integer Quality of game rendering (0-5, 5 is best quality)
stereo=0 Integer Mode of stereoscopic 3D rendering, 0 being no 3D


Graphics and sound settings, front-end (GUI)

Setting Type Description
roomslist_header ??? ???
roomslist_splitter ??? ???
effects=true Boolean If game effects are displayed
fullscreen=false Boolean If the game is in fullscreen-mode, instead of windowed-mode
width=800 Integer Width of the game window
height=600 Integer Height of the game window
sound=true Boolean If sounds are being played in the frontend
music=true Boolean If background music is being played in the frontend


Miscellaneous settings

Setting Type Description
weaponTooltips=true Boolean If tooltips should be shown in the ammo menu
altdamage=false Boolean If damage pop-ups should be shown on every shot, instead of only at the end of a round
appendTimeToRecords=false Boolean If date and time should be appended to the file name when demo records are saved
locale=en_US String Language used in game in the format "ISO 639-1 Code underscore ISO 3166-1 alpha-2 Code", or system default if left blank
teamtag Boolean Whether to show the team name above hedgehogs by default
hogtag Boolean Whether to show the hog name above hedgehogs by default
healthtag Boolean Whether to show the health above hedgehogs by default
tagopacity Boolean If true, name and health tags above hedgehogs are translucent


Sound settings for the sounds and music in the game itself

Setting Type Description
sound=true Boolean If sound effects should be played in-game
music=true Boolean If background music should be played in-game
volume=100 Integer Volume level (in percent) of sound effects and music


Online and LAN settings

Setting Type Description
nick=username String Username/nickname used for online play, or promt the user when first connecting if left blank
passwordhash=d41d8cd98f00b204e9800998ecf8427e String Hash of password used for online play
passwordlength=0 Integer Currently unused
savepassword=true Boolean If true, password will be saved
ip= String Default IP address or hostname when connecting to a LAN server
port=46631 Integer Default port number when connecting to a LAN server
servername=hedgewars server String Default name when creating a LAN server
serverport=46631 Integer Default port number when creating a LAN server


Frames per second settings

Setting Type Description
show=false Boolean If the number of frames rendered per second should be shown in-game
limit=27 Integer Maximum number of frames rendered per second, calculated as 1000 / (35 - limit)


Proxy settings

Setting Type Description
type=0 Integer Proxy type. 0: no proxy, 1: system proxy, 2: SOCKS5 proxy, 3: HTTP proxy. The following settings are ignored if the proxy type is 0 or 1.
host String Hostname or IP adress of proxy
port Integer Port number of proxy
login String User name to login to the proxy
password String Password (in clear text) to login to the proxy


Video recording settings

Setting Type Description
format=mp4 String Container format (the file format of the resulting file)
videocodec String Video codec
audiocodec String Audio codec
framerate Integer Frame rate in frames per second
bitrate Integer The bit rate in 1000 bytes per second
width Integer Video width
height Integer Video height
usegameres Boolean If true, use the game resolution and ignore the width and height settings
audio Boolean Whether to use audio


Setup 9 team colors here, the setting names are from color0 to color8 . The values are 3-byte hexadecimal numbers in RGB notation with “#” prefixed.

Setting Default
color0 #ff0204
color1 #4980c1
color2 #1de6ba
color3 #b541ef
color4 #e55bb0
color5 #20bf00
color6 #fe8b0e
color7 #874b06
color8 #ffff01


This section defines the global key bindings. They can be overwritten by teams.

Each key binding is written in the form action=keycode , e.g. “ ammomenu=b ” for opening the ammo menu with the B key.


Setting Description
%2Bup Up
%2Bleft Left
%2Bright Right
%2Bdown Down
%2Bprecise Precise
ljump Long jump
hjump High jump
switch Switch hog
ammomenu Ammo menu
slot%201 Slot 1
slot%202 Slot 2
slot%203 Slot 3
slot%204 Slot 4
slot%205 Slot 5
slot%206 Slot 6
slot%207 Slot 7
slot%208 Slot 8
slot%209 Slot 9
slot%20%3A Slot 10
timer%201 Timer: 1 second
timer%202 Timer: 2 seconds
timer%203 Timer: 3 seconds
timer%204 Timer: 4 seconds
timer%205 Timer: 5 seconds
%2Battack Attack
put Place hedgehog or select target
findhh Automatic camera / find hedgehog
%2Bcur_u Move camera or cursor up
%2Bcur_l Move camera or cursor left
%2Bcur_r Move camera or cursor right
%2Bcur_d Move camera or cursor down
zoomin Zoom in
zoomout Zoom out
zoomreset Reset zoom
chat Open chat input
history Toggle chat history
pause Toggle pause
quit Quit
confirm Confirm
%2Bvoldown Raise volume
%2Bvolup Lower volume
mute Mute
fullscr Toggle window mode (window/fullscreen)
capture Take screenshot
%2Bspeedup Increase demo replay speed
rotmask Toggle team bars
record Record video

Key codes

Keyboard names are based on the SDL scancode.

The key name is constructed as follows:

  • Take the name from the “Key Name” column of the aforementioned webpage
  • Convert it to lower-case
  • Replace spaces with underscores


Code Description
a A
f1 F1
shift_left Left shift key
space Space bar
tab Tabulator

The codes for the mouse are as follows:

Code Description
mousel Left mouse button
mousem Middle mouse button
mouser Right mouse button
wheelup Mouse wheel up
wheeldown Mouse wheel down

Controllers, gamepads and joysticks are written in a somewhat cryptic syntax.


Syntax: jJbB

  • J : Controller ID beginning with 0
  • A : Button ID beginning with 0


Code Description
j0b0 First controller, first button
j0b1 First controller, second button
j1b2 Second controller, third button


Syntax: jJaAD

  • J : Controller ID beginning with 0
  • A : Axis
  • D : Axis direction. One of the following letters:
    • u : positive (“up”)
    • d : negative (“down”)


Code Description
j0a0u First controller, first axis up
j0a1d First controller, second axis down
j1a1d Second controller, second axis down


Syntax: jJhHD

  • J : Controller ID beginning with 0
  • A : D-pad ID
  • D : Direction, it is one of 4 letters:
    • u : up
    • r : right
    • d : down
    • l : left


Code Description
j0h0u First controller, first D-pad up
j0h1l First controller, second D-pad left
j1h1r Second controller, second D-pad right



List of weapon settings as key-value pairs, each with a string name and integer value

Setting Type Description
Default=93919...11101 Integer Which weapons are allowed in the default mode



List of custom scheme settings as key-value pairs, each with a key of "index number of scheme backslash setting name"

Setting Type Description
size=1 Integer Number of custom scheme settings
1\name=new String Name of scheme
1\fortsmode=false Boolean If forts are enabled
1\divteams=false Boolean If teams start at the opposite side of the terrain
1\solidland=false Boolean If land is indestructible
1\border=false Boolean If an insestructible border is added around the map
1\lowgrav=false Boolean If gravity is lowered
1\laser=false Boolean If aiming is assisted with laser sights
1\invulnerability=false Boolean If hogs have a personal forcefield
1\resethealth=false Boolean If living hogs' health is reset to 100 at end of round
1\vampiric=false Boolean If hogs gain life equal to 80 percent of the damage they deal
1\karma=false Boolean If hogs lose life equal to the damage they deal
1\artillery=false Boolean If hogs are unable to move
1\randomorder=true Boolean If turn order is generated randomly
1\king=false Boolean If a chess-like king is used
1\placehog=false Boolean If players take turns placing their hogs before the start of a game
1\sharedammo=false Boolean If ammo is shared between all teams of the same color
1\disablegirders=false Boolean If girders are removed from randomly-generated maps
1\disablelandobjects=false Boolean If land objects are removed from randomly-generated maps
1\aisurvival=false Boolean If AI hogs respawn on death
1\infattack=false Boolean If hogs can attack an unlimited number of times each turn
1\resetweps=false Boolean If weapons are reset at end of each turn
1\perhogammo=false Boolean If each hog has seperate ammo
1\disablewind=false Boolean If wind is disabled
1\morewind=false Boolean If wind is much stronger then usually
1\tagteam=false Boolean If players in a team share time on each turn
1\bottomborder=false Boolean If an indestructible border is added at the bottom of the map
1\damagefactor=100 Integer Percentage of damage dealt
1\turntime=45 Integer Maximum time in seconds of each turn
1\health=100 Integer The initial health of the hogs
1\suddendeath=15 Integer Turns before "Sudden Death" mode begins
1\caseprobability=5 Integer Number of turns between cases drops
1\minestime=3 Integer Seconds before mines explode
1\minesnum=4 Integer Number of mines on a level
1\minedudpct=0 Integer Percentage chance of each mine being a dud
1\explosives=2 Integer Number of explosives on a level
1\healthprobability=35 Integer Percentage chance of each crate being a health crate
1\healthcaseamount=25 Integer Amount of life restored by each health crate
1\waterrise=47 Integer Number of pixels the water rises each turn in "Sudden Death" mode
1\healthdecrease=5 Integer Damage dealth each turn to hogs in water during "Sudden Death" mode
1\ropepct=100 Integer Maximum length of rope as a percentage
1\getawaytime=100 Integer Time you have to get away from an explosive after arming it, as a percentage
1\worldedge=0 Integer Type of world edges at the left and right side. 0 for no edge (default), 1 for wrap-around, 2 for bouncy edges, 3 for ocean.
1\scriptparam="" String 0.9.21: Script parameter, this is read by scripts. Can have any arbitrary srting value, the meaning of this value depends on the script used.


These files are found in the Teams directory and contain the team settings, one file per team.


General team settings

Setting Type Description
Name=TeamName String Name of team
Grave=Statue String Type of grave created when hog dies
Fort=Plane String Type of fort if Forts Mode is enabled
Voicepack=Default String Sounds used for hog voice
Flag=hedgewars String Name of flag (flag file name without suffix). This is ignored for AI teams; their flags will always be based on their difficulty level
Difficulty=0 Integer Diffuculty of AI (1-5, 1 = most difficult), or human if 0
Rounds=0 Integer Number of rounds played with team (Currently unused)
Wins=0 Integer Number of rounds won with team (Currently unused)
CampaignProgress=0 Integer Campain progress using team as a percentage (Currently unused)

[Hedgehog0] - [Hedgehog7]

8 sections, one per hedgehog of the team

Setting Type Description
Name=Hedgehog Name String Name of hog
Hat=NoHat String Type of hat used by hog
Rounds=0 Integer Number of rounds played with hog (Currently unused)
Kills=0 Integer Kills comitted by hog (Currently unused)
Deaths=0 Integer Deaths experienced by hog (Currently unused)
Suicides=0 Integer Suicides comitted by hog (Currently unused)


Key bindings of the team. Teams can optionally overwrite the global key bindings or leave everything at default.

This section follows the same format as in settings.ini , with one addition: The key code default is used for using the default (global) key binding.


The special value “ default ” is for the default keybinding as specified in the game preferences.

Regarding other keys: See Binds? of settings.ini.


This section stores campaign variables which are stored and read by Lua scripts. Replace “ <CAMPAIGN_NAME> with the folder name of the campaign. Example: The section for “A Classic Fairytale” would be “ [Campaign%20A_Classic_Fairytale] ”.

Campaign variables are stored on a key-value basis, where the key is the name of the campaign variable and the value is the value of the campaign variable.

Campaign variable names and their values can are chosen by the Lua script authors, but there are some special variables which are used to determine which missions are available in the main menu, and since 0.9.23, also to determine which missions and campaigns have been completed.

For linear campaigns, the variables Progress and Won are used. For non-linear campaigns, the variables UnlockedMissions , MissionX , MissionXWon and Won are used. The variables should not be mixed up.

Since Hedgewars 0.9.23, completed missions and campaigns get a check mark in the campaign screen.

Setting Type Description
Progress Integer Since version 0.9.23, this variable stands for the number of completed missions in a linear campaign, starting with mission 1. For each completed mission, the next one gets unlocked. Previous versions have a slightly trickier definition: If present, this number of missions additional to the first mission are unlocked in the menu, starting with the second mission and continuing with the following missions in their regular order (as specified in campaign.ini ). If the number is 0 , only the first mission is available.
UnlockedMissions Integer This number specifies how many missions are unlocked. If this variable is set, then the variables Mission1 , Mission2 , etc. must be used to specfify the IDs of the unlocked missions.
MissionX Integer E.g. Mission1 , Mission2 , etc. Contains the campaign.ini ID of the X th unlocked mission, must be used together with UnlockedMissions
MissionXWon Boolean Since 0.9.23. E.g. Mission1Won , Mission2Won , etc. If true , the mission with the number X in campaign.ini has been completed.
Won Boolean Since 0.9.23. If true , the team has completed the campaign. Note that campaign victory is completely seperate from mission victory, so this setting must be set seperately.

By default, the first mission (Mission 1 in campaign.ini ) is available.


Simple campaign with 10 missions, missions 1-5 are available and missions 1-4 count as completed:

[Campaign%20Simple_Campaign] Progress=4

Simple 0.9.23 campaign with 6 missions. This campaign and all its missions have been unlocked and completed:

[Campaign%20Simple_Campaign_2] Progress=6 Won=true

Complex campaign with 13 missions, missions 2, 7 and 3 are available (in that order): [Campaign%20Complex_Campaign] UnlockedMissions=3 Mission1=2 Mission2=7 Mission3=3

Another campaign with some custom campaign variables: [Campaign%20Another_Campaign] Progress=2 MyCustomVariable=54 MyCustomString=Hedgewars