For starters, layers now can be created/deleted using the editor.
Code architecture change
I've made some non-visible changes to the code architecture. I was running into an interesting problem, where I had my code too flexible to be easily wielded.
Previously, I had my game areas laid out like this:
- An Area contains Chunks in a grid of an infinite non-defined size.
- Each Chunk contains Floors (no hard limit on the number of floors).
- Each Floor contains Layers (no hard limit on the number of layers).
- Each Layer is 20 x 20 tiles.
The benefit of this is that chunks that only need one floor, or just three layers, only have one floor or three layers or whatever, and the chunk right next to it can have 20 floors if needed.
The first major "problem" I encountered with this was when editing chunks in the editor. If I'm placing tiles on a floor named "Floor 1", on the layer "My background layer", and I am laying the tiles down without letting go of the mouse button, and I cross the chunk threshold to continue placing tiles in the next chunk - if that chunk doesn't have "Floor 1" (and instead has a floor called "My Floor" or "Bottom floor"), or doesn't have a "My background layer", what Floor and Layer am I placing the tiles on?
Do I not place the tiles down at all (heavily reducing the ease of map making)? Do I count which numerical layer "My background layer" is - it happens to be the first layer in the array, so switch to the first layer in the array on the next chunk? Do I create a new layer implicitly to match?
Fine, so I'll just sync up the layers. If I make a "My Floor" in one chunk, every chunk in the Area will have a "My Floor".
This leads directly to the second major "problem": Not all the chunks are loaded in memory at once. Only the nearby chunks are loaded, even when editing. So... if I add a new layer, do I add it only to the chunks in memory? What about all the unloaded ones? Do I add the new layers to the unloaded chunks on the harddrive? What if I then don't "save" the changes to the Area... do I then have to go delete the new layers that were added to the unloaded chunks on the harddrive?
There were three or four such problems - they all had solutions, but the solutions just felt like band-aids, so I am now rewriting the architectural code layout of areas. Since all the important code is already written, this code change actually won't take long at all.
Here's the new layout: (knocked up in MS Paint to help me visualize it while thinking)
The primary benefit is that Layers and Floors are automatically "synced" between chunks (or rather, they no longer have to be synced at all, since chunks now "exist" within layers and floors instead of vise-versa). I renamed Chunks to "Map Cells" to help myself not associate the old mental imagery with the new layout. As a figurative concept, Cells are much easier to work with. A "Layer" is broken into TileBlocks, one TileBlock for each figurative 'Cell'.
However, if a TileBlock is empty (or only filled with a single tile) it will be heavily optimized away, so ideally this new layout won't waste any more memory than the old layout, but will be much easier to work with (less band-aids needed to make it usable).
New concept town sketch
I drew this two days ago. It's the port city which I previously called "Viarmhiem" (but every town name is going to be changed - I decided to not use a made up language, and every in-game town will be derived from French, Latin, or Italian circa the 1500s to better fit the plot of the game).
I don't know how much work I'll actually put into the city/town, it doesn't really play a major part in the game's plot. Well, actually, to tell you the truth, it doesn't play any part in the game's plot (at least not in anything I've written yet). It's important culturally and historically to the area the game takes place in, but that's about it... so is it worth it to invest time making the city feel alive?
On one hand, I feel "Why bother wasting time and effort on it? Focus on the parts that matter, and ship the game, move past "Go" and collect $200, before you go bankrupt". On the other hand, there is the importance of polish and extra detail that players will appreciate and hopefully help make the game an underground hit in the 2D turn-based RPG niche. On the third hand, IF I ever get around to working on the two other games that take place in the same game world, it won't be wasted effort, and it'd be extra nice to see how the town develops and grows as time passes between the three games.
New tile art
I also spent some time this week putting some new art together.
Rugs
As mentioned before, I can actually apply coloration to the tiles within the editor - even so, usually I knock up multiple colorations while making the piece, just to hopefully later give me inspiration when I come across them in the editor.
Wood-paneled walls with built-in shelves
I'm very very happy with how these came out. Particularly the shadowing for the stairways, but overall I think it came out well. The walls are three tiles high (12ft) - most of my game will have walls 2 tiles high (8ft), so it's unusual, but makes sense in a wealthier house (like a Governor's or Lord's house). Such nice panelling also wouldn't be common, except in a wealthier dwelling. I think it'd also go well for a tavern, so I'll probably re-use it in several places in the game.
Here's a few more previews from the same set:
The mural (in the first image) I made two hours or so ago, but all three portraits ([size=2]barring the picture frames) in the last image are public-domain work (thanks Wikimedia Commons!). Hopefully the people playing the game don't recognize any of the portraits (the guy is the Duke of Tuscany, for example), because some art historian could totally call me out on the timeline of the portraits.
[indent=1]"Sir! These portraits are all from the 1700s... And painted by a Dutchman! I was led to believe that your plot takes place in the mid-1500s, concerning the French!"
I looked at the 1500s art, and didn't like it much, so I took some artistic liberties and time-travelled forward two centuries. Do you think anyone will notice?
[hr]
*phew* That was a long post... more like how I used to write 'em.
I hope all your projects or educational pursuits are coming along well!
Don't forget to tune in next week to find out that I didn't actually post anything and probably won't for another month.