Progress on Chaintanks has been slower than I would have liked for the past few weeks, but despite that the game is getting closer to feature complete.
The first thing I implemented was new targeting code for the AI. It can now lead it’s target based on the direction the target is moving and it’s speed. It took a while to get it right, but it was worth it to make the AI a real threat. When the AI just shot directly at the player it was too easy to just move in one direction and survive forever with a short chain.
I also finished up the threat system. When the player’s threat reaches 100 they’ll be forced into a new mission with a strength of 70 – that’s pretty hard, though not impossible. It’ll have no rewards at the end, so players will want to avoid them most of the time.
Spawning has been bothering me for a while. You couldn’t tell when enemies spawned, and there were often gaps in the gameplay that were useful for collecting scrap, but otherwise boring. I’ve tweaked the spawner to accelerate the next enemy’s appearance when the last enemy dies. I’ve also added arrows pointing to offscreen enemies:
This was another of those tasks that took some time to get right, but it was well worth the effort. The arrows work exactly as expected and the game feels much more polished for it.
I also spent some time balancing the game. It was far too difficult before, but I’ve gotten at least the early game fairly well balanced. If you’re interested in seeing how it’s coming along, I’ve included download links for the most recent version down below!
I’ve found that in the early game when enemies are slower than the player, it’s too easy to cheese enemies to death by simply running away from them and shooting them at a distance. Enemies will avoid shooting at you until they have started to orbit so they avoid damaging themselves, but this works against them when you simply run away.
One possible solution to this would be to simply wall off the play area rather than have it infinite as it is now. I’ll need to make it large enough that colliding with yourself doesn’t happen too often, but it will need to be small enough that you can’t kill enemies just by running away. I already know that missions need more variety, and adding boundaries can be a part of the process of making new maps.
A Bigger Problem
If the only problem I had was with cheesing enemies, I’d not be worried about balance at all. Unfortunately, the mid and late game are still not well balanced. In my postmortem of the Ludum Dare version, I wrote that the game collapsed completely in the later stages of the game mostly due to mechanical issues. I’ve solved those issues with changes to the AI, but as a result one new problem has come to light.
Once your chain gets longer than 5 to 7 vehicles, the game starts to feel like it takes a lot less strategy and skill. With a short chain, you can evade most bullets by weaving back and forth, while not causing too much damage to yourself. Once the chain gets longer, however, the time that it takes for the last vehicle to follow the path you made is so long that you can no longer evade incoming fire. This makes losing segments in the middle of your chain very hard to avoid, and causes the late game to get somewhat frustrating.
How can I fix this?
I’ve thought of a few possible solutions to this problem, and in the next few days I’ll try out the easiest ones first before doing anything drastic. As much as I’d like for this game to be perfect, it’s already taken longer than I would have liked and it’s still not even close to finished.
The first solution is simply to balance the late game better. I could do this by buffing scrap healing for higher tier scrap. Once you encounter high tier enemies, the scrap that they drop could heal you for a lot more, allowing you to protect those middle segments more easily.
I could also reduce enemy damage at higher tiers to make up for the fact that the nature of the game makes damage harder to avoid as your chain gets longer.
Another solution might be to change scrap healing so that it favors healing the most damaged segments first before any others. At the moment, healing starts at the front and goes backwards, meaning weaker heals won’t even reach damaged mid segments until the front is fully healed.
I could also also disable friendly fire. Once your chain gets long, you have to intentionally straighten it out before you can fire without hurting yourself. In theory I like the idea that attacking is something done deliberately and strategically, but in practice, shooting chunks of your own chain off is frustrating. The game doesn’t even give you any feedback when you damage yourself – it’s handled the same as any other damage, and I rarely ever notice until a few seconds after I’ve taken the damage. I often don’t even know if I was damaged by myself or by enemies!
The Nuclear Option
If all of these measures fail, there’s one more thing I could try, but it’s something I’m a little afraid to do. Rather than deal with these huge chains, I could limit chains to around 6 vehicles and find something else to do with all the scrap that is no longer used.
I really love the idea of having huge tank chains broadsiding one another, but if it turns out that the game just isn’t fun with these long chains then I have to let go of that idea. The dream isn’t dead yet though; I’m going to try everything I just mentioned before taking this step!
I do have one concern with doing this, however, and that’s that the metagame between missions may not work well if I do this. That player will probably cap out their chain at around 5 missions or so, but depending on which missions they choose they may still have 5 to 10 missions left to go. I’ll have to either shorten the overall game length to compensate, or add some other incentive other than extending your chain.
My recent play testing has brought some good insights, but I need to make sure I don’t lose sight of the bigger picture. Before the game can be released, I still have to solve the late game balance problem, implement varied missions, implement the boss, redo the UI, and make sounds and music (or more likely find someone to make music).
There’s a lot left to do, and I’ve probably forgotten something. I’m going to keep making progress though, and I’ll be back with another update soon!