Один із варіантів, який я хотів би бачити реалізованим - це система автоматичного самонастроювання.
Я буду використовувати в якості прикладу гру з жанру MOBA, тому що вона структурована таким чином, що дозволяє досить просто зрозуміти, як кожен герой порівнює з іншими героями.
В основному, для кожного героя вся статистика цього предмета повинна залежати від значення гандикапу, який сервер автоматично змінюється залежно від рівня виграшу для цього героя. Потім, коли починається нова гра, вона використовує останнє значення гандикапу протягом тривалості гри.
Hero(){
attackSpeed = 50 + 5*heroType.adjustment;
moveSpeed = 100 + 5*heroType.adjustment;
}
Потім, наприкінці кожної гри, сервер змінює значення для кожного героя на невелику суму залежно від того, виграв чи програв герой, на скільки виграв тощо.:
for(Hero hero: game.winners)
hero.heroType.nerf();
for(Hero hero: game.losers)
hero.heroType.buff();
Точна формула коригування може бути приблизно такою, хоча складніші статистичні дані можуть бути і кращими:
nerf: adjustment[heroType] -= 1 / globalNumberOfGamesPerWeek
buff: adjustment[heroType] += 1 / globalNumberOfGamesPerWeek
Таким чином, якщо додати певного нового героя, який значно переможений, тобто, якщо герой значно збільшує шанс гравця на перемогу, ігровий сервер автоматично його виправить з часом.
Насправді ця система буде виправлена також з інших причин того, що певний герой може перемогти, як хтось знайде нову мета, яка насправді працює дуже добре, або якусь модифікацію місцевості, яка дає конкретному герою якусь нову перевагу. І корекція могла б відбутися навіть тоді, коли знання нової тактики ще тільки поширюються.
Третя річ, у чому може допомогти - це насправді виявлення факту, що щось серйозно впливає на героя. Якщо герої сконструйовані так, що значення коригування залишається біля нуля, тоді, коли значення для одного з героїв істотно зміниться, розробники будуть знати, що з героєм виникла якась проблема, щоб вони могли перейти і зробити більш розумне балансування до відповідного героя.