I'm still generating the wall/floor images using Blender, and then using KolourPaint to chop that final image up nicely and do any final touch-ups. The overall process for creating a new tile still feels long and tedious, so I'm becoming very keen on writing some scripts to automate some aspects.
All of the game content works through a definitions system, which simply reads a text file containing text like the following:
[TileDef]name=Brown Wall Littype=Wallimage=wall_brown_litbase-x=29 # x/y location in image of where the base of the tile isbase-y=86offset-x=16 # x/y/z offset in world coordinates of the tileoffset-y=0offset-z=4flip=trueindex=4
Most of it is probably self-explanatory, but the jist is that the game will read in these tile definitions from the file and create an internal representation. The base x/y specifies where in image coordinates the centre of the 3D object's base is. This is used to ensure that the image is drawn in the proper place. The offset x/y/z are in world coordinates and specify an offset for the tile or object. For example, an object like a mounted picture frame might want to be offset upwards in order to appear to be hanging on a wall. The other item of interest, 'flip', denotes whether the game should generate a second entry at load-time containing info for a flipped copy of this tile. Since walls can be aligned in one of two ways (look at the screenshot carefully..), this prevents me from making flipped copies of every wall by hand. I'm not totally satisfied with my solution to the flipping problem, but it works for now.
As I've been creating tiles, I'm getting a better and better feel for where I want the art direction to go. Heavy influenced by the Crusader games and System Shock, I'm interested in taking a mix of industrial, mechanical, and office-like decor. Perhaps the game will take place in some sort of large mysterious complex.
Finally, for anyone curious, the last screenshot I took of my workspace for the project looks something like this: