Custom character tutorial/S_SKIN
|Custom character tutorial||[view]|
S_SKIN lump may be the easiest place to start when designing a custom character. If you already know how fast you want your character to run, what ability it has, how high it can jump, etc., you can start by making an
S_SKIN lump to set the appropriate attributes. This chapter explains how to set up the
S_SKIN lump – some parts will require you to have already created some sprites for your character, which is covered in the next chapter.
You can create the
S_SKIN lump directly in your lump editor by creating a new lump, naming it
S_SKIN and typing out the contents inside the editor. Alternatively, you can write it as an external text file in a text editor such as Notepad and then import it into your WAD or PK3 file with a lump editor and name it
S_SKIN's placement in the WAD or PK3 file is very important:
S_SKIN must be placed immediately before the character's first sprite. The reason for this is that once SRB2 reads an
S_SKIN lump, it automatically tries to look for all of the character's sprites – in order – directly after that lump. If they're not directly after
S_SKIN and another type of lump is there instead (e.g., a SOC lump), the game will crash. Note that if want to put your character's sprites appear between the sprite markers
S_END (which is not necessary), you must place
S_SKIN in-between these lumps as well; as long as
S_SKIN appears directly before the first sprite, SRB2 will still recognize them as your character's sprites.
The format of text within
S_SKIN is very similar to that of a SOC lump – it consists of a list of parameters and their values. Text in the
S_SKIN lump is not case-sensitive, e.g., the parameter "facename" could also be written as "FACENAME", "FaceName" or even "FaCeNaMe".
When placed at the start of a line, the
# (number sign, or hash) symbol is used to signify the start of a comment, just as in SOCs. However, comment lines can also be started by placing two forward slashes (
//) at the start of a line.
The following is a typical example of what an
S_SKIN lump looks like:
name = Idreia face = IDRALIFE ability = CA_DOUBLEJUMP ability2 = CA2_NONE normalspeed = 36 thrustfactor = 3 accelstart = 112 acceleration = 42 startcolor = 200 prefcolor = Steel_Blue jumpfactor = 1
There are many parameters that can be supplied in the
S_SKIN lump; not all of them have to be supplied for a character, however. Any parameters that are left out will be set to default values. The full list of parameters is located at S_SKIN > Parameters.
This section explains how to create an
S_SKIN lump for your custom character from scratch.
Step 1: Identification
S_SKIN lump should start off with the following parameters, which are required for the game to identify or represent the character with:
- name: This is the name of the skin for your character, which is used internally for identifying the character within the game – e.g., the
skinconsole variable will require you to type this name out to switch to this character. For this reason, you should choose a unique name that is memorable and can also be easily typed out (if possible). Spaces are not allowed; use underscores (
_) instead. If another skin of the same name is added to the game, the game will automatically add a number to the end of the latter skin's name. To avoid this, ensure that your skin name is unique, for example by adding by your own username or an abbreviation of it to the end.
- face: The lump name for the life icon graphic displayed for the character, normally displayed at the bottom-left of the screen as part of the HUD. This is generally expected to be 32×32 pixels in size. In multiplayer gametypes, this graphic will also be displayed in the Rankings/Scores HUD and the results screen to identify the character.
- charsel: The lump name for the character portrait displayed for the character in Single Player's character select screen and the Record Attack screen. This image must be exactly 128×128 pixels in size, or 256×256 for high resolution.
Custom graphics will need to be imported into the WAD or PK3 file for both the face and charsel parameters; both of these should have no offsets whatsoever.
By default, the name parameter's value will also determine the name displayed for the character everywhere in the game. If this is not wanted – for instance, if your character's name parameter has your username in it to prevent clashes with other custom characters – the following parameters can be used to deal with this:
- realname: This determines the "real" name of your character to be displayed by the game in general, e.g., on intermission screens, the multiplayer character select screen, etc.
- hudname: This determines the name of your character to be displayed next to the life icon on the HUD. For example, the hudname for Knuckles is K.T.E. It is recommended to keep this name short so that it fits above the lives counter.
If either one of the two character name parameters above is given but not the other, the game will automatically copy the value for the one you have given to the one you have not included. Neither of them are required to be unique, unlike with the name parameter.
Step 2: Statistics and abilities
Next, you should determine what statistics and abilities your character will have; these are important as they define how the character plays through levels in SRB2. At this stage it is recommended to regularly test out your custom character in-game, and experiment with different stats to find what works best for your character. If you have not yet prepared any actual sprites for your character, use placeholder sprites in the character's WAD or PK3 file for the time being.
The following parameters should normally be set to determine the character's speed statistics:
- normalspeed: This detemines the character's "top speed" – i.e., the maximum speed in fracunits/tic your character can move up to. The values for SRB2's default characters are 36 for Sonic, 32 for Tails, and 34 for Knuckles.
- accelstart: Together with acceleration and thrustfactor, this value makes up your character's acceleration. When you start running from a complete standstill, this value determines how fast you will accelerate initially. The values for SRB2's default characters are 96 for Sonic, 192 for Tails, and 128 for Knuckles.
- acceleration: As your character starts gaining speed, the acceleration increases until you reach the top speed. This value determines how fast your acceleration increases. The values for SRB2's default characters are 40 for Sonic, 50 for Tails, and 45 for Knuckles.
- thrustfactor: This value is multiplied onto both accelstart and acceleration to form your character's acceleration. The values for SRB2's default characters are 5 for Sonic, 3 for Tails, and 4 for Knuckles.
These parameters determine the character's abilities:
- ability: This determines the character's primary special ability – this usually determines the action your character performs when pressing the Jump button in mid-air. Examples of a primary ability include Sonic's thok, Tails' flight and Knuckles' glide and climb abilities, which would each be given as
CA_GLIDEANDCLIMB, respectively, for this parameter. If the character should not have a primary ability,
CA_NONEshould be used here. A full list of primary abilities, along with full details on each, can be found at S_SKIN > ability.
- ability2: This determines the character's secondary special ability, such as whether to spindash (
CA2_SPINDASH) or not (
CA2_NONE). A full list of secondary abilities, along with full details on each, can be found at S_SKIN > ability2.
- actionspd: For some primary abilities, this parameter determines the speed the character moves at when performing the ability. The exact effect of actionspd on the character may differ depending on the ability you chose for your character; some may not use this parameter at all, in which case this parameter can be left out.
These parameters are optional, but you can apply them to your character as well if you wish:
- jumpfactor: If given, this determines the character's jump strength – more specifically, this determines the percentage of the default thrust the character will have at the start of a jump, expressed as a decimal (e.g., 1.0 equals 100%). For instance, Knuckles has a jumpfactor value of 0.85, which gives 85% of the full default jump thrust, while a jumpfactor of 1.5 would give 150% instead. The default value for jumpfactor is 1.0 (or 100% the default jump thrust) – if the character is meant to jump at the default strength, this parameter can be left out.
- mindash and maxdash control the minimum and maximum speeds that the character can spin at after charging up a spindash. For example, Sonic, Tails and Knuckles all set these to 15 and 90, respectively (these are also the default values for the two parameters). These require ability2 to be set to
CA2_SPINDASH; if this is not the case, these parameters can be left out.
Step 3: Appearance
Lastly, if you have already made significant progress with your character's sprites, you can start configuring how your character appears in the game via the
S_SKIN lump. Ideally you should plan this part of the
S_SKIN lump well in advance of adding the character's sprites, so that you can design them around the expected values you will set in the character's
S_SKIN lump – this will save you from from having to make tweaks to the sprites later on.
The following parameters control how your character's sprites appear in-game:
- prefcolor: This specifies your character's default skin color. This is required for Single Player, where the character's color cannot be changed under normal circumstances. Note that this parameter accepts the name of the color itself as the value – e.g. Blue, Orange, or Red – though two-word color names such as "Steel Blue" require an underscore (
_) character in place of a space (resulting in "Steel_Blue", for instance). See S_SKIN > prefcolor for the full list of color name strings that this parameter can take.
- startcolor: This specifies the range of colors in the palette on the character's sprites that will be replaced with the palette colors of the character's skin color. This is a range of 16 colors, starting from the palette color index specified by this parameter. See List of skin colors for more information.
Step 4 (Optional): Custom sounds
As a optional feature, the
S_SKIN lump also allows you to give your character custom sounds – these replace any one of a selection of existing sounds in SRB2, but will play only for your character if they originate from them. For more details on setting up custom sounds for your character, see S_SKIN > Custom sounds.
|Custom character tutorial||[view]|