Kartmaker guide

Templates

There are many kartmaker templates. To help narrow down which one you need, ask yourself:

How big do I want my character to be?
Most templates are made for sprites that are 80×80 pixels, but a few are made for 160×160 (the “big” templates) or other dimensions.
Do I want a pre-drawn vehicle?
Many templates save you time by including a vehicle—usually some kinda kart—drawn into the sprite sheet.
Is my character symmetrical or asymmetrical from left to right?
If your character's design is asymmetrical in an important way, then use an asymmetrical template; otherwise use a symmetrical one, since they take less work.

Blank

Karts

Other

Sprite Sheets

Each template comes with a sprite sheet where you need to draw all your character's graphics.

A symmetrical sprite sheet with a standard kart drawn in (breakdown below)
  • normal/driving sprites
  • steering (left) sprite
  • drifting (left) sprites
  • damage sprites
  • sign (appears when you win a race)
  • portraits
  • wheel refs (for wheel shine)

All characters act the same size in-game no matter what size their sprites are; look at a character's in-game shadow to see their true size.

Symmetry

One of the biggest decisions to make is whether to use a symmetrical or asymmetrical template.

  • Symmetrical (23 sprites)
  • Asymmetrical (38 sprites)

Asymmetrical template sheets need sprites of your character from all 8 directions for driving, drifting left and right, and damaged, plus steering left and right.

Symmetrical template sheets only need the front, back, and left-directional sprites (including all 8 sprites for drifting left). Kartmaker then flips the left-side sprites to make the right-side ones.

If your character's design is asymmetrical in important ways—not just small things like creases in clothing, posture changes, or differences in lighting—then you might want to use an asymmetrical template. Otherwise, use a symmetrical one—it's much less work.

Transparency

Most sprite sheets have blue backgrounds. Kartmaker uses some data near the top of the properties.txt file, labelled transparent_colors, to cut out those exact blues, so your sprites will have transparent backgrounds in-game. If you really want to use these blues in your sprites, you can either:

  1. use a template with a transparent background
  2. change the RGB values in transparent_colors and change your sprite sheet's background colours to match

Wheel shine

Sprite sheets with pre-drawn vehicles tend to have partly-transparent tires, and a set of sprites below the main sprites showing the vehicles (or just the tires) without transparency. These are used to make the tires look like they're actually spinning; the game renders the wheel refs behind the main sprites and swaps between the two wheel refs:

  • front-left drifting wheel ref 1
  • front-left drifting wheel ref 2
  • front-left drifting sprite
  • wheel refs in action (slowed down)

If you're using a sprite sheet with a pre-drawn vehicle then you don't need to edit the wheel refs at all. If you're using a blank template then the wheel refs should be empty (or you can draw your own).

Sprites

There's no limit to how you make your sprite, but here are some ideas:

  • draw them pixel-by-pixel
  • make and render 3D models (what I tend to do)
  • sketch with a tablet
  • take photos of physical drawings
  • build vector art
  • combine images collage-style

Basically any way you can get your character down to 80 × 80 pixels (or however many are in your sprites).

Draw your sprites on a different layer to the sprite sheet background! This makes them more portable.

Colours

You can use any colours you like in your sprite sheet, but since Kartmaker will convert them to the SRB2K palette, you might as well limit yourself to those 256 colours if you're drawing from scratch.

The SRB2K colour palette

Palette swaps

Palette-swapping Sonic in single-player character select

Just like many games where multiple players can pick the same character, SRB2K can swap characters' colour palettes so you can tell the difference between players using the same character.

The game does palette swaps using 16 specific greens in its colour palette. If you draw with any of those greens on your sprite sheet, the game will swap those pixels for a player's colour scheme (here's all 100 colour schemes). All the normal colours appear exactly the same in-game as on your sprite sheet; only the palette-swap greens change.

Colours on your sprite sheet
a set of 16 green colour blocks
…become these colours in “red”
a set of 16 red colour blocks
…these colours in “algae”
a set of 16 blue and green colour blocks (lighter blue to darker green)
…and these colours in “royal”
a set of 16 yellow and purple colour blocks (lighter yellow to darker purple)

Tips

  1. Add a narrow outline around your character to help set them apart from other textures (I tend not to include the border around parts of my sprites that match the outline colour, but that's up to you).

  2. The small portrait, which is used on the mini-map, should be drawn entirely in palette-swap greens to help identify players, since these icons don't have the room for a lotta detail.

  3. The area marked out in the sign sprite block's background is slightly bigger than the area that actually fits into the sign.

    The white rectangle and everything inside it fits into the sign's pre-existing border when looking at the sign head-on
  4. Your character can be seen by different players from different angles at the same time. Normally, all sprites in each set should be consistent, as if it was 8 different views of the same pose (drive, drift, damage). However, you can also imaginatively use this to your advantage:

    The drift sprites from my Dracula Flow custom character, which flips off all observers simultaneously no matter what direction they're looking from.

Sound Effects

You need 11 sounds in .ogg format (export them as .ogg or “Ogg vorbis”):

win
you finish in the top half of players
lose
you finish in the bottom half of players
gloat
you use the Grow, Shrink, or Invincibility items
slow
you pass someone
boost1 + 2
you use a boost item
attack1 + 2
you use a weapon item
hitconfirm
you hit someone else with a weapon item
hurt1 + 2
you're hit by a weapon item

The game picks either of the boost, hurt, and attack effects at random. You can make two different sounds for each, or just copy the first to make the second (e.g. copy boost1.ogg and rename it to boost2.ogg). Your character must have separate files for all 11 sound effects, and they must have the names listed above.

Your character's sounds will play as part of a loud, messy soundscape, so don't stress over fine-tuning the audio quality and balance.

Sources

If you're making a character from a videogame, TV series, etc. then you can probably find matching audio clips online at these (or other) sources:

  • media sound effect collections like the Sounds Resource
  • video hosts like Youtube, using downloader sites/browser extensions
  • general sound effect collections like freesound.org

Tips

  1. Sounds can easily become lost in the loud SRB2K soundscape, so try using a compressor (or soft overdrive) and amplifying them to make them more audible, then turning them back down a bit if they sound too loud or harsh in-game.

    Two audio tracks showing the same sound: the waveform's taller (louder) in the second track.

    You can find effects like Amplify, Compressor, and Distortion (for Overdrive) in the Effects menu in Audacity.

  2. Keep your sound effects on the shorter side to avoid too much overlap when they play in-game (your win and lose sounds can be longer, though). Anywhere up to 5 seconds is fine for most sounds.

Metadata

Every template comes with a text file called properties.txt with info about your character and template. You need to edit the top part of the file:

"name": "example", "realname": "Example_Skin", "gfx_prefix": "EXMP", "stats": [5, 5], "startcolor": 160, "prefcolor": "red",
name
the internal name the game uses for your character (you won't normally see this in-game)
realname
name players actually see when they select your character
gfx_prefix
a prefix for your character's in-game sprites: must be exactly 4 characters long and only use capitals A to Z, numbers 1 to 9, and/or underscores
stats
your character's speed and weight (two numbers from 1–9)
startcolor
don't change this unless you know what you're doing!
prefcolor
name of your character's preferred colour scheme

The game ignores non-ASCII characters, so e.g. a realname set to “ZoĆ«” displays as “Zo”.

The name and gfx_prefix should be unique among all loaded characters to avoid conflicts like the game using the wrong sprites for your character. Try to avoid obvious choices for your gfx_prefix!

Use underscores instead of spaces in the realname; the game crashes if the realname includes a space, but converts underscores into spaces just fine.

The prefcolor must be the name of one of the in-game colour schemes in lowercase.

Start colour

This is an advanced property that you don't need to worry about unless you know what you're doing! Once you've written all the other meta-data properties you can normally just move on to Assembly.

You don't need to edit this unless you really want to use the palette-swap greens as regular colours, but in case you do, here's an explanation of how this property works.

Look at the game's colour palette. There are 16 rows and 16 columns (256 colours total). The number/index of the top-left colour is 0 (not 1). There are 10 rows × 16 columns = 160 colours before the row of palette-swap greens. Take away 1 because the first index is 0, not 1, and that means the palette-swap greens start at index 160. So: you can change startcolor to set a different range of 16 colours the game will use when palette-swapping your character.

0–15
16–31
32–47
48–63
64–79
80–95
96–111
112–127
128–143
144–159
160–175
176–191
192–207
208–223
224–239
240–255

The range doesn't loop after 255, so setting an index from 241 onwards cuts off one or more colours from the dark end of colour schemes.

Example

These are the sprites, sound effects, and metadata for my Dracula Flow character, which uses a symmetrical template.

Sprites

Note the 1-pixel black outline around the sprites; the palette-swap greens on the jacket, kart frame, mini-map portrait, and sign image; and the blank wheel refs (I use a custom-drawn vehicle and didn't do wheel shine, so I didn't need wheel refs).

Sound effects

attack1.ogg
attack2.ogg
boost1.ogg
boost2.ogg
gloat.ogg
hitconfirm.ogg
hurt1.ogg
hurt2.ogg
lose.ogg
slow.ogg
win.ogg

Most of these are relatively long. They're also relatively loud! They need to be in order to sound clear in-game.

Metadata

"name": "draculaflow", "realname": "Dracula_Flow", "gfx_prefix": "DRCF", "stats": [5, 5], "startcolor": 160, "prefcolor": "ketchup",

Assembly

Once you've made your sprite sheet and sound effects and edited your metadata, you should have a list of files like this in one folder:

  • attack1.ogg
  • attack2.ogg
  • boost1.ogg
  • boost2.ogg
  • gloat.ogg
  • hitconfirm.ogg
  • hurt1.ogg
  • hurt2.ogg
  • lose.ogg
  • properties.txt
  • slow.ogg
  • sprites.png
  • win.ogg

The files must have the names and formats above, e.g. your sprite sheet must be a PNG file called sprites.png.

Give the folder the name you want the final file to have, then drag and drop it onto kartmaker.exe. The program runs automatically. It'll make your character .wad file in the same folder as itself; if it doesn't, double-check that all the files listed above are in the folder and that the metadata's correct.

Testing

Move your character's .wad file to the srb2kart folder, which will probably be somewhere in your user account's root folder on your computer (e.g. on MacOS, go to your hard drive → “Users” → your user folder → “srb2kart”). You can now load up your character as an add-on in the game.

Here are the main things to look for:

  • do they look fine when palette-swapped?
  • are all their sprites complete and correct?
  • are their sound effects audible?
  • is their metadata correct in the menus?

Character select

Enter multi-player, then “Player Setup”. Check your character's name, stats, medium and large portraits, and preferred colour scheme (by selecting colour schemes and hitting Space or Backspace).

Race

Start an offline multiplayer race in the Twinkle Cart map, which has a lotta special boost pads that trigger the boost sound effects. Check your sprites by driving, drifting, and falling into a pit. Check your small portrait on the mini-map. Hold Shift to see your character from the front.

Finish the race and check your character's sign sprite and winner sound.

Battle

Switch to any battle map and use items to check more sound effects: use weapons to check attack sounds; get hit to check hurt sounds; and use the Grow or Invincibility items to check the gloat sound.

By this point, you've tested everything you can test alone. If you found any problems, go back and fix them and run your files through Kartmaker again. Otherwise, you can go ahead and put them on whatever server you're playing on!

Problems?

Here are some problems you may have when using Kartmaker, and some advice on fixing them:

Why doesn't Kartmaker run when I double-click it?
Kartmaker doesn't have a graphical user interface, e.g. a window with menus and import/export/save options. You need to drag your character's folder onto the kartmaker.exe file. It'll run automatically. See Assembly for more info.
Why doesn't Kartmaker work when I drop my character's folder on it?
Double-check your files against the list in the Assembly section to make sure you have your sprite sheet in PNG format, your 11 sound effects in Ogg format, and the properties.txt file that came with your template (with your character's metadata written in). Note that all your character's files must have the name and formats listed in this guide.
Why do my sprites have blue backgrounds in-game?
If your sprites have the same blue backgrounds as in their sprite sheet, then either the colour values of those pixels changed slightly, or you're using the wrong properties.txt file. See the info on sprite sheet transparency.
Why can't I hear my character's sound effects in-game?
It's possible they're just too quiet. Try turning down the music in Audio Options and re-testing them. If you can hear them after all, then try amplifying them in an audio editor. See the tips for sound effects for more info.
Why do only some of my character's sound effects play when I test them?
Sound effects are caused by specific triggers and not all triggers can happen in single-player races. For instance, the hurt1 and hurt2 sound effects only play when you're hit by a weapon, but there are no weapons in single-player races. Try all the tests to test as many sound effects as possible (even then, a few can't be tested in any single-player mode).

Home

Wanna make a custom character for the freeware kart racer game Sonic Robo Blast 2 Kart (SRB2K)? There's a simple tool to do that: Kartmaker, by ficklehearts. Unfortunately, the documentation isn't great, so I wrote this guide instead. It might go into more detail than you need, but I figured it was best to overcompensate.

This guide hasn't yet been updated for the Dr. Robotnik's Ring Racers version of kartmaker, which has an expanded sprite sheet and one more piece of metadata, but it should mostly work.

Requirements

You will need:

Kartmaker is Windows-only, but you can compile the source for Linux. On MacOS, run it in emulated Windows (e.g. in Boot Camp or Parallels) or ask someone with Windows to do the assembly for you.