The Beginning: Norse Colonization
Well, I guess it is time. I have little to no excuse left for not starting one of these, given that everyone gets one and everyone else is doing it, I may as well jump on board and join in the fun.
I have a few goals that come along with writing this Journal.
1. A method to better track development on a few key projects that always seem to get bogged down during start up so they never get off the ground.
2. Something to help drive me to keep working on said projects. I figure if I start posting here and get a few people following the project, then I'll be more likely to keep on task and not let myself get distract
Oh look! Butterflies!
Yeah, like there would be butterflies this time of year in Canada. (Actually that would be a good distraction.) I'm not planning on keeping this journal one hundred percent serious, and more than likely this will also include random snippets of other things from my life.
So, onto the project itself.
Currently the project I wish to focus on is unnamed, and it really is a series of sub-projects that will hopefully feed into each other to produce an interesting little game.
The overall project goal is to produce a game/simulation of what basically boils down to Norse Colonization of the new world. In short, the project is going to be an unholy love child of The Sims, Harvest Moon, Mount and Blade, and Dwarf Fortress. (Don't ask me how four games have a single child. Just roll with it.)
For technical details, the project is going to be mainly written in Python, with some parts written as C dynamically linked libraries. The whole project is going to be centered around Panda3D. (Which I just got reinstalled last night, and spent half an hour trying to figure out what was wrong. Nothing like face palming for your own failures. I had forgotten Panda3D comes with its own copy of Python, which I accidentally let it steal focus from the versions of Python I already installed. After following all the setup instructions a few times to be sure I had the panda.pth file in the correct place inside my Python folder, it turns out the issue was the file was missing from the wrong copy of Python. Apparently the copy bundled with Panda3D doesn't include this rather critical file in the correct place. Panda3D-1.7.0/python/Lib/site-packages is where you need to place it if you're running into issues Importing Panda3D stuff into your scripts.)
So, the first step is going to be a tiling terrain engine, which gets expanded to a general environmental system. This is going to focus on a large scale procedural generation system, which will allow a nice (and hopefully quick) level of detail system. I want the player to be able to feel like there are no boundaries to the game world, and to really feel like areas they explore are large natural landscapes (Possibly already inhabited. After all, I'm expecting some of the 'fun' to be Dwarf Fortress style.)
For now I am expecting to go with hexagonal tiles for the system, (Because they subdivide into triangles so nicely) and I will play with the actual tile sizes as I go. At this point I really have no idea how 'large' the tiles should be in game, nor how fine their mesh details should be. I'm also not really sure how I'm going to handle tile stitching when there is a change of mesh density. My guess right now is that when a mesh is updated, it will check the adjoining mesh on that edge, and snap its own edge to the adjoining if itself is a finer mesh, or it will nudge the adjoining mesh to update itself if the current mesh is being drawn at a lower level of detail.
The landscape is also going to be editable, and I'm really looking forward to exploring dynamic river and lake formations. Watersheds have always been an interesting subject to me, and it would be cool to try and find a solution that would allow spring flood simulations. If I can get it to do things like simulating larger rivers gouging up trees and forming ice dams, and then simulate these failing in real time with the rest of the game,... Well, lets just say this could lead to some interesting Dwarf Fortress style fun. (Yes, I have little pity for people who buy property, but can't be bothered to go look up a hundred year flood forecast for their region. Little tip: If the property is in the highlighted area that is labeled 'flood zone',... You might want to look at higher ground.)
The goal for the final game is going to be a 'mixed time' system. Part turn based, part real time. Not only that, but I'm expecting the final product to include part of the game played from a high level info screen/map where you'll really let the seasons turn and your settlement actually grow. The other part would be more Sims/Mount and Blade like, where you can get right down and watch things move and come to life. (And die, as combat/hunting/exploring and adventuring would be done mostly at that level. The goal is a Medieval Norse style simulation, and what is the fun of being a Norse style farmer if you can't pick up your battle axe and go off Viking?)
Besides the terrain, I also want to try and include a somewhat unique combat animation system. At the core I'm expecting the combat to run on a fairly light weight engine to decide actions, at this time I'm betting it is going to be something kind of like D&D mechanics. The light weight engine would decide what happened in the next 'round', like A attacks B, B blocks with his shield and counter attacks to strike A's left shoulder. Then the combat animation system would animate just that. The light weight engine may or may not take into account the positions the animation system puts them in. I think it would make for a far better system than the traditional "I attack you exactly the same way as I always do, and my sword passes right though you, and we'll roll dice later to decide how large the floating red numbers over your head will be". Of course I will likely include a basic system like that for large scale combat, and only use the advanced animation system when the camera is actually close to fighters.
I'm sure I'll have more to post on this project later, but for now I have a class to get to.