Создайте симуляцию на основе веса (да, я только что изобрел этот термин). Каждая переменная (независимо от ее типа) имеет «вес». Например, у игроков есть вес. Хороший игрок имеет лишний вес. Игрок с травмой имеет меньший вес или вообще не ждет (или, может быть, отрицательный вес?).
Вы складываете весь вес вместе (обеих команд, потому что это футбольный матч). Этот вес напоминает процент вероятности выигрыша. Например;
Вес Команда А = 56 , вес Команда Б = 120
Вес уже показывает, что одна команда намного лучше (независимо от того, как вес был установлен ... может быть, у них очень круглые шары, кого это волнует), чем другая.
На основании веса вы можете рассчитать шанс на выигрыш;
Шанс на победу Команда A = 32% , Шанс на победу Команда B = 68% .
Теперь вы можете написать алгоритм, имитирующий совпадение, под влиянием процента выигрыша. Я однажды написал такой алгоритм для рисования рекламы. В моем случае количество кликов на рекламу было весомым. Чем больше вес, тем больше шансов, что мой алгоритм выберет рекламу.
Я написал алгоритм, взяв большое число (например, 1000), а затем присвоил диапазон этого числа каждому рекламному объявлению на основе процентного содержания. В этом случае Team A получает диапазон 32% от 1000 , , который составляет 0 - 320, Team B получает диапазон 68%, который составляет 321 - 1000 . Тогда мой алгоритм нарисует число (случайным образом) между 0 и 1000. Рекламное объявление (или ваши команды) с наибольшим диапазоном (и, следовательно, с наибольшим шансом на выигрыш) имеет наибольшие шансы быть выбранным алгоритмом, хотя может получиться иначе .
Этот вид алгоритма отлично подходит (хотя и не идеален) для сбалансированного результата (если пользователи могут создавать свои собственные команды, покупать лучших игроков и т. Д.). Вы также можете создавать любые события в игре, нарисованные этим алгоритмом, просто добавив вес к событию.
Вы можете добавить вес к событию (например, травме товарища по команде) для каждой команды, основываясь на других весовых коэффициентах в этой команде (сколько матчей сыграно подряд, насколько хорошо (или сколько весит) их медперсонал и т. д.). Если вы правильно сделаете вес, вы можете получить очень сбалансированный (и легко расширяемый) алгоритм моделирования, который может быть как предсказуемым (как некоторые совпадения в реальной жизни), так и совершенно удивительным (опять же, как совпадение в реальной жизни).
UPDATE:
Тактические влияния
Вы добавили тактические влияния, а также вопрос «как бы вы это сделали?», Поэтому я уточню. В настоящее время вы делаете (насколько я понимаю), что вы берете процент (вероятность того, что что-то произойдет) и умножаете его на коэффициент, чтобы это происходило больше / меньше.
Однако, поскольку у вас может быть несколько коэффициентов, вы получите шанс больше 100%.
Прежде всего, для каждого тактического преимущества команды есть (вероятно) встречное преимущество в другой команде. Например, если команда А имеет вес в постановке целей, команда В имеет противовес в достижении целей. Эта сумма является вселенной (100%). Теперь вес обоих тактических преимуществ составляет часть этой вселенной, или общий вес (как я объяснил выше).
Скажите, что Команда A на 80% уверена в том, что она забьет гол в определенную минуту, а Команда B на 20% уверена в том, что она остановится (на основе системы весов) , Но, поскольку команда B только что приобрела очень хорошего вратаря, на команду B оказывает тактическое влияние. Это влияние должно сместить шанс события, но не саму вселенную! Другими словами, вы не должны иметь общий шанс более 100% (хотя в некоторых случаях это не обязательно плохо)
Итак, вы должны добавить вес в команду B , основываясь на тактическом влиянии, а затем пересчитать шансы на основе новых весов.
Назначение веса
Теперь, как вы прокомментировали, назначение веса не так просто. Конечно, нет, если вам приходится «взвешивать» игроков на их качествах. Взвешивание - это больше, чем просто сказать, что игрок «плохой» или «хороший», вы должны фактически оценить их (как в старшей школе!). Чем выше высшая оценка, тем точнее система взвешивания.
Теперь присваивать веса тактическим влияниям стало немного проще. Скажите, что у вас есть следующие влияния:
- Остановка целей
- Забивание голов
- Защита
- Атака
Теперь создайте пул с общим весом (скажем, 1000, мне нравится это число). Это «тактические очки», которые вы можете назначить. Эти четыре влияния составляют совпадение, поэтому вы можете назначить 250 очков каждому влиянию. Это число (250) - вселенная каждого влияния.
Назначение этих очков каждой команде зависит от весовых коэффициентов команды (например, есть ли у них хороший хранитель?)
Хранитель, например, весит против хранителя противника (и, возможно, также людей, которые находятся между хранителем и противником, но давайте будем простыми). Скажем, хранитель команды А весит 80% от общего количества, а хранитель команды Б - 20% . Это оценивает, насколько они хороши, что напрямую связано с тактическими очками, которые они получают. Таким образом, Команда A получает 80% из 250 очков за остановку , а Команда B получает 20% этих очков.
Остальные точки могут быть назначены одинаково. В моем примере я взял только двух хранителей, поскольку вселенная, остановлена цель или нет. На самом деле, весовых факторов может быть намного больше (чтобы вы поняли).
После того, как все они разделены, вы можете использовать тактические очки, чтобы разобраться в матче. За каждую минуту вы можете пересчитать шанс на выигрыш. Каждую минуту вы также можете пересчитывать тактические влияния (скажем, другой игрок выходит на поле или игрок получает травму).
Да, вы получите МНОГО переменных. Но чем больше вы получаете, тем лучше играет матч. Чем больше переменных (или весов / противовесов), тем больше это похоже на реальную жизнь.