-
Notifications
You must be signed in to change notification settings - Fork 11
Property Lists (.prop)
Property lists are the most common file in Spore. They are used to describe properties and configurations of basically everything in the game: from spices to spacetools, parts, difficulty configuration, etc. Most mods require modifying these files.
In SporeModder FX, property lists are written in files with the .prop.prop_t
extension. The structure of these files is very simple: it's just a bunch of properties, each one in a line. An example of a PROP file:
Properties are written following this structure:
type name value
For example, the property editorDefaultBrainLevel
is of type int32
. If we want to assign it a value of 3, we would write:
int32 editorDefaultBrainLevel 3
A property does not have any meaning by itself, it all depends on how Spore uses it. This means that if, for example, you use a property from space tools in your creature part, the property will do nothing. This also means that Spore expects a certain property to be from a certain type. If you use a float in a property that was meant to be an int, it will not behave correctly.
Spore does have two special properties that are always used, no matter the file:
-
key parent
: Here you can specify the name of another property file that will act as parent: that is, by default our file will use all the property values of that parent PROP list. -
string16 description
: A text description for the file; it's only informative and never used for anything, so don't worry if you don't want to use it.
Properties can be put in arrays, so that they hold more than one value. The types are the same as for single properties, but they end with an s
. In array properties, each value goes in a separate line. Finally, a line that just contains end
tells where the array ends.
For example, if we want to add two effects to a model:
keys modelEffect
hash(myCustomEffect)
0x5D646B3F
end
-
bool: A boolean value, either
true
orfalse
-
int32: An integer value, so a number with no decimals. The number is a 32-bit signed integer, which means that it can go from
-2147483648
to2147483647
; you can also put the value in hexadecimal, such as0x04Ad7f3
. Sometimes these properties are used as IDs; you can get the ID of a name usinghash()
, such ashash(cylinder)
-
uint32: Same as
int32
, but this one is unsigned, so it can go from0
to4294967295
-
float: A floating point number, also known as real numbers: basically a number with decimals, such as
1.4
-
key: Used to reference a file or resource. It has three elements: a group ID (the folder name), an instance ID (the file name, without the extension), and a type ID (the extension). They are formatted like
group!instance.type
. For example:creature_rigblock~!ce_grasper_radial_03.prop
. Pro tip: If you holdCtrl
in the SMFX editor over a key value, you can click it to open the file it references. -
string8: Text. Only supports ASCII characters.
-
string16: Text. This supports any unicode characters.
-
vector2: Two float numbers, inside parenthesis and separated by commas. For example,
(0, 3.25)
-
vector3: Three float numbers, inside parenthesis and separated by commas. For example,
(0, 3.25, 1.0)
-
colorRGB: Same as
vector3
, but this represents a color: the values are the red, green and blue channels respectively. Values usually range from 0 to 1. For example, the green color is(0, 1.0, 0)
-
vector4: Four float numbers, inside parenthesis and separated by commas. For example,
(0, 3.25, 1.0, -25.3)
-
colorRGB: Same as
vector4
, but this represents a color with transparency: the values are the red, green, blue and alpha channels respectively. Values usually range from 0 to 1. For example, an opaque green color is(0, 1.0, 0, 1.0)
-
text: Represents a localized text. This property can only be used as an array, usually of just one value. Each value consists of two parts: the first one, optional, is the localization key, and it's written like
(tableID!instanceID)
; the second part is the placeholder text, with "". For example:(SRNS_AdventureBrushes!0x00000001) "PLACEHOLDER text"
-
bbox: Represents a bounding box. This property can only be used as an array, usually of just one value. Each value consists of two 3-value vectors, separated by a whitespace: one for the minimum coordinates and the other for the maximum coordinates. For example:
(-3.1, 0, -2) (2.3, 1.25, 0.7)
-
transform: Represents a transformation to an object. This property can only be used as an array. Each value is a combination of a position, scale and rotation, all optional. The rotation is in euler angles. For example, a value that does the three transforms:
-offset (0, 1, 0) -scale 2.3 -rotateXYZ (0, -90, 0)
SporeModder FX provides some useful tools when editing PROP files.
-
You can know information about the property by hovering its name in the SMFX editor:
-
When you start writing, a small popup will appear showing you all the recognized properties similar to what you are writing. If you click on one of these, it will autocomplete; in the most common properties, it will also complete the property type.
-
If you hover the mouse over a color value, a tooltip will appear displaying that color. If you
Ctrl + Click
on the color value, a color picker will appear to easily edit the color: