- 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.
Difference between revisions of "Random creature profile"
Doorkeeper (talk | contribs) (gallery) |
(Updated for Lua release) |
||
| (12 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
{{Minorspoiler}} | {{Minorspoiler}} | ||
| − | This is a list of '''random creature profiles''' ('''RCPs''') which are used by procedurally generated creatures. RCPs use body parts from <code>body_rcp.txt</code> instead of <code>body_default.txt</code>. | + | This is a list of '''random creature profiles''' ('''RCPs''') which are used by procedurally-generated creatures. RCPs typically use body parts from <code>body_rcp.txt</code> instead of <code>body_default.txt</code>. |
== Overview == | == Overview == | ||
| − | RCP stands for "[http://www.bay12forums.com/smf/index.php?topic=30026.msg831163#msg831163 random creature profile]". RCP is | + | RCP stands for "[http://www.bay12forums.com/smf/index.php?topic=30026.msg831163#msg831163 random creature profile]". RCP is a [[Lua scripting|scripted]] [[raw]] template that defines the basic body, tissues and body attacks of a random creature before it receives [[Lua scripting#Tweaks|further randomness]] (three-eyed, wings of stretched skin, external ribs, uniform elemental composition, etc). Most amphibian, mammalian and reptilian RCPs have humanoid variations of themselves, described as "in humanoid form" or "{{Tooltip|twisted into humanoid form|If evil.}}". There are 243 standard RCPs and 81 humanoid variations, which brings the known total to 324. |
The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal [[creature]]s (e.g. [[albatross]]), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or [[web]]bing. | The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal [[creature]]s (e.g. [[albatross]]), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or [[web]]bing. | ||
| − | [[Night troll]]s and [[bogeyman|bogeymen]] only use the generic "humanoid" RCP, and werebeasts | + | [[Night troll]]s and [[bogeyman|bogeymen]] only use the generic "humanoid" RCP, and werebeasts use the humanoid animal forms. Primates, hexapods, octopods and decapods are unique to beast-like [[experiment]]s, while armless bipeds, wyrms, and the generic "snake" and "worm" RCPs are unique to failed experiments. |
| + | |||
| + | == Technical details == | ||
| + | {{main|Lua scripting}} | ||
| + | |||
| + | Random creature profiles can be found in ``vanilla_procedural/scripts/``. By adding data to the corresponding tables, it is possible to [[mod]] in new random creature profiles. | ||
| + | |||
| + | This [https://nm.reddit.com/r/dwarffortress/comments/kq86x5/i_made_some_calculations_towards_determining_the/gi2l7py/ explanation from Toady], shared by Meph, goes into more detail on how procedural creature generation works: | ||
| + | |||
| + | <blockquote> | ||
| + | The ``body_rcp.txt`` file has the definitions it expects for bodyparts. (rcp stands for "random creature profile") The main thing is that the base "animal" word is doing most of the heavy lifting in terms of making the descriptions evocative, so the rcp's don't end up mattering that much. There are little internal definitions for each animal word, about 230 of them. If we ignore that, then we're more just working with "feathered quadruped" and so forth. | ||
| + | |||
| + | Example of a random creature profile (for the elephant type): | ||
| + | |||
| + | <syntaxhighlight lang="lua"> | ||
| + | random_creature_types.MAMMAL_ELEPHANT={ | ||
| + | name_string="elephant", | ||
| + | tile='E', | ||
| + | body_base="QUADRUPED", | ||
| + | c_class="MAMMAL", | ||
| + | must_have_tail=true, | ||
| + | must_have_elephant_trunk=true, | ||
| + | min_size=500000, | ||
| + | weight=14 | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | So, hmm, perhaps the base and class lists are relevant here... | ||
| + | |||
| + | * classes (``random_creature_class``): mammal, chitin exo, fleshy, amphibian, reptile, feathered reptile, avian, uniform (like 'composed of iron') | ||
| + | |||
| + | * bases (``body_base_fun``): amorphous, insect, insect larva, spider, scorpion, ten legged, eight legged, worm, no limbs, quadruped, snake, humanoid, two legs + no arms, quadruped with front graspers (like a monkey) | ||
| + | |||
| + | The [[Lua functions#RCP Parameters|flags]] just force certain RCP additions, and prevent others from happening. For instance, the "slug" profile has "cannot have shell" because a slug with a shell is confusing. | ||
| + | |||
| + | Ah, here we go. The RCP are used via the "body tweak" system. A body can have a tweak from category one, a tweak from category two, and an attack tweak, respecting its profile flags. | ||
| + | |||
| + | * Category one tweaks (``options.btc``): wings, flightless wings, tail, proboscis, trunk, shell, antennae, head horns, large mandibles, twisted into humanoid form, six legged, eight legged | ||
| + | |||
| + | * Category two tweaks (``options.btc2``): hair, feathers, scales, exoskeleton, skin, skin/bones, no eyes, one eye, three eyes, beak missing, nose missing, external ribs, lidless eyes, skinless | ||
| + | |||
| + | * Attack tweaks (``options.attack_tweak``): tail stinger, insect stinger, blood proboscis, fire, webs, breath (trailing flow), breath (glob), breath (undirected), secretion, poisonous blood, poisonous bite | ||
| + | |||
| + | That material list (``random_creature_material``) looks almost right - here's the official list of variables: ash, mud, vomit, salt (powder), grime, snow, water, steam, flame, amber, coral, green glass, clear glass, crystal glass, charcoal, coke, salt (solid), ice, mineral (any), soil (any), gem (any), metal (any) | ||
| + | |||
| + | The "any" materials can't be "[[Inorganic material definition token#SPECIAL|special]]", but there don't appear to be other restrictions. | ||
| + | There are various other implicit flags on these things when it comes to werebeasts etc. "humanoidable" and "beast", for example. So all night creatures require "humanoidable" and werebeasts require "beast" on top of that. Which is why we don't have wereblobs or even wereserpents. | ||
| + | </blockquote> | ||
== List == | == List == | ||
| Line 18: | Line 65: | ||
In-game, the tile color is determined by the creature's external color modifier. If it does not have a color modifier and is not skinless, it uses the outermost tissue layer's default material color. If it is skinless, it is displayed in dark red (4:0:0). | In-game, the tile color is determined by the creature's external color modifier. If it does not have a color modifier and is not skinless, it uses the outermost tissue layer's default material color. If it is skinless, it is displayed in dark red (4:0:0). | ||
| − | {{columns-list|colwidth= | + | {{columns-list|colwidth=15em| |
* {{Tile|A|7:0}} Albatross | * {{Tile|A|7:0}} Albatross | ||
* {{Tile|A|7:0}} '''Alligator''' | * {{Tile|A|7:0}} '''Alligator''' | ||
| Line 265: | Line 312: | ||
== Graphics == | == Graphics == | ||
| − | All random creatures except [[werebeast]]s use [[graphics|graphic]] sprites found in <code>beasts.png</code> and <code>beasts_small.png</code>. There are | + | All random creatures except [[werebeast]]s use [[graphics|graphic]] sprites found in <code>beasts.png</code> and <code>beasts_small.png</code>. There are 19 primary body sprites (6 are alternate-legged variations) with additional sprite layers representing secondary body parts. Several RCPs have one or more secondary sprite layers by default. A few RCPs, like quadrupeds, have more than one body sprite to randomly select from. |
{| class="wikitable"<!-- | {| class="wikitable"<!-- | ||
| Line 274: | Line 321: | ||
recommend large worlds w/ min history, no civs, no vamps/secrets/interactions/weather, & max num of procgen beasts (titans, demons, night creatures, etc.) | recommend large worlds w/ min history, no civs, no vamps/secrets/interactions/weather, & max num of procgen beasts (titans, demons, night creatures, etc.) | ||
for experiments, use basic options w/ small world, max hist, max civ, min beasts & min savage | for experiments, use basic options w/ small world, max hist, max civ, min beasts & min savage | ||
| − | |||
| − | [PROCEDURAL_CREATURE_GRAPHICS:DEFAULT] | + | example to look for: |
| − | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_TAIL_ONE] | + | |
| − | [PCG_LAYERING:BEAST_QUADRUPED_BULKY] | + | [PROCEDURAL_CREATURE_GRAPHICS:DEFAULT] |
| − | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_HORNS] | + | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_TAIL_ONE] |
| − | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_EYE_TWO] | + | [PCG_LAYERING:BEAST_QUADRUPED_BULKY] |
| + | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_HORNS] | ||
| + | [PCG_LAYERING:BEAST_QUADRUPED_BULKY_EYE_TWO] | ||
above: chinchilla with four broad horns (random body modifications are explicitly mentioned in the creature's description) | above: chinchilla with four broad horns (random body modifications are explicitly mentioned in the creature's description) | ||
| Line 405: | Line 453: | ||
| ape | | ape | ||
| [[File:Beast front grasp, two eyes.png]] | | [[File:Beast front grasp, two eyes.png]] | ||
| − | | | + | | BEAST_FRONT_GRASP_EYE_TWO |
| rowspan="2" | BEAST_FRONT_GRASP | | rowspan="2" | BEAST_FRONT_GRASP | ||
|- | |- | ||
| monkey | | monkey | ||
| [[File:Beast front grasp, two eyes, one tail.png]] | | [[File:Beast front grasp, two eyes, one tail.png]] | ||
| − | | | + | | BEAST_FRONT_GRASP_EYE_TWO, BEAST_FRONT_GRASP_TAIL_ONE |
|- | |- | ||
| primate, quadruped | | primate, quadruped | ||
| Line 456: | Line 504: | ||
== Gallery == | == Gallery == | ||
| − | <gallery> | + | <gallery caption="Large sprites" heights="64px"> |
Beast amorphous.png|Amorphous sprite | Beast amorphous.png|Amorphous sprite | ||
Beast snake.png|Snake sprite | Beast snake.png|Snake sprite | ||
| Line 477: | Line 525: | ||
Beast quadruped slinky oct.png|Slinky quadruped sprite (eight-legged) | Beast quadruped slinky oct.png|Slinky quadruped sprite (eight-legged) | ||
Beast walrus.png|Walrus sprite | Beast walrus.png|Walrus sprite | ||
| + | </gallery> | ||
| + | |||
| + | <gallery caption="Small sprites" heights="32px"> | ||
| + | Beast small amorphous.png|Small amorphous sprite | ||
| + | Beast small snake.png|Small snake sprite | ||
| + | Beast small worm long.png|Small long worm sprite | ||
| + | Beast small worm short.png|Small short worm sprite | ||
| + | Beast small insect.png|Small insect sprite | ||
| + | Beast small spider.png|Small spider sprite | ||
| + | Beast small scorpion.png|Small scorpion sprite | ||
| + | Beast small scorpion, one tail.png|Small scorpion sprite (with one tail) | ||
| + | Beast small bipedal dinosaur.png|Small bipedal dinosaur sprite | ||
| + | Beast small humanoid.png|Small humanoid sprite | ||
| + | Beast small front grasp.png|Small front grasp sprite | ||
| + | Beast small front grasp hex.png|Small front grasp sprite (six-legged) | ||
| + | Beast small front grasp oct.png|Small front grasp sprite (eight-legged) | ||
| + | Beast small quadruped bulky.png|Small bulky quadruped sprite | ||
| + | Beast small quadruped bulky hex.png|Small bulky quadruped sprite (six-legged) | ||
| + | Beast small quadruped bulky oct.png|Small bulky quadruped sprite (eight-legged) | ||
| + | Beast small quadruped slinky.png|Small slinky quadruped sprite | ||
| + | Beast small quadruped slinky hex.png|Small slinky quadruped sprite (six-legged) | ||
| + | Beast small quadruped slinky oct.png|Small slinky quadruped sprite (eight-legged) | ||
| + | Beast small walrus.png|Small walrus sprite | ||
</gallery> | </gallery> | ||
| Line 483: | Line 554: | ||
[[Category:Creatures]] | [[Category:Creatures]] | ||
| + | [[Category:Lua]] | ||
[[ru:Random creature profile]] | [[ru:Random creature profile]] | ||
Latest revision as of 22:17, 24 October 2025
v52.04 · v0.47.05 This article is about the current version of DF.Note that some content may still need to be updated. |
This is a list of random creature profiles (RCPs) which are used by procedurally-generated creatures. RCPs typically use body parts from body_rcp.txt instead of body_default.txt.
Overview[edit]
RCP stands for "random creature profile". RCP is a scripted raw template that defines the basic body, tissues and body attacks of a random creature before it receives further randomness (three-eyed, wings of stretched skin, external ribs, uniform elemental composition, etc). Most amphibian, mammalian and reptilian RCPs have humanoid variations of themselves, described as "in humanoid form" or "twisted into humanoid form". There are 243 standard RCPs and 81 humanoid variations, which brings the known total to 324.
The RCP of a randomly generated creature can be identified by its description. Many RCPs have identical names with normal creatures (e.g. albatross), although they are entirely unrelated; other RCPs feature animals that don't exist anywhere else, such as zebras. Some RCPs have inherent abilities like flight or webbing.
Night trolls and bogeymen only use the generic "humanoid" RCP, and werebeasts use the humanoid animal forms. Primates, hexapods, octopods and decapods are unique to beast-like experiments, while armless bipeds, wyrms, and the generic "snake" and "worm" RCPs are unique to failed experiments.
Technical details[edit]
Random creature profiles can be found in vanilla_procedural/scripts/. By adding data to the corresponding tables, it is possible to mod in new random creature profiles.
This explanation from Toady, shared by Meph, goes into more detail on how procedural creature generation works:
The
body_rcp.txtfile has the definitions it expects for bodyparts. (rcp stands for "random creature profile") The main thing is that the base "animal" word is doing most of the heavy lifting in terms of making the descriptions evocative, so the rcp's don't end up mattering that much. There are little internal definitions for each animal word, about 230 of them. If we ignore that, then we're more just working with "feathered quadruped" and so forth.Example of a random creature profile (for the elephant type):
random_creature_types.MAMMAL_ELEPHANT={ name_string="elephant", tile='E', body_base="QUADRUPED", c_class="MAMMAL", must_have_tail=true, must_have_elephant_trunk=true, min_size=500000, weight=14 }So, hmm, perhaps the base and class lists are relevant here...
- classes (
random_creature_class): mammal, chitin exo, fleshy, amphibian, reptile, feathered reptile, avian, uniform (like 'composed of iron')
- bases (
body_base_fun): amorphous, insect, insect larva, spider, scorpion, ten legged, eight legged, worm, no limbs, quadruped, snake, humanoid, two legs + no arms, quadruped with front graspers (like a monkey)The flags just force certain RCP additions, and prevent others from happening. For instance, the "slug" profile has "cannot have shell" because a slug with a shell is confusing.
Ah, here we go. The RCP are used via the "body tweak" system. A body can have a tweak from category one, a tweak from category two, and an attack tweak, respecting its profile flags.
- Category one tweaks (
options.btc): wings, flightless wings, tail, proboscis, trunk, shell, antennae, head horns, large mandibles, twisted into humanoid form, six legged, eight legged
- Category two tweaks (
options.btc2): hair, feathers, scales, exoskeleton, skin, skin/bones, no eyes, one eye, three eyes, beak missing, nose missing, external ribs, lidless eyes, skinless
- Attack tweaks (
options.attack_tweak): tail stinger, insect stinger, blood proboscis, fire, webs, breath (trailing flow), breath (glob), breath (undirected), secretion, poisonous blood, poisonous biteThat material list (
random_creature_material) looks almost right - here's the official list of variables: ash, mud, vomit, salt (powder), grime, snow, water, steam, flame, amber, coral, green glass, clear glass, crystal glass, charcoal, coke, salt (solid), ice, mineral (any), soil (any), gem (any), metal (any)The "any" materials can't be "special", but there don't appear to be other restrictions. There are various other implicit flags on these things when it comes to werebeasts etc. "humanoidable" and "beast", for example. So all night creatures require "humanoidable" and werebeasts require "beast" on top of that. Which is why we don't have wereblobs or even wereserpents.
List[edit]
In ASCII mode, nearly all RCPs use specific uppercase or lowercase letters if the monster type does not use a fixed tile, such as '&' for demons. Lobsters uniquely use the '¥' sign instead. RCPs with humanoid versions are bolded. Humanoid forms use the same tile as their standard counterparts.
Capitalization denotes body size. In most cases, anything larger than a dwarf (60,000) uses an uppercase letter. Only uppercase letters are shown here.
In-game, the tile color is determined by the creature's external color modifier. If it does not have a color modifier and is not skinless, it uses the outermost tissue layer's default material color. If it is skinless, it is displayed in dark red (4:0:0).
AAlbatrossAAlligatorAAnacondaAAnkylosauridIAntAAnteaterAAntelopeIAntlion larvaAApeIAphidAArmadilloBArmless bipedIAssassin bugBBadgerBBatBBearBBeaverIBeeBBisonBBlobWBristlewormBBuffaloBBullBBuntingBBushtitIButterflyBBuzzardICaddisflyCCamelCCapybaraCCardinalCCatICaterpillarCCavyCCeratopsidCChameleonCChickadeeCChickenCChinchillaICicadaCCivetIClick beetleCCoatiCCobraCCockatooICockroachCCondorCCoyoteCCrabCCraneICricketCCrocodileCCrowCCuckooIDamselflyIDarkling beetleDDecapodDDeerDDimetrodonDDonkeyDDoveIDragonflyDDuckIDung beetleEEagleWEarthwormIEarwigEElephantEElkFFalconFFantailFFinchIFireflyFFlamingoWFlat wormIFleaIFlyFFlycatcherFFoxFFrogFFruit batGGeckoGGila monsterGGiraffeGGoatGGooseGGopherIGrasshopperGGrebeGGrouseGGullHHadrosauridHHareHHarrierHHawkHHedgehogHHexapodHHippopotamusHHoneyeaterHHornbillIHornetHHorseHHumanoidHHummingbirdHHyenaIIguanaIIguanodontJJackalJJayKKangarooKKestrelKKingfisherKKingletKKiteKKoalaILacewingILadybugLLarkLLeechLLemurLLizardLLlama¥LobsterLLoonLLorisILouseLLyrebirdIMaggotMMagpieMMammothIMantisMMarmotMMartinIMayflyMMiteMMockingbirdMMoleMMongooseMMonitorMMonkeyMMooseIMosquitoIMothMMouseNNematodeNNewtNNightjarNNuthatchOOctopodOOpossumOOrioleOOspreyOOtterOOwlOOxpeckerPPandaPPangolinPPantherPParrotPPelicanPPenguinPPetrelPPheasantPPigPPigeonPPorcupinePPrimatePPterosaurPPythonQQuadrupedQQuailQQuetzalRRabbitRRaccoonRRatRRattlesnakeRRavenRRhinocerosIRhinoceros beetleWRibbon wormIRove beetleSSalamanderSSauropodIScarab beetleSScorpionIScorpionflySSerpentSSheepSShrewSShrikeSShrimpISilverfishSSkinkSSkunkSSlothSSlugSSnailSSnakeISnakeflySSparrowSSpiderSSquirrelIStag beetleSStarlingSStegosauridIStick insectIStoneflySStorkSSwallowSSwanSSwiftTTanagerTTapirSTarantulaITermiteTTheropodTThornbillIThripsTThrushTTickITiger beetleTTitmouseTToadTTortoiseTToucanTTurkeyTTurtleVViperVVultureWWalrusWWarblerWWarthogIWaspWWaxwingWWeaselIWeevilWWolfWWombatWWoodpeckerWWormWWrenWWyrmZZebra
Graphics[edit]
All random creatures except werebeasts use graphic sprites found in beasts.png and beasts_small.png. There are 19 primary body sprites (6 are alternate-legged variations) with additional sprite layers representing secondary body parts. Several RCPs have one or more secondary sprite layers by default. A few RCPs, like quadrupeds, have more than one body sprite to randomly select from.
- * The (generic) humanoid RCP has two or no eyes (by default) depending on the type of beast/monster:
- 2 eyes: bogeymen, experiments (intelligent humanoids), night trolls
- 0 eyes: experiments (amalgamations), nightmares, everything else (which are elementals)
Gallery[edit]
- Large sprites
- Small sprites













































