Skip to content

Creating Custom Part Rigblocks

Allison Ghost edited this page Sep 8, 2025 · 19 revisions

This is a small guide to show you how to create a part definition (rigblock) for your custom parts.

This tutorial assumes you already have a RW4 model for the part; if you don't, go check the Blender add-ons tutorial.

Rigblock files define the properties for the part, such as the model and textures they use, the name, abilities, cost, etc; they are Property Lists (.prop), this page assumes you already have some familiarity with that format.

Part rigblock files usually go in the creature_rigblock~, building_rigblock~, etc folders.
They are typically named in the format ce_part_name_01.prop.prop_t, where ce is the editor prefix, part is the part type (eg. mouth, details), name is the row of the part (eg. radial, bird), and the number suffix is the position in that row. This convention is not enforced, but can be helpful for organization.
It is also recommended you use a prefix (your mod name, for example) in your new file names so they don't collide with other mods.

Once you have created your parts, check this tutorial to ensure they can be saved: "Saving with custom parts".

You can also generate a thumbnail icon for your part: "Generating perfect part thumbnails".

Template

The first thing to do is choose the part type. Is it a mouth, a grasper? A roof, a detail? You can choose by setting the parent property to one of the available templates; that will make your file inherit all its properties. For example, if my part is a carinvore mouth, I will add:

key parent CreatureEditorTemplates!CreatureMouthCarnivoreTemplate

abilities_wiki Model and textures

Model

Now you must specify which model and textures your part uses. The RW4 models are usually placed in the editor_rigblock~ folder; you must also place a copy into part_models_lod1~ (that's the model that will be used in-game). Then use the modelMeshLOD0 property to say which model you are using:

key modelMeshLOD0 editor_rigblocks~!ce_mouth_jaw_carnivore_02.rw4

Textures (for creatures, cells and plants)

Creatures, cells and plants use a certain texture system known as skinpaint. Each part has to provide 3 different textures:

  • Diffuse: The diffuse map is just the raw color that gets applied to the model. The alpha of this channel is used to specify where the skin texture shows through the model: white -> texture, black -> skin paint
    Note: The rw4 model path can also be used as the diffuse in place of a texture, if the model is exported with the diffuse texture as the material.
  • SpecBump: The alpha channel of this texture is used to define specularity, that is, which areas of your model look brighter. The color of the texture is used to simulate bumpiness for the model. In order to understand this texture, you have to look at each color channel individually:
    ⠀⠀ $${\color{red}Red}$$ -> specular (shine)
    ⠀⠀ $${\color{green}Green}$$ -> spec mask
    ⠀⠀ $${\color{blue}Blue}$$ -> bump (height)
    ⠀⠀ $${\color{white}Alpha}$$ -> bump mask
  • TintMask: This texture is used to decide which regions of the model use the creature base/coat/detail paint. This texture also uses each color channel individually:
    ⠀⠀ $${\color{red}Red}$$ -> base
    ⠀⠀ $${\color{green}Green}$$ -> coat
    ⠀⠀ $${\color{blue}Blue}$$ -> detail
    ⠀⠀ $${\color{white}Alpha}$$ -> identity (recolors in tribe-space stages)

Part skin textures are usually placed in the skinPaint_texture~ folder. They use the DDS format, which you can export with Gimp or Photoshop (with a plugin). When you save the file, you must specify the extension to be .rw4.dds so SporeModder FX can convert it to Spore's format.

The texture dimensions are usually powers of 2; Spore uses 128x128 pixels for its parts. You can use higher resolutons, but keep in mind that when the creation is saved they all get baked into a single, fixed-size texture (512x512 by default) so the textures will get downscaled; if your texture is very big, it will take a lot of space in the baked texture and will make the other parts look blurry.

key skinpaintDiffuseTexture skinPaint_texture~!ce_mouth_jaw_carnivore_02__diffuse.rw4
key skinpaintSpecBumpTexture skinPaint_texture~!ce_mouth_jaw_carnivore_02__specBump.rw4
key skinpaintTintMaskTexture skinPaint_texture~!ce_mouth_jaw_carnivore_02__tintMask.rw4

Additional Properties

The property bool skinpaintIgnoreParticles true can be used to disable the skinpaint texture from being used at the base of the part. With this property set to true, only the color will be used in that region.

The property float skinpaintMaxOcclusion 0.5 can be used to adjust how much ambient occlusion shadowing will apply to this part. A value of 0 can be used to disable ambient occlusion baking.

abilities_wiki Name

The name displayed in the part is controlled by the blockName property.

texts blockName
	"Canine Jaw"
end

You can use .locale files to provide different translations to your mod; in that case, you can specify the table and instance ID to use a translation:

texts blockName
	(CreatureRigblocks!0x050d2811) "Canine Jaw"
end

atk_strike_norm_waifu2x_art_scale Abilities

In this file you can define the abilities your part has. Each ability has an int32 property associated with it; just add that property specifying the ability level. Check this List of Part Capabilities. For example, vocalize level 1 and bite level 3:

int32 modelCapabilityVocalize 1
int32 modelCapabilityBite 3

Some parts require certain capabilities in order to animate. For example, all eyes specify these properties:

int32 modelCapabilityEye 1
int32 modelCapabilitySense 1

And all mouths specify this:

int32 modelCapabilityMouth 1

To find what properties must be specified for each part type, the rigblock files from Core-Spore can be referenced.

atk_strike_norm_waifu2x_art_scale Scaling and Transformations

Scale

With the modelMaxScale and modelMinScale you can control how much the user can scale the part. The base value is 1.0; a max scale of 2.0, for example, means the part can be scaled up to twice its size; a min scale of 0.2 means the part can be scaled down only to 1/5 of its size. For example:

float modelMaxScale 2
float modelMinScale 0.5

There are also the optional properties modelDefaultScale, which can adjust the default size of the part when it is dragged from the palette, and modelScale, which applies an scaling factor to the model itself If you see the part looks too big/small by default, you can use these properties to fix it. Note: Changing modelScale changes the size of the part for all existing creations that use it. It is recommended to adjust modelDefaultScale instead for any parts that have already been used on creations.

Transformation

These properties are optional, but they can be used to apply transformations (scale, position and rotation) to the model. The transformation axes in these properties correspond to the axes in blender.

float modelScale 2.0  # make the model twice as large
vector3 modelOffset (0, 0, 1.5)   # move model 1.5 units upwards
vector3 modelRotation (90, 0, 0)   # rotation 90 degrees on the X axis

atk_strike_norm_waifu2x_art_scale Effects

It's possible to add effects to your parts. Use modelEffect to list all the effects you want to display in the model; modelRuntimeEffect is the same, but those will be the effects shown in-game.

keys modelEffect
	be_detail_house_04_editor
end
keys modelRuntimeEffect
	be_detail_house_04
end

atk_strike_norm_waifu2x_art_scale Audio

For mouths and feet, you will also want to configure the audio that they play for vocalization or footsteps. To configure the voice, you can specify the mouth type and mouth priority:

key mouthtype ROA
float mouthPriority 1

To configure the footsteps, you can specify the foot type:

key foottype paw

Without the mouthtype or foottype keys defined, a mouth or foot will make no sound.

mouthtype is a 3 letter key that follows the format of Type, Diet, Variant to define the voice.

  • Type: The Type is typically the first letter of a Core-Spore mouth's file signifier (eg. ce_mouth_* Radial, Bird, Jaw, etc)
  • Diet: The Diet can be C, O, H for Carnivore, Omnivore, or Herbivore, and usually also corresponds to a Core-Spore mouth's diet signifier (eg. ce_mouth_jaw_diet), though for the omnivore bird voice, the diet signifier should be C rather than O.
  • Variant: The Variant can be A, B, C, D, but has no affect on the voice in base game Spore, as there are no variants specified. As this may be changed by mods, it is best to default to A.

So, a mouthtype key of ROA will give a mouth the Radial Omnivore A type voice.

The key mouthPriority is used to specify which mouths take priority in determining the civilized voice. A higher value means that mouth's corresponding civ voice will take priority. Typically in spore, mouth priority follows this pattern:

"Insect" civ voice -> mouthPriority 1
"Bird" civ voice -> mouthPriority 2
"Mammal" civ voice -> mouthPriority 3

foottype is a word key that can be any item of these values:

bird
hoof
spike
paw
bare
sucker

A full list of mouth and foot types is available in system.soundProp.prop_t, and what mouth types correspond to what civilized voices is available in base.soundProp.prop_t (both in the Spore Audio package).

abilities_wiki Additional properties

If you want your part to feel more integrated into spore, it's good to keep gameplay in mind. Add a price for it:

int32 modelPrice 75

You can also specify the complexity:

int32 modelComplexityScore 2

I don't know if this has any effect, but it might be a good idea to specify how many bones your part has:

int32 modelRunTimeBoneCount 9

How easily your part unlocks ingame can be defined through the itemUnlock properties. Here is an example of some typical values:

float itemUnlockFindPercentage 0.99   # 1 = will always unlock next, 0 = will never unlock
int32 itemUnlockLevel 1   # corresponds to position in the parts row, usually 1-4

To optionally change the effect that shows ingame when unlocking the part, itemUnlockEffect can be set.

abilities_wiki Symmetry

Creature parts can have different versions depending on whether they are on the left, right, or center side of the creature.

The rigblock file you have created using this tutorial is the base file, where the general properties of the part are defined. In that file, symmetric variants can be defined using the properties modelCenterFile, modelRightFile, and modelLeftFile, which point to another rigblock .prop files to be used as that symmetric variant. These symmetric part files use the base part file as a parent, and only change a few properties like the rotation or the model.

Typically, the modelLeftFile is set to the path of the base file, and the modelRightFile is set to a file suffixed with -symmetric. modelCenterFile files are primarily used for eye parts, and are usually suffixed with -center (or _center).

key modelLeftFile creature_rigblock~!ce_sense_eye_dino_01
key modelCenterFile creature_rigblock~!ce_sense_eye_dino_01-center
key modelRightFile creature_rigblock~!ce_sense_eye_dino_01-symmetric

An example of a symmetric part .prop file:

key parent creature_rigblock~!ce_cell_movement_flagella_03
key modelMeshLOD0 editor_rigblock~!ce_cell_movement_flagella_01-symmetric.rw4

Note that in Spore, the symmetric part file is usually the one added to the items page, in order to make the parts face the correct direction in the palette.

Clone this wiki locally