by Mike Wiering, Wiering Software
Tile Studio is a complete development utility for graphics of tile-based games.
The application contains a bitmap editor for creating tiles and sprites and
a map editor for designing level maps.
Tile Studio can be used together with ANY programming language, since
the output is completely programmable!
You can program Tile Studio to output your maps, animation sequences,
bitmaps, palettes, etc. in any format and include the output directly
into your source code!
Tile Studio - tile editor (left) and map editor (right).
Click to enlarge images.
September 26, 2012 - Another update
This is another quick update with some extra features and fixes:
There is now an opacity slider at the top, so you can set the opacity of most drawing tools (when drawing on a transparent area, the opacity is always 100%).
Added a simple kind of onion skinning: right-click on a different tile at the bottom to see it vaguely through the current tile.
Added Tile | Replace Color Under Cursor (Ctrl+R).
Added View | Used Color Patterns (Ctrl+P), shows the patterns you've used before, you can select (left mouse button) or remove (right mouse button).
Select next or previous clips in the map editor with Ctrl+Shift+Alt Left or Right.
Added RGB Color Conversion Scripts (tile editor, bottom right).
Quotes in .tsd files can now be "..." or '...' instead of only "...".
Added Tile | Use As Alpha Channel (Shift+A).
Added <Counter1>, <Counter2>, etc. (up to 99), automatically increment.
Added option !StartWithEmptyTile for if you want the first tile in your tileset to be blank (use at the top of your .tsd file).
Import Palette in the palette manager works correctly now. You can also set up a default palette by naming it DEFAULT.PAL (F8 to switch to palette).
Download ts.zip (or just replace ts.exe).
Tile Studio II is being planned now, if you have suggestions how to make the program better, please list them at
Tile Studio Forum - Open Discussion.
July 27, 2008 - Quick update
This is a very early alpha version of 3.0, and it doesn't have many of the features that I planned
for 3.0, but you still might find it useful.
You can now type lists of anything you like (Ctrl+F10),
which you can then export using #list ... #end list. For example, you could make a list of
sounds for your game: [Sounds], JUMP, COIN, FINISH (each on a separate line). Then you could
export #list "Sounds" "\n" ",\n" "" and inside that you can use <Item> and <Index>
(also <ItemValue> if your list items are integer numbers),
for example: const SND_<Item> = "<Item>.WAV";. If you have multiple lists,
you can also add the name of the list as a prefix, for example <SoundsItem>. You can even
use the same list recursively, then add a number (0, 1, ...) at the end: <SoundsItem0>.
You can also use lists (with 0 or 1 item) for conditional compilation or as global constants.
Also, you go through a text file line-by-line (#readtextfile ... #end readtextfile)
or a binary file byte-by-byte (#readbinfile ... #end readbinfile) to export it in some way.
For text, you can use <TextFileLine> (<TextFileLineValue> in case it is a number) and
<LineNumber>. For binary files: <BinFileChar>, <BinFileByte> and
You can now use IF a THEN b ELSE c in numeric expressions! The result is
b if a is not zero, otherwise c (note that ELSE is always required).
Further keywords are NOT, EQUALS, ABOVE, BELOW, AND and OR (only works for numbers though, not for strings).
const <MapIdentifier>: array[0..<MapHeight * MapHeight - 1>] of <IF (TileCount ABOVE 255) THEN 16 ELSE 8 : "UInt%d"> = ...
In edit mode, the coordinates of shapes you draw are now logged (at the bottom right). This is meant for
drawing animations, where you want to make slight changes per frame. On a new frame, you can press SHOW to
see where you drew each shape before.
Other changes include (limited) .PCX support, replace current tile sequence in map mode (Ctrl+Shift+F7),
new #sequenceframe ... #end sequenceframe (same as #sequencedata, but goes through each frame duration+1 times).
Download ts.zip (or just replace ts.exe), enjoy!
December 1, 2006 - New BlitzMax example
I just made a complete new example of scrolling layers in BlitzMax, which is
far easier than the previous examples. It includes a new definition file BMXPNG.tsd:
November 16, 2006 - Version 2.55
This is another update with some fixed bugs and changes. Download the newest version from
or simply replace your ts.exe with the new version.
- Fixed: Replace Colors (Edit menu), Replace All didn't work properly.
- Added: Quick keys "0" - "9" for toolbox functions (pencil, paintbrush, ..., selection).
- Fixed problem introduced in 2.53: conflict between bounds and sequences (certain
bounds would change into sequence code 00).
- Fixed: starting a new selection in the map doesn't change the bounds anymore.
- Added: Sequences can now have bounds. When exporting data,
#sequencedata .. #end sequencedata can now contains variable
<Bounds> (the bounds of the tiles used to make the sequence).
- Fixed: <MapCount> was still not working correctly.
- Fixed: config file not loaded when starting from other directory.
- Added: transparent color can be changed by editing the config file TS.TSC.
- Added: Paste half size image (Edit | Scaled Paste), perhaps more to come.
- Fixed bug introduced in 2.54: #bitmapfile used current directory
instead of target directory.
July 23, 2006 - Version 2.54
This is an update with some fixed bugs and changes. Simply replace your ts.exe with this
- New: You can now export tiles as separate image files (use #tilebitmap .. #end tilebitmap
within #tile .. #end tile).
- #file now creates the target directory if it doesn't exist.
- New: Replace colors works differently now: first you need a color pattern containing
the colors you want to replace (or make one with Ctrl + Right mouse button), press
Shift + Tab (split color pattern), make a new color pattern with colors you want to
use and then press the Replace Colors button at the top.
- Fixed: placing a mirrored tile in the map sometimes gave a range check error.
- You can turn the back / mid / front layer off in the map editor (View | Show
Map Layer...), this is reset automatically when you switch back to tile mode.
- In the map editor, you can copy the current tile combination to the clipboard
(and paste it as a new tile in the tile editor).
- Fixed: <TilesetBitmapWidth> and <TilesetBitmapHeight>
are updated directly when you use #tilebitmap.
- New: You can set guidelines in the map grid (Map | Set Grid Guidelines...).
Here is a quick tutorial to help you learn to work with Tile Studio.
Most of it should be easy to understand for anybody. However, the part
about writing your own Tile Studio Definition files is meant for
people who have some programming experience.
This tutorial is also included in the .ZIP file, so you can read
To run Tile Studio, you will need a PC with Windows (any version)
with HiColor or TrueColor display (Tile Studio cannot be used with 256-color
display). Tile Studio works best on a desktop of at least 1024x768. If you
have only 800x600 (or less), be sure to maximize the window when you start
(so you also see the Tile Set panel and the status line).
- Tile Studio: ts.zip (unpack this into a new folder and start ts.exe)
- Source code: ts_src.zip (Delphi 7 source code)
Older versions are available on sourceforge.
And here are some examples of .tsp project files:
examples.zip (includes Worms.tsp, Charlie.tsp and Sint.tsp).
You can find the actual games (written in Clean) at the
Clean Game Library site (Games section).
Here are some examples of how to use Tile Studio with different programming languages.
The demo is very simple, it shows two layers scrolling at different speeds.
There is one animated tile sequence (used for the water).
Scroll demo for several programming langauges
These examples contain a .TSP file (with the graphics and maps), a .TSD file (which
specifies the output format for that particular programming language) and the source
code for the project. Most examples also include a working executable.
Note that the .TSD files here are only examples. Normally, you would write
a separate .TSD file for each project. But you could start with one of these.
If you have written a .TSD file for a specific language or library, which you'ld like
to add to this list, please send it together with a working demo (source + executable).
* The Turbo Pascal example is different from the others, it demonstrates overlapping tiles and
the use of palettes.
If you want to discuss anything that has to do with Tile Studio with other users, post a message here:
If you have bug reports or feature requests, you can post them
at the SourceForge page.
Return to Wiering Software