See this great video from Extra Credits on how Bejeweled 2's levelling system works. It's not the same problem, but it's very related. "A designer should always be thinking about how the player experiences the game."
See this great video from Extra Credits on how Bejeweled 2's levelling system works. It's not the same problem, but it's very related. "A designer should always be thinking about how the player experiences the game."
I already spent about 40 hours tuning the game to what it is now and it still sucks. Tuning a dynamic difficulty system would take even more time, mostly testing.
And then of course there's the question of what happens with the highscores. If one player is presented with a simpler game than the next, scores are not comparable at all. So a ranking to "prove you're typing hacker" would be difficult as well.
This gives players a ranking score that is comparable, and over time your players will rank your game levels for you. It also makes it possible to matchmake players to levels.
There is something really satisfying about how the impact of the bullets knocks backs the target ships. Also love how fast it shoots when you get on a roll.
Really cool game.
I suggest to add an all-time highscores, and a daily one. It would really add to the fun factor.
EDIT: and the game does NOT suck.
I think this is awesome, not just as a typing tutor but as a spelling tutor. I think adding phrases and word combinations would help teach grammar too. You could also do a synonyms level, an antonyms level (I think even adults would like these) then verb levels, adjective levels, etc.
Here's another idea. A convoy of words come at you (as a sentence) with the verb out in front and you have to shoot the verb first.
Or, totally different game, fly/shoot your way through isometric Zaxxon-like "sentence diagram" landscapes.
PS: This is how I learned my times tables back in the 80s, very similar game on the TI99 ;-)
var wpm = getWPM(); function levelDifficulty(num) { return getOldLevelDifficulty(num) * wpm * SOME_SCALING_CONST }