I just posted a description of the new code added tonight to the "State of the code" thread here. In it I made a request for room meshes, in this thread I would like to begin discussion of how these meshes should be designed.
Currently the only room we have a mesh for is the "Quarters" room, and this room is just a simple placeholder. For now, rooms could just be made like this one (except visually distinct of course) so we can load them into the game and test the actual game logic (workers carrying gold to the treasury, etc). However in the future (and we may want to start this right away) we will want to make multiple "fragments" of each room type to allow for "mesh optimization" like is currently done with the level tile meshes. This means that (for each room) we will need the following:
* A mesh for the "middle" portion of the room, i.e. a room tile surrounded on all sides by other tiles of the same room type (to be named something like Quarters4)
* A mesh surrounded on three sides (only one possibility here named Quarters3)
* A mesh surrounded on two sides (two possibilities here Quarters2a and Quarters2b, the difference is in whether the two sides are "next" to eachother or "opposite" eachother, if next to eachother then this is a corner tile, if opposite then this is a tile in the middle of a long line of room tiles)
* A mesh surrounded on one side (again only one possibility, Quarters1)
Note that, like the tile meshes, the above list is a minimal list and relies on the game engine rotating the given meshes to fit accordingly. For example there is only 1 possibility for the tile with 1 side surrounded, however the side could be north, south, east, or west (so there are really four possibilities for this one). We can get by with just one if we make the game engine rotate them but this leads to weird effects if the tiles are not rotationally symmetric.
I think the steps for the room tile design should be the following:
1) We make simple placeholder tiles for each room type and ignore the possibilities outlined above (i.e. do it like the quarters tiles are now). We may want to just skip this step entirely and move straight to step 2 for all rooms.
2) We make the minimal list outlined above and implement code in the game engine to do the necessary rotations. This avoids having to make all possible tile combos (approximately 20 by my count) and instead we only have to make the 5 outlined above. The downside here is that the tiles will be rotated so they need to be designed with this in mind.
3) We make all 20 or so possible orientation possibilites for each room type and remove the code from the game engine to rotate the room tiles. We may not ever actually want to implement this step as step 2 may be good enough, however this would really let us make unique, non rotationally symmetric rooms.
All of what I have said here regarding room tiles also pertains to level tiles as well (dirt, rock, gold, etc). So we may want to make the same kind of meshes for them as well. Currently the level tiles are at step 2 (although a couple of the more obscure possible options are still missing).
-Buck