Guide to spriting

From Yogstation-13
Jump to navigation Jump to search

This is not a technical guide on how to do sprites in a graphical program, this is a guide intended for people who know how to sprite, but need to know what exactly is needed when people want sprites done for them. Most sprites are 32x32 pixels. They use 32b colors (24b + alpha channel).

Object overview

There are 4 types of objects in the game:

  • Area - we won't be interested in these as you can't see it ingame and wip graphics are sufficient,
  • Mob - humans, monkeys, cyborgs, aliens and other living creatures on the station,
  • Objects - machines, doors, items and anything else in the game,
  • Turf - walls, floors and space

The DMI file format

Sprites in SS13 are packaged in .dmi files. To make a new dmi file, open up dream maker, select file > new and choose icon file (dmi) from the drop-down menu. Write a file path for it and hit ok.

A new window will open with a blank file. in the upper-right are two spaces for sprite dimensions. Most sprites are 32x32 pixels in size. One dmi file cannot hold sprites of different sizes, unfortunately.

Now right-click somewhere in the whiteness. There are two types of sprite: pixmap and movie. A pixmap is static while a movie can be animated and face multiple directions, that's all the difference. Let's make a movie sprite. (New movie)

A window opens with four directional arrows and 3 frames for each of them, all of them gray. Byond understands 8 directions. You can choose how many you wish to use below the sprites themselves: 1, 4 or 8. You can also select how many frames you wish the animation to have. If you're making a multi-directional static sprite, make a movie with 1 frame, so no animation, but with 4 or 8 directions, depending how many you need. If you wish to have the sprite animated it may also interest you that you can set the delay in 1/10 of a second above the particular frame. Okay, hopefully you'll know what to do from here. The built-in sprite editing tool is very primitive and the only thing worth mentioning in it is how to apply the alpha filter. If you double-click any image you'll get to the sprite editor, and at the right of it is a vertical slider, which controls the alpha channel. Also worth mentioning is that copying from the editor can behave a bit strange, by making full backgrounds despite the alpha filter being set. Just 'flood' the background with a color with an alpha value of 0 or use 'import', which works fine.

Now let's assume we've made your sprites sprites, go back to the dmi file (the screen which showed up when you first made the file). Assuming you've made a sprite, you'll see it in the list there. Double-click just below the actual sprite and a rename window should open, alternatively select the sprite and hit F2 on your keyboard. Give a name to your sprite. This name is often referred as an icon_state, as that's the variable name which defines it in code.

Also note that you can import and export image files of different sorts by selecting the files you wish to export in the editor (hold ctrl to select multiple) and right clicking and selecting export, or right clicking anywhere and selecting import to import. DMI is similar to PNG, so if you rename a DMI's extension to PNG it should work in all graphical editing software. It usually works in reverse too. This makes recoloring quicker.

Now, hopefully that's all the information you need to sprite and make dmi files.

From PNG back to DMI

Here's Errorage's video tutorial (thanks Errorage!) on how to convert your beautiful PNG file into a DMI, you can watch this or follow the guide below, they are essentially the same.

The first thing you want to do is download TweakPNG from here,

You then want to copy the .dmi and make it a .png.

Dmi and png files here.

Open the .png file in a photo editing software like GImp or Paint.NET.

Png file opened.

Make any edits you want.


Save/Export the file. Along with opening TweakPNG.

Rename the .png to something new and make it a .dmi.

You can then drag your .dmi file into TweakPNG.

Copy the chunk named "zTXt".

Drag on the new .dmi and copy the "zTXt" chunk over and make sure it's anywhere under the "tRNS" chunk.

Oh god what is going on.

Open your new .dmi to make sure it worked.

Hey! It worked!

Required sprites by object category

Now to tell you what sprites different types of items need:


  • Mob sprites for the most part require four directions.
  • Mob sprites require dead sprites.
  • If you choose to, you can make a laying sprite.
  • If making a mob, that can wear clothing, you can use pixel_y, pixel_x to shift clothing on, when coding the mob.


  • Floors are in icons/turf/floors.dmi - Check the file for examples.
  • Walls are in icons/turf/walls.dmi - Check the file for examples.
  • Shuttle walls and floors are in icons/turf/shuttle.dmi - Check the file for examples.
  • Space tiles are in icons/turf/space.dmi - Check the file for examples.
  • I think these are pretty self explanatory.


  • Objects sprites are located in the icons/obj folder.
  • Items sprites are spread throughout said folder.
  • Item sprites for the most part require in-hand sprites. They can be located in the icons/mob/items_lefthand.dmi and icons/mob/items_righthand.dmi section.
  • Clothing sprites are located in the icons/obj/clothing folder.
  • Clothing sprites on mobs can be found in the icons/mob folder.
  • Clothing sprites for the most part require in-hand sprites. They can be located in the icons/mob/items_lefthand.dmi and icons/mob/items_righthand.dmi section.
  • Machinery sprites are located icons/obj/machines folder. Although a good amount of them are located in the icons/obj folder.
  • Door sprites are located under icons/obj/door folder.
  • Normal door sprite require door_closed, door_locked, door_opening, door_deny, door_closing, door_open, door_spark, o_door_opening, o_door_closing, panel_open, welded, and elights. I suggest looking over a door dmi.
  • Blast doors only require opening and closing sprites and sprites for when it is open and closed.

Contributing sprites and finding sprite requests

See here for details.

Guides For Making Sprites

Contribution guides
General Hosting a server, Setting up git, Guide to GitKraken, Downloading the source code, Guide to contributing to the game, Reporting issues, Game resources category, Guide to changelogs
Database (MySQL) Setting up the database, MySQL
Coding Understanding SS13 code, SS13 for experienced programmers, Text Formatting
Mapping Guide to mapping, Room Structure, Map merger
Spriting Guide to spriting
Wiki Guide to contributing to the wiki, Wikicode, Styleguide