v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Editing v0.31:Modding guide

Jump to navigation Jump to search

Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.

You are editing a page for an older version of Dwarf Fortress ("Main" is the current version, not "v0.31"). Please make sure you intend to do this. If you are here by mistake, see the current page instead.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 7: Line 7:
 
This guide is based on a guide originally created for version 0.27.176.39c (originally put to type by one Teldin; page found [[40d:Modding guide|here]]) and has later been rewritten for 0.31.xx.xx by a few different authors, as per wiki tradition.
 
This guide is based on a guide originally created for version 0.27.176.39c (originally put to type by one Teldin; page found [[40d:Modding guide|here]]) and has later been rewritten for 0.31.xx.xx by a few different authors, as per wiki tradition.
  
'''See also:''' [[:Category:v0.31:Modding]]
+
'''See also:''' [[:Category:DF2010:Modding]]
  
 
= Modding Guide =
 
= Modding Guide =
Line 13: Line 13:
 
== Basics of DF modding ==
 
== Basics of DF modding ==
  
All the base data that can be edited by prospective modders can be found in the \raw\ folder. This folder contains two subfolders: "graphics" (where you insert [[Graphics set repository|graphics sets]]), and "objects", which contains all the data for generally everything in the game that is not hardcoded.
+
All the base data that can be edited by prospective modders can be found in the \raw\ folder. This folder contains two subfolders: "graphics" (where you insert {{L|Graphics set repository|graphics sets}}), and "objects", which contains all the data for generally everything in the game that is not hardcoded (randomly created creatures aside).
  
Within the \raw\objects folder are a large number of text files - these are the [[raw file|raw files]], and editing them is quite easy - you can also create your own if you wish. For now, take a look at one of the existing files. It should look something like this:
+
Within the \raw\objects folder are a large number of text files - these are the {{L|raw file|raw files}}, and editing them is quite easy - you can also create your own if you wish. For now, take a look at one of the existing files. It should look something like this:
  
 
  creature_standard
 
  creature_standard
Line 29: Line 29:
 
  ...
 
  ...
  
As you can see, each file comprises a header string stating the file name, a second header stating the type of object data it contains, followed by the contents of the file itself. These are all necessary elements of the file, and without them, the file won't be parsed correctly by the game. You may have also noticed the file naming scheme - this is also important; files containing creatures have names starting with "creature_", entity file names must begin with "entity_", etc..
+
As you can see, each file is comprised of a header string stating the file name, a second header stating the type of object data it contains, followed by the contents of the file itself. These are all necessary elements of the file, and without them, the file won't be parsed correctly by the game. You may have also noticed the file naming scheme - this is also important; files containing creatures have names starting with "creature_", entity file names must begin with "entity_", etc..
  
 
Below the headers, there begins a list of entries. Each entry is made up of its own header (in this case, "[CREATURE:DWARF]"), again stating the type of object, and then the object's unique identifier - if an indentifier isn't unique, the game will mess up and you'll get some serious, and potentially very trippy, errors. Below that, we have the body of the entry, which determines the entry's specific properties.
 
Below the headers, there begins a list of entries. Each entry is made up of its own header (in this case, "[CREATURE:DWARF]"), again stating the type of object, and then the object's unique identifier - if an indentifier isn't unique, the game will mess up and you'll get some serious, and potentially very trippy, errors. Below that, we have the body of the entry, which determines the entry's specific properties.
Line 76: Line 76:
 
This holds true for a lot of values throughout the files, excluding when it simply doesn't make sense, such as in materials.
 
This holds true for a lot of values throughout the files, excluding when it simply doesn't make sense, such as in materials.
  
You can find many details about the rest of the civilization tokens [[entity token|here]]. Besides those mentioned, some fundamental ones are the CIV_CONTROLLABLE token, which lets you control the civ in fortress mode, the INDIV_CONTROLLABLE token, which allows you to play the civ in adventure mode as an outsider, and the ADVENTURE_TIER token, which allows you to play a civ native (non-outsider) in adventure mode. Other tokens that you should pay attention to are START_BIOME and the ones regarding sites, but in general, you can just run through the aformentioned list and add or remove what you want.
+
You can find many details about the rest of the civilization tokens {{L|entity token|here}}. Besides those mentioned, some fundamental ones are the CIV_CONTROLLABLE token, which lets you control the civ in fortress mode, the INDIV_CONTROLLABLE token, which allows you to play the civ in adventure mode as an outsider, and the ADVENTURE_TIER token, which allows you to play a civ native (non-outsider) in adventure mode. Other tokens that you should pay attention to are START_BIOME and the ones regarding sites, but in general, you can just run through the aformentioned list and add or remove what you want.
  
 
If you have more than one civ with the CIV_CONTROLLABLE token, all the available civs from those entities will appear in the group selection section on the embark screen. It may not be immediately obvious from which species each civ may be - while this can be determined from legends mode, the topmost species in the "neighbors" display in the embark screen is always the same as the currently selected species; if your group is dwarven, dwarves will be topmost, whilst (say) elves will be topmost if your chosen group is elven. By default, the game seems to choose a civ (and therefore a species if there is more than one) at random.
 
If you have more than one civ with the CIV_CONTROLLABLE token, all the available civs from those entities will appear in the group selection section on the embark screen. It may not be immediately obvious from which species each civ may be - while this can be determined from legends mode, the topmost species in the "neighbors" display in the embark screen is always the same as the currently selected species; if your group is dwarven, dwarves will be topmost, whilst (say) elves will be topmost if your chosen group is elven. By default, the game seems to choose a civ (and therefore a species if there is more than one) at random.
Line 115: Line 115:
 
An easy method of creating a civilization is just to copy-paste a similar one to the bottom of the entity_default.txt file and edit things to your liking. Remember to always change the civ's "ENTITY:" identifier! This can be anything so long as it's not already existing.
 
An easy method of creating a civilization is just to copy-paste a similar one to the bottom of the entity_default.txt file and edit things to your liking. Remember to always change the civ's "ENTITY:" identifier! This can be anything so long as it's not already existing.
  
At the end of some of the default entries you'll find a list of positions, both ones that'll directly affect you in fort mode (such as nobles) and ones that'll primarily affect worldgen and adventure mode. A list of the tokens applicable to positions can be found [[position token|here]]; they don't require a great deal of explaination.
+
At the end of some of the default entries you'll find a list of positions, both ones that'll directly affect you in fort mode (such as nobles) and ones that'll primarily affect worldgen and adventure mode. A list of the tokens applicable to positions can be found {{L|position token|here}}; they don't require a great deal of explaination.
  
 
== Modding the creatures ==
 
== Modding the creatures ==
Line 121: Line 121:
 
Creature modding is great fun. You can change nearly any aspect of a creature or make your own completely from scratch.
 
Creature modding is great fun. You can change nearly any aspect of a creature or make your own completely from scratch.
  
Modding creatures is very similar to modding civs: it's just a matter of editing, adding, or removing tokens, enclosed in square brackets underneath the creature's [CREATURE:] header. The creature entries contain all of the information about each and every non-random creature in the game, from animals to dwarves to goblins to even caravan wagons. A lot of the creature tokens are fairly self-explanatory; you can find a list of such tokens [[creature token|here]]. But before you start creating your own creatures, you'll want to learn how the tissues system works.
+
Modding creatures is very similar to modding civs: it's just a matter of editing, adding, or removing tokens, enclosed in square brackets underneath the creature's [CREATURE:] header. The creature entries contain all of the information about each and every non-random creature in the game, from animals to dwarves to goblins to even caravan wagons. A lot of the creature tokens are fairly self-explanatory; you can find a list of such tokens {{L|creature token|here}}. But before you start creating your own creatures, you'll want to learn how the tissues system works.
  
 
=== Creature materials and tissues ===
 
=== Creature materials and tissues ===
Line 273: Line 273:
 
     ...
 
     ...
  
Note that this makes use of DF's built-in temperature scale. You can read more about that [[temperature scale|on this page]]. We're also referencing material tokens, which we haven't gone over yet - we'll talk about making your own materials later.
+
Note that this makes use of DF's built-in temperature scale. You can read more about that {{L|temperature scale|on this page}}. We're also referencing material tokens, which we haven't gone over yet - we'll talk about making your own materials later.
  
 
=== Creature castes ===
 
=== Creature castes ===
Line 360: Line 360:
 
  [ATTACK:BLUNT:100:1000:strike:strikes:pommel:1000]
 
  [ATTACK:BLUNT:100:1000:strike:strikes:pommel:1000]
  
SIZE determines how heavy the weapon is. This has a substantial effect on weapon effectiveness. SKILL determines which skill is used in using the weapon; a list of skills can be found [[skill token|on this page]]. MINIMUM_SIZE determines the minimum size a creature must be before the weapon can be wielded, while TWO_HANDED determines how large a creature must be in order to wield the weapon with one hand.
+
SIZE determines how heavy the weapon is. This has a substantial effect on weapon effectiveness. SKILL determines which skill is used in using the weapon; a list of skills can be found {{L|skill token|on this page}}. MINIMUM_SIZE determines the minimum size a creature must be before the weapon can be wielded, while TWO_HANDED determines how large a creature must be in order to wield the weapon with one hand.
  
Attacks take a little more explaination. The first value determines the contact area of the weapon's attack; this should be high for slashing weapons and low for bludgeoning, piercing and poking ones. The second value determines how deep the weapon penetrates - for BLUNT attacks this value is ignored as they're not supposed to penetrate anyway, but in the case of EDGE attacks it should generally be lower for slashing attacks and higher for stabbing attacks.
+
Attacks take a little more explaination. The first value determines the contact area of the weapon's attack; this should be high for slashing or bludgeoning weapons, and low for piercing and poking ones. The second value determines how deep the weapon penetrates - for BLUNT attacks this value is ignored as they're not supposed to penetrate anyway, but in the case of EDGE attacks it should generally be lower for slashing attacks and higher for stabbing attacks.
  
 
Following these are the adjectives used; they should be self-explanatory. Finally, we have the velocity modifier, which has a multiplying effect on the weapon's size for the purposes of determining how powerful it is in combat.
 
Following these are the adjectives used; they should be self-explanatory. Finally, we have the velocity modifier, which has a multiplying effect on the weapon's size for the purposes of determining how powerful it is in combat.
Line 389: Line 389:
 
The most important tokens are "CONTYPE" and "CON": CONTYPE means the bodypart in question is connected to a certain ''type'' of bodypart, while CON means it's connected to a ''specific'' one. TOKENID is yet another identifier, which should be unique, as it's referenced every time something uses CON or BY_TOKEN. DEFAULT_RELSIZE defines, of course, what the bodypart's size is in relation to the other parts. CATEGORY defines a category for the part, which can be unique or shared with other parts. This is referenced whenever BY_CATEGORY is used.
 
The most important tokens are "CONTYPE" and "CON": CONTYPE means the bodypart in question is connected to a certain ''type'' of bodypart, while CON means it's connected to a ''specific'' one. TOKENID is yet another identifier, which should be unique, as it's referenced every time something uses CON or BY_TOKEN. DEFAULT_RELSIZE defines, of course, what the bodypart's size is in relation to the other parts. CATEGORY defines a category for the part, which can be unique or shared with other parts. This is referenced whenever BY_CATEGORY is used.
  
A list of bodypart tokens can be found [[body token|here]].
+
A list of bodypart tokens can be found {{L|body token|here}}.
  
 
Let's take a simple example, a head:
 
Let's take a simple example, a head:
Line 445: Line 445:
 
== Plants ==
 
== Plants ==
  
Plants are, again, not unlike creatures. With what you've learned so far in regard to tokens and the materials system, running through the notes included in plant_standard.txt should explain most things. [[Plant token|Here's the list of plant-specific tokens]].
+
Plants are, again, not unlike creatures. With what you've learned so far in regard to tokens and the materials system, running through the notes included in plant_standard.txt should explain most things. {{L|Plant token|Here's the list of plant-specific tokens}}.
  
 
== Workshops ==
 
== Workshops ==
  
Standard workshops are still hardcoded, but some of the more recent additions such as the soapworkers workshop and screwpress can be found in the [[building token|building_custom.txt file.]]
+
Coming sooner rather than later
  
 
== Materials ==
 
== Materials ==
Line 461: Line 461:
 
Finally, let's look at inorganic_stone_mineral.txt. Here we can see that in addition to the changes made to the template, there are also ENVIRONMENT tokens - these tell the game where to place these minerals during worldgen.
 
Finally, let's look at inorganic_stone_mineral.txt. Here we can see that in addition to the changes made to the template, there are also ENVIRONMENT tokens - these tell the game where to place these minerals during worldgen.
  
[[material definition token|Here's a list of material tokens]]. It should also help you out with any modifications you want to make regarding those creature modifications we were making a while back. See, it all ties together in the end. The beauty of the current materials system is that there's actually very little difference between, say, leather and iron - they're fundamentally the same thing, just with different properties, which is how things really should be.
+
{{L|material definition token|Here's a list of material tokens}}. It should also help you out with any modifications you want to make regarding those creature modifications we were making a while back. See, it all ties together in the end. The beauty of the current materials system is that there's actually very little difference between, say, leather and iron - they're fundamentally the same thing, just with different properties, which is how things really should be.
  
 
== Examples ==
 
== Examples ==
Line 471: Line 471:
 
[http://www.bay12forums.com/smf/index.php?topic=28829.0 A list of many mods and community-developed utilities]
 
[http://www.bay12forums.com/smf/index.php?topic=28829.0 A list of many mods and community-developed utilities]
  
{{Category|Modding}}
+
[[Category:DF2010:Modding]]
{{Category|Guides}}
+
[[Category:DF2010:Guides]]

Please note that all contributions to Dwarf Fortress Wiki are considered to be released under the GFDL & MIT (see Dwarf Fortress Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)