Ok, so this week I've been working on a new difficulty system. This weekend's big update introduces the first part of it.
Difficulty System Design
I'm going to have a longer post about the mechanics of this system in their entirety when part 2 of the system is completed.
The basic idea behind the system stems from the fact that people have asked for a system similar to Space Pirate Trainer in starting games are higher difficulty. While I am interested in letting players start at higher difficulty, I don't want to do it through a UI system, hence the work on this much more complicated system.
The basic premise is to create a Dynamic Difficulty System which reacts to how well you are playing and gives you corresponding waves according to your capabilities. This is built with two parts, the success measurement, and the difficulty selection based on that measurement.
Success Measurement
This week implements the first version of the Success Measurement system. The system has a lot of moving parts, so multiplayer may have some issues in the beginning, but hopefully enough sanity checks have been introduced that it won't freeze even if something goes wrong.
There are a number of new things that occur because of the new system.
Statistics Aggregation - The first thing that happens after completing a wave is that the host aggregates statistics for the round. Information like team accuracy, longest shot, time taken, damage taken, etc. is collected.
Global Statistic Comparison - While collecting the stats from everyone, the host also asks the server for the global statistics for the particular wave+player# combo to see what the average values and standard deviations for all those individual statistics are, this is used to compare against using an internal formula (damage taken is more important than longest shot) to calculate a "Score" for the wave.
Global Statistic Update - After aggregating and comparing to global stats, the host does one final network related action, which is to update the global statistics with the new data point.
What does that mean for you as the player?
Changes
A new End of Wave information screen has been added that lists a few of the interesting statistics for the round.
It will also show you your comparison to the global average in terms of standard deviation (so +/- 2 in most cases) for each statistic. The "Score" is also in terms of standard deviation, with a 100 being 'average'.
Until there are a number of data points for each wave/player# combo, the statistics will be wildly unpredictable, therefore until 5 data points are recorded for a particular wave, your score will be treated as average (+0 for all stats, and 100 score), so expect that for any higher level waves.
Additionally, if your score is above the average, you may be placed in a wave higher than the direct subsequent wave (so from wave 5 to wave 7 or something similar), however this system is just for testing, not the actual equation that will be used in the second part of this system.
Please let me know if any issues arise (specifically waves not increasing when host leaves, waves going down, errors/crashes/performance problems) as the system is pretty complicated and it's hard to test everything!
