V3 - Learning how to balance a scoring system


I just published the third official update to TIC TACTIC. It's a smaller update, but I'll provide a quick rundown of the changes below. This is a much more design-focused dev log given the nature of the changes made, so hopefully I don't lose your attention.


Scoring

Firstly, the scoring system had a bug that rolled over the score through the end of the match, which has been fixed. Unfortunately, this also means that I had to wipe existing scores from the leaderboard. 

Now, onto the interesting stuff: As you may know, the game is scored based on the number of enemies defeated, the amount of damage taken, and the number of turns used, in the following (updated) function:

Total score = 150(enemies) - 7(hp lost) - 3(turns used)

The previous version gave 100 points per enemy with subtractions of 10 per health point lost and 2 per turn used. There's actually some thought behind the change, so I'll explain my reasoning behind rebalancing the values:

Reason 1

If you die to the first enemy, your score is negative. Instead, I limit it to zero, because a negative score feels weird. However, in the previous version, if you beat one enemy and died (in other words, you lost 10 health), your score would still be negative, so you'd still get a zero. To prevent that, I buffed the enemy score and made it a little easier to end in a positive score if you beat an enemy.

Reason 2

I closed the gap between hp lost and turns used. You see, taking a hit means that you're generally losing at least 3 HP, not just 1. So, a single lost match would have penalized you by ≥30 points. On the other hand, taking a tie means that you would lose at least 10 points (1 turn to lock in the tie, plus 4 to score). 

This means that it would never be preferable to take a hit instead of a tie, and I did not like that. I mean, I myself will often tank a hit to set up a future combo, and I want that kind of forward-thinking to be rewarded.

With the new score, you would lose about 21 points to a normal hit, whereas a tie would cost you at least 15. Depending on how the board looks, it could be a better idea to take a hit if it meant you would get out of the fight faster.


What else is new?

Enemy Changes

I added two new enemies in this update: an unarmed grunt with a tiny amount of health to give a nice and easy start, and a new rooster elite option that you might encounter at the end of your run. I also rebalanced the decks of the two roosters to make them both feel different.

The Spear Rooster's deck is focused on adding as many tiles to the board as possible, with the new Shield Tile that takes two attempts to remove, and the 2-Tile that spawns an additional tile. The best way to combat him is with a deck full of destructive tiles like the Fire Tile.

The Bow Rooster is focused on removing your tiles from the board with a flurry of Sniper Tiles that destroys one of your tiles. The best way to combat him is by placing as many tiles as possible, especially with options like the Shield Tile and the 2-Tile. 

I wanted to encourage players to build decks that they liked versus playing to beat the rooster as fast as they can. With two potential mini-bosses, you can't min-max to beat them anymore, especially with such different deck strategies. This will matter more once I add more content to the game.


New Tile

The aforementioned Shield Tile actually introduces a new mechanism to the game. I'll explain.

See, all of the tiles before worked in basically the same way. If they had an effect or ability, it executed when they were locked in at the end of a turn. The Fire tile burns adjacent tiles, the 2-tile spawns clones, etc. This tile is different. The ability is enacted at death, so the tile does nothing until something tries to remove it from the board. 

For the player, this change is not hugely significant, but implementing it paves the way for new tile ideas that would not otherwise have been possible, like a tile that blows up when destroyed. Unfortunately, it also introduces some weird behavior, since it stays on the board through the end of a match, but it's not harmful so I'll fix it in a later update.


Lightning Round

As always, there was a host of smaller changes made, so I'll run through them below.

  • Your hand clears at the end of the match. Before, your deck would end up ballooning in size because the tiles in your hand weren't counted, so now it clears and redraws. It also means that using all your best tiles to finish an enemy off won't hurt you on your next match, since you might just draw them again anyway.
  • Enemy order is randomized (with rules). You're guaranteed to face a starter enemy on your first round and an elite enemy on your sixth, but the specific enemies that you face are now random. I mean, it's not a roguelite if you have a set path, is it?
  • Jackpot Tile has been removed. It was only in the game for a short while, but the tile needs to be reworked before it can be readded. Basically, the Jackpot tile is a tile worth 1 damage, with a 10% chance to deal 7 damage. This gives it an expected damage value of 1.6, making it better than a normal tile. However, with such a low hit rate, it's almost always just a normal tile. Obviously, I could have just buffed the numbers to something like 25% chance for 5 damage (expected value of 2), but the sprite art was also weird looking. I'll fix both and add it back in the next update. 
  • You can see the leaderboard (and your high score) from the title screen. You don't have to die to see scores anymore. You can see the top 5 scores along with your highest score in the main menu. I also increased the max name size to 7 and enabled a profanity filter. Not that you were checking, right?
  • Some stuff sounds different. I updated the sound effects for hovering over tiles, placing them on the board, and destroying them. It's not a super significant update, but it sounds nice.
  • Random seed is displayed in the pause menu. For now, this is mostly for my own debugging, but I'll eventually add a feature where you can load a random seed and start a match with it. I think it would be fun to compare scores knowing that you had all loaded the same seed.

That pretty much covers changes for this update. Hopefully you found it interesting! Swing by next week and I'll give a preview of new content, like enemies with clever names and new tiles with different mechanics.

Thanks for reading!

-unbreaded

Files

Build2_08142024.zip Play in browser
32 days ago

Leave a comment

Log in with itch.io to leave a comment.