Looking great, and that huge map too. Are you putting that structure creation into C++ code as well? You might profit a lot from including a scripting language like Lua for that procedural generation. And it will allow gamers to extend it, people love modding.
Thanks! I had a nightmare trying to find photo stitching software that would just create that image. I literally lost a couple of hours experimenting with different options, most of the software was trying to automatically compensate for prospective that a real panorama shot from a camera would have so it was a bit of a frustrating experience. In the end I just did it manually with about 30 screenshots in GIMP.
The structure creation is interesting because it is based on prefabs which are placed in the maps directory of the game. When a world is generated the world-wedge (as I call it anyway) is carved, then resources are placed, then sprites and water, then caverns are cut. All of this happens procedurally. Then the world is broken down into a couple of 2D grids (one for above ground and the other for under ground) and there is a low chance that each part of the grid has a prefabricated building or structure placed. This may chance later depending on whether I get the results I'm after with this approach - I'm still testing.
Whilst there are only four different prefab structures at the moment (which are basic shells still too - more to come) there is nothing to stop a modder creating their own - it will be included in map generation as long as it follows the prescribed map format which I've made very simple and can be instantly worked out by just opening a prefab file in a text editor.
Currently it is in this format:
-4 (map header - file schema version)
14|27|7 (map header - prefab size - x,y,z)
0,0,12,10,0,LN,100 (repeating structure for as many blocks are needed)
...
z pos, x pos, y pos, block type ID, sprite type ID, overlay precalculation, block constitution (amount of damage - 100 = none)
I actually create prefabs currently by switching to a special map editing debug mode inside Isomer and crafting buildings out of a special block type, I then save the game and run a python script which extracts the blocks and creates the prefab file. I'm not sure if this method will be powerful enough for later when structures are comprised of many block and sprite types but we shall see, I've got a couple of ideas how to approach this. If (and this is my intention) I have a robust prefab creation method then I see no reason why I can't include the scripts with Isomer to facilitate modding. I got started making games by modding, making maps for games like Quake and tweaking things so it's something I'm really keen on.
As for spinning out the procedural stuff into a scripting language, the main reason I didn't do this from the start was concerns over performance. I haven't settled on a max size for worlds, but one of the world generator options creates worlds that are 1024x1024x16, that's 16,777,216 blocks and takes about 12 seconds to generate on my dev machine (Core i5-3210M). I'm sure I can optimise my generation code a bit but I worry about older machines taking an age just to get into the game. I need to do some testing, the problem is I'm the sole developer working on this and the task list is a bit long still
. I really like the idea of having bindings to say Python (or Lua, just I've never used it before so I'm not really familiar) - perhaps that can be a post 1.0 feature
I was actually thinking of making a survival-exploration-real time strategy game once, wondering why I haven't seen any. Nice to know that I was wrong and that survival-exploration-real time strategy is actually a thing. Really nice job on this so far, I'll make sure to keep an eye on this one...
Thanks a lot! The initial idea spawned many years ago when isometric style games were more mainstream, the whole project has been really fun thus far. I almost have a child like glee when each big next thing is in Isomer and working so I'm looking forward to releasing it. I'm hoping there will be enough people buying it to enable me to invest more time after release to add all the really cool stuff I want to like day/night cycles, weather, smoke, maybe more player entity classes, more neutral characters dependent on world type etc etc - this is currently my full time job as well as passion