Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Species Documentation: Difference between revisions

From starcup wiki
Skcb (talk | contribs)
No edit summary
incomplete formatting fixes
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== How A Species Is Made ==
This page documents how new species are created.
''When a mommy coder and a daddy spriter love each other very much...''
 
==== The .YML Files ====
<blockquote>''When a mommy coder and a daddy spriter love each other very much...''</blockquote>
'''Resources/Prototypes/(_namespace)/Species/[species].yml'''
 
<br>
== The .YML Files ==
This file contains the '''species''' prototype, which contains some of the information needed for the character creation menu. This includes...
<code>Resources/Prototypes/(_namespace)/Species/[species].yml</code>
 
This file contains the <code>species</code> prototype, which contains some of the information needed for the character creation menu. This includes...
* '''id''' (recommended): the internal name of the prototype, which is generally just the species name.
* '''id''' (recommended): the internal name of the prototype, which is generally just the species name.
* '''name''' (required): the user-facing name of the species; point this to a locale string.
* '''name''' (required): the user-facing name of the species; point this to a locale string.

Latest revision as of 09:21, 9 September 2025

This page documents how new species are created.

When a mommy coder and a daddy spriter love each other very much...

The .YML Files

Resources/Prototypes/(_namespace)/Species/[species].yml

This file contains the species prototype, which contains some of the information needed for the character creation menu. This includes...

  • id (recommended): the internal name of the prototype, which is generally just the species name.
  • name (required): the user-facing name of the species; point this to a locale string.
  • roundStart (required): whether the species is available at roundstart, IE the character creation menu in the lobby.
  • prototype (required): what mob prototype the player entity will inherit the features of. defined elsewhere (see below).
  • dollPrototype (required): what mob prototype will be used in certain menus, such as the character creator. defined elsewhere (see below).
  • sprites: the sprite prototype that makes up the player entity. defined in this file (see below).
  • markingLimits: the marking limit prototype that sets how many markings and what kind the species can have. defined in this file.
  • dollPrototype (required): what mob prototype will be used in certain menus, such as the character creator. defined elsewhere (see below).
  • skinColoration (required): which method of skin coloration is used. existing options include: HumanToned, Hues, TintedHues, & VoxFeathers.
  • defaultSkinTone: default skin tone for species with a non-HumanToned skin coloration. defaults to white.
  • defaultHumanSkinTone: default skin tone for species with HumanToned skin coloration. defaults to 20, on a scale from 0 (gold/yellow) to 100 (dark brown).
  • maleFirstNames, femaleFirstNames, lastNames, (etc): namelist prototypes to reference for different name components. defaults to the basic human namelist.
  • naming: the naming rules for the random name generator. defaults to FirstLast. other existing options include: First, LastNoFirst, TheFirstOfLast, FirstDashFirst, LastFirst, FirstDashLast, & FirstCodeLast.
  • sexes: a list of valid sexes for the species to be. this can include some combination of Male, Female, and Unsexed.
  • minAge, youngAge, oldAge, maxAge: these integers define breakpoints for this species age. minAge is the youngest a character of this species can be, and is implied to be an "age of majority". youngAge and oldAge define whether a character is described as young (under youngAge), middle-aged (youngAge to oldAge), or old (over oldAge). maxAge is the oldest a character of this species can be, and is implied to be a "maximum reasonable lifespan". in order, these default to 18, 30, 60, and 120.
  • baseScale: this takes two float numbers, which are applied as modifiers to the character's sprite scaling in X and Y (i think) respectively. defaults to 1, 1.
  • minHeight, maxHeight: float numbers which define the minimum and maximum heights a character can be set to in the character creator. defaults to 0.95 and 1.05, respectively (at least in starcup). these are applied as a modifier to the baseScale, above (I think).
  • defaultHeight, defaultWidth: float numbers which define the starting scale factor for a character's height and width (obviously). both default to 1. these are applied as a modifier to the baseScale, above (I think).
  • scaleHeight, scaleWidth: boolean. whether the character is scaled vertically or horizontally (respectively). both default to true. you probably shouldn't change these.


This file also typically contains the speciesBaseSprites prototype, which defines what sprites will be rendered on a given humanoid visual layer. If an entry is empty, the visual layer is assumed not to be in use and will be ignored.
The following list of existing layers and their definitions are pieced together as best as I can without spending all day reading rendering code. From what I can tell, the order of this list does not matter (but it very much does in other locations!), so I have ordered in the most sensible way I can imagine. Not all of these are necessary for all species.

  • Head (usually species-specific; governs the base Head part)
  • HeadTop (usually MobHumanoidAnyMarking; a type of head marking)
  • HeadSide (usually MobHumanoidAnyMarking; a type of head marking)
  • Eyes (usually species-specific if the species has a unique eye sprite. many use the human one)
  • Snout (usually MobHumanoidAnyMarking; a type of head marking)
  • Hair (usually MobHumanoidAnyMarking; it's hair)
  • FacialHair (usually MobHumanoidAnyMarking; it's hair)
  • UndergarmentTop (usually MobHumanoidAnyMarking; it's a type of marking)
  • UndergarmentBottom (usually MobHumanoidAnyMarking; it's a type of marking)
  • Chest (usually species-specific; governs the base Chest part)
  • LArm (usually species-specific; governs the base LArm part)
  • RArm (usually species-specific; governs the base RArm part)
  • LHand (usually species-specific; governs the base LHand part)
  • RHand (usually species-specific; governs the base RHand part)
  • LLeg (usually species-specific; governs the base LLeg part)
  • RLeg (usually species-specific; governs the base RLeg part)
  • LFoot (usually species-specific; governs the base LFoot part)
  • RFoot (usually species-specific; governs the base RFoot part)
  • Tail (usually MobHumanoidAnyMarking; it's a type of marking)
  • TailBehind (usually MobHumanoidAnyMarking; this uses the new tail code recently ported from floof, wikidocs pending)
  • TailOversuit (usually MobHumanoidAnyMarking; this uses the new tail code recently ported from floof, wikidocs pending)


Species-specific sprite parts are defined with a humanoidBaseSprite prototype. These simply have a single component, baseSprite, containing the sprite: [path_to_parts.rsi] and state: [body_part].