[C++] Dynamic arena matchmaking rating system

Hi guys.

In past (2+ years back) I was quite into TrinityCore moding/scripting/fixing unfortunately my mindset sucked and I did not share any of my work to TC community, I plan to change that and give back (TC really deserves it).

I revisited some of my code that I wrote back in the days (some of my “work” - my coding standards/skills were nowhere near my current level - resides here: https://bitbucket.org/pjasicek/trinitycore-mmaps-3.3.5a/commits/all). One of the most useful things I wrote was dynamic match making system for rated arenas (although the code was really ugly, it somehow worked as intended) - I rewrote it using current TC fork.

What does dynamic match making rating system do / what does it bring ?

It gradually (in my code every 30 seconds) increases the minimal and maximal matchmaking range of arena team while waiting in a queue. No longer teams with high matchmaking rating have to wait for the discard timer (by default 10 minutes) to be matched against random team (usualy with low MMR), instead it tries to find the best possible opponents against them over time.

If you are familiar with one unnamed private server, they have the same system implemented.

There are 2 values hardcoded - 30 seconds to increase MMR range and 100 as value of increased MMR. If some of you will be interested I can make options in config file.

Example screenshot:

http://s30.postimg.org/eoc99vvq9/mmr.jpg

Code:

https://github.com/pjasicek/TrinityCore/commit/6d30bd803cf6e8e5d98bd535d49d833dd49f5bfc

Diff file:

http://pastebin.com/RCtiyddF

If you make it conf (disabled by default) maybe it can be merged into TrinityCore.

Thank you, I modified it and created a pull request.

https://github.com/TrinityCore/TrinityCore/pull/14770