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.

Difference between revisions of "v0.34:Temperature"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
 
(24 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{quality|Fine|15:51 27 December 2011 (UTC)}}{{av}}
+
{{Quality|Exceptional|21:56, 12 July 2013 (UTC)}}
 +
{{av}}
  
 
''For temperature as it relates to choosing an embarkation site, see [[Climate]].''
 
''For temperature as it relates to choosing an embarkation site, see [[Climate]].''
 +
{{buggy}}
  
 
==Temperature scale==
 
==Temperature scale==
Dwarf Fortress uses its own temperature scale in most cases, often called "Degrees [[Main:Urist|Urist]]" on this wiki.
+
Temperatures in ''Dwarf Fortress'' are measured in the game's own, unnamed temperature scale, since termed "Degrees [[Main:Urist|Urist]]" by the community. Temperatures in ''Dwarf Fortress'' are stored as sixteen-bit unsigned integers, which translates into a minimum value of 0&nbsp;°U and a technical maximum of 65535&nbsp;°U (2<sup>16</sup>-1), although this is internally limited to 60000&nbsp;°U&mdash;60001&nbsp;°U is used for temperatures which have been set to {{tt|NONE}}. Floating point values are not considered, and when they appear any decimals are either sheared off or rounded away by the game. Urists are scaled logically against the Fahrenheit scale, so conversions are simple, if non-intuitive:
So if you see something like [HOMEOTHERM:10067], don't be amazed.
 
  
[[Magma]]'s temperature is {{ct|12000}}.
+
:{{tt|[URIST]}} = {{tt|[FAHRENHEIT]}} + 9968
 
+
::::&nbsp;&nbsp;&nbsp;{{tt|[CELSIUS]}} * 9/5 + 10000
The highest possible temperature in Dwarf Fortress is {{ct|60000}} &mdash; the temperature 60001&nbsp;°U is used internally for temperatures which have been set to "NONE".
+
::::&nbsp;&nbsp;&nbsp;{{tt|[KELVIN]}} * 9/5 + 9508.33
 
+
::::&nbsp;&nbsp;&nbsp;{{tt|[RANKINE]}} + 9508.33
===Conversion===
 
 
 
[DF scale] = [FAHRENHEIT] + 9968
 
 
 
[DF scale] = [CELSIUS] * 9/5 + 10000
 
 
 
[DF scale] = [KELVIN] * 9/5 + 9508.33
 
 
 
[DF scale] = [RANKINE] + 9508.33
 
 
 
''(Note: Mod-makers may find this [http://www.bay12forums.com/smf/index.php?topic=80523.0 Temperature Conversion Utility] handy if they find themselves having to convert a lot of temperatures to and/or from Degrees Urist.)''
 
 
 
===Reference Chart===
 
  
 +
Some reference numbers:
 
{| {{prettytable}}
 
{| {{prettytable}}
 
|- bgcolor="#ddd"
 
|- bgcolor="#ddd"
Line 33: Line 22:
 
! Kelvin
 
! Kelvin
 
! Rankine
 
! Rankine
 
 
|-
 
|-
| Boiling Point of Water
+
| [[#Boiling point|Boiling Point of Water]]
 
| 10180
 
| 10180
 
| 212
 
| 212
Line 41: Line 29:
 
| 373.15
 
| 373.15
 
| 671.67
 
| 671.67
 
 
|-
 
|-
|Human Body Temperature
+
| [[Creature token#H|Human Body Temperature]]
| 10066.6<sup>2</sup>
+
| 10067<sup>round</sup>
 
| 98.6
 
| 98.6
 
| 37.0
 
| 37.0
 
| 310.15
 
| 310.15
 
| 558.27
 
| 558.27
 
 
|-
 
|-
 
| [[Water#Freezing point|Freezing Point of Water]]
 
| [[Water#Freezing point|Freezing Point of Water]]
Line 57: Line 43:
 
| 273.15
 
| 273.15
 
| 491.67
 
| 491.67
 
 
|-
 
|-
| Absolute Zero
+
| [[wikipedia:Absolute zero|Absolute Zero]]
| 9508.33<sup>2</sup>
+
| 9508<sup>round</sup>
 
| -459.67
 
| -459.67
 
| −273.15
 
| −273.15
 
| 0
 
| 0
 
| 0
 
| 0
 
 
|-
 
|-
| DF Scale's Zero<sup>1</sup>
+
| Zero Degrees Urist
 
| 0
 
| 0
 
| -9968
 
| -9968
| -5555.555...
+
| -5555.<span style="text-decoration:overline">5</span>
| -5282.40555...
+
| -5282.40<span style="text-decoration:overline">5</span>
 
| -9508.33
 
| -9508.33
 
|}
 
|}
  
<small>
+
Values designated with ''round'' have been rounded internally to avoid decimals: for instance, the human body temperature is technically 10066.6, but has been rounded up to {{ct|10067}} in the [[raw file|raws]]. Also interesting is the fact that temperatures in Dwarf Fortress can go ''far, far'' below absolute zero, which is physically impossible; considering Dwarf Fortress also allows [[water wheel#Perpetual motion|perpetual motion]], sometimes it's best not to ask questions.
:<sup>1</sup>: Yes, temperatures in Dwarf Fortress can go '''far, far''' below absolute zero, which is physically impossible. Considering Dwarf Fortress also allows [[water wheel#Perpetual motion|perpetual motion]], it's best not to ask questions.
 
:<sup>2</sup>: Technically, fractional/decimal temperatures are not possible in Dwarf Fortress, as they are stored as unsigned 16-bit integers. For instance, body temp for humans in the raws is rounded to {{ct|10067}}.
 
</small>
 
  
Some general information about temperatures in DF (copied from somewhere on the forums):
+
{{Urist asks|q=I'm a modder who needs to work with temperature conversions all the time. Is there any tool I can use to lessen the amount of work involved?|a=Temperature conversions are usually only useful when [[modding]], and can be annoying to do manually; luckily a simple {{dffd|4028|temperature conversion utility}} has been created for those who find themselves having to convert a lot of temperatures to and/or from degrees Urist often.}}
{| class="wikitable"
+
 
 +
Examples of some temperatures encountered in DF, the most important ones in bold:
 +
{| class="wikitable sortable"
 
|-
 
|-
 
! Event / location
 
! Event / location
 
! Temperature
 
! Temperature
 
|-
 
|-
| alcohol freezes
+
| Alcohol freezes
| {{ct|9850}}
+
| {{ct|09850}}
 
|-
 
|-
| outside (freezing)
+
| '''<span style="border-bottom: 1px #0000CC dotted;cursor:help;" title="Below this temperature fat, present on all all organic creatures, will start to take cold damage, eventually killing them.">Lowest survivable temperature</span>'''
| {{ct|9985}}
+
| '''{{ct|09900}}'''
 
|-
 
|-
| glacier ice (underground)
+
| Outside, freezing climate (varies)
| {{ct|9990}}
+
| {{ct|09960}}
 
|-
 
|-
| water freezes
+
| Underground, glacier ice
 +
| {{ct|09990}}
 +
|-
 +
| '''Water freezes'''
 +
| '''{{ct|10000}}'''
 +
|-
 +
| <span style="border-bottom: 1px #0000CC dotted;cursor:help;" title="Nether-cap temperatures are fixed to 10000 degrees Urist, regardless of the surrounding environment.">Nether-cap</span>
 
| {{ct|10000}}
 
| {{ct|10000}}
 
|-
 
|-
| underground
+
| '''Underground'''
| {{ct|10015}}
+
| '''{{ct|10015}}'''
|-
 
| outside (varies)
 
| {{ct|10048}}
 
 
|-
 
|-
| dwarf/human body temp
+
| [[Creature token#H|Dwarf/human homeotherm]]
 
| {{ct|10067}}
 
| {{ct|10067}}
 
|-
 
|-
| floor above magma
+
| Tiles next to [[magma]] ([[warm stone]])
 
| {{ct|10075}}
 
| {{ct|10075}}
 
|-
 
|-
| fat melts
+
| '''<span style="border-bottom: 1px #0000CC dotted;cursor:help;" title="Above this temperature fat, present on all all organic creatures, will start to melt (turning into grease), eventually killing them.">Highest survivable temperature</span>'''
| {{ct|10078}}
+
| '''{{ct|10078}}'''
 +
|-
 +
| Outside, [[Climate#Scorching|scorching climate]] (varies)
 +
| {{ct|10080}}
 
|-
 
|-
| water boils
+
| [[Water]] boils
 
| {{ct|10180}}
 
| {{ct|10180}}
 
|-
 
|-
| material is fire-safe
+
| [[Wood]] [[fire]] (max)
 +
| {{ct|10708}}
 +
|-
 +
| Material is [[fire-safe]]
 
| {{ct|11000}}
 
| {{ct|11000}}
 
|-
 
|-
| common stone melts
+
| Common stone melts (varies)
 
| {{ct|11500}}
 
| {{ct|11500}}
 
|-
 
|-
| burning item (max)
+
| [[Coal]] [[fire]] (max)
 
| {{ct|11640}}
 
| {{ct|11640}}
 
|-
 
|-
| magma
+
| '''Magma'''
 +
| '''{{ct|12000}}'''
 +
|-
 +
| Material is [[magma-safe]]
 
| {{ct|12000}}
 
| {{ct|12000}}
 
|-
 
|-
| dragonfire, flame creatures
+
| [[Creature]]s made of flame/fire
 
| {{ct|14000}}
 
| {{ct|14000}}
 +
|-
 +
| <span style="border-bottom: 1px #0000CC dotted;cursor:help;" title="Yes, dragonfire is roughly four times hotter than the surface of the sun.">[[Dragonfire]]</span>
 +
| {{ct|50000}}
 
|-
 
|-
 
|}
 
|}
  
==Melting point==
+
==Material values==
 
+
{{Material properties}}
This is the temperature at which a liquid material will freeze, or a solid material will melt. In Dwarf Fortress, the melting point and freezing point coincide exactly &mdash; this is contrary to many real-life materials, which can be supercooled.
+
Temperature has important constraints on the [[material]]s in the game, and dictates a number of [[material science|material properties]] related to states of matter and heat/cold [[wear|damage]]. These are defined by [[material definition token]]s in the material [[raw file]]s, most of which use temperature as an input field:
 
+
* {{tt|[MELTING_POINT:#]}} — This is the temperature at which a liquid material will freeze, or a solid material will melt. In Dwarf Fortress the melting point and freezing point coincide exactly; this is contrary to many real-life materials, which can be supercooled.
==Boiling point==
+
* {{tt|[BOILING_POINT:#]}} — This is the temperature at which the material will boil or condense. Water boils at {{ct|10180}}.
 
+
* {{tt|[IGNITE_POINT:#]}} — This is the temperature at which the material will catch fire.
This is the temperature at which the material will boil or condense. Water boils at {{ct|10180}}.
+
* {{tt|[HEATDAM_POINT:#]}} — This is the temperature above which the material will begin to take heat [[wear|damage]]. Burning items without a heat damage point (or with an exceptionally high one) will take damage very slowly, causing them to burn for a very long time (9 months and 16.8 days) before disappearing.
 
+
* {{tt|[COLDDAM_POINT:#]}} — This is the temperature below which the material will begin to take frost [[wear|damage]].
==Ignition point==
+
* {{tt|[SPEC_HEAT:#]}} — This determines how long it takes the material to heat up or cool down. A material with a high specific heat capacity will hold more heat and affect its surroundings more before cooling down or heating up to equilibrium. The input for this token is not temperature, but rather the [[wikipedia:Specific heat capacity|specific heat capacity]] of the material.
 
+
* {{tt|[MAT_FIXED_TEMP:#]}} — A material's temperature can be forced to always be a certain value via the MAT_FIXED_TEMP [[material definition token]].  The only standard material which uses this is [[nether-cap]] wood, whose temperature is always at the melting point of water.  If a material's temperature is fixed to between its cold damage point and its heat damage point, then items made from that material will never suffer cold/heat damage.  This makes nether-caps [[fire-safe]] and [[magma-safe]] despite being a type of [[wood]].<br/>Due to the way fixed temperature is handled, giving a material a fixed temperature will not cause its actual temperature to change accordingly &mdash; instead, its temperature will simply be permanently locked at whatever it was previously. Removing a material's fixed temperature, however, will cause all items made of it to heat or cool until reaching equilibrium with their surroundings. The fixed temperature of a [[container]] does affect its contents, but you can't freeze [[water]] by putting it into a [[bucket]] made from nether-cap because water will not freeze until it cools ''below'' {{ct|10000}}. The fixed temperature of an inorganic material has no effect on unmined walls made from that material, though boulders '''will''' take on that temperature as they are produced via mining.
This is the temperature at which the material will catch fire.
 
 
 
==Heat damage point==
 
 
 
This is the temperature above which the material will begin to take heat [[wear|damage]]. Burning items without a heat damage point (or with an exceptionally high one) will take damage very slowly, causing them to burn for a very long time (9 months and 16.8 days) before disappearing.
 
 
 
==Cold damage point==
 
 
 
This is the temperature below which the material will begin to take frost [[wear|damage]].
 
 
 
==Specific heat==
 
 
 
This determines how long it takes the material to heat up or cool down. A material with a high specific heat capacity will hold more heat and affect its surroundings more before cooling down or heating up to equilibrium.
 
 
 
==Fixed temperature==
 
 
 
A material's temperature can be forced to always be a certain value via the MAT_FIXED_TEMP [[material definition token]].  The only standard material which uses this is [[nether-cap]] wood, whose temperature is always at the melting point of water.  If a material's temperature is fixed to between its cold damage point and its heat damage point, then items made from that material will never suffer cold/heat damage.  This makes nether-caps [[fire-safe]] and [[magma-safe]] despite being a type of [[wood]].
 
 
 
Due to the way fixed temperature is handled, giving a material a fixed temperature will not cause its actual temperature to change accordingly &mdash; instead, its temperature will simply be permanently locked at whatever it was previously. Removing a material's fixed temperature, however, will cause all items made of it to heat or cool until reaching equilibrium with their surroundings.
 
 
 
The fixed temperature of a [[container]] does affect its contents, but you can't freeze [[water]] by putting it into a [[bucket]] made from nether-cap because water will not freeze until it cools ''below'' {{ct|10000}}.
 
  
The fixed temperature of an inorganic material has no effect on unmined walls made from that material, though boulders '''will''' take on that temperature as they are produced via mining.
+
==Bugs==
 +
* A calculation error in the game causes objects in containers to maintain a 1 degree difference from the container, resulting in constant recalculation of temperature values.{{bug|6012}} This incurs a high cost on your processor, and is thus a large drag on your [[frames per second]]. [[Utility:DFHack|DFhack]]'s "fix/stable-temp" stabilizes the temperature of such objects and improves frame rate (though not enabled by default).<br/>If [[maximizing framerate]] is a concern, you can even disable temperatures entirely through an option in the [[D init.txt]]. With this option toggled off, being adjacent to lava will not cause objects (or creatures) to burn, nor will dwarves have any problems running around on top of glaciers naked if they so desire; however more direct tile temperature calculations are still preserved, so contact with magma or dragonfire is still plenty lethal.
 +
* When temperature calculations are disabled, dwarves will refuse to set foot in a cast [[obsidian]] tile (or other tiles previously occupied by [[magma]]).{{bug|6033}}

Latest revision as of 21:44, 6 February 2024

This article is about an older version of DF.

For temperature as it relates to choosing an embarkation site, see Climate.

Temperature scale[edit]

Temperatures in Dwarf Fortress are measured in the game's own, unnamed temperature scale, since termed "Degrees Urist" by the community. Temperatures in Dwarf Fortress are stored as sixteen-bit unsigned integers, which translates into a minimum value of 0 °U and a technical maximum of 65535 °U (216-1), although this is internally limited to 60000 °U—60001 °U is used for temperatures which have been set to NONE. Floating point values are not considered, and when they appear any decimals are either sheared off or rounded away by the game. Urists are scaled logically against the Fahrenheit scale, so conversions are simple, if non-intuitive:

[URIST] = [FAHRENHEIT] + 9968
   [CELSIUS] * 9/5 + 10000
   [KELVIN] * 9/5 + 9508.33
   [RANKINE] + 9508.33

Some reference numbers:

Significance DF Scale Fahrenheit Celsius Kelvin Rankine
Boiling Point of Water 10180 212 100 373.15 671.67
Human Body Temperature 10067round 98.6 37.0 310.15 558.27
Freezing Point of Water 10000 32 0 273.15 491.67
Absolute Zero 9508round -459.67 −273.15 0 0
Zero Degrees Urist 0 -9968 -5555.5 -5282.405 -9508.33

Values designated with round have been rounded internally to avoid decimals: for instance, the human body temperature is technically 10066.6, but has been rounded up to 10067 °U in the raws. Also interesting is the fact that temperatures in Dwarf Fortress can go far, far below absolute zero, which is physically impossible; considering Dwarf Fortress also allows perpetual motion, sometimes it's best not to ask questions.

Urist asks... I'm a modder who needs to work with temperature conversions all the time. Is there any tool I can use to lessen the amount of work involved?

Temperature conversions are usually only useful when modding, and can be annoying to do manually; luckily a simple temperature conversion utility has been created for those who find themselves having to convert a lot of temperatures to and/or from degrees Urist often.

Examples of some temperatures encountered in DF, the most important ones in bold:

Event / location Temperature
Alcohol freezes 09850 °U
Lowest survivable temperature 09900 °U
Outside, freezing climate (varies) 09960 °U
Underground, glacier ice 09990 °U
Water freezes 10000 °U
Nether-cap 10000 °U
Underground 10015 °U
Dwarf/human homeotherm 10067 °U
Tiles next to magma (warm stone) 10075 °U
Highest survivable temperature 10078 °U
Outside, scorching climate (varies) 10080 °U
Water boils 10180 °U
Wood fire (max) 10708 °U
Material is fire-safe 11000 °U
Common stone melts (varies) 11500 °U
Coal fire (max) 11640 °U
Magma 12000 °U
Material is magma-safe 12000 °U
Creatures made of flame/fire 14000 °U
Dragonfire 50000 °U

Material values[edit]

Temperature has important constraints on the materials in the game, and dictates a number of material properties related to states of matter and heat/cold damage. These are defined by material definition tokens in the material raw files, most of which use temperature as an input field:

  • [MELTING_POINT:#] — This is the temperature at which a liquid material will freeze, or a solid material will melt. In Dwarf Fortress the melting point and freezing point coincide exactly; this is contrary to many real-life materials, which can be supercooled.
  • [BOILING_POINT:#] — This is the temperature at which the material will boil or condense. Water boils at 10180 °U .
  • [IGNITE_POINT:#] — This is the temperature at which the material will catch fire.
  • [HEATDAM_POINT:#] — This is the temperature above which the material will begin to take heat damage. Burning items without a heat damage point (or with an exceptionally high one) will take damage very slowly, causing them to burn for a very long time (9 months and 16.8 days) before disappearing.
  • [COLDDAM_POINT:#] — This is the temperature below which the material will begin to take frost damage.
  • [SPEC_HEAT:#] — This determines how long it takes the material to heat up or cool down. A material with a high specific heat capacity will hold more heat and affect its surroundings more before cooling down or heating up to equilibrium. The input for this token is not temperature, but rather the specific heat capacity of the material.
  • [MAT_FIXED_TEMP:#] — A material's temperature can be forced to always be a certain value via the MAT_FIXED_TEMP material definition token. The only standard material which uses this is nether-cap wood, whose temperature is always at the melting point of water. If a material's temperature is fixed to between its cold damage point and its heat damage point, then items made from that material will never suffer cold/heat damage. This makes nether-caps fire-safe and magma-safe despite being a type of wood.
    Due to the way fixed temperature is handled, giving a material a fixed temperature will not cause its actual temperature to change accordingly — instead, its temperature will simply be permanently locked at whatever it was previously. Removing a material's fixed temperature, however, will cause all items made of it to heat or cool until reaching equilibrium with their surroundings. The fixed temperature of a container does affect its contents, but you can't freeze water by putting it into a bucket made from nether-cap because water will not freeze until it cools below 10000 °U . The fixed temperature of an inorganic material has no effect on unmined walls made from that material, though boulders will take on that temperature as they are produced via mining.

Bugs[edit]

  • A calculation error in the game causes objects in containers to maintain a 1 degree difference from the container, resulting in constant recalculation of temperature values.Bug:6012 This incurs a high cost on your processor, and is thus a large drag on your frames per second. DFhack's "fix/stable-temp" stabilizes the temperature of such objects and improves frame rate (though not enabled by default).
    If maximizing framerate is a concern, you can even disable temperatures entirely through an option in the D init.txt. With this option toggled off, being adjacent to lava will not cause objects (or creatures) to burn, nor will dwarves have any problems running around on top of glaciers naked if they so desire; however more direct tile temperature calculations are still preserved, so contact with magma or dragonfire is still plenty lethal.
  • When temperature calculations are disabled, dwarves will refuse to set foot in a cast obsidian tile (or other tiles previously occupied by magma).Bug:6033