Объявление 20.02.2019

Мы готовим большую модернизацию по симуляции игры. Текущая модель симуляции продумана достаточно неплохо. Для России. И для неискушенных любителей футбольных менеджеров. Но мы стремимся к совершенству и собираемся создать симуляцию, достойную лучших игр жанра.

————-

Исходя из этого планируется создать симуляцию на основе трёх китов:

1. Основной каркасный набор факторов (всё, что есть сейчас, но в переработанном алгоритме по системе начисления баллов). Это вводные данные на начало матча (расстановка, тактические установки, состояние и уровень футболистов, а также ряд других функций + совершенно новые факторы, которые будут внедрены в игру).

Например, массив данных ШАНС НА ПОТЕРЮ МЯЧА, состоящий из 15-20 факторов, которые, суммируясь, сравниваются у команд и футболистов между собой, образуя итог в виде сравнения баллов и однозначного исхода той или иной ситуации на поле.

2. Дополнительные факторы и зависимости, которые будут создаваться в виде сценариев и могут достигнуть сотен различных связок. Эти факторы будут влиять на основной каркасный набор. И что самое важное — они будут легко подвергаться дополнениям и модификациям. Можно будет даже работать над созданием новых ветвей совместно с пользователями игры и внедрять их пачками без трудозатрат.

Пример связки: Если команда играет в пас верхом, и у неё есть левый защитник, и установлена функция подключения защитников, а игроку менее 30 лет, при этом скоростные навыки и навыки навеса выше 90%, а у соперника правый полузащитник имеет на текущий момент матча физ форму не выше 80, то данный игрок получив мяч, получает +20% к баллам, относящимся к точному пасу, а также при первом проходе получает 100%ный шанс навеса на нападающего своей команды.

И что самое интересное — такие связки будут синхронизироваться с 2д-режимом, на порядок разнообразив его.

3. Бонусные карточки турбо-влияний, которые будут ограничены в количестве и временных интервалах. Такие карточки смогут влиять на события в матче на короткий промежуток времени.

Примеры:
— карточка «Гипер-концентрация». После активации — все отборы в течение 10 минут выигрываются своей командой.
— карточка «Ни шагу назад». После активации — гарантия непропуска мяча в течение 3х ближайших ударов соперника.

Ремарка: Многие знают, что в FBM нет премиум-аккаунтов, супер-футболистов и золотых статусов. Мы следуем своей идеологии и не допустим ситуаций, когда у одной команды мало таких карточек, а у другой — много. При этом некоторое превосходство (за счет 5-ти звездных футболистов, либо тренеров мирового класса), всё же может иметь место быть. Но привилегии будут строго в разумных мерках.

————-

Сроки реализации данной симуляции займут довольно продолжительное время — минимум — от 2х месяцев до полугода до полной её реализации. Более того, наши программисты примутся за работу никак не раньше, чем закончат ряд глобальных обновлений по редизайну игры.

Но работа уже начата. И мы в скором времени поделимся с вами подробностями и более детализированной информацией.

————————————
————————————
————————————

Тем временем, мы уже в самые ближайшие дни внесем в симуляцию игры одно небольшое, но очень важное обновление, которое сделает результаты матчей более честными. Обновление основано на концепции xG (ожидаемых голов в матче). Изменению подвергнется самый последний шаг исхода ударов по воротам.

И основной его смысл — если команда реально сильнее оппонента, полностью подготовленная тактически, прокаченная и грамотно сбалансирована по расстановке, много бьет по воротам — она будет забивать больше, чем играющий против неё аутсайдер матча.

Предположительное время внедрения — межсезонка к 39му сезону. Даем короткое и более глубокое описания, как xG будет работать в игре:

КОРОТКОЕ ОПИСАНИЕ

1. Первый удар команды в матче = теоретический шанс на гол / 100 * практический шанс на гол / 100

Если полученное число меньше чем константа 0,5, гола нет. Если больше – гол есть.

Данное полученное число в случае НЕ ГОЛА записываем в буфер и ждем следующего удара.

2. Следующий удар рассчитывается также = теоретический шанс на гол / 100 * практический шанс на гол / 100

Полученное число складываем с числом, которое было записано в буфер и сравниваем с константой 0,5. Если полученное число меньше чем константа 0,5, гола нет. Если больше – гол есть.

3. В случае, если гол есть, мы полученное число в полном объеме записываем в буфер и ждем следующего удара.

4. С каждым забитым голом константа увеличивается на +1. Т.е. если команда забила один гол, следующий порог константы станет 1,5.

—————————

—————————

Пример:

Есть факт удара: мы считаем произведение ТШГ и ПШГ удара

SHOOT :: Result:[1]. shootStrength change:[86, failed attempt factor:89], teamAverageStrength:[72], shootReduction:[59->59], PileOn:[0], pileOnGoalMaximum:[50], GoalProbabilities:[{ «1»: 30, «0»: 70 }], Player (Mіhna Beavers), Position:(CFL), Team:[Exeter], PlayerShootAverageStrength (base):[99.75->99.75], shootStrengthPerPosition:[100], matchHomeAdvantageInfluence:[0], rateOfPlay_influence:[0], speedOfPlay_influence:[0], playerLeg_influence:[0]; previous with a ball:[Audzej Semeniuk]. Shoot result probabilities:[{ «1»: 30, «0»: 70 }].

SCORED SHOOT :: Evaluate goal probalility :: Result: [1]. Player [Mіhna Beavers] AVG skills:[82.1] avgShootStrength:[99.75], AVG Opponent [Francis Espinha] skills:[97.3] avgShootStrength:[98.5] => GoalProbabilities:[{ «1»: 62.5, «0»: 37.5 }]

Для этого удара:
0.3*0.625=0.1875

После каждого удара проверка:
1й удар сумма=0.1875. — 0.1875 больше 0.5? Нет. Счет остается прежним.
2й удар: 0.375 больше 0.5? Нет. Счет остается прежним.
3й удар: 0.5625 больше 0.5? Да. Голы команды больше 0? Нет. Счет меняется, удар становится голевым

————————————————————————

————————————————————————

————————————————————————

БОЛЕЕ ПОДРОБНОЕ ОПИСАНИЕ

Расчет xG (ожидаемый гол)

1. Константный барьер
Константа 1го уровня (К1) = 0,5
К2 = 1,5
К3 = 2,5
К4 = 3,5
К5 = 4,5
К6 = 5,5
К7 = 6,5
К8 = 7,5
К9 = 8,5
Константа поднимается уровнем с каждым забитым голом команды.

———————

2. Объединенный шанс на гол (ОШГ)

ОШГ = теоретический шанс на гол / 100 * практический шанс на гол / 100
Первый удар команды в матче – это ОШГ1, второй удар – ОШГ2, и т.д.

———————

3. Формула расчета xG

xG = ОШГ сравнивается с К.

-—

Первый удар в матче:

Если ОШГ1 >= К1, то ГОЛ

Если ОШГ1 <= К1, то НЕ ГОЛ (промах по воротам или не промах, система считает по текущему алгоритму теоретического шанса на гол)

-—

4. Если после первого удара не было гола

Если после первого удара был НЕ ГОЛ, то К останется К1, а ОШГ1 запишется в буфер (Б) и при следующем ударе:

Если Б +ОШГ2 >= К1, то ГОЛ

5. Если после первого удара был гол

Если после первого удара был ГОЛ, то остаток от (ОШГ1 — К1) запишется в буфер, а также к формуле прибавляется пройденная константа К1 и при следующем ударе:

-—

Второй удар в матче:

Если Б + К1+ОШГ2 >= К2, то ГОЛ

Если Б + К1+ОШГ2 <= К2, то НЕ ГОЛ (промах по воротам или не промах, система считает по текущему алгоритму теоретического шанса на гол)

———————

Ниже будет пример, там тебе станет более понятно как оно работает всё.

——————————————

——————————————

Пример:

играет команда, у которой предположим, что всегда теор. шанс на гол 60, а практ. шанс 100.

Первый удар (К2 = 0,5):

ОШГ1: 0.6 (60/100*100/100): итог – гол.

В буфер падает 0.1 и сам барьер К1 (0,5) = 0,6 в буфере

-—

Второй удар (К3 = 1,5):

0.6 (ОШГ2) + 0,6 (буфер) = 1,2. Это меньше чем 1,5: итог – нет гола

В буфер падает 1.2

-—

Третий удар (остался К3 = 1,5, так как этот барьер не был пройден прошлым ударом):

0.6 (ОШГ3) + 1.2 (буфер) = 1,8: итог — гол

В буфер падает 0.3 и сам барьер К2 (1,5) = 1,8 в буфере

-—

Четвертый удар (К3 = 2,5):

0,6 (ОШГ4) + 1,8 (буфер) = 2,4: итог – нет гола

В буфер падает 2.4

-—

Пятый удар (остался К3 = 1,5, так как этот барьер не был пройден прошлым ударом):

2,4, счет 2:0 константа 2.5

0,6 (ОШГ4) + 2,4 (буфер) = 3: итог – гол

В буфер падает 3

….. И т.д.