Pix3M, if you''ve never heard of Pixothello or Pyxel edit, you should watch a few videos to see how such programs help drawing tiles :
http://www.youtube.com/watch?v=0xlBjM8Qjpchttp://pyxeledit.com/instructions.phpCosmigo Pro Motion, which is not freeware, has an extra feature that iLlKe described best:
Entering the tile mode can analyze the existing image,
counting the unique tiles used, based on the grid size you input(canvas size has to
be a multiple of this grid size). You can then continue to edit the image with all
the tiles updating across the screen 'in realtime'(not really, see below). In the end
you can even automatically have the program make the tile-set based on the image.
To speed things up, repeating tiles are not updated until you let go of the mouse
button, instead you just see the stroke in the place you are performing it.
Furthermore, if you draw out of bounds of the tile that you started your stroke in,
that part of the stroke will be ignored, effectively limiting the whole stroke to a
single tile.
In a program that has this feature, you "add tiles" by deactivating the mode, quickly draw a distinctive pattern on a few tiles, and reactivating the mode : All the tiles where you did the same change are now "the same tile" and you can do the real pixelling.
In Grafx2 2.4 I implemented this feature, except that the drawing is realtime, and not limited to a single tile: you can freely move your brush across tile boundaries and it paints on the right occurences of the tile. I find it extremely useful for drawing patterns made of more than one tile, even scattered ones.
This system is AFAIK the most comfortable way to draw mockups and do art, early on. However a limitation is that the tiles+tilemap data is always re-generated from scratch, and for actual game development if you need to attach properties to tile numbers (solid, etc) it's a problem. So the coder will still need additional development tools to merge changes into an existing tileset. Or use clever system, like storing the original tileset in the top left part of the image, so that it's "discovered" first by the analyzer, and thus maintains the same tile numbers.