Scoring System – Balancing and Handling difficulty

It’s been quite some time since I have posted! What have I been up to ?

  • I’ve updated my first game: Cube Overlord for Android.
  • I am waiting for libgdx free iOS publishing solution to come out of beta so I can start publishing on iOS too.
  • And….I’ve started working on a new Game !

My first game was a vertical scroller, I am happy that I did and released it. I am mostly happy about the results but it took quite some time and there are a lot of parts I am not so happy about. For my second game I want a simpler project where I can focus on those parts to improve my skills, so I am going for a puzzle game!

It doesn’t have a name yet but it’s going to be some sort of mix between Boogle and Tetris . The basis is quite simple you combine letters to make words and earn points.

I don’t have much to show yet, but I want to talk about the scoring system.

Most, if not all games nowadays have some kind of scoring system. You get 1, 2, 3…stars at the end of each level (I will refer to this as the “Star” system for the rest of this post), awards, achievements…

Cube Overlord - 3 Stars

Cube Overlord – 3 Stars

The Star System

The logic behind this is that it gives the players more goals to achieve and awards to collect, adding to the replayability of your game. Some players will be satisfied simply completing a level, but other want to beat the game 100% and get all 3 stars for each level. It’s usually good to cater to all kind of players.

Here I am not going to discuss whether or not this is a good idea but I want to talk about how I implemented and balanced this Scoring System in my new game, specifically how I designed my “Star” system

First, let’s talk about the possible criteria for this system:

Point based:

You get a star after you pass a certain threshold. The way the user collect those points is specific to your game and can vary in difficulty

Checkpoint based:

You get a star for a specific action or for filling a specific game condition in the level, there are many possibilities and of course most will be specific to your game. Here are some examples :

  • Finish the level under x seconds
  • Finish the level without getting hit more than x times
  • Collect one or several special/hidden items

This is usually a good idea when you want your users to experience your game in a different ways, explore the level instead of rushing to the exit (or vice versa), play stealthy rather than rush into the battle etc…

All is one

You might be tempted to convert those conditions into points as well:

  • The remaining time is converted into points,
  • The player looses points when  he gets hit
  • Special items gives a set amount of points.

but there are several drawbacks to this method

  1. If there are several ways to earn points, you loose the ability to “orient” the user toward a specific action/gameplay. Which is not a bad thing by itself depending on what kind of game you are going for. Leaving multiple options to earn stars means that you can play the way you want and not be punished, of course this work only if you have viable gameplay alternatives.
  2. You risk complicating the scoring system and making it too opaque for your player.

Examples

Cube Overlord

Most games will base their scoring system on points only or on a mix between points and checkpoint. Here is what I did for Cube Overlord:

  1. A star for completing the level (minimum required)
  2. A star when getting more than X points
  3. A star if you completed the level without being hit a set number of times (0 for harder levels)

What does this achieve ? Well in Cube Overlord, there is a mechanic to increase your score multiplier but it requires you to stay in the same color for long period of times, this create a whole new sets of challenges for the player that I will not detail here. If the player only wants to complete the level, then he can play it safe, but if he wants to get this extra star, he will have to use this “optional” game mechanic and engage in this new gameplay.

In this game, I play tested each level several times and estimated the point threshold to get this star based on my own scores. This was quite time consuming and required me to retest each level after a redesign. I didn’t want to make the same mistake this time so I looked into other solutions. (I am not saying you shouldn’t play test your game!).

My new project

For my new game, I decided to base my scoring system solely on points. This is a decision that you have to make on a case to case basis. For me it was quite straightforward, in my game you will get more points by making longer words. There is no reason to add extra incentives such as “Make a 6 letters word to get a star” and since there is already a time based game mode planned I didn’t want to add a time based condition such as “Get X words under Y seconds”. There is nothing stopping me from adding those as Challenges/Awards later on anyway.

Using a point system has the extra advantage that it is easier to decide the thresholds value for each extra stars using a systematic approach:

Warning: The numbers used below are used for this example and may not apply in reality, but the logic remain true.

I have the following point system:

  • 2 letters word : 15  points
  • 3 letters word : 30 points
  • 4 letters word : 50 points
  • 5 letters word : 75 points
  • 6 letters word : 105 points

It’s not linear because the difficulty to find longer words increases exponentially so the point system reflects that.

This is not set in stone but we will use this as a base, I evaluate the difficulty for each possibility:

  • 2 letters word : Very easy
  • 3 letters word : Easy
  • 4 letters word : Medium
  • 5 letters word  : Hard
  • 6 letters word: Very hard

First solution

Let’s say I want my first level to be very easy, and I want it to last about 30 seconds, I evaluate it takes the average user about 3 seconds to make a 2 letters words. So to make the level last 30 seconds, the user will be limited to 10 words (10*3 = 30, my math checks out!). So the target for my first level would be 150 points!

Now I want my players to be able to over achieve and earn extra stars,

  • so for one extra star the difficulty should go from “very easy” to “easy”
  • and for two extra stars it should go up to “medium”.

Let’s say it takes 5 seconds for a player to make a 3 letters word, and 7 seconds for a 4 letter words.

  • So for a 30 second game session, the first extra star will require (30/5 * 30 pts) = 180 points
  • And the second extra star will require (30/7 * 50 pts) = 214

This is not perfect of course, in this case I think I should increase the score for each extra letter, but it’s a good start.

Second solution (not necessary incompatible with the first one)

Let’s say I don’t want players to keep entering words after they get the minimum numbers of points required to finish the level.

Using the numbers from the previous solution:

  • If the user skills correspond to the “very easy” difficulty level, then he will finish the level (150 points required) when he uses up his last move.
  • If the user skills correspond to the “easy” difficulty level (3 letters words), then he will reach 150 points after (150/30) 5 moves, with 5 moves lefts.
  • If the user skills correspond to the “medium” difficulty level (4 letters words), then he will reach 150 points after (150/50) 3 moves, with 7 moves left.

With this information, I can give each moves a set number of points (20 for example), and set the threshold for each star accordingly.

  • Second star : 5 stars left * 20 points = 100 points. Threshold is at 150 + 100 = 250 points
  • Third star : 7 stars left * 20 points = 140 points. Threshold is at 150 + 140 = 290 points

Of course, players will find words of different lengths during the same play session but this even out in average and you should still get a star corresponding to your skill level.

Following this system, it should be quite easy to establish a scoring system adapted to your game. You will need to tweak your numbers for other factors (for example take into account added difficulty in the level design).

Cube Overlord – New game mode

After some small updates on my android game Cube Overlord, I am now releasing a new game mode! Time Trial.

Before I tell you how it works, here is a little back story of how it came to exist :)

Game modes

There are currently two game modes in Cube Overlord.

  • Stage/Story mode (with 10 levels)
  • Arcade mode (infinite vertical scroller)

For those that haven’t played it, it’s quite straightforward: You avoid cubes of the opposite color (you loose a life if you get hit) and you collect cubes of your color to gain points/beat the boss. And you can switch color anytime by tapping on the screen.

In Stage/Story mode you face a boss at the end of each level and you get 1-3 stars depending on your results.

in Arcade mode you are in a infinite scroller with increasing difficulty and try to get as much points as possible before you loose all your life.

normal-50

I also had another mode available during development, called Survival mode, it was supposed to work like this:

You try to survive for as long as possible, game speed increase every second until you reach terminal velocity. Cubes pattern become more and more complicated. There are no power ups and no extra life. Score is determined by how long you manage to stay alive. Quite simple if you ask me :)

But there were several issues with this game mode and in the end I wasn’t very happy about it:

  1. There wasn’t any incentive to collect any cubes, a very big feature of the game therefore became useless in this mode. I consider this as a failed design. The mode would have been functional but it wouldn’t make much sense. It would actually punish players trying to collect cubes as it would make it harder for them for absolutely no benefit. It was counter intuitive and it didn’t fit with the other game modes.
  2. I could have made it so that collecting cubes would also bring you points, but I felt this would be too similar to the current Arcade mode and didn’t warrant a game mode of its own.

After musing it over, I finally decided to scrap this mode entirely and release it like that. This allowed me to focus on other things and not delay the release of my game. I justified this by telling myself I would keep on working on this mode after the release and eventually make it available in a later version.

So after the game got released, I started thinking about this mode again, trying to find a way to make this work. And this is how I ended up with the Time Trial mode.

Design

Here is how the design process went:

I started from the issue at hand: Collecting cube in this game mode is useless.

Possible solutions:

  • Gain points -> Already rejected before
  • Change Survival mode to a mode with limited time -> you no longer try to survive for as long as possible, but you have 60 seconds to go as far as possible

Sounds good, now increasing the time left when collecting blocks actually make sense. This fixes the issue at hand.

Let’s try this! I make small modifications to the survival mode:

You have 60 seconds, each cube you collect adds 1 second, getting hit removes 10 seconds, as before, speed and difficulty increases as time passes. You can get time multiplier by chaining 10/20/40 cubes of the same color.

How it plays:

It works, but it’s too easy to collect cubes, I never run out of time and always end up dying by getting hit several times in a row once the game reach a certain difficulty level. Similar to what’s currently happening in Arcade mode.

Possible solution:

It should be quite easy, try to tweak the numbers. On my first try I basically divided by 2 the time added when collecting cubes.

How it plays:

It’s still too easy, and now you have a “+0.5” showing up on screen each time you collect a cube. Ugly. I don’t want to show a bunch of decimal numbers on screen, it’s confusing.

Before trying to tweak the numbers again (+0.33 ?), I try to get the root cause of this issue.

My conclusion: As difficulty increase, you have more cubes on screen and as speed increase you can collect them even faster. I will not be able to find a number that will be balanced for all difficulties unless it also varies with difficulty. This is starting to get complicated and I don’t want to confuse the player.

Possible Fix:

  • Don’t increase the speed as time passes and/or have less cube in harder difficulties -> I didn’t even try it as I knew it would make the game too boring. Many peoples complained that the first levels of story mode were too slow, and I wasn’t going to do the same mistake again. Anyway this would kill the sense of progression.
  • Add special cubes that show up every X seconds to increase your time -> Back to square one, what’s the point of regular cubes then ?
  • Instead of adding extra time when you collect cubes, increase the player speed! So he can travel further -> Sounds about right, let’s try this.

It works fine, some tuning, are necessary but this solution is quite balanced: It is necessary to collect cubes to go further/faster but it also increases the difficulty as it makes it harder to dodges cubes now

Final solution

You have 60 seconds to go as far as possible, collecting cubes of your color increase your speed (you fill up the bar at the bottom of the screen), collecting power ups give you some  extra time (~4 sec) and getting hit makes you loose 10 seconds and half of your increased speed !

This is probably not perfect but should work quite well, I will obviously tweak things as I get some feedback, but I am quite happy with what I ended up with.

First Update to Cube Overlord

This is the first time since the game has been released that I have had enough time to work on it.

Listening to some feedback by players, I implemented the following:

  1. Dying animation: you no longer go straight to the game over screen when you die, the game slow down and your cube fall off the bottom of the screen, only then the GameOver screen shows up. That was much easier that I thought it would be to implement, but it still took quite some time.
  2. Replaced the confusing multi colored cube animation that lets you grow by a a “heart” PowerUp, hopefully it is now obvious that it is a positive thing to pick up :)
  3. Added two new Awards (and ingame “awards unlocked” animation)
  4. Slightly increased the speed of the first levels.
  5. Better UI for android tablets

Otherwise I am working on a Time Trial mode. Hopefully available soon.

You can get the new version here!

Android app on Google Play

Playskool, my first Game! – Part 2

Follow up from part 1, game dev story about my 1rst game : Cube Overlord

Better code

Once I had my theme set, I started going deeper into coding, I found those two very nice Libgdx tutorials :

The code is slightly outdated because of the newer version of libgdx but still VERY useful. I had a go at it, learned a bunch of stuff and reworked a lot of my code.

Iterate

I try not to get stuck on details at first, work out the base gameplay and iterate, I would say that I have trashed about 70% of the code I have wrote while working on my game. So now I test gameplay ideas and don’t get too attached. I will iterate through, and throw them out if necessary. My first iterations were usually not good enough but some ideas stick and other may pop up to be reused later.

Emerging gameplay : similar to the emerging Architecture trend we have in the lean/scrum methodology. Don’t get too hang up on your ideas, they might look good on paper, but it’s a whole different experience when playing. Set up something simple at first and see where it takes you – what works and what doesn’t -, try out your new ideas, keep the ones that works and throw out the others. Keep doing it until you get something that you feel is good enough. Only then should you start polishing your game. You should probably follow the same route  when you want to add new features.

Testers

I kept on working on my game for some time before I was ready to show it to friends/family. It was hard for me (and I guess so for many people) to show my game to others. I kept thinking that it wasn’t good enough to show. But try not to let that thought block you. It’s very useful to discuss your game and get feedback early on.

It is very hard to find good testers and get good feedback, but it is a very valuable resource to have available and will easily make your game much better, what they can do for you:

  • Find bugs (obviously)
  • Feedback on gameplay mechanism (not fun, unfair, unplayable etc…)
  • Feedback on controls
  • Feedback on graphics and usability
  • Brainstorm with you when you are stuck, give you ideas

You have to shift through lots of ideas, some goods, some bads (or simply not adapted to your situation). I try not to be negative with my testers when they give me feedback, I let them talk, note their ideas. I also learned not to dismiss their ideas straight on, even if they sound bad, they can hint to deeper problems within the game.

If this is hard for you, you should try to find other indie game devs, their feedback is often very useful and they are also very supportive of other game devs. I have been lurking reddit’s gamedev community and I love it :)

Have a thick skin: It doesn’t help that some people will simply not be interested in what you show to them, friend or family alike. In this case, just move on, you can maybe show them a better version later, but for now, look for other testers. Learn to accept criticism even if you don’t like it, some people will be very direct, sometime even in a rude way, don’t get hung up, get the meaningful information and work on it.

Keep looking : Congratulation, you found some testers ready to try your game and give you feedback, great, use them, listen to them but don’t stop looking! More eyes on your product means more feedback, more bug reports, more devices (if you are targeting android). It’s also useful to get some fresh eyes on your product once in a while, testers will become better players after a while, skewing their vision of the game. They will also probably be among the early adopters and spread the words about your game once it is out, free marketing!

Cube Overlord’s IndieDB / SlideDB Profile created!

I have now created a IndieDB/SlideDB profile for my game!

Slide DB

If you have never heard of it, it is an independent games site. with news, insight and media direct from the developers. SlideDB is IndieDB’s mobile counter part to try to solve the current discovery problem on the mobiles stores.

I will keep it updated with regular news about my game, while focusing on my developer experience in this blog. Of course major announcements will be available on both :)

If you are a user (or want to become one) you can now see the game profile here :
Cube Overlord

Let me introduce you : Cube Overlord

  • Code Name: Cube Overlord
  • Type: Vertical Scroller
  • Platform: Android(/IOS afterwards)
  • Status: Polishing (Hope I can publish it soonish)

This is my current baby, first game to be published (see my posts about my game dev experience here : part1, part2). It is loosely inspired by Ikaruga.

The principle is quite simple, you are a cute little cube and you go through the game stages trying to collect as many cubes of your color as possible. You can change your color by simply taping on your screen. If you get hit by a block of the opposite color, the first time, you shrink, the second time, you loose :)

Classic Level

Classic Level

You get bonus points (and a score multiplier!) if you manage to collect enough cubes of the same color consecutively !

At the end of the level, you will meet the boss who will throw cubes at you, if you manage to collect enough cubes of your color (filling up the bar at the bottom of the screen), you win! :)

Monster dying

Monster dying

Power Up

You can pick various power ups throughout the game to help you! From the classical shield that will protect you to the magnet that will attract cubes of your color while repelling cubes of the opposite color.

Lightning Bonus

Lightning Bonus

Magnet Effect

Magnet Effect

Slow Effect On

Slow Effect

Zones

You will meet some challenges during your journey, such as some special zones throughout the game where the polarity effect is cancelled, you are forced into one color and are no longer able to change it until you leave the zone.

Red Zone

Red Zone

Three games modes : Stage, Arcade and Survival and hopefully plenty of challenges to keep you busy.

As always, you can follow me on twitter for updates: