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.
This video gives an introduction to Tile Studio and a demonstration how graphics can be exported and used with HaxeFlixel.
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 IFaTHENbELSEc 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).
For example: 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).
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)
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).