По такому же принципу мы определяем то, что будем реализовывать в СП для Д2 - 16 команд в 2 круга, 1 команда вверх напрямую, 1 команда играет в плей-офф с командой УПЛ, 2 команды играют в плей-офф с командами Д3, 2 команды вылетают напрямую.
Для Д3 и Д4 мы будем прописывать правила с нуля, но там всё можно реализовать в СП, кроме фиксированного изменения количества команд. В Д4, кстати, состав лиг прошлогодний и нам нужно будет его поменять, но пока мы его не трогаем, чтобы не было изменений в базе. Для обычных лиг не критично, если количество команд в них будет меньше на 1-2, это без проблем правится в РП.
Нажимаем кнопку "Очистить" в "Проверка турниров" (иначе в редакторе будут показываться все изменения, которые произошли за время тестового прогона - команды могут быть в других лигах, с другой репутацией и т.д., что немного неудобно) и создаём в СП с нуля все нужные нам лиги и кубки, используя обучающие материалы из "Мануала для чайников".
Повторюсь, заполнять желательно все пункты в СП, которые можно заполнить - плей-офф, призовые, дни и время проведения игр, ТВ-трансляции, лимиты, зимние перерывы и т.д. Добавляем все дивизионы, которые будут играбельными в апдейте + 1 неиграбельный для корректного обмена командами по ходу сейва. Также добавляем кубки/суперкубки и молодёжные/юношеские чемпионаты.
У нас в лигах будут изменения количества команд, поэтому нужно заранее продумать, где и насколько изменится количество команд. В УПЛ количество команд по ходу игры увеличится с 12 до 16, но редактор в СП не даст нам прописать плавающее количество команд для лиги с подгруппами, потому что его смущает, что команд может быть нечётное количество. Так что, придётся пока оставить 12.
Спойлер
В Д2 всегда будет 16 команд, тут ничего не трогаем, невзирая на увеличение команд в УПЛ, потому что мы будем добирать недостающие команды из Д3 (который будет добирать недостающие команды из Д4, а тот, в свою очередь, будет добирать недостающие команды из неиграбельного Д5).
Спойлер
Д3 в текущем сезоне по 11 команд в группе, но это неудобно и мы увеличим в РП их количество со второго сезона до 12-ти, поэтому пропишем 12 в "максимальное количество команд". В поддивизионах, кстати, в СП стоит прописывать только какую-то уникальную для этой группы информацию (у нас такой нет), всё остальное стоит делать в родительском дивизионе - поддивизионы по умолчанию наследуют эту информацию.
Спойлер
В Д4 в базе у нас от 9 до 12 команд в группе, по факту - 10 или 12. Здесь мы также в РП будем увеличивать со второго сезона количество команд в группах до 12-ти, поэтому оставляем 12 в "максимальное количество команд". Все команды из Д4 в Д3 переходят через плей-офф за повышение, поэтому в "количество мест, дающих повышение" мы ставим 0.
Спойлер
Изменение количества команд также имеет отношение к созданию кубка в СП. Если в РП редактор может взять все команды из лиги без привязки к их количеству, то в СП нужно жестко указать, сколько команд нужно взять из конкретной лиги. Таким образом, нам придётся прописать в СП правильные правила кубка в первом сезоне, а правила в следующих сезонах будем править уже в РП.
Спойлер
После того, как всё внесено в СП, делаем проверку правил ("Правила" -> "Проверка правил") и, если всплывающее окно вывело нам "Текущие правила страны верны", мы готовы к переходу в РП (тут я рекомендую сделать какой-нибудь отдельный бэкап и зафиксировать момент, когда "всё было понятно и всё работало").
Продолжение следует.
Цитата: Ohrim от 22 ноября 2019, 20:13:57Таким образом добавляем еще и "Ukrainian First League", "Ukrainian U21 Division 1" и "Ukrainian U19 Division 1" (кубки тоже можно добавить, но там зачастую правила не так нуждаются в проверке).
Цитата: Ohrim от 22 ноября 2019, 20:13:57Забегать по запросу вперёд по какому-либо вопросу не буду, иду по плану. Пишу то, что более-менее знаю. Если не знаю ответа на вопрос, то просто ничего не пишу (я не работал с еврокубками, международными турнирами клубов и сборных, поэтому знаний по ним у меня нет).
В разделе турнира есть довольно много пунктов и подпунктов, я не буду рассматривать их все, потому что многие я ни разу не использовал и в апдейте Украины они не понадобятся.
Пункт "Общие". Здесь указывается тип турнира (как я уже писал, там больше 50-ти вариантов); уровень лиги; год начала/окончания действия; особые условия, при которых будет срабатывать это правило турнира (например, если количество команд в лиге от 12 до 16); месяцы старта/окончания турнира; индексы правила состава и дисциплинарного правила и т.д. Я не буду полностью копировать данные из дефолтных правил, возьму только недостающую информацию (действие правила, если количество вышедших в еврокубки команд от 4 до 6 и пару правил ТВ-дат).
Спойлер
Пункт "Стадии". Здесь прописывается основная часть правил турнира. Каждая стадия - это один подпункт с отдельным индексом (по стандарту первый - 0, но можно прописывать и свой порядок), стадии могут взаимодействовать между собой. В нашем случае УПЛ имеет 5 стадий:
0. Стадия лиги, которая после окончания делится на две группы. Именно по итогам этой стадии определяется чемпион, вылетевшая команда и участник плей-офф.
1. Стадия группы 1, которая активизируется после окончания стадии 0. Эта стадия является скрытой, первый тур в ней имеет номер 22 (т.е. фактически 23, т.к. первый - 0, не забываем), а все результаты из этой стадии заносятся в стадию 0 (т.о. мы в игре не увидим эту стадию отдельно).
2. Стадия группы 2, в которой все основные настройки идентичны стадии 1.
3. Стадия плей-офф за вылет из УПЛ с участием команды Д2.
4. Стадия плей-офф за выход в еврокубки.
В нашем апдейте пока нет 4-й стадии, т.к. редактор в СП не может создать плей-офф за выход в еврокубки, и нам нужно скопировать эту стадию из дефолтных правил, когда мы обработаем 4 предыдущих.
Подпункт "Общие" пункта "Стадии". Здесь прописывается индекс стадии, её идентификатор (можно обращаться к стадии не только по индексу, но и по идентификатору), тип, название (например, групповой этап, плей-офф за повышение и т.д., выбираем из имеющихся в базе названий), количество команд, сортировка команд и разные настройки вроде сброса ЖК при старте этой стадии. Очень многие пункты я не использовал, поэтому расписать их не смогу. У нас ничего такого особенного прописано не будет, данные полностью совпали с дефолтными правилами.
Спойлер
Подпункт "Требования" для этой стадии нам не нужен, мы его будем использовать в других. С помощью этого пункта можно проконтролировать, чтобы стадия не началась раньше, чем нужно (т.е. не раньше окончания какой-то стадии этого или какого-нибудь другого турнира).
Подпункт "Реальные команды" мы использовать не будем - я вообще пока не встречал его использования. Но из его описания в редакторе его назначение вполне понятно - "Используется, чтобы начать турнир на данном этапе с участием команд из этого списка".
Подпункт "Другие турниры для добавления стадии" сейчас нам не нужен - он используется, например, для стадий плей-офф, т.к. в них квалифицируются команды из разных турниров.
Подпункт "Список команд" я тоже не использую.
Подпункт "Команды" определяет, какими командами будет наполнена стадия. Для лиги вариант самый простой - в базе к ней уже привязаны команды и мы просто берём все команды лиги. Для кубков, например, нужно прописывать, сколько команд из какой лиги и с каким посевом ты берёшь (до этого мы тоже со временем доберёмся). Ну а пока редактор всё прописал за нас, ничего менять не придётся.
Спойлер
Подпункт "Настройки лиги" содержит основные настройки стадии - количество кругов (если это лига), правила сортировки команд с одинаковыми очками, очки за победу/ничью/поражение, правила повышения/понижения/выхода в плей-офф и многое другое. Полностью заменять в нашем апдейте этот пункт дефолтными правилами мы не будем, возьмём только некоторые данные: приоритет последних туров, дополнительные матчи лиги (тут указываются настройки последующих матчей второго этапа, а редактор немного криво переводит их из СП в РП, хоть они и нормально работают), правила квалификации (как квалификацию во второй этап - хотя всё должно работать и без правила в этом разделе - так и квалификацию в плей-офф за выход в еврокубки) и "золотой матч" при равенстве очков у первого и второго места.
Также я подправлю порядок встреч (в Украине он прямой - в первом туре второго круга встречаются те же команды, что и в первом туре первого круга. Бывает еще обратный, случайный, небольшой разброс, парный и т.д.); количество последних туров, матчи в которых играются одновременно, и правила "золотого матча" (забыли прописать доп. время в случае ничьей и правило замен).
Ну и я помню, что для плей-офф за выход в еврокубки в дефолтных правилах брались не совсем правильные команды. Этот момент мы исправим, когда в нашем апдейте уже будет нормально работать этот плей-офф.
Спойлер
5832 (https://fmfan.ru/index.php?action=dlattach;attach=5832)
5833 (https://fmfan.ru/index.php?action=dlattach;attach=5833)
5834 (https://fmfan.ru/index.php?action=dlattach;attach=5834)
5835 (https://fmfan.ru/index.php?action=dlattach;attach=5835)
Подпункт "Расписание лиги" мы пока пропустим, потому что его нужно править совместно с пунктом "Правила и время проведения матчей", до которого еще нужно добраться.
Подпункты "Информация об уровне рейтинга" и "Уровни рейтинга" я пропущу, потому что пока не особо представляю, как их использовать. В этих подпунктах по идее устанавливаются ожидания руководства в зависимости от рейтинга команды и прописываются значения этого рейтинга в зависимости от занятого места.
На этом мы пока закончили работу со стадией 0. Следующие две стадии будут немного попроще.
Продолжение следует.
Стадии 1 и 2 в редакторе отличаются друг от друга только названием и принципом, по которому в стадию отбираются команды. В стадию 1 мы берём команды с 0 по 5 включительно, в стадию 2 - с 6 по 11.
Данные нашего апдейта по этим стадиям практически не отличаются от дефолтных правил, мы только добавим названия стадий подпункт "Общее" и добавим в подпункт "Настройки лиги" правильный "Порядок встреч" и запрет на определение мест команд по итогам этих стадий (данные из этих стадий записываются в стадию 0, по итогам которой команды и будут получать финальные места в турнире).
Кроме того, в этих стадиях мы впервые используем подпункт "Требования", в котором редактор сам прописал нам, что стадия 1 и стадия 2 должны начинаться только после окончания стадии 0.
Ну и подпункт "Расписание лиги" мы тоже пока пропустим, как и для стадии 0.
Спойлер
5846 (https://fmfan.ru/index.php?action=dlattach;attach=5846)
5847 (https://fmfan.ru/index.php?action=dlattach;attach=5847)
5848 (https://fmfan.ru/index.php?action=dlattach;attach=5848)
5849 (https://fmfan.ru/index.php?action=dlattach;attach=5849)
5850 (https://fmfan.ru/index.php?action=dlattach;attach=5850)
5851 (https://fmfan.ru/index.php?action=dlattach;attach=5851)
5852 (https://fmfan.ru/index.php?action=dlattach;attach=5852)
5853 (https://fmfan.ru/index.php?action=dlattach;attach=5853)
Переходим к стадии 3 - плей-офф за вылет между командой Д1 и командой Д2.
В подпункте "Общие" мы видим, что эта стадия кубковая и здесь же нам нужно добавить небольшой нюанс регламента - обнуление дисквалификаций за перебор ЖК. Остальные данные совпадают с дефолтными правилами.
Спойлер
"Требования" к началу стадии немного изменились. Т.к. в стадии участвуют команды из двух лиг, то нам нужно, чтобы к началу этой стадии завершились сразу две стадии, одна из которых находится в другом турнире (поэтому мы для этой стадии отдельно указываем турнир. Могли бы явно прописать и для Д1, но по умолчанию редактор всё равно берёт стадию из текущего турнира, поэтому этого можно не делать). Здесь можем для перестраховки добавить условие, что должна закончиться не только стадия 0, но и стадия 2 (откуда берётся команда для плей-офф), как это сделано в дефолтных правилах. На скриншоте я специально показал два способа указания стадии - по номеру и по идентификатору.
Спойлер
А теперь мы впервые будем использовать подпункт "Другие турниры для добавления стадии", т.к., опять же, в этой стадии участвуют команды из двух турниров. Здесь ничего менять не будем.
Спойлер
Подпункт "Команды". Т.к. я делаю чуть упрощённый плей-офф "1х1", то и условия, по которым мы берём команды, несложные и редактор сделал их за нас. Если интересно, как сделан плей-офф "2х2", в котором 10-е место Д1 играет строго с 3-м местом Д2, а 11-е место Д1 - со 2-м местом Д2, то можете посмотреть в дефолтных правилах. Там ничего сверхординарного, но для опыта может быть полезно. Плей-офф "2х2" у нас будет между Д2 и Д3, но без жесткой привязки команд.
На втором скриншоте отдельно отмечу третью запись списка, в которой мы указываем игре, по какому принципу брать команду в плей-офф, если Д2 неиграбельна.
Спойлер
5857 (https://fmfan.ru/index.php?action=dlattach;attach=5857)
5858 (https://fmfan.ru/index.php?action=dlattach;attach=5858)
В подпункте "Значения по умолчанию для раунда" прописываются правила, значения которых не будут меняться в течение кубкового турнира, для того, чтобы их потом не прописывать в каждом раунде отдельно. Здесь редактор снова прописал всё за нас, ничего менять не будем.
Спойлер
Подпункты "Настройка раунда" и "Группировка команд из предыдущей стадии" нам не нужны, я только один раз использовал "Группировку", когда делал плей-офф с зафиксированной жеребьёвкой после групповой стадии (по типу ЧМ/ЧЕ).
Подпункт "Раунды" содержит в себе все кубковые стадии, один раунд - одна запись.
Каждая запись (в нашем случае только одна) делится на несколько пунктов, но сейчас мы используем только один.
Пункт "Общие" содержит в себе основные настройки раунда - название раунда; количество принимающих в нём команд; количество команд, которые добавляются в этот раунд (фактически вступают в кубок с этого раунда); количество встреч/переигровок; правила стадионов/жеребьёвок/призовых и т.д. В дефолтных правилах прописано более-менее то же самое, что и у нас, только мы еще по их примеру явно укажем, что матчи этого раунда не являются квалификационными (не знаю, как это скажется на игре, но ведь СИшники плохого не посоветуют, правда?).
Спойлер
Пунктом "Даты" мы займёмся позже, а остальные пункты раунда я пропущу, потому что там прописываются какие-то совсем уж хитрые кубковые правила, с которыми я пока к счастью не сталкивался. Наверное, если прошерстить дефолтные правила разных стран или апдейты, то можно найти, где и как они используются, но я такой целью не задавался.
На этом подпункт "Раунды" закончился и мы переходим к подпункту "Меню особых условий". Это важный пункт для плей-офф, ведь именно здесь прописывается, что происходит с каждой командой после победы или поражения в каждом конкретном раунде (вылет, повышение, чемпионство, квалификация в еврокубки или какой-нибудь другой турнир, занятие определённого итогового места, ничего и т.д.). Редактор за нас уже всё прописал, я могу только немного объяснить его записи.
Для каждой из команд, участвующих в плей-офф, есть два исхода событий - победа или поражение. В зависимости от того, где до этого играла команда, это ведёт к разным последствиям:
Вот это всё умница-редактор за нас уже и прописал.
Спойлер
5861 (https://fmfan.ru/index.php?action=dlattach;attach=5861)
5862 (https://fmfan.ru/index.php?action=dlattach;attach=5862)
В следующем посте будем добавлять плей-офф за еврокубки и, возможно, коснёмся еще нескольких пунктов турнира.
Продолжение следует.
Теперь нам нужно создать еще одну стадию (плей-офф за выход в еврокубки с индексом 4) и скопировать в неё все данные из дефолтных правил.
Создаётся новая стадия просто - нажимаем на пункт "Стадии" и в правом окне нажимаем "Добавить". К сожалению, одним махом скопировать все данные из дефолтных правил не получится, придётся копировать-вставлять каждый пункт отдельно. Правки в стадию будем вносить уже в нашем апдейте.
Увы, по ходу проверки работы плей-офф в дефолтных правилах я обнаружил ошибку, из-за которой он работал неправильно. Сходу я не нашёл, как её исправить, поэтому решил посмотреть, как делали такой плей-офф в других лигах. Бывает полезно в общих чертах представлять, в каких играбельных странах в ФМе какие правила, чтобы в случае чего быстро подсмотреть. Я нашёл такой же плей-офф в Нидерландах и внес все данные по нему в свой апдейт с небольшими правками.
Спойлер
5909 (https://fmfan.ru/index.php?action=dlattach;attach=5909)
5910 (https://fmfan.ru/index.php?action=dlattach;attach=5910)
5911 (https://fmfan.ru/index.php?action=dlattach;attach=5911)
5912 (https://fmfan.ru/index.php?action=dlattach;attach=5912)
5913 (https://fmfan.ru/index.php?action=dlattach;attach=5913)
5914 (https://fmfan.ru/index.php?action=dlattach;attach=5914)
5915 (https://fmfan.ru/index.php?action=dlattach;attach=5915)
5916 (https://fmfan.ru/index.php?action=dlattach;attach=5916)
5917 (https://fmfan.ru/index.php?action=dlattach;attach=5917)
5918 (https://fmfan.ru/index.php?action=dlattach;attach=5918)
5919 (https://fmfan.ru/index.php?action=dlattach;attach=5919)
5920 (https://fmfan.ru/index.php?action=dlattach;attach=5920)
5921 (https://fmfan.ru/index.php?action=dlattach;attach=5921)
Как видно, мне пришлось залезть в два пункта, которые мы еще не рассматривали - "Правила для других стадий" и "Вспомогательные правила". Я это делал впервые, поэтому не особо много смогу про них рассказать.
В "Правила для других стадий" -> "Правила континентального кубка" мы указываем, в каком порядке и откуда берутся команды для распределения в континентальных соревнованиях. Там же мы указываем номер стадии, которая является плей-офф за выход в еврокубки, т.к. только одно название стадии "European Places Playoff" не будет выводить команду в еврокубки. Кстати, именно в этом месте в дефолтных правилах и была ошибка, из-за которой плей-офф работал неправильно.
В "Вспомогательные правила" -> "Команды в плей-офф чемпионата Европы" мы просто указываем, какие места должны браться в плей-офф при изменении количества команд, выходящих в еврокубки из-за изменения коэффициента УЕФА. Больше команд - для плей-офф берутся места ниже.
Теперь мы может протестировать работу плей-офф через "Проверку турниров", но в этот раз я покажу, как можно сделать эту проверку более настраиваемой. Особенность нашей проверки будет заключаться в том, что нам нужно симулировать ситуацию, при которой Кубок выигрывает команда, занявшая место, позволяющее играть в плей-офф за выход в ЕК. Победа в Кубке имеет бОльший приоритет, поэтому теоретически эта команда не должна играть в плей-офф, т.к. она уже вышла в еврокубки. Вместо этого в плей-офф должна попасть команда, занявшая первое место вне его. Звучит сложно, но на самом деле реализуется такой тест довольно просто. Если выбрать "Проверку Турниров", то в левом нижнем окне можно увидеть небольшое меню. По умолчанию мы находимся на строке "Настройки". Нужно перейти на строку "Принудительные результаты команд" и в правом окне мы увидим простой интерфейс моделирования разных ситуаций.
Есть только три столбца - Команда, Турнир и Результат. В столбце Команда указывается команда, над которой будем проводить манипуляции. Во столбце Турнир - турнир (естественно, команда должна в нём участвовать). В столбце Результат указывается один из трёх возможных вариантов симуляции результатов - В, Н и П. Соответственно, В - это команда выиграет все матчи в этом турнире, Н - сыграет все матчи вничью и П - проиграет все матчи. Важной особенностью является приоритетность строк - чем выше строка, тем больший приоритет она имеет. Например, у нас есть две строки:
в первой команда "А" играет в турнире "Д1" с результатом "В".
[/li]
во второй команда "Б" также играет в турнире "Д1" с результатом "В".
[/li]
В таком случае редактор, вероятно, будет обрабатывать строки по очереди - сначала все соперники команды "А" по турниру "Д1" получат поражения (в т.ч. и команда "Б"), а потом поражения получат все соперники команды "Б" (но не "А"). Таким образом можно формировать хоть полное распределение мест в лиге, определять финалистов кубка и т.д. Кстати, на плей-офф турнира эти результаты распространяются автоматически.
Для проверки работы нашего плей-офф я прописал одной из команд победу в Кубке, а также прописал формирование верхней части турнирной таблицы набором строк.
Спойлер
Я просимулировал турниры до октября 2020-го года (чтобы точно сформировался календарь на группы еврокубков). Как видно, в Д1 команды вверху таблицы расположились именно в том порядке, как я указал.
Спойлер
Т.к. одна из команд у нас уже попала в ЛЕ через кубок, то после смещения в плей-офф должны сыграть команды, занявшие 4-7 места (помним, что кубок имеет бОльший приоритет). Но кубок выиграла команда, которая заняла 6-е место и она теперь не должна играть в плей-офф. Вместо неё в плей-офф должна попасть команда, занявшая 8-е место. Проверив команды в плей-офф, видим, что туда попали те команды, которые и должны были - вместо Karpaty Lviv, выигравших Кубок, в плей-офф участвовал FM Mariupol, занявший 8-е место.
Спойлер
Теперь проверим, попал ли в ЛЕ победитель плей-офф. Для этого прямо в окне "Команды" дважды кликнем на PFC Olexandriya, затем перейдём на "Test" -> "Встречи" -> PFC Olexandriya -> 2020. В правом окне увидим, что клуб-победитель плей-офф в следующем сезоне действительно играл в ЛЕ, что означает - наш плей-офф работает правильно.
Спойлер
Основу Д1 мы, в принципе, сделали - пришла пора сделать проверку правил для него. "Правила" -> "Проверка правил" -> Ukrainian Premier League, немного ожидания и у меня проверка прошла успешно - по крайней мере, наш Д1 не содержит каких-то критичных багов, что уже неплохо.
Продолжение следует.
Сегодняшний пост будет весьма объемным и с кучей скриншотов - по-другому у меня не получилось.
Если кто-то обратил внимание, в пунктах "Даты" подпункта "Раунды" в плей-офф у нас есть ошибка - наш апдейт не находит записи "Playoff 0" и "Playoff 2". Не находит он их потому, что мы еще не работали над календарём, а это тоже довольно важная часть апдейта.
Для начала посмотрим, что у нас есть в пункте "Правила и время проведения матча". Я буду рассматривать подпункты, которые касаются нашего апдейта.
Пункт "Общие" содержит ряд разнообразных настроек, в основном не особо важных. Нас здесь интересуют "Индекс стадии последнего дня сезона" (какой стадией заканчивается турнир), "Проверить даты на наличие встреч" (минимальное количество дней между матчами) и "Матчи должны проводиться в дни игр сборных" (тут по названию понятна суть). Некоторые данные я скопировал из дефолтных правил, а часть добавил сам.
Спойлер
Отдельно отмечу подпункт "Встречи лиги", хоть мы его и не будем использовать. Здесь может храниться календарь игр на разные годы, в т.ч. и результаты уже сыгранных матчей (для вариантов стартовать в январе в чемпионатах, играющих по системе "осень-весна"). Но интерфейс в РП не очень удобный и я бы рекомендовал реализовывать это в СП, который поддерживает функцию импорта из текстового файла.
Подпункт "Даты встреч" позволяет нам свести в одно место все даты, необходимые для турнира и потом использовать их в других пунктах этого турнира. Удобство заключается в том, что если нужно изменить какую-то дату, то её можно изменить в одном месте, не выискивая в каждом пункте. Даты можно называть с помощью номера, идентификатора, названия стадии, а еще можно всё это попарно совмещать. Например, для даты тура мы можем использовать номер, а для даты первого матча плей-офф можно использовать как "Playoff + First", так и "Playoff + 0" или "Playoff + Semi-Final".
Начальные данные для этого пункта я скопировал из дефолтных правил. Как видим, там и обнаружились недостающие "Playoff 0" и "Playoff 2", которые теперь определились.
Спойлер
5955 (https://fmfan.ru/index.php?action=dlattach;attach=5955)
5956 (https://fmfan.ru/index.php?action=dlattach;attach=5956)
Кроме дат плей-офф мы видим уже прописанные даты первого тура ("0" со стартом 28 июля 2000), дату окончания турнира ("leag end", 2 июня 2001), дату начала зимнего перерыва ("wint star", 18 декабря 2000) и дату окончания зимнего перерыва ("wint end", 3 марта 2001).
"wint star" и "wint end" в дефолтных правилах используются для смещения зимнего перерыва во время ЧМ-2022. Кроме того, эти даты привязаны к "Перерывам в середине сезона".
Спойлер
Смещение зимнего перерыва выставляется во "Вспомогательные правила" -> "Перемещает даты рядом с финальной частью турнира", хотя это можно делать и через "Даты встреч" (как раньше и было). Как видно из скрина ниже, это правило перезаписывает даты для "wint star" и "wint end", если ЧМ проводится зимой. Также перезаписывалась дата первого тура, но я убрал эту запись, потому что чуть позже я сделаю это через "Даты встреч".
Спойлер
Обычно я стараюсь прописывать в подпункте "Даты встреч" даты проведения всех матчей турнира, как туров, так и плей-офф, а потом использую их в турнире. Это выглядит не особо увлекательным процессом и занимает немало времени, но со временем я пришёл именно к такому решению, потому что это позволяет свести к минимуму несанкционированные смещения туров лиги, накладки матчей и т.д. Но можно добиться более-менее приемлемого результата и без строгого прописывания всех дат туров. Это уже каждый решает для себя сам.
В "Датах встреч", как и для "Сезоны (новая система)", можно прописывать год начала действия записи и промежуток лет, через которые эта запись снова будет действовать. Т.о. мы можем полностью прописать даты проведения туров как в чётные годы, так и в нечётные. Это стоит делать, чтобы поздние туры турнира не накладывались на подготовку к ЧМ или ЧЕ. Так что, я использую свои записи с датами проведения матчей и сделаю список туров для чётных и нечётных лет.
Спойлер
5959 (https://fmfan.ru/index.php?action=dlattach;attach=5959)
5960 (https://fmfan.ru/index.php?action=dlattach;attach=5960)
5961 (https://fmfan.ru/index.php?action=dlattach;attach=5961)
5962 (https://fmfan.ru/index.php?action=dlattach;attach=5962)
Но недостаточно просто создать записи в "Датах встреч", у нас большая их часть пока ни к чему не привязана. Вот теперь мы добрались до подпункта "Расписание лиги". Каждая стадия имеет своё расписание. В каждой стадии может быть разное количество записей, но нам вполне достаточно одной.
В пункте "Общие" мы указываем даты действия этого расписания. Можно как жёстко прописать число (как это сделал сам редактор при переводе правил из СП в РП), так и использовать запись из "Дат встреч". Чтобы сменить способ обозначения даты, нам нужно снять галочки с "Дата начала" и "Дата завершения" и поставить их на "Дата начала (из списка встреч)" и "Дата окончания (из списка встреч)". Потом в "Дата начала (из списка встреч)" выберем из выпадающего списка запись с индексом 0 (помним, про то, что первый элемент в списке имеет индекс 0), а в "Дата окончания (из списка встреч)" - с индексом 21 (в первом этапе у нас 22 тура).
Спойлер
Пункт "Игровые дни" содержит базовые дни и базовое время проведения матчей. По большей части этот пункт используется, когда календарь не прописывается жестко в "Датах встреч", а генерируется самой игрой. У нас здесь стоит запись, перешедшая из СП, можем пока её оставить, добавив ещё среду.
Спойлер
Пункт "Даты". А вот теперь мы добрались до места, где сможем привязать наши записи из "Даты встреч" к турам турнира. Ставим галочку на "Вкл", добавляем запись и в столбце "Дата встречи" выбираем из выпадающего списка все наши 22 тура по очереди, от 0 до 21 включительно. И да, редактор начинает тормозить при добавлении некоторого количества записей.
Спойлер
5965 (https://fmfan.ru/index.php?action=dlattach;attach=5965)
5966 (https://fmfan.ru/index.php?action=dlattach;attach=5966)
В пункте "Перерывы" мы можем отдельно прописать перерывы в расписании стадии турнира. Не будем ничего выдумывать и просто используем уже имеющиеся "wint star" и "wint end".
Спойлер
В пункте "Даты смещения" можно указать смещение матчей относительно базового дня. У нас базовым днём в основном является суббота, и мы могли бы указать, что один матч смещается на пятницу (т.е. на один день назад, поэтому индекс "-1"), а три - на воскресенье (т.е. на один день вперёд, поэтому индекс "1"). Ну и отдельно прописать время, в которое начнётся смещённый матч. Но я так делать не буду, потому что дни я буду смещать в "ТВ-датах", а в "Датах смещения" смещу только время матчей. С первым туром всё оказалось сложнее и его матчи пришлось смещать, потому что рядом с ним попадает ЛЕ и Суперкубок, поэтому ИРЛ он тоже проводился по этой кривой схеме.
Спойлер
Пункт "ТВ-даты" отвечает за принцип отбора матчей для проведения ТВ-трансляций. Там же указывается тип ТВ-трансляций. Почти все данные я заполнил еще в СП, сейчас только немного подкорректировал. Ну и добавил корявый первый тур (с индексом 0).
Спойлер
Пункт "Особые ТВ-даты" касаются трансляций в особые дни, например, Рождество. Для нашего апдейта он не нужен.
По примерно такому же принципу заполним подпункты "Расписание лиги" для стадий 1 и 2. Только для этих стадий используем даты встреч с индексом 22-31, ну и пункт "Перерывы" не будем использовать. Я не буду мудрить с проведением матчей разных стадий в один день и просто определю, что матчи стадии 1 будут проводиться в воскресенье, а стадии 2 - в пятницу и субботу.
Заполнив все нужные пункты для стадии 1, я могу просто скопировать в стадию 2 "Общие", "Даты", ведь данные в них будут одинаковы для обеих стадий.
Спойлер
5970 (https://fmfan.ru/index.php?action=dlattach;attach=5970)
5971 (https://fmfan.ru/index.php?action=dlattach;attach=5971)
5972 (https://fmfan.ru/index.php?action=dlattach;attach=5972)
5973 (https://fmfan.ru/index.php?action=dlattach;attach=5973)
5974 (https://fmfan.ru/index.php?action=dlattach;attach=5974)
5975 (https://fmfan.ru/index.php?action=dlattach;attach=5975)
5976 (https://fmfan.ru/index.php?action=dlattach;attach=5976)
Для стадий 3 и 4 мне нужно только заполнить пункт "Даты" в подпункте "Раунды". Я буду использовать одинаковые даты для этих стадий - "Playoff 0" и "Playoff 1" ("Playoff 2" нам не пригодится).
Спойлер
5977 (https://fmfan.ru/index.php?action=dlattach;attach=5977)
5978 (https://fmfan.ru/index.php?action=dlattach;attach=5978)
5979 (https://fmfan.ru/index.php?action=dlattach;attach=5979)
Теперь нужно сделать "Проверку турниров" и посмотреть, как работает наш календарь УПЛ. Если зайти в соревнование и перейти на "Test" -> "Годы" -> "2019" -> "Встречи", то можем увидеть, когда и какой матч будет проводиться. В принципе, вышло более-менее то, что нужно. Есть небольшие нюансы, ведь некоторые матчи некоторых туров не на 100% проходят в нужные дни, но смещения получились минимальными и я в таких случаях просто оставляю, как есть, потому иначе ошибку можно долго и нужно искать и так и не найти - РП всё же очень привередливая штука. Ну и календарь 2020-го года пока выглядит очень криво, но мы его еще будем править, когда приступим к изменению формата УПЛ.
Спойлер
Продолжение следует.
Ниже влез предыдущий скриншот и убрать его почему-то не получается - не обращайте внимания.
Спойлер
Теперь займёмся раздачей призовых и денег за трансляции.
Если призовые не были прописаны в СП, то можно добавить их прямо в РП. Для этого в стадии 0 (всё же она у нас является основной) перейдём в "Настройки лиги" и там найдём раздел "Призовые деньги". В этом разделе можно прописать призовые за конкретные места, добавляя записи с суммой и местом (первое место имеет индекс 0). Получится что-то подобное:
Спойлер
Теперь добавим деньги за ТВ-трансляции. Есть разные варианты - распределение денег на старте сезона, выплаты за каждый матч и т.д. В дефолтных правилах присутствуют только выплаты Динамо и Шахтеру на старте сезона. Мы добавим выплаты и остальным командам, а также поставим галочку на "Сделки на права от телетрансляций, заключённые клубами в частном порядке, перекрывают турнирные права на телетрансляции".
Спойлер
В принципе, из того, что нам осталось сделать в предварительной версии Д1, остались только правила стадионов и VAR. Первый пункт так и называется - "Правила стадионов". Нас интересует только подпункт "Требования к стадиону". Мы добавим правило в 5000 сидячих мест из дефолтных правил, а также добавим обязательное наличие травяного покрытия и обогрева.
Спойлер
VAR добавляется в "Правила и время проведения матчей" -> "Правила видеоповторов для матча". Делаю это впервые, поэтому мог что-то не учесть, но получилось как-то так.
Спойлер
Теперь приступаем к работе над турниром Д2. Он гораздо проще, тем более, что основные моменты были прописаны мной в СП и теперь только осталось немного "причесать" правила.
Для Д2 и Д3 я не буду прописывать каждый тур и не буду реализовывать смещение старта турнира на неделю в чётные и нечётные сезоны - для низших лиг пересечение с матчами сборных не критично, тем более у нас будут прописаны переносы матчей при вызове большого количества игроков в сборные. Так что, я добавлю в "Даты встреч" только даты первого и последнего тура, начала и окончания зимнего перерыва, а также даты матчей плей-офф.
Спойлер
В пункте "Игроки" установим минимальное количество игроков, вызванных в сборные, для переноса матча (в УПЛ такого правила нет, потому что команды всё равно не играют во время матчей сборных).
Спойлер
Больше ничего принципиально нового по сравнению с Д1 я не использовал, поэтому не вижу смысла тратить время на то, чтобы сделать и залить сюда кучу скринов.
С группами Д3, в общем-то, такая же ситуация, как и с Д2, но теперь я вообще не использовал ничего нового, кроме добавления матча за чемпионство между победителями групп. Правда, я что-то сделал не так и этот матч не отображается в истории соревнования, но решение этой ошибки я пока не нашёл, поэтому оставил как есть, она не настолько значительна. Но если кто-то подскажет способ решить эту проблему - буду благодарен.
Спойлер
5992 (https://fmfan.ru/index.php?action=dlattach;attach=5992)
5993 (https://fmfan.ru/index.php?action=dlattach;attach=5993)
5994 (https://fmfan.ru/index.php?action=dlattach;attach=5994)
5995 (https://fmfan.ru/index.php?action=dlattach;attach=5995)
5996 (https://fmfan.ru/index.php?action=dlattach;attach=5996)
5997 (https://fmfan.ru/index.php?action=dlattach;attach=5997)
5998 (https://fmfan.ru/index.php?action=dlattach;attach=5998)
5999 (https://fmfan.ru/index.php?action=dlattach;attach=5999)
Теперь самое время перейти к Д4 (но там тоже ничего такого не будет) и кубкам.
Продолжение следует.
Забыл об одном нюансе в Д3 - региональных дивизионах. Их же мы применим и в Д4. Если вкратце, то если команды распределяются в группы турнира по географическому принципу, то можно прописать командам региональные дивизионы и добавить соответствующее правило для турнира. Распределение можно сделать и без использования региональных дивизионов, прописав правила распределение команд по расположению относительно каких-то ключевых городов (например, в группу 1 попадают команды, которые расположены западнее города Х и севернее города Y). Правда, для этого способа у всех команд страны обязательно должны быть прописаны города в базе, и у этих городов обязательно должны быть прописаны координаты. Поэтому я предпочитаю использовать региональные дивизионы. Для того, чтобы указать, что турнир должен распределять команды по дочерним соревнованиям с помощью региональных дивизионов, нам нужно поставить соответствующую галочку в "Правила детских турниров/Регионов (кривой перевод, правильнее было бы "дочерних турниров")" -> "Общие".
Спойлер
Для того, чтобы региональные дивизионы корректно работали, нужно будет их прописать всем командам, но этим мы займёмся уже после того, как полностью сделаем всю структуру лиг.
Ничего принципиально нового для Д4 я не делал, за меня почти всё сделал редактор при переводе из СП в РП, а я только подкорректировал некоторые моменты. Единственный новый пункт, который я затронул - это пункт "Дисциплина". Здесь можно прописать штрафные санкции клубу за получение определённого количества ЖК и/или КК в матче. В Д1-Д3 такой нормы нет, а вот в Д4 она присутствует.
Спойлер
Конечно, не забываем периодически делать проверку правил через "Правила" -> "Проверка правил", чтобы вовремя поймать и обезвредить возможные баги.
В Суперкубке и Кубке я оставил всё, что было прописано еще в СП, только прописал правильные индексы дисциплинарных правил и правил встречи, а также прописал разные даты проведения Суперкубка в чётные и нечётные годы.
Спойлер
6026 (https://fmfan.ru/index.php?action=dlattach;attach=6026)
6027 (https://fmfan.ru/index.php?action=dlattach;attach=6027)
6028 (https://fmfan.ru/index.php?action=dlattach;attach=6028)
В аматорском кубке пришлось сделать чуть больше изменений. Мне нужно было, чтобы в кубок сначала добавлялись команды из групп Д5, а потом - из групп Д4, но при тесте выяснилось, что редактор берёт команды наоборот. Чтобы решить эту проблему, мне нужно было прописать в пункте "Общие" стадии кубка правило, по которому команды в эту стадию будут браться согласно посеву и по убыванию (т.е. сначала берутся команды с самым высоким значением посева, а потом с самым низким). Казалось бы, это не очень логично, ведь чем выше посев, тем должно быть лучше, но в нашем случае будет как раз наоборот. Со временем я пришёл в варианту привязки посева к уровню дивизиона или места команды в лиге, где 0 - это самый высокий уровень. Мне так оказалось проще и понятнее. Т.о. для нашего аматорского кубка команды из высшего дивизиона турнира (Д4) будут иметь самый низкий посев (0), а команды из самого низшего (Д5) - самый низкий посев (1).
Спойлер
6029 (https://fmfan.ru/index.php?action=dlattach;attach=6029)
6030 (https://fmfan.ru/index.php?action=dlattach;attach=6030)
6031 (https://fmfan.ru/index.php?action=dlattach;attach=6031)
Плавающее количество команд в аматорском кубке я прописал просто на всякий случай, чтобы уменьшить количество возможных багов. А вообще обязательно прописываю плавающее количество команд в кубках, если в нём не играют дубли, а в лигах, из которых берутся команды - играют. Никогда не знаешь, сколько и в какой лиге может быть дублей через 15-20 сезонов, поэтому лучше этот вариант предусмотреть заранее.
Продолжение следует.
Что ж, почти все соревнования приведены к более-менее правильному виду. Остались чемпионаты U21 и U19, но ими мы займёмся позже. Теперь нужно реализовать изменение количества команд и смену формата турниров в разные годы.
Напомню, что нам нужно реализовать. Нужно заранее продумать, сколько команд куда должны вылетать/повышаться, чтобы на следующий сезон турниры приняли интересующий нас вид.
Можно сделать что-то вроде такого:
(https://fmfan.ru/index.php?topic=1035.msg9671#msg9671)Спойлер
Порядок действий у нас будет примерно таким (но это не обязательно. Например, можно произвольно поменять местами пункты 3, 4 и 5):
Дублируем турниры, в которых будет изменяться количество команд (в нашем случае это все лиги и главный кубок). Чтобы не запутаться, каждому турниру лучше поставить год в "Описание".
[/li]
Для этих турниров прописываем годы действия (где-то "Год начала", где-то "Год окончания").
[/li]
Прописываем нужное количество вылетающих/повышающихся команд в разные годы.
[/li]
Если нужно, меняем формат проведения турнира.
[/li]
Прописываем добавление/уменьшение числа команд в турнирах.
[/li]
Проверяем, как вся эта махина работает.
[/li]
Т.к. у меня изменения коснутся сразу трёх сезонов, то придётся делать по три записи каждого такого турнира. Сначала я сделаю изменение на один сезон, проверю, а потом сделаю изменение на второй сезон - так будет проще найти возможные баги. Список наших турниров будет пока таким (но, возможно, его удастся немного оптимизировать):
Спойлер
Пропишем каждому турниру, который претерпит изменения, годы действия. Для этого зайдём в пункт "Общие" каждого турнира и поставим нужные значения в "Год начала" и "Год окончания". Принцип здесь простой - прописанный год, это год начала сезона (например, 2019 для сезона 2019/20). Если "Год начала" или "Год окончания" не заполнены, то это значит, что действие этого правила турнира не имеет ограничения по началу или окончанию.
Наша схема будет выглядеть следующим образом:
Сезон 2019/20: "Год начала" не заполняем, "Год окончания" = 2019.
[/li]
Сезон 2020/21: "Год начала" = 2020, "Год окончания" = 2020.
[/li]
Сезон 2021 и далее: "Год начала" = 2021, "Год окончания" не заполняем.
[/li]
Чтобы не заваливать скриншотами, я покажу пример только на одном дивизионе.
Спойлер
6041 (https://fmfan.ru/index.php?action=dlattach;attach=6041)
6042 (https://fmfan.ru/index.php?action=dlattach;attach=6042)
Теперь правим количество вылетающих/повышающихся команд в соответствии с нашей таблицей.
Спойлер
6043 (https://fmfan.ru/index.php?action=dlattach;attach=6043)
6044 (https://fmfan.ru/index.php?action=dlattach;attach=6044)
Тут мы столкнулись с ситуацией, когда из Д4 в Д3 команды повышаются через плей-офф и его нужно переделывать. Если в первоначальном варианте повышались 2 команды из 9-ти (3 команды из 3-х групп), то теперь нужно, чтобы в сезоне 2019/20 повышались сразу 6 команд, а этого не сделать с помощью плей-офф из 9-ти команд. Есть как минимум два варианта решения проблемы: повышать напрямую по 2 команды из каждой группы или немного изменить плей-офф, добавив туда еще по одной команде из группы (по 4 команды из 3-х групп, 6 победителей повышаются). Я выбрал второй вариант, потому что ИРЛ в Д4 всегда используется плей-офф, вне зависимости от количества повышающихся команд.
Спойлер
Ну и плей-офф я переделал так, что в сезоне 2019/20 он состоит только из одного раунда - Final (предыдущие два я просто удалил).
Спойлер
6046 (https://fmfan.ru/index.php?action=dlattach;attach=6046)
6047 (https://fmfan.ru/index.php?action=dlattach;attach=6047)
Теперь нужно изменить формат Д1, ведь в сезоне 2020/21 будут играть 14 команд в два круга. При этом отмечу, что плей-офф за вылет удалять я пока не буду, потому что предполагаю его использовать в правилах Д1 для сезона 2021/22 и более поздних.
Итак, для начала я удалю две уже ненужные стадии - 1 и 2. Затем в стадии 0 изменю количество команд на 14 (пункт "Общие"). В пункте "Настройки лиги" сниму галочки с пунктов "Разделитель лиги при раннем финише" и "Дополнительные матчи лиги", а также удалю первые две записи из пункта "Правила квалификации". В "Призовые" можем добавить еще две записи для команд, занявших 13 и 14 места.
Спойлер
6048 (https://fmfan.ru/index.php?action=dlattach;attach=6048)
6049 (https://fmfan.ru/index.php?action=dlattach;attach=6049)
6050 (https://fmfan.ru/index.php?action=dlattach;attach=6050)
Количество туров у нас также уменьшится, поэтому придётся подкорректировать "Даты встреч". Я убрал все записи для 2019-го года (текущая запись турнира всё равно будет актуальна только для сезона 2020/21), а также 6 уже лишних туров.
Спойлер
6051 (https://fmfan.ru/index.php?action=dlattach;attach=6051)
6052 (https://fmfan.ru/index.php?action=dlattach;attach=6052)
Чтобы изменившиеся "Даты встреч" у нас корректно работали, нужно немного подправить и "Расписание лиги", изменив "Дату окончания" в "Общие" и добавив 4 записи в "Даты".
Также я немного подправлю "Даты смещения" и "ТВ-даты", ведь количество матчей в туре теперь 7, а не 6. Для этого я просто изменю столбец "Кол-во матчей" в одной из записей на "2".
Спойлер
6053 (https://fmfan.ru/index.php?action=dlattach;attach=6053)
6054 (https://fmfan.ru/index.php?action=dlattach;attach=6054)
Для 25 и 26 туров, которые играются в один день, я пытался прописать особые условия, чтобы для них заработали ТВ-трансляции, но пока не сработало. Оставлю на потом.
Нужно еще изменить индексы стадий 3 и 4, чтобы они шли подряд после стадии 0, это ведёт к тому, что придётся залезть в некоторое количество других пунктов, но иначе всё может работать не совсем так, как запланировано (увы, редактор в РП очень привередливый). Также в условиях начала плей-офф за выход в еврокубки нужно убрать требование окончания стадии 1, а в условиях начала плей-офф за выживание нужно убрать требование окончания стадии 2 - у нас их теперь нет. Если не убрать эти строки, плей-офф просто не начнутся.
Теперь пропишем добавление команд во все дивизионы. Делается это через пункт "Продвижение/Вылет" турнира, ну и прописать его нужно в сезоне, предшествующем расширению. Тут я получил хороший пинок по яйцам от редактора, которому мои расчёты по количеству добавляемых команд были до одного места. Уже не в первый раз СИшники каким-то магическим образом ломают что-то важное в редакторе (в этом ФМе это уже второй серьёзный баг). Спустя несколько часов, потраченных на попытки найти причину бага, я обнаружил @SIAZ TV, за что ему огромное спасибо.
Спойлер
6059 (https://fmfan.ru/index.php?action=dlattach;attach=6059)
6060 (https://fmfan.ru/index.php?action=dlattach;attach=6060)
6061 (https://fmfan.ru/index.php?action=dlattach;attach=6061)
6062 (https://fmfan.ru/index.php?action=dlattach;attach=6062)
Практически такой же набор манипуляций мы проделаем со всеми лигами и для сезона 2021/22. Понятное дело, что для Д1 теперь нужно будет прописать 16 команд, изменив календарь (я взял календарь на 32 тура из сезона 2019/20 и просто убрал оттуда два тура). Ну и я догадался, что можно сократить одну из записей Д2, а также по одной из записей Д3, т.к. они будут одинаковыми для сезонов 2019/20 и 2020/21. Поэтому я просто прописал в "Год окончания" 2020 в первой записи, а вторую изменил под сезон 2021/22.
Плей-офф в Д4 снова пришлось переделать, ведь в сезоне 2020/21 у нас из Д4 в Д3 переходят 4 команды. Тут решается просто - сокращается одна стадия, последняя.
Т.к. плей-офф между Д1 и Д2 я предполагал использовать только начиная с сезона 2021/22, то я уберу его из сезонов 2019/20 и 2020/21. Тут нужно быть внимательным и не только удалить стадию с плей-офф, но и удалить упоминания о ней из "Настроек лиги" в Д1, а также из "Стадии из других групп" Д2.
После всех изменений я в очередной раз прогнал правила с помощью "Правила" -> "Проверка правил" и, о чудо, проверка прошла успешно.
Со структурой взрослых лиг вроде разобрались, теперь нужно немного адаптировать главный Кубок. В текущем виде кубок рассчитан только на количество основных команд, играющих в Д1-Д3 в сезоне 2019/20. Начиная с сезона 2020/21 их количество увеличивается, поэтому Кубок нужно немного подправить. Также нужно учитывать, что в Кубке могут играть только первые команды, дубли запрещены. В РП Кубок поддерживает нефиксированное количество команд, т.о. нам достаточно прописать для Кубка максимально возможное количество команд в лигах, а по факту в первом раунде будет проводиться меньше матчей, если в каких-то лигах будут играть дубли.
Для правильной работы Кубка с сезона 2020/21 нужно немного подправить количество команд, участвующих в ранних раундах. Для облегчения понимания я сделал такие таблицы (в сезоне 2019/20 в Кубке участвует 48 команд, а не 52, потому что в Д3 играют 4 дубля), по которым и переделал потом раунды.
Спойлер
Также я добавил в "Даты встреч" Кубка записи для чётных и нечётных лет, небольшие призовые и ТВ-даты (скрины выкладывать не буду, там ничего особо нового нет).
Теперь можно приступать к работе над чемпионатами U21 и U19.
Продолжение следует.
Чтобы начать работу над молодежными лигами, сначала скопируем всю недостающую по ним информацию из дефолтных правил ("Правила для резервов" из раздела "Страна", два "Правила матча", а также три турнира). Первые две записи в "Резервные лиги" относятся к FMT/FMH и я не буду их менять. А вот две следующие записи как раз относятся к молодежным чемпионатам, которые будут использоваться в обычной версии игры. В них я только подправлю "Индекс правил встречи", но сначала мне нужно создать два пустых правила и скопировать в них информацию из дефолтных правил.
Спойлер
6082 (https://fmfan.ru/index.php?action=dlattach;attach=6082)
6083 (https://fmfan.ru/index.php?action=dlattach;attach=6083)
6084 (https://fmfan.ru/index.php?action=dlattach;attach=6084)
6085 (https://fmfan.ru/index.php?action=dlattach;attach=6085)
Теперь я создам три пустых правила в "Списке" и скопирую туда все данные по молодёжным турнирам из дефолтных правил.
Теперь нужно рассказать о том, какая структура молодёжных чемпионатов будет в нашем апдейте.
U21:
Формат турнира я поменял так же, как и в Д1. Даты матчей я не менял по сравнению с дефолтом, мне было откровенно лень, а Ю21 не настолько важный чемпионат, чтобы тратить на него много времени. Можно было заморочиться, скопировать календарь их Д1 и сдвигать его на один день назад, но... "И так сойдёт". (с)
Единственный минус такого оформления чемпионата Ю21 - не будет копироваться календарь Д1 со сдвигом на один день назад, как сделано в реальности. Но я уже неоднократно убеждался - 100% реалистичности апдейтом не добьёшься, лучше потратить время на что-то более важное.
Дополнительные команды в Ю19 добавляются таким же способом, каким мы убирали команду из Ю21, только без галочки "Игнорировать команды".
Спойлер
Проверка правил показала, что всё сработало хорошо, а это значить, что со структурой мы предварительно более-менее разобрались.
Спойлер
6088 (https://fmfan.ru/index.php?action=dlattach;attach=6088)
6089 (https://fmfan.ru/index.php?action=dlattach;attach=6089)
6090 (https://fmfan.ru/index.php?action=dlattach;attach=6090)
6091 (https://fmfan.ru/index.php?action=dlattach;attach=6091)
6092 (https://fmfan.ru/index.php?action=dlattach;attach=6092)
6093 (https://fmfan.ru/index.php?action=dlattach;attach=6093)
В процессе игры могут выплыть какие-то баги, но, увы, на стадии выпуска апдейта все их определить невозможно. Я обычно тестирую апдейт в редакторе лет на 30-40, чтобы убедиться, что все сезоны за этот срок нормально отработают. Если позволяет время, бывает полезно прогнать апдейт в игре в режиме отпуска сезона 2-3. Лучших вариант, конечно, это полноценная игра на апдейте, но это сильно затянет процесс выпуска, поэтому, как не печально, будем тренироваться на кошках ждать обратной реакции от пользователей - несколько человек гораздо быстрее найдут неявные баги, чем один автор.
После всех манипуляций с молодёжными чемпионатами я убрал плей-офф между Д1 и Д2 в сезонах 2019/20 и 2020/21, сделал очередную проверку всех правил, а потом - проверку турниров до 2060-го года. В процессе проверки турниров выяснилось, что я забыл прописать запрет на участие в плей-офф за повышение дублям, первые команды которых уже играют в дивизионе выше. Редактор в случае победы дубля в плей-офф не сможет пустить его в дивизион выше, т.к. в одной лиге нельзя играть основной команде и дублю, но и заменить дубль на проигравшую в плей-офф команду он не сможет, поэтому засунет в тот дивизион какую-нибудь команду из низших неиграбельных лиг. Запрет прописывается в "Продвижение/Вылет" в пункте "Могут ли невышедшие команды играть в высших раундах плей-офф?".
Спойлер
Правда, стоит заметить, что это условие не всегда срабатывает на 100%, но даже в таких случаях редактор может более-менее нормально себя вести. Например, в одном из тестов произошла ситуация, когда из Д2 напрямую вылетела основная команда и редактор взял дубль в плей-офф между Д2 и Д3. Дубль победил и, по идее, должен был заменить основную команду в Д2, но, видимо, редактор решил, чтобы это может привести к множественным затруднениям, поэтому вместо Д2 отправил дубль в Д4 (основная команда-то уже вылетела в Д3 и дубль не может там играть), а в Д2 отправил команду, которая заняла следующее после дубля место в той же группе. Решение вполне в духе украинских футбольных чиновников.
Еще один вариант, как избежать этой проблемы - просто запретить дублям выходить в Д2. Всё равно командам Д1 держать дубли нет особого смысла, ведь у них уже есть команды Ю21 и Ю19, а дубли команд Д2 могут играть не выше Д3. Да и уже несколько лет прошло с тех пор, как дубли играли в Д2. Так что, я в итоге решил запретить дублям выходить в Д2.
Спойлер
Тесты до 2060-го года прошли успешно (не обращайте внимания на наличие Нефтяника, ФК Полтава, всяких академий и ДЮСШ - это издержки чистой базы), что позволяет мне сказать - с чистой структурой мы закончили, пришло время немного поработать с самой базой (предварительно сохранив отдельную версию с чистой структурой лиг - может пригодиться для следующих ФМов).
Спойлер
6096 (https://fmfan.ru/index.php?action=dlattach;attach=6096)
6097 (https://fmfan.ru/index.php?action=dlattach;attach=6097)
6098 (https://fmfan.ru/index.php?action=dlattach;attach=6098)
6099 (https://fmfan.ru/index.php?action=dlattach;attach=6099)
6100 (https://fmfan.ru/index.php?action=dlattach;attach=6100)
6101 (https://fmfan.ru/index.php?action=dlattach;attach=6101)
6102 (https://fmfan.ru/index.php?action=dlattach;attach=6102)
6103 (https://fmfan.ru/index.php?action=dlattach;attach=6103)
6104 (https://fmfan.ru/index.php?action=dlattach;attach=6104)
6105 (https://fmfan.ru/index.php?action=dlattach;attach=6105)
6106 (https://fmfan.ru/index.php?action=dlattach;attach=6106)
6107 (https://fmfan.ru/index.php?action=dlattach;attach=6107)
Продолжение следует.
Прежде всего нам нужно сделать актуальным состав команд в Д4. Выбывшие команды я отправил в Д5 или сделал несуществующими, если они исчезли. На замену добавил команды из Д5, а одну из команд пришлось переделывать из ненужной, потому что в базе её не было.
Чтобы команды правильно распределялись по группам Д3 и Д4, нужно прописать всем командам страны региональные дивизионы. Это довольно большой объём работы и я стараюсь его делать уже после того, как я немного уменьшу количество команд в стране, избавившись от исчезнувших или ненужных команд. Каждая команда - это часть занимаемой игрой памяти и я на 100% уверен, что при игре 99,[9]% игроков не понадобятся дубли команд из неиграбельных Д7-Д8, да и команды из Д7-Д9 вообще. Даже просто пройдясь "по верхам" я убрал больше 120-ти клубов (это из 1468, что были активны в базе), а после небольшого углубления их число достигло 283 (почти 20% от изначального числа!). Если задаться целью еще сильнее облегчить базу, то можно еще больше уменьшить их количество, но я остановлюсь и на этом.
Теперь нужно прописать города тем клубам, у которых их нет, ведь дальше нам нужно будет фильтровать клубы по регионам.
Т.к. у меня идёт географическая привязка к региональным дивизионам, мне сначала нужно определиться, команды из каких регионов (областей) я буду направлять в какие группы. Вы, наверное, уже заметили, что я люблю таблицы (еще и по роду работы приходилось с ними очень много взаимодействовать), поэтому да - я оформил раскладку регионов по группам в таблицу.
Спойлер
Не буду расписывать, как именно я пришёл к этому варианту - просто взял карту страны и разделил на две части для Д3 и на три части - для Д4. Областям, находившимся на стыке разных частей, я решил прописать две группы, для большей вариативности.
После этого я в разделе базы "Клубы" с помощью фильтра отсеиваю клубы из каждого региона и выделяю их все (выделяю строку с первым клубом, а потом с нажатым Shift нажимаю на самую нижнюю строку).
Спойлер
После этого я нажимаю кнопку "Править" в правом нижнем углу окна и теперь могу вносить изменения сразу во все клубы региона одновременно. Иногда редактору требуется время на обработку таких изменений, но всё равно это гораздо быстрее, чем править каждый клуб отдельно (с ужасом вспоминаю те времена, когда массового редактирования региональных дивизионов еще не было).
Теперь я перехожу на строку "Региональный дивизион" в левом нижнем окне и с помощью кнопки "Добавить" и поиска прописываю региональные дивизионы сразу всем выделенным клубам. Небольшая хитрость - кнопку "Добавить" можно использовать только один раз, а дальше - кнопку "Дублировать", она обрабатывается редактором немного быстрее. Ну и в отличие от РП, в базе уровень дивизиона идет более привычно - самый высший уровень = 1.
Спойлер
Может возникнуть логичный вопрос: зачем работать с каждым регионом отдельно, если, судя по таблице, их можно компоновать сразу по несколько и прописывать одни и те же региональные дивизионы сразу 5-6 регионам? Ответ довольно простой: можно и компоновать, но в процессе добавления региональных дивизионов я просматриваю репутацию клубов низших лиг на предмет адекватности и если 50-60 клубов еще можно нормально осилить, то больше - уже сложнее, придётся потом еще раз проверять. Также я в процессе проверяю проф. статус клубов, потому что иногда в проф. лиги может затесаться клуб, которому забыли изменить любительский статус, и наоборот.
После этой не особо увлекательной процедуры наши команды должны адекватнее распределяться по группам Д3 и Д4 (ключевое слово - "должны", но не факт, что будут в 100% случаев).
В целом, апдейт структуры лиг уже принял достойный облик и я только укажу на еще несколько пунктов, которые не совсем связаны со структурой, но также повышают реализм и адекватность апдейта:
Репутации и бюджеты команд. Я всегда просматриваю и, если нужно, правлю репутацию клубов и их бюджеты. С момента выдачи базы СИшникам могла появиться новая информация, могут быть просто ошибки в ресёрче - всё это хорошо бы учесть.
[/li]
Всем командам (или хотя бы из играбельных лиг) я прописываю стадионы. Если стадион неизвестен - беру стадион из города команды.
[/li]
Если у меня есть время, то я правлю посещаемость клубов. Если в высших лигах зачастую ресёрчеры её периодически корректируют, то в низших лигах обычно творится закономерный ужас. Можно использовать разные варианты: делать таблицы, по которым высчитывать минимальную, среднюю и максимальную посещаемость; смотреть доступные статистические источники и т.д. Самый сложный, но самый шикарный вариант -
Смена стадионов командами. Если известно, что некоторые команды определённый сезон, часть сезона или некоторые турниры проводят не на своём стадионе, то это стоит отображать в "Стадионы" -> "Альтернативные стадионы".
[/li]
[/list]
Спойлер
Если есть хорошие знания о стоимости игроков и их примерных зарплатах, то можно отобразить эту информацию в %страна% -> "Трансферы и контракты" -> "Стоимость трансферов" и "Значения еженедельных зарплат".
[/li]
В некоторых турнирах есть ограничения на минимальный и максимальный размер поля. Их можно указать в %турнир% -> "Минимальная длина поля"/"Максимальная длина поля"/"Минимальная ширина поля"/"Максимальная ширина поля". Например, в нашем апдейте в Д1 по регламенту должны быть фиксированные размеры поля 105х68 м.
[/li]
На этом всё, спасибо за внимание! Надеюсь, хоть кому-то эта простыня текста и картинок пригодится)
Цитата: Ohrim от 11 декабря 2019, 16:02:04На этом всё, спасибо за внимание! Надеюсь, хоть кому-то эта простыня текста и картинок пригодится)
Цитата: BarsAziat от 21 декабря 2019, 18:56:30стоит ли закидывать сюда Азию (актуальность все таки не та уже)
Цитата: xalks28 от 29 июня 2020, 00:24:17Что с этим делать?
Цитата: xalks28 от 29 июня 2020, 00:24:17Как сделать так, чтобы клубы, победившие в кубке России попадали в евро кубки?
Цитата: Ohrim от 20 октября 2020, 00:03:03@Syspe проверка лучшей второй команды проводится автоматически, насколько я помню. У кого больше очков, тот и вышел. Но если все команды засунуть в плей-офф махом, то ФМ может и по репутации определить лучшую команду, занявшую 2-е место, но тут лучше проверочные тесты сделать.
По приведённой схеме можно отправлять команды в разные стадии плей-офф. Как вариант, могу посоветовать скачать апдейты Испании ниже Д3 и, например, Сан-Марино - там реализованы сложные плей-офф и можно подсмотреть разные моменты (только Испанию нужно найти с правильный плей-офф в Сегунде Б, в котором два параллельных раунда).
Цитата: Ohrim от 25 октября 2020, 13:02:30@Syspe этот момент можно попробовать обойти, если сделать дивизион не родительским с тремя поддивизионами, а обычным, но с тремя группами. Только там в правилах отбора в группы нужно прописать региональные дивизионы, по которым отбираются команды.
Цитата: Syspe от 25 октября 2020, 18:16:44Это вы про это правило?
Цитата: Syspe от 25 октября 2020, 18:16:44И еще немного непонятно как будет происходить обмен между аматорами и второй лигой, если сделать вариант с группами
Цитата: Ohrim от 25 октября 2020, 19:16:16Group Regions (new system)
Цитата: Syspe от 25 октября 2020, 21:03:19Не нашел такого. Где этот пункт нужно искать?
Цитата: Syspe от 25 октября 2020, 21:03:19По поводу региональных дивизионов, получается из-за того, что дефолтные турниры Ukr Am Leag 1/2/3 неактивны, то и прописанные для команд рег группы больше не работают. Правильно понял?
Цитата: Ohrim от 25 октября 2020, 21:38:19В том же окне чуть ниже появляется. Я просто не знаю, как он по-русски называется, я привык использовать редактор на английском.