1.2 - Balance and Bug Hunt (Week 13)


Don’t Let Them Land 1.2

Final Week

This week I wanted to refine what was already there instead of adding new features. It seems important to focus on creating a good functional game even if it doesn’t quite represent what I had for my original concept. Bug fixing, balancing and little touches were what was on order, and I think for the most part I managed to achieve that.

In saying that of course I got a little distracted and added some things to make the experience just that little bit better, but I swear it ties into the balance stuff. I promise.

Finding Balance

The biggest issue I had with last week's version was that if you were really good you never got to see what the UFOs actually did and if you weren’t very good then you died before you got the chance to appreciate it. Things needed to stick around longer so that the player can experience the game. So I added health to the enemies and the shield.

Technically the shield already had health, but it just had a health of 1 and the game was “balanced” around that. Now it needed a bit more beef so you can survive a bit longer. I upped the number to 6 which is where it is now, but some things also do more damage (more on that soon) so it works as a good number. However, I needed to adjust the shield recharging which wouldn’t work well with this new set-up. Before the shield would only start recharging when it got completely destroyed. Now it can recharge back to full health after a short period of not taking a hit.

Next, the enemies needed to live a bit longer too. This took a little more work since the enemies didn’t even have a health value and just died immediately on hit. Thankfully someone smart added in a function for what happens when the enemies get hit so most of this code wasn’t too tricky either. Unfortunately, I don’t have a GIF of this but I forgot that my projectiles weren’t triggers so now that the enemies have health they don’t die but get launched by the lasers as the trust from the lasers gets added to the rigidbody of the enemies. A small adjustment to turn them into triggers resolved this.

All I had to do now was let the enemies hit a bit harder to balance out the bigger shield. The lasers do 2 damage, and the rockets do 5 since they are much easier to shoot down. Any UFO or asteroid hitting the shield only does 1 damage to reduce the threat level of them directly damaging things. I decided not to give the player health because I think its lack of lives balances this out.

I adjusted some other numbers too like movement speed, shooting speed and the spawning of enemies. I could play around with these numbers forever and never really be happy with them I think but they are in a good place.

Flashing Red

So, with everything balanced out as best as I could numbers-wise. Here is where I went a little silly and made sure to add something extra. With the enemies no longer dying in one hit the player now lacked any feedback if the hit connected or not, other than the laser disappearing. It was unsatisfying at best. I took inspiration from a lot of games and made the enemies flash red when they got hit. You can see it in action in Figure 1.

Figure 1 - Feels like a real game suddenly

As you can see, I added the same mechanic to the shield so that you can tell when it takes damage too. I think this adds good feedback for the player to react to when playing the game and it wasn’t too difficult to add either which is a blessing given many of the other “little” things I’ve added in the past.

Feedback and Bug-fixing

I reached out to my gaming friend this week after everything above was built and asked them to play and find anything that might need some improvement that isn’t a drastic change. One of them immediately figured out that when I changed the lasers to triggers earlier it allowed them to shoot the planet which thankfully was an easy enough fix but it’s funny that I didn’t catch it in my own testing.

Another big bug fix was the shooting code. A peer pointed out that the shooting felt off and suggested a possible reason was that I wasn’t calculating my direction from where the laser was shot. This was indeed the case and a simple fix, but it wasn’t the only issue to do with shooting. Because I had the player face the direction they shot and moved the instantiation point with that flip the player's sprite would update and the position but not the original direction I calculated. Now the direction is calculated twice. Once to face the correct direction and again afterwards to ensure it comes from the correct point. I tried a couple of other solutions that didn’t require the double calculation but none of them worked. Ultimately the double calculation is the correct and simplest solution for this even if calculating the same thing twice in a frame feels bad. Although I suppose it isn’t actually calculating the same thing twice.

End of the Road

This is the end of the development of Don’t Let Them Land as far as this assignment is concerned but I enjoyed the process and there is room for more work to be done when the semester is over. So, the future is a little uncertain on that but this version of Don’t Let Them Land will stand as it is as a testament to my work in this unit. I appreciate all those who provided feedback where they could and helped make this game what it is today.

A shorter devlog this week than normal for me to reflect the shorter week, I suppose. Lots of work went into the documentation and ensuring everything was ready for submission. I spent like 2 hours just cleaning up the project files :D.

References

External assets used:

Leave a comment

Log in with itch.io to leave a comment.