Tristan and Iseult - Week 2
This time last week, I'd basically got so far as displaying the tilemap, displaying the groups-of-tiny-guys sprites, and doing the highlight-the-squares-yellow thing for their move ranges.
In the intervening time, I've:
- Got the rest of the battle UI sorted - as you can see in the above screenshot, there's now fog-of-war and a neat little menu for the available unit actions.
- Written some AI and pathfinding code.
- Set up the dialogue windows the way I want them, sliding in from the left or right and carrying the character sprite with them.
The battle engine had some AI already, but it was very simple stuff that basically just tried to manoeuvre an enemy fighter into a position that was an 'optimal' distance away from player fighters, and it was pretty easily fooled by path-blocking scenery. A hand-to-hand enemy, for example, always wanted to move towards the player's fighters. Stick a single-square tree in the way, and it would happily walk past it 'cause it had sufficient movement to so sideways past the tree and also nearer the player at the same time... stick a U-shaped rock formation in the way and it would get totally stuck in the 'cup' of the U, because the only way to get out would be to move further away from the player, and that would be bad!
The obvious solution was to implement proper pathfinding, so the battlefields in the current work-in-progress version of the engine now have an A* implementation that allows you to optionally find the distance of a walkable path between two points instead of simply the as-the-crow-flies range, and I've been working on targeting configuration that allows you to select whether fighters or scenery blocks this path separately, and allow the path to pass through (for example) friendlies but not enemies. I needed all this for Tristan, but of course anything that can be written in a generic-use way will be pushed back into the engine itself.
The problem is that now I've implemented enough mechanics for the game to be playable, I start wondering whether there's anything I can do to make it more fun than it is. It currently shows its Advance-Wars inspiration very strongly, and while there are a couple of things I've been playing with to differentiate it a bit and try something different, they all have their downsides as well. For example, one thing that's pretty easy to do with the battle engine is change the way units are activated, so I tried switching from a straight-up turn-based system to a 'recharge' system similar to that seen in Final Fantasy games, where each fighter has a 'readiness' gauge and they can only act once it's filled up. This makes the battle more free-flowing and removes the big wait while the enemy takes their turn with every one of their units, but on the other hand gives you less control over the order in which your guys do things, and ultimately less tactical flexibility. Is it a good idea? I really don't know just yet.
(Another downside is that I've started to do so much extra stuff just to make sure that this game plays as well as it can that I'm wondering quite how good it is as a demo game for the engine!)
Now, I've been focussing on the battle stuff this far, because it's the part that I can get stuck into without needing too many extra graphics - important, since I do a lot of this stuff on my laptop at lunchtime at work with no tablet. But of course, it's a VN, so there'll be a story as well, and dialogue and character development and pretty pictures and everything. The other thing I've done in the last week is plot out all the important parts of the story, and over the next couple of weeks I'll take my big-events bullet-point list and flesh each item out into several scene lists, and then those will get expanded out into written scenes.