Jump to content
Sign in to follow this  
Ohrim

Обучалка по созданию сложного апдейта в FM20

Recommended Posts

Немного графоманства Предисловие

Сразу пишу, что текста будет много, извините, если что.

Я уже давно вынашивал идею о реализации практической обучающей темы по созданию апдейтов для ФМ. Причин для этого вполне достаточно:

- С каждым годом у меня всё меньше свободного времени (да и желания, чего греха таить) на ФМ вообще и на апдейты в частности. С учётом того, как идут дела, думаю, что не за горами тот момент, когда я сведу затрачиваемое на это хобби время до минимума, оставив только участие в ресёрче по мере возможности (и то, пока не найдётся хороший человек на замену). Мне хочется что-то оставить после себя для форума (да, есть "мануал для чайников", но он больше касается общих частей), что вполне подходит под причину "номер раз".

- У меня есть какие-то свои наработки и идеи по созданию апдейтов, к которым что-то могут добавить другие "апдейтные аксакалы". Возможно, кто-то почитает, попробует и его/её затянет процесс создания апдейтов, после чего на ФМФан может стать немного больше апдейтоделов, чем сейчас. У нас есть примеры камрадов dlinnyi и altoch, у которых есть апдейты гораздо выше уровнем, чем я когда-либо делал. И некоторые решения я смотрел в их апдейтах, спрашивал у них совета.

- Последние два года редактор был, мягко говоря, довольно капризным, на что еще наложились определённые ошибки со стороны СИ в вопросе создания структуры и правил лиг в некоторых странах. Это привело к тому, что в ФМ20 я уже несколько часов потратил в редакторе впустую, так глобально и не приблизившись к цели. Такие вещи огорчают и деморализуют, поэтому мне бы хотелось поделиться своим опытом в этом вопросе и, возможно, сэкономить кому-то время на более приятные вещи, чем выискивание "почему же оно со старта не работает, твою мать, я же ничего такого даже не успел поменять".

 

Содержание:

  1. Проверка правильности дефолтных правил страны с помощью "Проверки турниров". Продумывание концепции апдейта. Начало создания новых правил с нуля.
  2. Создание апдейта в стандартных правилах, подготовка к переводу в расширенные правила.
  3. Перевод апдейта в расширенные правила. Глобальные типы записей в расширенных правилах. Раздел "Страна" (пункт "Страна").
  4. Раздел "Страна", пункты “Требуемые команды”, “Турниры”, “Правила матча”, “Дисциплинарные правила”.
  5. Раздел "Страна", пункты “Сезоны (новая система)”, “Перерывы в середине сезона”.
  6. Раздел "Страна", пункты “Дата начала”, “Трансферы” (подпункты “Трансферное окно”, “Правила трансферов”, “Правила аренды”, “Контрактные правила”).
  7. Раздел "Турнир" (Д1). Пункты "Общие", "Стадии" (подпункты “Общие”, “Команды”, “Настройки лиги” стадии 0).
  8. Раздел "Турнир" (Д1). Настройка стадий 1, 2, 3 (подпункты “Общие”, “Команды”, “Настройки лиги”, "Требования",  “Другие турниры для добавления стадии”, “Значения по умолчанию для раунда”, “Раунды”, “Меню особых условий”).
  9. Раздел "Турнир" (Д1). Добавление стадии плей-офф за выход в еврокубки. Пункты “Правила для других стадий”, “Вспомогательные правила”. Настройка сценариев в "Проверке турниров".
  10. Раздел "Турнир" (Д1). Добавление календаря. Пункты “Правила и время проведения матча” (подпункты “Общие”, “Встречи лиги”, “Даты встреч”), “Вспомогательные правила” (запись типа "Перемещает даты рядом с финальной частью турнира"). Подпункт “Расписание лиги” (пункты “Общие”, “Игровые дни”, “Даты”, “Перерывы”, “Даты смещения”, “ТВ-даты”). Подпункт "Раунды" (пункт "Даты"). Проверка работы календаря через "Проверку турниров".
  11. Раздел "Турнир" (Д1). Добавление призовых, платы за ТВ-трансляции, правил стадионов и VAR. Раздел "Турнир" (Д2), пункт "Игроки". Раздел "Турнир" (Д3), добавление матча за чемпионство между победителями групп.
  12. Раздел "Турнир" (Д3, Д4, Суперкубок, аматорский кубок). Региональные дивизионы (пункт "Правила детских турниров/Регионов"). Пункт “Дисциплина”. Организация посева команд в аматорском кубке.
  13. Изменение количества команд и формата турниров в разные годы. Пункт “Продвижение/Вылет”.
  14. Создание чемпионатов U21 и U19, изменение в них количества команд и формата турниров в разные годы.
  15. Финальные штрихи. Прописывание региональных дивизионов клубам. Немного советов.

Share this post


Link to post
Share on other sites
Awards

UnPinned posts

Итак, поехали.

Обучалку я буду делать на примере создания апдейта Украины. В этом году правила апдейта Украины, наверное, одни из самых сложных, даже с учетом того, что я не буду делать Д5, поэтому он очень хорошо подойдёт для примера.

Я буду периодически писать "правила Джейсона Стейтема здорового апдейтодела", которые помогут сэкономить время и нервы.

Первое правило применимо не только к апдейтам, но и ко многим другим вещам в жизни - "Обязательно делайте бэкапы!". Думаю, подробно объяснять тут не нужно, просто заведите себе эту привычку. Указывайте версии, даты, какие-то особенности файла - как хотите. Главное, придерживаться какой-то системы, чтобы самому это было понятно.

Итак, что я имею на старте. Мне нужно:

1. Добавить в Украине две лиги ниже тех, что есть в игре по умолчанию.

2. Поправить правила обеих дефолтных лиг, чтобы привести их в соответствие с реальностью.

3. Реализовать расширение УПЛ в сезонах 2019/20 и 2020/21, а также Д3 и Д4 с сезона 2019/20 с соответствующими правками правил лиг. Увы, регламент на сезоны 20/21 и 21/22 мы не знаем, поэтому будем действовать по обстоятельствам (точнее, определённый план я уже составил, нужно только теперь его успешно реализовать).

На скриншотах я буду использовать редактор с интерфейсом на русском языке, чтобы не переключаться постоянно между языками при написании текста и потому что большая часть, полагаю, использует именно его в работе. Я работаю с англоязычным интерфейсом, потому что в нём нет ошибок и непоняток с переводом + всё-таки немного знание языка тренируется. Внимание - "Язык названий из БД" я использую только английский, чего и вам советую - во-первых, переведено на русский не всё; во-вторых, перевод устаревший (особенно это касается устаревших названий городов в Украине и иногда названий команд); в-третьих, таким образом уменьшается количество переключений языка, потому что набирать в редакторе вы всё будете на английском.

Итак, мы прочитали "Мануал по эдитору для чайников" (те вещи, которые были расписаны там, я постараюсь не повторять), а потом через "Библиотека - Инструменты" в Steam открыли Football Manager 2020 Editor (ну, или установили и открыли) и видим перед собой фиолетово-бирюзовое нечто.

Спойлер

1-1.thumb.PNG.31b5b53502697e4db528617b04193745.PNG

Через "Настройки" в верхнем меню можно изменить "Язык" и "Язык названий из БД".

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

- Старайтесь по возможности держать изменения в разных файлах - структура в одном, изменения по клубам/стадионам/др. в другом, трансферы/правки СА/РА/скиллов в третьем, созданные игроки - в четвёртом. Такая структура поможет в использовании апдейта пользователями (не будет проблем с совместимостью с какими-нибудь другими трансферными апдейтами), а вам такая структура поможет обновлять только какой-то небольшой файл, а не рыться в одном общем, постоянно делая проверки правил после изменений в базе (о них позже).

Возникает логичный вопрос - что делать, если в базе нет нужного клуба и приходится создавать новый, чтобы перенести туда игроков? Для себя я нашёл вариант обычного переименования клубов. Я выбираю клубы из самых низших лиг, которые не будут фигурировать в играбельных лигах, не фигурируют в истории или рекордах соревнований и истории игроков. Для Украины я пришёл к варианту переименования клубов из Христианских лиг Киева и дублей клубов из Киева, которые выше Д6-Д7 никогда не залезали. Только обязательно нужно где-то хранить информацию, какой клуб на какой вы поменяли - это пригодится при переносе игроков. Еще один плюс такого подхода - облегчение установки логотипов, ведь такие клубы в паках графики обычно не присутствуют, а значит можно к своему апдейту просто приложить небольшой конфиг с файлами обновлённых логотипов. При создании же нового клуба ему присваивается новый id, который может пересекаться с id клуба, созданного в каком-нибудь другом апдейте и при использовании этих апдейтов совместно логотипы каких-то клубов будут работать некорректно, потому что ФМ сам изменит id одного из клубов.

С соревнованиями сложнее. Если в базе страны есть соревнования, которые можно безболезненно переименовать и использовать в другом месте, то вперёд (например, для апдейта до Д4 Украины не нужны кубки областей, в которых играют клубы из Д5 и ниже, и можно эти соревнования использовать для других целей, если нужно). Если же такой возможности нет, то без создания соревнований не обойтись.

- Ускоряет процесс создание сначала чистой структуры лиг, без каких-либо изменений в базе. Причиной этого является то, что изменения в правилах лиг (и в стандартных (далее - СП), и в расширенных (далее - РП)) не являются изменениями в базе игры и можно переключаться между апдейтами, в которых нет изменений базы, гораздо быстрее. Да, на быстрых компах загрузка базы занимает каких-то 15-20 секунд, но бывают ситуации, когда нужно это сделать прямо много раз (у нас такие ситуации скорее всего будут и тогда я акцентирую внимание на этом моменте).

- Если страна, для которой будет делаться апдейт, уже есть в игре, значит, есть шанс, что получится использовать некоторые уже прописанные для неё правила. Увы, далеко не всегда эти правила корректны, потому что часть их может быть зашита уже в самой игре и через редактор туда не получится добраться. Проще всего проверить доступные нам правила с помощью "Проверки турниров" (кнопка в верхней левой части окна редактора).

"Проверка турниров" - это божественный дар с небес функция для редактора от СИшников, которая раньше, вероятно, использовалась только разработчиками игры для проверки работы правил турниров. Она позволят протестировать все нужные лиги вдоль и поперёк не открывая сам ФМ и не симулируя там несколько сезонов. Эта вещь настолько ускорила создание и тестирование апдейтов, что я считаю введение этой функции одним из самых успешных решений в истории редактора. Ведь теперь я могу всего за 3 минуты просимулировать несколько сезонов апдейта до Д5 вместо нескольких часов. "Проверкой турниров" апдейтодел должен пользоваться часто и со вкусом.

Чтобы проверить, какие же нам правила подсунули СИшники, заходим в "Правила" -> "Добавить правило в нации", в появившемся окне выбираем "Добавить низший дивизион и кубок к существующей структуре", затем нажимаем на выпадающий список "Страна" и там в подпункте  "Текущие страны" выбираем Ukraine.

Спойлер

1-2.thumb.PNG.60ace19ef7a44b89e74262e36e6f451c.PNG

Нажимаем готово и видим, что у нас в левой нижней части окна появились "ПРАВИЛА СТРАНЫ - UKRAINE". Там хранится всё то, что записано в федолтный файл ФМа, относящийся к Украине. Многие вещи в СП (сокр. "стандартных правилах" - помним, да?) там редактировать нельзя, но нам это сейчас и не нужно. Для проверки нажимаем на "Правила" -> "Проверка правил" и видим, что всё хорошо. По крайней мере, пока ошибки не вылезли (а ведь бывало такое, что ошибки были уже на этом этапе). Тут стоит сохранить текущее состояние апдейта в отдельный файл вида "%страна% def rules", он нам еще может пригодиться.

Теперь нажимаем на "Проверка турниров" и в правой части окна напротив "Записей - 0" нажимаем кнопку "Добавить". В появившемся окне нажимаем на "Добавить условие" -> "Имя" и в появившемся поле вводим название интересующих нас турниров. При вводе экономьте время и пишите названия сокращённо, например вместо "Ukrainian Premier League" достаточно написать "ukr prem", чтобы появилась нужная подсказка.

Спойлер

1-3.thumb.PNG.84f2da44e266e372a93dde80cc981fbd.PNG

Таким образом добавляем еще и "Ukrainian First League", "Ukrainian U21 Division 1" и "Ukrainian U19 Division 1" (кубки тоже можно добавить, но там зачастую правила не так нуждаются в проверке).

После этого нажимаем "Создать новый тест" и после создания соревнований вводим в "Перейти к дате" дату, до которой редактор просимулирует соревнования. Для примера возьмём начало следующего сезона (1.8.20), чтобы у нас были правила сразу на два первых сезона в игре.

Спойлер

1-4.thumb.PNG.c54f623c66ef592f106e22897a476208.PNG

Нажимаем "Запустить на дату", немного ждём и теперь можем проверить, что же у нас сгенерировалось. Для проверки нажимаем два раза на какой-нибудь турнир из списка, нажимаем на строку "Test" -> "Годы", выбираем нужный год (2019, например. Это год начала сезона, т.е. в нашем случае это тест сезона 2019/20), нажимаем на "Правила" и видим выпадающий список из стадий турнира (лига, плей-офф за вылет, плей-офф за выход в еврокубки). Для начала, нас интересуют правила стадии лиги (0 - (На турнирах) - ах, этот великолепный перевод).

Спойлер

1-5.thumb.PNG.94e17e5c5e3120e1be0d02a5a554ba94.PNG

Обычно я перед проверкой правил в редакторе просматриваю регламенты нужных мне соревнований, выделяю "ФМные особенности", т.е. моменты, которые мне нужно будет отразить в редакторе, и где-то отдельно выписываю (в Гугл-Таблицы, например). Т.о. я могу открыть свои записи и сравнить то, что выдал нам редактор, с реальностью. Сразу видно две ошибки - в реальности в этом сезоне в European Places Playoff играют команды, занявшие 5-8 места, а не 4-7, а плей-офф с командами первой лиги вообще убрали. Ну и просмотрев правила 2020-го года видно, что никакого увеличения команд не происходит. Это означает, что нам придётся править правила уже прописанных лиг, чего нельзя сделать без использования РП.

Осознав это, я сделал в СП играбельными Д3 и Д4, после чего перевёл апдейт в РП и спустя несколько часов выявления багов обнаружил, что не могу исправить прописанные правила так, чтобы структура работала.

Тут следует отдельно сказать о "милой" особенности РП. Расширенные правила дают гораздо больше возможностей, чем СП, но они гораздо более нестабильны - одна неправильно выставленная галочка или неправильно введённая цифра может вызвать крах апдейта и он просто не будет работать. Иногда даже добавление банального плей-офф между лигами в РП может привести к куче потерянного времени. Поэтому для себя я выработал следующее правило - "Прописывать всё, что можно, в СП, а потом переводить корректно работающий апдейт в РП".

Если я не могу нормально исправить существующие правила, то нужно создавать новые с нуля. Тут важно понимать, какие особенности нужно прописать вообще, и какие из них можно реализовать в СП.

С опытом вы будете понимать, что можно прописать в СП, а что нет, но для нашего апдейта я распишу это в качестве примера, тем более, нам эти данные потом пригодятся.

Итак, УПЛ 19/20:

- 12 команд в 2 круга, потом деление на две шестёрки и еще в 2 круга, напрямую вылетает одна команда (можно сделать в СП).

- плей-офф за выход в еврокубки между 5-8 командами (нельзя сделать в СП, сложно создать в РП, но можно скопировать из дефолтных правил).

УПЛ 20/21:

- Увеличение команд на 2 (нельзя сделать в СП, несложно сделать в РП).

- 14 команд, формат пока неизвестен, скорее всего вылетать опять будет одна команда напрямую (можно сделать в СП).

- неизвестно, будет ли плей-офф за выход в еврокубки.

УПЛ 21/22:

- Увеличение команд на 2 (нельзя сделать в СП, несложно сделать в РП).

- 16 команд в 2 круга, количество вылетающих и наличие плей-офф за вылет неизвестно (можно сделать в СП).

- неизвестно, будет ли плей-офф за выход в еврокубки.

Важно понимать, что-то удалять в РП всегда легче, чем что-то добавлять. Если мы сделаем в СП правила без плей-офф, то потом этот плей-офф будет тяжело добавлять в РП. Аналогично с делением на шестёрки - их сложнее реализовать в РП. Ну и стоит максимально использовать наработки СИ и при возможности копировать какие-то рабочие решения из сделанных ими лиг. Именно в таких случаях нам и понадобится многократно переключаться из одного апдейта в другой.

Берём всё самое сложное, что можно реализовать в СП, и получаем следующий вариант: 12 команд в 2 круга, потом деление на две шестёрки и еще в 2 круга, напрямую вылетает одна команда, еще одна играет в плей-офф с командой первой лиги. В РП мы можем делать изменения правил турнира в разные годы и путём некоторых корректировок, добавления скопированного и удаления лишнего мы построим правильную структуру изменений формата УПЛ.

Продолжение следует. Будет, когда накопится материал.

Предложения и пожелания приветствуются, но их выполнение не гарантируется)

Забегать по запросу вперёд по какому-либо вопросу не буду, иду по плану. Пишу то, что более-менее знаю. Если не знаю ответа на вопрос, то просто ничего не пишу (я не работал с еврокубками, международными турнирами клубов и сборных, поэтому знаний по ним у меня нет).

Share this post


Link to post
Share on other sites
Awards

 

По такому же принципу мы определяем то, что будем реализовывать в СП для Д2 - 16 команд в 2 круга, 1 команда вверх напрямую, 1 команда играет в плей-офф с командой УПЛ, 2 команды играют в плей-офф с командами Д3, 2 команды вылетают напрямую.

Для Д3 и Д4 мы будем прописывать правила с нуля, но там всё можно реализовать в СП, кроме фиксированного изменения количества команд. В Д4, кстати, состав лиг прошлогодний и нам нужно будет его поменять, но пока мы его не трогаем, чтобы не было изменений в базе. Для обычных лиг не критично, если количество команд в них будет меньше на 1-2, это без проблем правится в РП.

Нажимаем кнопку "Очистить" в "Проверка турниров" (иначе в редакторе будут показываться все изменения, которые произошли за время тестового прогона - команды могут быть в других лигах, с другой репутацией и т.д., что немного неудобно) и создаём в СП с нуля все нужные нам лиги и кубки, используя обучающие материалы из "Мануала для чайников".

Повторюсь, заполнять желательно все пункты в СП, которые можно заполнить - плей-офф, призовые, дни и время проведения игр, ТВ-трансляции, лимиты, зимние перерывы и т.д. Добавляем все дивизионы, которые будут играбельными в апдейте + 1 неиграбельный для корректного обмена командами по ходу сейва. Также добавляем кубки/суперкубки и молодёжные/юношеские чемпионаты.

У нас в лигах будут изменения количества команд, поэтому нужно заранее продумать, где и насколько изменится количество команд. В УПЛ количество команд по ходу игры увеличится с 12 до 16, но редактор в СП не даст нам прописать плавающее количество команд для лиги с подгруппами, потому что его смущает, что команд может быть нечётное количество. Так что, придётся пока оставить 12.

Спойлер

2-1.thumb.PNG.318906d018cb4a4041cf89ca489ed2cc.PNG

 

В Д2 всегда будет 16 команд, тут ничего не трогаем, невзирая на увеличение команд в УПЛ, потому что мы будем добирать недостающие команды из Д3 (который будет добирать недостающие команды из Д4, а тот, в свою очередь, будет добирать недостающие команды из неиграбельного Д5).

Спойлер

2-2.thumb.PNG.1615b946528b30d30e24190f917f80ae.PNG

 

Д3 в текущем сезоне по 11 команд в группе, но это неудобно и мы увеличим в РП их количество со второго сезона до 12-ти, поэтому пропишем 12 в “максимальное количество команд”. В поддивизионах, кстати, в СП стоит прописывать только какую-то уникальную для этой группы информацию (у нас такой нет), всё остальное стоит делать в родительском дивизионе - поддивизионы по умолчанию наследуют эту информацию.

Спойлер

2-3.thumb.PNG.3e2ecfd48757be436da42069ebc8ead3.PNG

 

В Д4 в базе у нас от 9 до 12 команд в группе, по факту - 10 или 12. Здесь мы также в РП будем увеличивать со второго сезона количество команд в группах до 12-ти, поэтому оставляем 12 в "максимальное количество команд". Все команды из Д4 в Д3 переходят через плей-офф за повышение, поэтому в "количество мест, дающих повышение" мы ставим 0.

Спойлер

2-4.thumb.PNG.27b88470ff3b3c063b95d82c891c7a3f.PNG

 

Изменение количества команд также имеет отношение к созданию кубка в СП. Если в РП редактор может взять все команды из лиги без привязки к их количеству, то в СП нужно жестко указать, сколько команд нужно взять из конкретной лиги. Таким образом, нам придётся прописать в СП правильные правила кубка в первом сезоне, а правила в следующих сезонах будем править уже в РП.

Спойлер

2-5.thumb.PNG.78ff7fa20f25c24e3a5dd6ef5622574f.PNG

 

После того, как всё внесено в СП, делаем проверку правил (“Правила” -> “Проверка правил”) и, если всплывающее окно вывело нам “Текущие правила страны верны”, мы готовы к переходу в РП (тут я рекомендую сделать какой-нибудь отдельный бэкап и зафиксировать момент, когда “всё было понятно и всё работало”).

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

Итак, настал час Х - переводим апдейт в РП. Делается это через “Правила” -> “Преобразовать в расширенные правила”. Соглашаемся с предупреждением о переходе в РП и видим перед собой следующее:

Спойлер

3-1.thumb.PNG.658d5a15a066e89f9d35a83ccc920eff.PNG

В первый раз всё может быть не очень понятно, но на самом деле интерфейс больше объемный, чем непонятный. Больше непонятного в том, как, что и где прописывать.

Сначала нужно проверить, корректно ли работает то, что мы прописали в СП, после перевода в РП. Для проверки сначала отдельно сохраняем файл с чистыми правилами в РП (иногда может пригодиться), потом нажимаем “Правила” -> “Проверка правил” -> “Все”. После этого редактор просимулирует каждый турнир в апдейте в течение трёх сезонов и выдаст окно с ошибкой, в случае чего. У меня этого не произошло, значит, можно спокойно дальше работать. В верхнем левом углу, кстати, можно заметить надпись, подтверждающую успешную или не очень успешную проверку - %название апдейта% (проверено уровней дивизионов - х/х).

Нужно отметить, что для загрузки в игре лучше использовать апдейт, сохранённый после полной проверки правил. В ином случае при начале новой игры в стране, правила которой затрагивает апдейт, будет невозможно выбрать количество подгружаемых игровых дивизионов - всегда будет подгружаться максимальное количество, что не всегда удобно.

Теперь нам нужно воспользоваться плодами трудов СИшников, делавших дефолтную версию правил лиг, пусть она и с ошибками. Сделаем апдейт с дефолтными правилами лиг, переведёнными в РП. Ранее я сохранял файл “Ukraine def rules” и теперь он мне пригодится для дальнейшей работы (если не сохраняли, то на чистой базе (без апдейтов) заходим в "Правила" -> "Добавить правило в нации", в появившемся окне выбираем "Добавить низший дивизион и кубок к существующей структуре", затем нажимаем на выпадающий список "Страна" и там в подпункте  "Текущие страны" выбираем Ukraine). Я открываю этот файл, перевожу его в РП и сохраняю отдельно в “Ukraine def rules adv”.

Спойлер

3-2.thumb.PNG.b592f59332a5aeaca679312ef137cfda.PNG

Нам очень поможет то, что в нашей базе нет изменений, ведь мы можем переключаться между “Ukraine def rules adv” и нашим апдейтом, не загружая заново базу каждый раз.

Наша задача на данный момент - найти в дефолтных правилах данные, которых нет в нашем апдейте и они нам нужны. Для упрощения поиска в левом нижнем углу окна редактора есть кнопка “Фильтр”, нажав на которую можно выбрать пункт “Только активные поля”, оставив в правой части окна только поля, в которых что-либо было прописано (логично, правда?). Главное, не забыть отключить её после переключения на наш апдейт.

Теперь нужно провести не очень увлекательную работу по выявлению нужных нам данных, заходя в каждый пункт каждого соревнования. Для начала можно ограничиться разделами Ukraine, Ukraine Premier League и Ukraine First League. Second League (Д3) неактивна и нам не пригодится, а кубками и молодёжными чемпионатами мы займёмся потом.

Каким же образом мы будем копировать нужные данные в наш апдейт? Есть два способа, причём второй появился только с ФМ20:

  1. Если нам нужно скопировать и вставить абсолютно все данные из какого-то пункта, то мы выделяем его в левом окне (например, Ukraine -> “Перерывы в середине сезона”), а затем нажимаем в самом верхнем меню “Редактирование” -> “Копировать”. После этого загружаем апдейт, в который хотим вставить эти данные, в левом окне переходим на этот же пункт (например, Ukraine -> “Перерывы в середине сезона”) и в верхнем меню нажимаем на “Редактирование” -> “Вставить”. Вуаля, все данные пункта добавились в наш апдейт.
  2. Если же нам нужны не все данные из пункта, а только какая-то часть, то мы можем скопировать данные какой-то секции этого пункта, используя кнопку “Копировать” в начале этой секции. Затем находим такую же секцию в пункте нашего апдейта, активируем её с помощью галочки, если нужно, и нажимаем кнопку “Вставить”. Правда, нужно учесть, что функция новая и иногда могут быть сбои. По крайней мере, я уже заметил что данные выпадающих списков месяцев копировать не получается.

Если же нужная секция пункта не обладает кнопками Копировать/Вставить, то я пользуюсь старыми-добрыми скриншотами и вношу данные вручную. Причём, складывать эти скриншоты лучше куда-то в отдельную папку, потому что иногда может быть нужно что-то в них посмотреть (я так делаю уже года 3 и каждый год бывает нужно что-то быстро в них посмотреть).

Я не буду расписывать что означает каждый пункт в РП, это частично сделано в мануале по расширенному редактору (хоть он уже и устарел, но основная часть данных актуальна до сих пор), остановлюсь только на неочевидных и тех, которые нам нужно будет править. Ну и лишний раз скажу, что лучше пользоваться РП с английским интерфейсом - я вроде не новичок в РП, но русский перевод некоторых пунктов даже меня сбивает с толку, хотя я вроде знаю, что имеется ввиду.

Глобально основные записи (те строки, под "Список" в левом нижнем окне) в РП делятся на 7 видов:

  1. Страна - здесь хранятся глобальные настройки проведения соревнований в стране - иерархия лиг, мин/макс количество команд в лигах, наличие и тип чемпионатов дублеров/молодежи, начало/конец сезона, правила контрактов, лимиты в лигах, правила дисквалификаций и т.д.
  2. Турнир - здесь могут быть правила какого-либо дивизиона, кубка, суперкубка, чемпионата U-21, международного турнира (как клубов, так и сборных) и т.д. Типов турниров очень много, около 50-ти.
  3. Родительский турнир - здесь прописываются правила для турниров, у которых есть дочерние лиги. В нашей случае таким типом обладают Second League (Д3, в котором две группы) и Amateur League (Д4, в котором три группы).
  4. Несколько турниров - здесь можно присвоить одно правило сразу нескольким турнирам (например, если правила в группах полностью идентичны). По идее, обе наши группы в Д3 имеют одинаковые правила и могли бы иметь этот тип, но редактор при переводе правил из СП в РП решил иначе. Что ж, оставим как есть.
  5. Континент - здесь, вероятно, могут быть прописаны правила континентальных турниров. Я с ними не работал, поэтому никогда не пользовался этим пунктом.
  6. Сборные - аналогично, никогда не пользовался.
  7. Правила сетевого состязания - аналогично, никогда не пользовался.

Начнём с раздела Страна. Первый пункт в нём также называется Страна и содержит день обновления сезона, иерархию лиг, стандартное время начала матчей, данные и предсезонных тренировках, а также запрещённые для проведения матчей даты. Здесь мы скопируем только то, что касается предсезонных тренировок и товарищеских матчей.

Тут есть два момента, на которых я хотел бы задержаться. 

Первый момент - возможно, кто-то заметил, что в иерархии лиг Д1 идёт под записью 0, а Д2 - под записью 1. Это - важная особенность РП. Как и в языках программирования, в РП первый элемент массива/объекта  - это 0, а не 1. Поэтому, если нужно прописать призовые за занятое первое место, их нужно прописывать месту 0, а Д1 имеет индекс уровня лиги 0 (причём, это правило применимо только к РП. Если посмотреть в базе, то уровень соревнования Ukrainian Premier League будет равен 1). Тем, кто не сталкивался с программированием, нужно к этому привыкнуть и поначалу из-за этого могут быть ошибки. Но обратите внимание - это правило касается только массивов/объектов, а не вообще всех значений. Т.е. если в лиге 12 команд, не нужно в “максимальное количество команд” ставить 11 - конкретно это значение не является массивом.

Второй момент связан с проверкой правильности работы некоторых данных и с пониманием того, для вас было непонятно реализовано в дефолтных правилах. Сейчас мы добавляем даты предсезонных тренировок и можем сразу же проверить, что и как изменилось. С помощью “Проверки турниров” мы можем посмотреть различные события в каждой лиге - создание какой-либо стадии, дату проведения тура в целом или какого-то матча в частности и т.д. В пункте “Расписание” можно не только посмотреть все даты проведения туров и плей-офф, но и даты начала предсезонных тренировок и товарищеских матчей. Вы же не хотите, чтобы команды выходили из отпуска за пару дней до начала 1-го тура лиги? Создав новую “Проверку турниров” и добавив туда, например, Д1, увидим следующую картину (нас сейчас интересуют пункты Friendlies Start Day, Training Start Day и Friendlies End Day):

Спойлер

3-3.thumb.PNG.466990f4d7e55517c42874888dc75e6e.PNG

После внесения в апдейт изменений из пункта Страна дефолтных правил, получаем вот такое:

Спойлер

3-4.thumb.PNG.d55166bc04837b352ed4a0f657c21240.PNG

Это уже больше соответствует реальности. Поизменяв значение в пункте "Максимальное количество дней перед началом товарищеских матчей перед сезоном" можно добиться небольшого изменения дат начала/окончания товарищеских матчей.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Пункт “Требуемые команды”. Здесь указывается минимальное и максимальное количество команд для каждой лиги. Копировать данные из дефолтных правил нам не нужно, уберём только строки с неиграбельными дивизионами (все Ukrainian Reg Div) и кубком аматоров. Позже мы подправим строку с максимальным количеством команд в УПЛ, когда добавим расширение лиги до 16 команд.

Спойлер

4-1.thumb.PNG.e22499402146e9f86a1cb57364dbefc5.PNG

Пункт “Турниры”. Здесь можно настроить наличие определённых турниров в игре в зависимости от версии игры (FM/FMT/FMH), количества подгружённых играбельных дивизионов и существования каких-то особых турниров. Например, нет смысла создавать кубки областей (Д5), если сам уровень Д5 неиграбельный. Здесь мы не будем ничего менять, у нас нет каких-либо особых условий.

Спойлер

4-2.thumb.PNG.7df4c266c4395a896b579d1de517634d.PNG

Пункт “Правила для резервов” я пока пропущу, на молодёжных лигах мы потом остановимся отдельно.

Пункт “Правила матча”. В этом пункте есть подпункты с отдельными “Правилами”. Каждое правило хранит в себе информацию о регистрации и использовании игроков в турнире. Правило может работать в определённой лиге, на определённых уровнях лиг (высший - 0, см. подсказку редактора) и просто существовать, при этом используясь в разных турнирах и уровнях лиг - индекс правила всё равно присваивается каждому турниру отдельно, поэтому одно и то же правило может работать, например, для Д1, Д3 и какого-нибудь кубка. Отмечу, что индекс правилу присваивается автоматически, поэтому если удалить из списка какое-нибудь ненужное правило, то индекс всех правил, находившихся ниже, станет меньше на 1 и его придётся менять во всех турнирах, использующих находившиеся ниже правила.

При переводе правил в РП редактор автоматически создаёт правила для каждой лиги и в принципе нам не нужно полностью копировать их из дефолтных правил. Разве что, можно подсмотреть, какие еще пункты были там использованы. Посмотрев, добавляем в наши правила пункты “Право выбора состава - Молодёжь до 21” (аналог Списка Б) и “Флаг правил для выбора номеров для игроков - Разрешить любые номера игроков”. Также я убираю пункт “Максимальный размер состава - 99 человек” из “Правил выбора состава” (он всё равно прописан в “Периодах для регистрации состава” чуть выше, и его оттуда не убрать). Даты регистрации оставим соответствующими трансферным окнам. Также включим во все правила некоторые пункты, которые мы не смогли добавить в СП, но которые присутствуют в регламентах лиг Украины: “Игроки младше минимального возраста не могут участвовать во взрослых матчах” (этот возраст прописывается в другом месте, мы до него еще дойдём; по умолчанию игра прописывает его = 14 годам), “Игроки с молодёжными контрактами могут участвовать в матчах”; в “Параметрах регистрации” включим пункты “Убрать игроков, уходящих в аренду из заявки”, “Игроки на правах свободных агентов могут быть зарегистрированы в любое время” и “Игроки могут быть убраны из заявки для внесения новых игроков”.

Вообще, “Правила матча” имеют довольно много разных настроек. Например, разные лимиты можно применять к конкретным командам или к командам, вылетевшим из определённых лиг, или для команд, играющих в определённых лигах (для кубков), для разных сезонов и т.д. Рекомендую просмотреть все пункты в “Правилах матча”, чтобы иметь представление о том, что и как там можно прописать. Также рекомендую после изменения каждого “Правила матча” делать проверку лиги на предмет корректной работы правила, так гораздо проще выявить возможную ошибку. Кстати, если хотите проверить правила в лиге, где есть несколько групп, то нужно в “Проверку турниров” добавлять именно группу турнира, а не только родительский турнир

Ну и ненужные мне правила я пока не буду удалять, чтобы не смещался индекс - это можно сделать ближе к концу (а можно и вообще не делать, наличие неиспользуемых правил ни на что не влияет).

Спойлер

 

4-3.thumb.PNG.088cbbd99b9b81208d2ea8ce9ca1e544.PNG

4-4.thumb.PNG.8be2eff49a6c41427b28faafb65c1c75.PNG

4-5.thumb.PNG.deeaa1e4299f90977f4d87029cb3d231.PNG

4-6.thumb.PNG.2852f68ea421df409649acf274cb9aeb.PNG

4-7.thumb.PNG.0b92d6fb54162c68e311f97f9c78c529.PNG

4-8.thumb.PNG.b80792cae6bb5a5c7ee847c84663997e.PNG

4-9.thumb.PNG.40ce1b4b8fe218b8976bcd9dfdd43ac1.PNG

 

В “Проверке турниров” можем посмотреть, как на данный момент выглядят наши правила лиг.

Спойлер

 

4-10.thumb.PNG.ff77eb0ea78aa2c8d931bb128f170dc0.PNG

4-11.thumb.PNG.c8ff989eccf0c7e6bb92f01032b1e718.PNG

4-12.thumb.PNG.af55bd8c064ab73b5c5e6ba18b9338c5.PNG

4-13.thumb.PNG.26930eeaf45a39ce04de073feb640101.PNG

4-14.thumb.PNG.e37c9ffb8f9015adac5669301fac3766.PNG

 

Следующий пункт - “Дисциплинарные правила”. Тут прописываются дисквалификации за получение ЖК и КК. Работают по такому же принципу, как и правила матча - для каждого правила есть отдельная запись со своим индексом.

Глобально у нас три вида дисциплинарных правил (делим по дисквалификациям за количество ЖК):

  • Дисквалификация за 4-8-12-16-... ЖК (Д1-Д4, U21, U19).

  • Дисквалификация за 3-6-9-... ЖК (Кубок Аматоров).

  • Дисквалификация за 2-4-6-... ЖК (Кубок Украины).

Нюанс заключается в дисквалификациях за тяжёлые КК. Дисквалификации за тяжёлые ЖК в Д1, Кубке и Суперкубке общие (но можно играть в молодёжных чемпионатах), в Д2-Д4, U21 и U19 отдельные. Значит, придётся увеличить количество дисциплинарных правил на 1 - с дисквалификациями на все национальные соревнования и только на текущее соревнование. В апдейте с дефолтными правилами их аж 14, но из них только 3 не пустые (там, кстати, даже нашлось отдельное правило для U21/U19). Скопируем их себе и немного поправим, потому что в них есть неточности. Например, дисквалификация за 4-8-12 ЖК распространяется только на текущее соревнование (пункт “В отдельном соревновании”). Добавим правило для 3-6-9 ЖК и вот, что мы получим:

Спойлер

 

4-15.thumb.PNG.efad342d0c806e8412f0bc233468e416.PNG

4-16.thumb.PNG.0455697ad74106dc5a67fed157bd5034.PNG

4-17.thumb.PNG.0182024701a06593d90bd325a807b4ac.PNG

4-18.thumb.PNG.231a5abedffc43a2a29ac91b5c38c857.PNG

 

Стоит отметить, что в наших лигах пока применяется только дисциплинарное Правило 0, потому что СП не умеет создавать больше одного дисциплинарного правила, а это значит, что позже нам нужно будет прописать лигам правильные дисциплинарные правила.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

В 22.11.2019 в 23:13, Ohrim сказал:

Таким образом добавляем еще и "Ukrainian First League", "Ukrainian U21 Division 1" и "Ukrainian U19 Division 1" (кубки тоже можно добавить, но там зачастую правила не так нуждаются в проверке).

Я просто в "добавить условие" выбираю "страна", далее пишу страну (сокращаю :) вместо Кыргызстана пишу просто kgz) и там выходят все соревнования этой страны и отметив нужные нажимаю "ок", и все нужные мне соревнования быстренько добавляются! 

В 22.11.2019 в 23:13, Ohrim сказал:

Забегать по запросу вперёд по какому-либо вопросу не буду, иду по плану. Пишу то, что более-менее знаю. Если не знаю ответа на вопрос, то просто ничего не пишу (я не работал с еврокубками, международными турнирами клубов и сборных, поэтому знаний по ним у меня нет).

Там дремучий лес, Азию (редактировать ЛЧА, Кубок АФК или добавить туда Азиатский суперкубок с квалификацией из нее на КЧМ) сделать похожей на дефолт с небольшими изменениями практически нЕреальнО! :( угробил многие ночи на это бесполезное дело... 

Даже если сделать Азию то она становиться статичной тобишь как ты создал 2 места для участия в ЛЧА из страны она так и остается на всегда... хоть 10 сезонов выигрывай все что возможно, и в финалах (ну или в полуфинале поскольку в Азии клубные контненталки разделяются на западные и восточные зоны) команды из твоей страны все эти 10 лет :(.... Если подскажете человека с которым по этому поводу можно проконсультироваться буду очень благодарен :)!  Мануал подробный, если только человек в первый раз не заходит в редактор! 

Share this post


Link to post
Share on other sites

 

В пункте “Регулярные товарищеские матчи” прописываются, как ни удивительно, регулярные товарищеские матчи. Я этот пункт трогать не буду - на мой взгляд, он не особо важен, да и точной информации о таких матчах у меня нет.

Пункт “Изменение соглашения” отвечает, например, за вступление в ЕС, Брэксит и т.д. У нас ничего такого в апдейте нет, поэтому тоже пропускаем.

Пункт “Предсезонные периоды (старая система)” мы тоже не будем трогать - есть же новая система.

В пункте “Сезоны (новая система)” у нас уже есть данные, любезно переведённые редактором из СП. В дефолтных правилах там стоят разные данные для Д1 и Д2-..., но я так делать сейчас не буду, потому что даты начала/окончания лиг в Д1-Д3 не сильно отличаются, а календарь я всё же предпочитаю более-менее синхронизировать, потому что так выплывает меньше ошибок. Правда, календарь Д4, наверное, придётся подвинуть по сравнению с реальностью, потому что там плей-офф довольно поздно заканчивается и из-за этого сезон может вовремя не закончиться. Но с этим мы еще поработаем, когда доберёмся до Д4.

Вообще, я стараюсь выносить в какое-то отдельное место реальные даты проведения туров в разных лигах и кубках, причём сразу заполняю данные по двум сезонам - сезону, который начинается в чётные годы, и сезону, который начинается в нечётные. Я не сразу пришёл к такому подходу и кому-то он может не подойти из-за своей тщательности, но я со временем убедился в его эффективности при выставлении точных дат проведения туров. Мой вариант обычно выглядит примерно так:

Спойлер

5-1.thumb.PNG.34a3ba70eba5fba4eaa0347d850498f2.PNG

 

А пока для начала мы подвинем дату окончания товарищеских матчей ближе к началу чемпионатов, увеличив дату начала матчей сезона в пункте “Сезоны (новая система)” и “максимальное количество дней перед началом товарищеских матчей перед сезоном” в пункте “Страна”. 

В годы проведения финальной части ЧМ или ЧЕ УЕФА рекомендует пораньше заканчивать национальные чемпионаты. В Украине в таком случае обычно смещали чемпионат на неделю раньше, но в этом году почему-то решили не только закончить на неделю раньше, но и начать на неделю позже. Ну, будем считать, что так и надо. РП дают нам возможность не только прописать даты начала/окончания сезона в конкретные годы, но прописать, с какой периодичностью они будут использоваться. Для тех дат, что у нас уже прописаны в “Сезонах” мы можем добавить в пункт “Год” год начала действия этих дат (2019 для сезона 2019/20) и указать в пункте “Интервал” интервал, через который будет происходит использование этих дат. Поставив в “Интервал” значение 2, мы укажем игре, что указанный диапазон дат нужно использовать каждый второй год, начиная с 2019-го (т.е. в сезонах 2019/20, 2021/22, 2023/25 и т.д.). Этот принцип, кстати, действует не только для дат сезона, но и для целых турниров, только прописывается это всё в настройках конкретного турнира.

Для чётных сезонов мы с помощью кнопки “Дублировать” продублируем нашу строку с диапазоном дат, изменим даты начала и окончания сезона, а также изменим год начала действия правила на 2020. Т.о. мы создали расписание действия наших правил: в сезоне 2019/20 будет действовать правило 1, в сезоне 2020/21 - правило 2, в сезоне 2021/22 - опять правило 1 и т.д.

Вот такой предварительный вариант этого пункта получился у меня:

Спойлер

5-2.thumb.PNG.63590fe775c6d85ec653bc86e9c69bdd.PNG

Совершенно закономерно может возникнуть вопрос - почему стоит 2000 и 2001 годы? По какой-то причине в РП базовым годом сезона является 2000, а если сезон проводится по системе (осень-весна), то заканчивается он в 2001 году. Наверное, это можно поменять, ведь в пункте “Страна” есть поле “Базовый год”, но я этого никогда не делал, потому что редактор при переводе правил из СП в РП сам везде проставляет 2000 и 2001 годы и проще привыкнуть использовать в РП эти годы, чем каждый раз их менять.

За что отвечает следующий пункт - “Перерывы в середине сезона” - думаю, понятно из названия. Принцип заполнения здесь почти такой же, как и в “Сезонах”, но добавляется еще одно свойство - “Тип перерыва в середине сезона”. В нём имеется два варианта - “Период перерыва в середине сезона” и “Большой период товарищеских игр в середине сезона”, но можно и ничего не выставлять (как и сделано в дефолтных правилах Украины, откуда мы себе в апдейт скопируем данные). Пытаясь понять, что какой из вариантов означает, я просмотрел правила разных стран и, увы, не увидел какой-либо особой закономерности. Во многих странах ни один из двух вариантов не выбран, в некоторых стоит “Период перерыва в середине сезона”, а вот “Большой период товарищеских игр в середине сезона” я пока не встречал (но я не все страны просматривал, только штук 20). Интересный вариант сделан в Польше - там выбран “Период перерыва” и выставлены “Дни подготовки в середине сезона”. Мы попробуем поступить также, а уже в самой игре проверим, проводятся ли товарищеские матчи в этот период.

Глядя на свои записи с календарями турниров, я заметил, что в каждой лиге зимние перерывы разные, так и пропишем. Смещение по сезонам я делать не буду, просто возьму для перерывов самые поздние даты начала и самые ранние даты окончания, дав еще пару дней запаса для возможных переносов матчей. Если заняться перфекционизмом, то можно проанализировать даты выхода клубов разных лиг из отпуска, но глобально реализма апдейту это особо не добавит, поэтому примем по умолчанию, что клубы выходят из отпуска 15-го января (это примерно соответствует реальности в большинстве случаев). В итоге получилось как-то так:

Спойлер

5-3.thumb.PNG.ffb7374a2b9a183079b6f6cfcb7a75f4.PNG

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Пункт “Окна для тренировочных сборов” нам не нужен, я пока вообще не встречал стран, где бы он был активен.

Пункт “Дата начала” позволяет при начале новой игры выбрать для старта не только начало сезона, но и, например, дату первой игры команды в каком-либо турнире. Эти данные я скопирую из дефолтных правил, пока не вижу смысла что-то менять.

Спойлер

6-1.thumb.PNG.9288715b849a75bc0caca0d3265f4b44.PNG

 

Пункт “Время встреч” я не использовал, потому что их можно настроить и в отдельных турнирах (при переводе правил из СП в РП редактор так и делает).

Пункт “Служба в армии” для нашего апдейта также неактуален. Если мне не изменяет память, это один из новых пунктов, появившихся в редакторе ФМ20.

А вот пункт “Трансферы” для нас очень интересен, потому что здесь прописываются довольно важные вещи. Начнём по порядку.

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

Еще один нюанс - если хотите, чтобы не было смещения дат трансферного окна каждый год, выбирайте “-” возле даты вместо дня недели

Спойлер

6-2.thumb.PNG.9a10330b90e8ca337348d3b087e5e085.PNG

 

Раздел “Правила трансферов”. Здесь довольно много настроек - минимальный/максимальный возраст заключения молодёжных контрактов, настройки перевода игроков в дубли, особенности ограничения использования арендованных игроков, правила ограничения з/п и т.д. Расписывать каждую настройку я не буду - большинство настроек достаточно понятно называются или имеют вменяемую всплывающую подсказку. Отмечу, что полностью скопировать данные из дефолтных правил у нас не получится, т.к. в нашем апдейте они уже правильнее прописаны после перевода из СП в РП. Но часть настроек мы, пожалуй, возьмём себе. Из тех, что нас интересуют, это “Плата за подписание легионера” (правда, там неправильная стоимость стоит. Ну и в Украине это плата за первую регистрацию легионера в стране, а в игре, вероятно, эта сумма будет сниматься даже при подписании легионера из украинского клуба), “Правила для вторых клубов” и “Дата проверки возраста”. На скриншотах ниже видно, что в итоге я прописал в пункте “Правила трансферов”

Спойлер

 

6-3.thumb.PNG.46a60b17d618a4d63016f8779ac3bb0c.PNG

6-4.thumb.PNG.65a640fb76017613e7968f74cb564263.PNG

 

 

В разделе “Правила аренды” можно прописывать ограничения на количество арендованных игроков, сроки аренды и т.д. Я скопирую этот пункт из дефолтных правил - в нём прописаны только возможные сроки окончания аренды.

Спойлер

6-5.thumb.PNG.bb143f842c12c77f878b54075bdf3579.PNG

 

Разделы “Правила получения разрешения на работу” и “Драфт” нам сейчас не пригодятся, потому что в Украине они не используются.

А вот раздел “Контрактные правила” мы заполним, хоть он и пуст в дефолтных правилах. В этом разделе можно установить правила для длительности контрактов (как минимальной, так и максимальной), недельной з/п по молодёжному контракту и т.д. Мы пропишем ограничение на длительность контрактов для игроков до 16 и до 19 лет, но сделать полностью так, как в жизни у нас, увы, не получится. Согласно регламенту, это ограничение действует только на игроков с неполным контрактом, но в редакторе так опции нет, поэтому попробуем прописать ограничение на всех игроков.

Спойлер

6-6.thumb.PNG.1da55f6b1cddbb49142db6ee6056eec7.PNG

 

На этом мы закрыли пункт “Трансферы”, да и раздел “Страна” в целом, потому что в пункте “Вспомогательные правила” для конкретного апдейта нет ничего нужного. Но на досуге можете посмотреть, что там есть - может кому-то что-то пригодится (для своих апдейтов я этим пунктом пока ни разу не пользовался). На очереди у нас работа над первым из турниров (и самым сложным) - УПЛ.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

В разделе турнира есть довольно много пунктов и подпунктов, я не буду рассматривать их все, потому что многие я ни разу не использовал и в апдейте Украины они не понадобятся.

Пункт “Общие”. Здесь указывается тип турнира (как я уже писал, там больше 50-ти вариантов); уровень лиги; год начала/окончания действия; особые условия, при которых будет срабатывать это правило турнира (например, если количество команд в лиге от 12 до 16); месяцы старта/окончания турнира; индексы правила состава и дисциплинарного правила и т.д. Я не буду полностью копировать данные из дефолтных правил, возьму только недостающую информацию (действие правила, если количество вышедших в еврокубки команд от 4 до 6 и пару правил ТВ-дат).

Спойлер

7-1.thumb.PNG.7ab480180b90eea9f80c0cd692227183.PNG

Пункт “Стадии”. Здесь прописывается основная часть правил турнира. Каждая стадия - это один подпункт с отдельным индексом (по стандарту первый - 0, но можно прописывать и свой порядок), стадии могут взаимодействовать между собой. В нашем случае УПЛ имеет 5 стадий:

0. Стадия лиги, которая после окончания делится на две группы. Именно по итогам этой стадии определяется чемпион, вылетевшая команда и участник плей-офф.

1. Стадия группы 1, которая активизируется после окончания стадии 0. Эта стадия является скрытой, первый тур в ней имеет номер 22 (т.е. фактически 23, т.к. первый - 0, не забываем), а все результаты из этой стадии заносятся в стадию 0 (т.о. мы в игре не увидим эту стадию отдельно). 

2. Стадия группы 2, в которой все основные настройки идентичны стадии 1.

3. Стадия плей-офф за вылет из УПЛ с участием команды Д2.

4. Стадия плей-офф за выход в еврокубки.

В нашем апдейте пока нет 4-й стадии, т.к. редактор в СП не может создать плей-офф за выход в еврокубки, и нам нужно скопировать эту стадию из дефолтных правил, когда мы обработаем 4 предыдущих.

Подпункт “Общие” пункта “Стадии”. Здесь прописывается индекс стадии, её идентификатор (можно обращаться к стадии не только по индексу, но и по идентификатору), тип, название (например, групповой этап, плей-офф за повышение и т.д., выбираем из имеющихся в базе названий), количество команд, сортировка команд и разные настройки вроде сброса ЖК при старте этой стадии. Очень многие пункты я не использовал, поэтому расписать их не смогу. У нас ничего такого особенного прописано не будет, данные полностью совпали с дефолтными правилами.

Спойлер

7-2.thumb.PNG.f42d7a09405915b5cbc602f2332cb9aa.PNG

Подпункт “Требования” для этой стадии нам не нужен, мы его будем использовать в других. С помощью этого пункта можно проконтролировать, чтобы стадия не началась раньше, чем нужно (т.е. не раньше окончания какой-то стадии этого или какого-нибудь другого турнира).

Подпункт “Реальные команды” мы использовать не будем - я вообще пока не встречал его использования. Но из его описания в редакторе его назначение вполне понятно - “Используется, чтобы начать турнир на данном этапе с участием команд из этого списка”.

Подпункт “Другие турниры для добавления стадии” сейчас нам не нужен - он используется, например, для стадий плей-офф, т.к. в них квалифицируются команды из разных турниров.

Подпункт “Список команд” я тоже не использую.

Подпункт “Команды” определяет, какими командами будет наполнена стадия. Для лиги вариант самый простой - в базе к ней уже привязаны команды и мы просто берём все команды лиги. Для кубков, например, нужно прописывать, сколько команд из какой лиги и с каким посевом ты берёшь (до этого мы тоже со временем доберёмся). Ну а пока редактор всё прописал за нас, ничего менять не придётся.

Спойлер

7-3.thumb.PNG.987d33a41dde38a33f3aa1c3b99c4cd8.PNG

 

Подпункт “Настройки лиги” содержит основные настройки стадии - количество кругов (если это лига), правила сортировки команд с одинаковыми очками, очки за победу/ничью/поражение, правила повышения/понижения/выхода в плей-офф и многое другое. Полностью заменять в нашем апдейте этот пункт дефолтными правилами мы не будем, возьмём только некоторые данные: приоритет последних туров, дополнительные матчи лиги (тут указываются настройки последующих матчей второго этапа, а редактор немного криво переводит их из СП в РП, хоть они и нормально работают), правила квалификации (как квалификацию во второй этап - хотя всё должно работать и без правила в этом разделе - так и квалификацию в плей-офф за выход в еврокубки) и “золотой матч” при равенстве очков у первого и второго места. 

Также я подправлю порядок встреч (в Украине он прямой - в первом туре второго круга встречаются те же команды, что и в первом туре первого круга. Бывает еще обратный, случайный, небольшой разброс, парный и т.д.); количество последних туров, матчи в которых играются одновременно, и правила “золотого матча” (забыли прописать доп. время в случае ничьей и правило замен).

Ну и я помню, что для плей-офф за выход в еврокубки в дефолтных правилах брались не совсем правильные команды. Этот момент мы исправим, когда в нашем апдейте уже будет нормально работать этот плей-офф.

Спойлер

 

7-4.thumb.PNG.a371992788e0c3996770c47c46e09a36.PNG

7-5.thumb.PNG.904753a9e6c499183ed1f95937823b3b.PNG

7-6.thumb.PNG.15d3bf99204626a2ce189c280fde678a.PNG

7-7.thumb.PNG.1e44b32faa35738801bd9fa713fecccc.PNG

 

Подпункт “Расписание лиги” мы пока пропустим, потому что его нужно править совместно с пунктом “Правила и время проведения матчей”, до которого еще нужно добраться.

Подпункты “Информация об уровне рейтинга” и “Уровни рейтинга” я пропущу, потому что пока не особо представляю, как их использовать. В этих подпунктах по идее устанавливаются ожидания руководства в зависимости от рейтинга команды и прописываются значения этого рейтинга в зависимости от занятого места.

На этом мы пока закончили работу со стадией 0. Следующие две стадии будут немного попроще.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Стадии 1 и 2 в редакторе отличаются друг от друга только названием и принципом, по которому в стадию отбираются команды. В стадию 1 мы берём команды с 0 по 5 включительно, в стадию 2 - с 6 по 11.

Данные нашего апдейта по этим стадиям практически не отличаются от дефолтных правил, мы только добавим названия стадий подпункт “Общее” и добавим в подпункт “Настройки лиги” правильный “Порядок встреч” и запрет на определение мест команд по итогам этих стадий (данные из этих стадий записываются в стадию 0, по итогам которой команды и будут получать финальные места в турнире).

Кроме того, в этих стадиях мы впервые используем подпункт “Требования”, в котором редактор сам прописал нам, что стадия 1 и стадия 2 должны начинаться только после окончания стадии 0.

Ну и подпункт “Расписание лиги” мы тоже пока пропустим, как и для стадии 0.

Спойлер

 

8-1.thumb.PNG.d65e426d613af225f50736dec4e8dbb1.PNG

8-2.thumb.PNG.c5c6fb41838b0520489d30298f80e6d1.PNG

8-3.thumb.PNG.9be79a5c2127224f6151ad725f33a9f9.PNG

8-4.thumb.PNG.bb707f96072d92b0b5b766b22ae376b0.PNG

8-5.thumb.PNG.712fe020f84fe4c8e56c3169573a7a41.PNG

8-6.thumb.PNG.040513fca6d61b1d9a42cf8235385e48.PNG

8-7.thumb.PNG.ae7a13c7a82f0e1d6e5f2988a1ad1cc2.PNG

8-8.thumb.PNG.2a0aca89f4a249b9acff9a85e6a8f821.PNG

 

Переходим к стадии 3 - плей-офф за вылет между командой Д1 и командой Д2.

В подпункте “Общие” мы видим, что эта стадия кубковая и здесь же нам нужно добавить небольшой нюанс регламента - обнуление дисквалификаций за перебор ЖК. Остальные данные совпадают с дефолтными правилами.

Спойлер

8-9.thumb.PNG.e1abbf8df2170ebfd24b1e6e62f3a6fd.PNG

“Требования” к началу стадии немного изменились. Т.к. в стадии участвуют команды из двух лиг, то нам нужно, чтобы к началу этой стадии завершились сразу две стадии, одна из которых находится в другом турнире (поэтому мы для этой стадии отдельно указываем турнир. Могли бы явно прописать и для Д1, но по умолчанию редактор всё равно берёт стадию из текущего турнира, поэтому этого можно не делать). Здесь можем для перестраховки добавить условие, что должна закончиться не только стадия 0, но и стадия 2 (откуда берётся команда для плей-офф), как это сделано в дефолтных правилах. На скриншоте я специально показал два способа указания стадии - по номеру и по идентификатору.

Спойлер

8-10.thumb.PNG.a2c02c7a561b31e9f4976e8723c87d63.PNG

А теперь мы впервые будем использовать подпункт “Другие турниры для добавления стадии”, т.к., опять же, в этой стадии участвуют команды из двух турниров. Здесь ничего менять не будем.

Спойлер

8-11.thumb.PNG.d92459fe946d67bcd3f97806125a9401.PNG

Подпункт “Команды”. Т.к. я делаю чуть упрощённый плей-офф “1х1”, то и условия, по которым мы берём команды, несложные и редактор сделал их за нас. Если интересно, как сделан плей-офф “2х2”, в котором 10-е место Д1 играет строго с 3-м местом Д2, а 11-е место Д1 - со 2-м местом Д2, то можете посмотреть в дефолтных правилах. Там ничего сверхординарного, но для опыта может быть полезно. Плей-офф “2х2” у нас будет между Д2 и Д3, но без жесткой привязки команд.

На втором скриншоте отдельно отмечу третью запись списка, в которой мы указываем игре, по какому принципу брать команду в плей-офф, если Д2 неиграбельна.

Спойлер

 

8-12.thumb.PNG.d5a1b55084d63e98201b691b2a9d49c4.PNG

8-13.thumb.PNG.438ce65db200167718564be05d59f93e.PNG

 

В подпункте “Значения по умолчанию для раунда” прописываются правила, значения которых не будут меняться в течение кубкового турнира, для того, чтобы их потом не прописывать в каждом раунде отдельно. Здесь редактор снова прописал всё за нас, ничего менять не будем.

Спойлер

8-14.thumb.PNG.12e29905637def6245f5553d53ad27e8.PNG

Подпункты “Настройка раунда” и “Группировка команд из предыдущей стадии” нам не нужны, я только один раз использовал “Группировку”, когда делал плей-офф с зафиксированной жеребьёвкой после групповой стадии (по типу ЧМ/ЧЕ).

Подпункт “Раунды” содержит в себе все кубковые стадии, один раунд - одна запись.

Каждая запись (в нашем случае только одна) делится на несколько пунктов, но сейчас мы используем только один. 

Пункт “Общие” содержит в себе основные настройки раунда - название раунда; количество принимающих в нём команд; количество команд, которые добавляются в этот раунд (фактически вступают в кубок с этого раунда); количество встреч/переигровок; правила стадионов/жеребьёвок/призовых и т.д. В дефолтных правилах прописано более-менее то же самое, что и у нас, только мы еще по их примеру явно укажем, что матчи этого раунда не являются квалификационными (не знаю, как это скажется на игре, но ведь СИшники плохого не посоветуют, правда?).

Спойлер

8-15.thumb.PNG.d2c17a162abafd61b3252f6adc93b3e6.PNG

Пунктом “Даты” мы займёмся позже, а остальные пункты раунда я пропущу, потому что там прописываются какие-то совсем уж хитрые кубковые правила, с которыми я пока к счастью не сталкивался. Наверное, если прошерстить дефолтные правила разных стран или апдейты, то можно найти, где и как они используются, но я такой целью не задавался.

На этом подпункт “Раунды” закончился и мы переходим к подпункту “Меню особых условий”. Это важный пункт для плей-офф, ведь именно здесь прописывается, что происходит с каждой командой после победы или поражения в каждом конкретном раунде (вылет, повышение, чемпионство, квалификация в еврокубки или какой-нибудь другой турнир, занятие определённого итогового места, ничего и т.д.). Редактор за нас уже всё прописал, я могу только немного объяснить его записи. 

Для каждой из команд, участвующих в плей-офф, есть два исхода событий - победа или поражение. В зависимости от того, где до этого играла команда, это ведёт к разным последствиям:

  • Команда из Д1 -> победа -> остаётся в Д1 (ничего не происходит).
  • Команда из Д1 -> поражение -> вылетает в Д2.
  • Команда из Д2 -> победа -> повышается в Д1.
  • Команда из Д2 -> поражение -> остаётся в Д2 (ничего не происходит).

Вот это всё умница-редактор за нас уже и прописал.

Спойлер

 

8-16.thumb.PNG.7aee06b10de47d20478e878316fa2858.PNG

8-17.thumb.PNG.a5c48f740a0776daac78b877e871b201.PNG

 

В следующем посте будем добавлять плей-офф за еврокубки и, возможно, коснёмся еще нескольких пунктов турнира.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Теперь нам нужно создать еще одну стадию (плей-офф за выход в еврокубки с индексом 4) и скопировать в неё все данные из дефолтных правил.

Создаётся новая стадия просто - нажимаем на пункт “Стадии” и в правом окне нажимаем “Добавить”. К сожалению, одним махом скопировать все данные из дефолтных правил не получится, придётся копировать-вставлять каждый пункт отдельно. Правки в стадию будем вносить уже в нашем апдейте.

Увы, по ходу проверки работы плей-офф в дефолтных правилах я обнаружил ошибку, из-за которой он работал неправильно. Сходу я не нашёл, как её исправить, поэтому решил посмотреть, как делали такой плей-офф в других лигах. Бывает полезно в общих чертах представлять, в каких играбельных странах в ФМе какие правила, чтобы в случае чего быстро подсмотреть. Я нашёл такой же плей-офф в Нидерландах и внес все данные по нему в свой апдейт с небольшими правками.

Спойлер

 

9-0.thumb.PNG.a347e1d14ef2fc90a56084e59d925b0d.PNG

9-01.thumb.PNG.54486de8c458c8c41292ef465e8bf59c.PNG

9-1.thumb.PNG.71d178dbff90263a06baafb4e0e39135.PNG

9-2.thumb.PNG.dbd4559f6bc25726ba072b14b41eb3ea.PNG

9-3.thumb.PNG.06a4eb30902a6a55e6bec13893ef742c.PNG

9-4.thumb.PNG.244a6d720062c51cb10620e85f4cb018.PNG

9-5.thumb.PNG.716bd420116dba5b95821380196ebdfe.PNG

9-6.thumb.PNG.febb59cb1104b4fe4b8aaa1b6d4dd646.PNG

9-7.thumb.PNG.4db9f9906a890e72d0ea9be2174597f6.PNG

9-8.thumb.PNG.74caeaa27e554041144931e7c5384ce7.PNG

9-9.thumb.PNG.732df35e8c867033ea5dddd0159ae5f6.PNG

9-10.thumb.PNG.79a767b7079f9088c60d0e7f6b3c2654.PNG

9-11.thumb.PNG.193da20c442a14f3e51635e44f132a24.PNG

 

Как видно, мне пришлось залезть в два пункта, которые мы еще не рассматривали - “Правила для других стадий” и “Вспомогательные правила”. Я это делал впервые, поэтому не особо много смогу про них рассказать. 

В “Правила для других стадий” -> “Правила континентального кубка” мы указываем, в каком порядке и откуда берутся команды для распределения в континентальных соревнованиях. Там же мы указываем номер стадии, которая является плей-офф за выход в еврокубки, т.к. только одно название стадии “European Places Playoff” не будет выводить команду в еврокубки. Кстати, именно в этом месте в дефолтных правилах и была ошибка, из-за которой плей-офф работал неправильно.

В “Вспомогательные правила” -> “Команды в плей-офф чемпионата Европы” мы просто указываем, какие места должны браться в плей-офф при изменении количества команд, выходящих в еврокубки из-за изменения коэффициента УЕФА. Больше команд - для плей-офф берутся места ниже.

Теперь мы может протестировать работу плей-офф через “Проверку турниров”, но в этот раз я покажу, как можно сделать эту проверку более настраиваемой. Особенность нашей проверки будет заключаться в том, что нам нужно симулировать ситуацию, при которой Кубок выигрывает команда, занявшая место, позволяющее играть в плей-офф за выход в ЕК. Победа в Кубке имеет бОльший приоритет, поэтому теоретически эта команда не должна играть в плей-офф, т.к. она уже вышла в еврокубки. Вместо этого в плей-офф должна попасть команда, занявшая первое место вне его. Звучит сложно, но на самом деле реализуется такой тест довольно просто. Если выбрать “Проверку Турниров”, то в левом нижнем окне можно увидеть небольшое меню. По умолчанию мы находимся на строке “Настройки”. Нужно перейти на строку “Принудительные результаты команд” и в правом окне мы увидим простой интерфейс моделирования разных ситуаций.

Есть только три столбца - Команда, Турнир и Результат. В столбце Команда указывается команда, над которой будем проводить манипуляции. Во столбце Турнир - турнир (естественно, команда должна в нём участвовать). В столбце Результат указывается один из трёх возможных вариантов симуляции результатов - В, Н и П. Соответственно, В - это команда выиграет все матчи в этом турнире, Н - сыграет все матчи вничью и П - проиграет все матчи. Важной особенностью является приоритетность строк - чем выше строка, тем больший приоритет она имеет. Например, у нас есть две строки:

  • в первой команда “А” играет в турнире “Д1” с результатом “В”.

  • во второй команда “Б” также играет в турнире “Д1” с результатом “В”.

В таком случае редактор, вероятно, будет обрабатывать строки по очереди - сначала все соперники команды “А” по турниру “Д1” получат поражения (в т.ч. и команда “Б”), а потом поражения получат все соперники команды “Б” (но не “А”). Таким образом можно формировать хоть полное распределение мест в лиге, определять финалистов кубка и т.д. Кстати, на плей-офф турнира эти результаты распространяются автоматически.

Для проверки работы нашего плей-офф я прописал одной из команд победу в Кубке, а также прописал формирование верхней части турнирной таблицы набором строк.

Спойлер

9-12.thumb.PNG.31b39d2de8aaab10ad72ddcece725865.PNG

 

Я просимулировал турниры до октября 2020-го года (чтобы точно сформировался календарь на группы еврокубков). Как видно, в Д1 команды вверху таблицы расположились именно в том порядке, как я указал.

Спойлер

9-13.thumb.PNG.72398dd3ccabf55362619921ae36725f.PNG

 

Т.к. одна из команд у нас уже попала в ЛЕ через кубок, то после смещения в плей-офф должны сыграть команды, занявшие 4-7 места (помним, что кубок имеет бОльший приоритет). Но кубок выиграла команда, которая заняла 6-е место и она теперь не должна играть в плей-офф. Вместо неё в плей-офф должна попасть команда, занявшая 8-е место. Проверив команды в плей-офф, видим, что туда попали те команды, которые и должны были - вместо Karpaty Lviv, выигравших Кубок, в плей-офф участвовал FM Mariupol, занявший 8-е место.

Спойлер

9-14.thumb.PNG.dccd7159ca00268b73ffeb523dd6dfab.PNG

 

Теперь проверим, попал ли в ЛЕ победитель плей-офф. Для этого прямо в окне “Команды” дважды кликнем на PFC Olexandriya, затем перейдём на “Test” -> “Встречи” -> PFC Olexandriya -> 2020. В правом окне увидим, что клуб-победитель плей-офф в следующем сезоне действительно играл в ЛЕ, что означает - наш плей-офф работает правильно.

Спойлер

9-15.thumb.PNG.6505d874f1d90f3085db9769b953dc8b.PNG

 

Основу Д1 мы, в принципе, сделали - пришла пора сделать проверку правил для него. "Правила" -> "Проверка правил" -> Ukrainian Premier League, немного ожидания и у меня проверка прошла успешно - по крайней мере, наш Д1 не содержит каких-то критичных багов, что уже неплохо.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Сегодняшний пост будет весьма объемным и с кучей скриншотов - по-другому у меня не получилось.

Если кто-то обратил внимание, в пунктах “Даты” подпункта “Раунды” в плей-офф у нас есть ошибка - наш апдейт не находит записи “Playoff 0” и “Playoff 2”. Не находит он их потому, что мы еще не работали над календарём, а это тоже довольно важная часть апдейта.

Для начала посмотрим, что у нас есть в пункте “Правила и время проведения матча”. Я буду рассматривать подпункты, которые касаются нашего апдейта.

Пункт “Общие” содержит ряд разнообразных настроек, в основном не особо важных. Нас здесь интересуют “Индекс стадии последнего дня сезона” (какой стадией заканчивается турнир), “Проверить даты на наличие встреч” (минимальное количество дней между матчами) и “Матчи должны проводиться в дни игр сборных” (тут по названию понятна суть). Некоторые данные я скопировал из дефолтных правил, а часть добавил сам.

Спойлер

10-1.thumb.PNG.643d66b1702e3826c40b3aa2db5f8a6b.PNG

 

Отдельно отмечу подпункт “Встречи лиги”, хоть мы его и не будем использовать. Здесь может храниться календарь игр на разные годы, в т.ч. и результаты уже сыгранных матчей (для вариантов стартовать в январе в чемпионатах, играющих по системе “осень-весна”). Но интерфейс в РП не очень удобный и я бы рекомендовал реализовывать это в СП, который поддерживает функцию импорта из текстового файла.

Подпункт “Даты встреч” позволяет нам свести в одно место все даты, необходимые для турнира и потом использовать их в других пунктах этого турнира. Удобство заключается в том, что если нужно изменить какую-то дату, то её можно изменить в одном месте, не выискивая в каждом пункте. Даты можно называть с помощью номера, идентификатора, названия стадии, а еще можно всё это попарно совмещать. Например, для даты тура мы можем использовать номер, а для даты первого матча плей-офф можно использовать как “Playoff + First”, так и “Playoff + 0” или “Playoff + Semi-Final”.

Начальные данные для этого пункта я скопировал из дефолтных правил. Как видим, там и обнаружились недостающие “Playoff 0” и “Playoff 2”, которые теперь определились.

Спойлер

 

10-2.thumb.PNG.b7f468d8b79ae23bd9e15ea7de52c349.PNG

10-3.thumb.PNG.db04d9d9168add3555a62e1c953d7cf7.PNG

 

Кроме дат плей-офф мы видим уже прописанные даты первого тура (“0” со стартом 28 июля 2000), дату окончания турнира (“leag end”, 2 июня 2001), дату начала зимнего перерыва (“wint star”, 18 декабря 2000) и дату окончания зимнего перерыва (“wint end”, 3 марта 2001). 

“wint star” и “wint end” в дефолтных правилах используются для смещения зимнего перерыва во время ЧМ-2022. Кроме того, эти даты привязаны к “Перерывам в середине сезона”.

Спойлер

10-4.thumb.PNG.85af5d46093764cc0c57cb015476e47b.PNG

 

Смещение зимнего перерыва выставляется во “Вспомогательные правила” -> “Перемещает даты рядом с финальной частью турнира”, хотя это можно делать и через “Даты встреч” (как раньше и было). Как видно из скрина ниже, это правило перезаписывает даты для “wint star” и “wint end”, если ЧМ проводится зимой. Также перезаписывалась дата первого тура, но я убрал эту запись, потому что чуть позже я сделаю это через “Даты встреч”.

Спойлер

10-5.thumb.PNG.a63c30e1ae2bb928fdbb947eb1193ce1.PNG

Обычно я стараюсь прописывать в подпункте “Даты встреч” даты проведения всех матчей турнира, как туров, так и плей-офф, а потом использую их в турнире. Это выглядит не особо увлекательным процессом и занимает немало времени, но со временем я пришёл именно к такому решению, потому что это позволяет свести к минимуму несанкционированные смещения туров лиги, накладки матчей и т.д. Но можно добиться более-менее приемлемого результата и без строгого прописывания всех дат туров. Это уже каждый решает для себя сам.

В “Датах встреч”, как и для “Сезоны (новая система)”, можно прописывать год начала действия записи и промежуток лет, через которые эта запись снова будет действовать. Т.о. мы можем полностью прописать даты проведения туров как в чётные годы, так и в нечётные. Это стоит делать, чтобы поздние туры турнира не накладывались на подготовку к ЧМ или ЧЕ. Так что, я использую свои записи с датами проведения матчей и сделаю список туров для чётных и нечётных лет.

Спойлер

 

10-6.thumb.PNG.b657a1303ad2cc637193434ad594f765.PNG

10-7.thumb.PNG.94d9acfbf4a211e833cf54ea7b292fa5.PNG

10-8.thumb.PNG.84ba05caca521f72a2a746616158682f.PNG

10-9.thumb.PNG.20939c4509717a554c6617bd3f6f79b3.PNG

 

Но недостаточно просто создать записи в “Датах встреч”, у нас большая их часть пока ни к чему не привязана. Вот теперь мы добрались до подпункта “Расписание лиги”. Каждая стадия имеет своё расписание. В каждой стадии может быть разное количество записей, но нам вполне достаточно одной.

В пункте “Общие” мы указываем даты действия этого расписания. Можно как жёстко прописать число (как это сделал сам редактор при переводе правил из СП в РП), так и использовать запись из “Дат встреч”. Чтобы сменить способ обозначения даты, нам нужно снять галочки с “Дата начала” и “Дата завершения” и поставить их на “Дата начала (из списка встреч)” и “Дата окончания (из списка встреч)”. Потом в “Дата начала (из списка встреч)” выберем из выпадающего списка запись с индексом 0 (помним, про то, что первый элемент в списке имеет индекс 0), а в “Дата окончания (из списка встреч)” - с индексом 21 (в первом этапе у нас 22 тура).

Спойлер

10-10.thumb.PNG.dfd5e026042a8d5f9e5d6a83fd39b3d6.PNG

Пункт “Игровые дни” содержит базовые дни и базовое время проведения матчей. По большей части этот пункт используется, когда календарь не прописывается жестко в “Датах встреч”, а генерируется самой игрой. У нас здесь стоит запись, перешедшая из СП, можем пока её оставить, добавив ещё среду.

Спойлер

10-10.thumb.PNG.dfd5e026042a8d5f9e5d6a83fd39b3d6.PNG

Пункт “Даты”. А вот теперь мы добрались до места, где сможем привязать наши записи из “Даты встреч” к турам турнира. Ставим галочку на “Вкл”, добавляем запись и в столбце “Дата встречи” выбираем из выпадающего списка все наши 22 тура по очереди, от 0 до 21 включительно. И да, редактор начинает тормозить при добавлении некоторого количества записей.

Спойлер

 

10-12.thumb.PNG.4ba2f2e5e00192f4975ed683114656d2.PNG

10-13.thumb.PNG.0ce21cee6c6adf52a18d2be8c84584b4.PNG

 

В пункте “Перерывы” мы можем отдельно прописать перерывы в расписании стадии турнира. Не будем ничего выдумывать и просто используем уже имеющиеся “wint star” и “wint end”.

Спойлер

10-14.thumb.PNG.27dac750a97808c18987294d9cbb47e5.PNG

 

В пункте “Даты смещения” можно указать смещение матчей относительно базового дня. У нас базовым днём в основном является суббота, и мы могли бы указать, что один матч смещается на пятницу (т.е. на один день назад, поэтому индекс “-1”), а три - на воскресенье (т.е. на один день вперёд, поэтому индекс “1”). Ну и отдельно прописать время, в которое начнётся смещённый матч. Но я так делать не буду, потому что дни я буду смещать в “ТВ-датах”, а в “Датах смещения” смещу только время матчей. С первым туром всё оказалось сложнее и его матчи пришлось смещать, потому что рядом с ним попадает ЛЕ и Суперкубок, поэтому ИРЛ он тоже проводился по этой кривой схеме.

Спойлер

10-15.thumb.PNG.3629a1b900faf7c124523df50ec307fa.PNG

 

 Пункт “ТВ-даты” отвечает за принцип отбора матчей для проведения ТВ-трансляций. Там же указывается тип ТВ-трансляций. Почти все данные я заполнил еще в СП, сейчас только немного подкорректировал. Ну и добавил корявый первый тур (с индексом 0).

Спойлер

10-16.thumb.PNG.6ea3fd42ecac6b423d3a2c5bcbc3f77a.PNG

 

Пункт “Особые ТВ-даты” касаются трансляций в особые дни, например, Рождество. Для нашего апдейта он не нужен.

По примерно такому же принципу заполним подпункты “Расписание лиги” для стадий 1 и 2. Только для этих стадий используем даты встреч с индексом 22-31, ну и пункт “Перерывы” не будем использовать. Я не буду мудрить с проведением матчей разных стадий в один день и просто определю, что матчи стадии 1 будут проводиться в воскресенье, а стадии 2 - в пятницу и субботу.

Заполнив все нужные пункты для стадии 1, я могу просто скопировать в стадию 2 “Общие”, “Даты”, ведь данные в них будут одинаковы для обеих стадий.

Спойлер

 

10-17.thumb.PNG.eb1459559c26ab54bf8a53cd8f37ef54.PNG

10-18.thumb.PNG.542c9361b4aeef1f4201965719d01861.PNG

10-19.thumb.PNG.c73a2c31ac024537b479a83a060b1d90.PNG

10-20.thumb.PNG.9fe36868b8b860d4395616c9b3a5a50b.PNG

10-21.thumb.PNG.ee34556b95ee8dcfd7f4381cb14de84a.PNG

10-22.thumb.PNG.e756420fa217eae829205f5e158f3001.PNG

10-23.thumb.PNG.9ef05ccd3a90766897008b2b10db0ed0.PNG

 

Для стадий 3 и 4 мне нужно только заполнить пункт “Даты” в подпункте “Раунды”. Я буду использовать одинаковые даты для этих стадий - “Playoff 0” и “Playoff 1” (“Playoff 2” нам не пригодится).

Спойлер

 

10-24.thumb.PNG.1255eb5bcda577a373b1e2de9ea52320.PNG

10-25.thumb.PNG.8d4c627bb80773414556c32c30480216.PNG

10-26.thumb.PNG.6f7222d36c098d999c3c6f9dc9b40172.PNG

 

Теперь нужно сделать “Проверку турниров” и посмотреть, как работает наш календарь УПЛ. Если зайти в соревнование и перейти на “Test” -> “Годы” -> “2019” -> “Встречи”, то можем увидеть, когда и какой матч будет проводиться. В принципе, вышло более-менее то, что нужно. Есть небольшие нюансы, ведь некоторые матчи некоторых туров не на 100% проходят в нужные дни, но смещения получились минимальными и я в таких случаях просто оставляю, как есть, потому иначе ошибку можно долго и нужно искать и так и не найти - РП всё же очень привередливая штука. Ну и календарь 2020-го года пока выглядит очень криво, но мы его еще будем править, когда приступим к изменению формата УПЛ.

Спойлер

10-27.thumb.PNG.7bc8f15581e308fe180d8de8629dce41.PNG

Продолжение следует.

 

Ниже влез предыдущий скриншот и убрать его почему-то не получается - не обращайте внимания.

Спойлер

10-11.PNG

 

Share this post


Link to post
Share on other sites
Awards

 

Теперь займёмся раздачей призовых и денег за трансляции.

Если призовые не были прописаны в СП, то можно добавить их прямо в РП. Для этого в стадии 0 (всё же она у нас является основной) перейдём в “Настройки лиги” и там найдём раздел “Призовые деньги”. В этом разделе можно прописать призовые за конкретные места, добавляя записи с суммой и местом (первое место имеет индекс 0). Получится что-то подобное:

Спойлер

11-1.thumb.PNG.72827d5ede12c9935b15edf4850a131d.PNG

 

Теперь добавим деньги за ТВ-трансляции. Есть разные варианты - распределение денег на старте сезона, выплаты за каждый матч и т.д. В дефолтных правилах присутствуют только выплаты Динамо и Шахтеру на старте сезона. Мы добавим выплаты и остальным командам, а также поставим галочку на “Сделки на права от телетрансляций, заключённые клубами в частном порядке, перекрывают турнирные права на телетрансляции”.

Спойлер

11-2.thumb.PNG.bbaeb3aec739ae718690781cf1f328d6.PNG

 

В принципе, из того, что нам осталось сделать в предварительной версии Д1, остались только правила стадионов и VAR. Первый пункт так и называется - “Правила стадионов”. Нас интересует только подпункт “Требования к стадиону”. Мы добавим правило в 5000 сидячих мест из дефолтных правил, а также добавим обязательное наличие травяного покрытия и обогрева.

Спойлер

11-3.thumb.PNG.6fe11320e97309ff6af96a5b49877091.PNG

 

VAR добавляется в “Правила и время проведения матчей” -> “Правила видеоповторов для матча”. Делаю это впервые, поэтому мог что-то не учесть, но получилось как-то так.

Спойлер

11-4.thumb.PNG.5f54e4a49d17974e8f492127019a4176.PNG

 

Теперь приступаем к работе над турниром Д2. Он гораздо проще, тем более, что основные моменты были прописаны мной в СП и теперь только осталось немного “причесать” правила.

Для Д2 и Д3 я не буду прописывать каждый тур и не буду реализовывать смещение старта турнира на неделю в чётные и нечётные сезоны - для низших лиг пересечение с матчами сборных не критично, тем более у нас будут прописаны переносы матчей при вызове большого количества игроков в сборные. Так что, я добавлю в “Даты встреч” только даты первого и последнего тура, начала и окончания зимнего перерыва, а также даты матчей плей-офф.

Спойлер

11-5.thumb.PNG.4fb298d64f327783401d9cefe2902563.PNG

 

В пункте “Игроки” установим минимальное количество игроков, вызванных в сборные, для переноса матча (в УПЛ такого правила нет, потому что команды всё равно не играют во время матчей сборных).

Спойлер

11-6.thumb.PNG.f330a1b886e4f3f9bbb489debc49e963.PNG

 

Больше ничего принципиально нового по сравнению с Д1 я не использовал, поэтому не вижу смысла тратить время на то, чтобы сделать и залить сюда кучу скринов.

С группами Д3, в общем-то, такая же ситуация, как и с Д2, но теперь я вообще не использовал ничего нового, кроме добавления матча за чемпионство между победителями групп. Правда, я что-то сделал не так и этот матч не отображается в истории соревнования, но решение этой ошибки я пока не нашёл, поэтому оставил как есть, она не настолько значительна. Но если кто-то подскажет способ решить эту проблему - буду благодарен.

Спойлер

 

11-7.thumb.PNG.a7451be6b82f143870a54831d7b8b2f4.PNG

11-8.thumb.PNG.d07d256381d0d0265ec0257e35d7eca1.PNG

11-9.thumb.PNG.fb0069d1f9f0e79a415acb5bb3573487.PNG

11-10.thumb.PNG.4feffa516824b608cc427365e6e781df.PNG

11-11.thumb.PNG.3ea776af84b969236d5da9719be057f1.PNG

11-12.thumb.PNG.349f7e92c3c9fd2fdcb43e4e8e59aba5.PNG

11-13.thumb.PNG.c37a8a62733a8af5c4c86bccf4741185.PNG

11-14.thumb.PNG.8fb2d905dbeec33c8807e1882fbfeca9.PNG

 

Теперь самое время перейти к Д4 (но там тоже ничего такого не будет) и кубкам.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Забыл об одном нюансе в Д3 - региональных дивизионах. Их же мы применим и в Д4. Если вкратце, то если команды распределяются в группы турнира по географическому принципу, то можно прописать командам региональные дивизионы и добавить соответствующее правило для турнира. Распределение можно сделать и без использования региональных дивизионов, прописав правила распределение команд по расположению относительно каких-то ключевых городов (например, в группу 1 попадают команды, которые расположены западнее города Х и севернее города Y). Правда, для этого способа у всех команд страны обязательно должны быть прописаны города в базе, и у этих городов обязательно должны быть прописаны координаты. Поэтому я предпочитаю использовать региональные дивизионы. Для того, чтобы указать, что турнир должен распределять команды по дочерним соревнованиям с помощью региональных дивизионов, нам нужно поставить соответствующую галочку в “Правила детских турниров/Регионов (кривой перевод, правильнее было бы “дочерних турниров”)” -> “Общие”.

Спойлер

12-1.thumb.PNG.546f47ef40f4459ba24197797b543b4a.PNG

 

Для того, чтобы региональные дивизионы корректно работали, нужно будет их прописать всем командам, но этим мы займёмся уже после того, как полностью сделаем всю структуру лиг.

Ничего принципиально нового для Д4 я не делал, за меня почти всё сделал редактор при переводе из СП в РП, а я только подкорректировал некоторые моменты. Единственный новый пункт, который я затронул - это пункт “Дисциплина”. Здесь можно прописать штрафные санкции клубу за получение определённого количества ЖК и/или КК в матче. В Д1-Д3 такой нормы нет, а вот в Д4 она присутствует.

Спойлер

12-2.thumb.PNG.5e3cf9a5988d57a726c01ee33debf11e.PNG

 

Конечно, не забываем периодически делать проверку правил через “Правила” -> “Проверка правил”, чтобы вовремя поймать и обезвредить возможные баги.

В Суперкубке и Кубке я оставил всё, что было прописано еще в СП, только прописал правильные индексы дисциплинарных правил и правил встречи, а также прописал разные даты проведения Суперкубка в чётные и нечётные годы.

Спойлер

 

12-3.thumb.PNG.23288780587f67b3f537b548cdec0d97.PNG

12-4.thumb.PNG.1099a44d1c937cd68defebd0bb44a595.PNG

12-4_.thumb.PNG.4ed97d5181a833aad2ea0ea056bd5d47.PNG

 

В аматорском кубке пришлось сделать чуть больше изменений. Мне нужно было, чтобы в кубок сначала добавлялись команды из групп Д5, а потом - из групп Д4, но при тесте выяснилось, что редактор берёт команды наоборот. Чтобы решить эту проблему, мне нужно было прописать в пункте “Общие” стадии кубка правило, по которому команды в эту стадию будут браться согласно посеву и по убыванию (т.е. сначала берутся команды с самым высоким значением посева, а потом с самым низким). Казалось бы, это не очень логично, ведь чем выше посев, тем должно быть лучше, но в нашем случае будет как раз наоборот. Со временем я пришёл в варианту привязки посева к уровню дивизиона или места команды в лиге, где 0 - это самый высокий уровень. Мне так оказалось проще и понятнее. Т.о. для нашего аматорского кубка команды из высшего дивизиона турнира (Д4) будут иметь самый низкий посев (0), а команды из самого низшего (Д5) - самый низкий посев (1).

Спойлер

 

12-5.thumb.PNG.982fdbc7ba8c1ef75209efa9a2bc2560.PNG

12-6.thumb.PNG.7efc3a76d855ae51e5728cfa9744e0f0.PNG

12-7.thumb.PNG.5d09387db0d613abfa7cc416eb581f1b.PNG

 

Плавающее количество команд в аматорском кубке я прописал просто на всякий случай, чтобы уменьшить количество возможных багов. А вообще обязательно прописываю плавающее количество команд в кубках, если в нём не играют дубли, а в лигах, из которых берутся команды - играют. Никогда не знаешь, сколько и в какой лиге может быть дублей через 15-20 сезонов, поэтому лучше этот вариант предусмотреть заранее.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

Что ж, почти все соревнования приведены к более-менее правильному виду. Остались чемпионаты U21 и U19, но ими мы займёмся позже. Теперь нужно реализовать изменение количества команд и смену формата турниров в разные годы.

Напомню, что вот такой вариант нам нужно реализовать. Нужно заранее продумать, сколько команд куда должны вылетать/повышаться, чтобы на следующий сезон турниры приняли интересующий нас вид.

Можно сделать что-то вроде такого:

Спойлер

13-1.PNG.07c72ca27342178fd7719db3bc777fc8.PNG

Порядок действий у нас будет примерно таким (но это не обязательно. Например, можно произвольно поменять местами пункты 3, 4 и 5):

  1. Дублируем турниры, в которых будет изменяться количество команд (в нашем случае это все лиги и главный кубок). Чтобы не запутаться, каждому турниру лучше поставить год в “Описание”.

  2. Для этих турниров прописываем годы действия (где-то “Год начала”, где-то “Год окончания”).

  3. Прописываем нужное количество вылетающих/повышающихся команд в разные годы.

  4. Если нужно, меняем формат проведения турнира.

  5. Прописываем добавление/уменьшение числа команд в турнирах.

  6. Проверяем, как вся эта махина работает.


Пойдём подряд. Турниры дублируются очень просто: нажимаем на “Список”, в правом окне выделяем нужное соревнование и нажимаем “Дублировать”. После этого добавляем турнирам “Описание”, чтобы мы как-то могли их различать.

Спойлер

13-2.thumb.PNG.fce4844fcb3e722b077a2a65ea23602b.PNG

 

Т.к. у меня изменения коснутся сразу трёх сезонов, то придётся делать по три записи каждого такого турнира. Сначала я сделаю изменение на один сезон, проверю, а потом сделаю изменение на второй сезон - так будет проще найти возможные баги. Список наших турниров будет пока таким (но, возможно, его удастся немного оптимизировать):

Спойлер

13-3.thumb.PNG.62b8d7d84e37e57853ccbe3d0b888f77.PNG

 

Пропишем каждому турниру, который претерпит изменения, годы действия. Для этого зайдём в пункт “Общие” каждого турнира и поставим нужные значения в “Год начала” и “Год окончания”. Принцип здесь простой - прописанный год, это год начала сезона (например, 2019 для сезона 2019/20). Если “Год начала” или “Год окончания” не заполнены, то это значит, что действие этого правила турнира не имеет ограничения по началу или окончанию.

Наша схема будет выглядеть следующим образом:

  • Сезон 2019/20: “Год начала” не заполняем, “Год окончания” = 2019.

  • Сезон 2020/21: “Год начала” = 2020, “Год окончания” = 2020.

  • Сезон 2021 и далее: “Год начала” = 2021, “Год окончания” не заполняем.

Чтобы не заваливать скриншотами, я покажу пример только на одном дивизионе.

Спойлер


13-4.thumb.PNG.b919ffd44e553d98949bb055221c325d.PNG

13-5.thumb.PNG.9a29494902721375242a70e2ada7d4f6.PNG

 

Теперь правим количество вылетающих/повышающихся команд в соответствии с нашей таблицей.

Спойлер

 

13-6.thumb.PNG.c41c69e3886218e23475fcca5d6c7f1a.PNG

13-7.thumb.PNG.7982cc59bb3b7ed59dca104605d3a76c.PNG

 

Тут мы столкнулись с ситуацией, когда из Д4 в Д3 команды повышаются через плей-офф и его нужно переделывать. Если в первоначальном варианте повышались 2 команды из 9-ти (3 команды из 3-х групп), то теперь нужно, чтобы в сезоне 2019/20 повышались сразу 6 команд, а этого не сделать с помощью плей-офф из 9-ти команд. Есть как минимум два варианта решения проблемы: повышать напрямую по 2 команды из каждой группы или немного изменить плей-офф, добавив туда еще по одной команде из группы (по 4 команды из 3-х групп, 6 победителей повышаются). Я выбрал второй вариант, потому что ИРЛ в Д4 всегда используется плей-офф, вне зависимости от количества повышающихся команд.

Спойлер

13-8.thumb.PNG.ca9594122a674306e7b46ba8c274fa2d.PNG

 

Ну и плей-офф я переделал так, что в сезоне 2019/20 он состоит только из одного раунда - Final (предыдущие два я просто удалил).

Спойлер

 

13-9.thumb.PNG.3ba3820586f12c2080c3fbbcaa9edb08.PNG

13-10.thumb.PNG.313bba657b19ca87076677a08a5805e0.PNG

 

Теперь нужно изменить формат Д1, ведь в сезоне 2020/21 будут играть 14 команд в два круга. При этом отмечу, что плей-офф за вылет удалять я пока не буду, потому что предполагаю его использовать в правилах Д1 для сезона 2021/22 и более поздних.

Итак, для начала я удалю две уже ненужные стадии - 1 и 2. Затем в стадии 0 изменю количество команд на 14 (пункт “Общие”). В пункте “Настройки лиги” сниму галочки с пунктов “Разделитель лиги при раннем финише” и “Дополнительные матчи лиги”, а также удалю первые две записи из пункта “Правила квалификации”. В “Призовые” можем добавить еще две записи для команд, занявших 13 и 14 места.

Спойлер

 

13-11.thumb.PNG.43230c9412b79c1812126e7b58111e4d.PNG

13-12.thumb.PNG.e9e559ce9d89baa8b88706da80aad1ee.PNG

13-13.thumb.PNG.8d9446ea59cf7c20a06ee3fb64f5ccc7.PNG

 

Количество туров у нас также уменьшится, поэтому придётся подкорректировать “Даты встреч”. Я убрал все записи для 2019-го года (текущая запись турнира всё равно будет актуальна только для сезона 2020/21), а также 6 уже лишних туров.

Спойлер

 

13-14.thumb.PNG.b2d19ba65499d0baad9dadc51954b944.PNG

13-15.thumb.PNG.4612b9a1549117d47230148d41d29491.PNG

 

Чтобы изменившиеся “Даты встреч” у нас корректно работали, нужно немного подправить и “Расписание лиги”, изменив “Дату окончания” в “Общие” и добавив 4 записи в “Даты”.

Также я немного подправлю “Даты смещения” и “ТВ-даты”, ведь количество матчей в туре теперь 7, а не 6. Для этого я просто изменю столбец “Кол-во матчей” в одной из записей на “2”.

Спойлер

 

13-16.thumb.PNG.8aa7bc9b53c8e7dda3b609556b301551.PNG

13-17.thumb.PNG.7a55f798c7561660582b4779b9c51759.PNG

 

Для 25 и 26 туров, которые играются в один день, я пытался прописать особые условия, чтобы для них заработали ТВ-трансляции, но пока не сработало. Оставлю на потом.

Нужно еще изменить индексы стадий 3 и 4, чтобы они шли подряд после стадии 0, это ведёт к тому, что придётся залезть в некоторое количество других пунктов, но иначе всё может работать не совсем так, как запланировано (увы, редактор в РП очень привередливый). Также в условиях начала плей-офф за выход в еврокубки нужно убрать требование окончания стадии 1, а в условиях начала плей-офф за выживание нужно убрать требование окончания стадии 2 - у нас их теперь нет. Если не убрать эти строки, плей-офф просто не начнутся.

Теперь пропишем добавление команд во все дивизионы. Делается это через пункт “Продвижение/Вылет” турнира, ну и прописать его нужно в сезоне, предшествующем расширению. Тут я получил хороший пинок по яйцам от редактора, которому мои расчёты по количеству добавляемых команд были до одного места. Уже не в первый раз СИшники каким-то магическим образом ломают что-то важное в редакторе (в этом ФМе это уже второй серьёзный баг). Спустя несколько часов, потраченных на попытки найти причину бага, я обнаружил решение от @SIAZ TV, за что ему огромное спасибо.

 

Спойлер

 

13-19.thumb.PNG.6e9764ceabd1bd8ed18fdb6b137a88ba.PNG

13-20.thumb.PNG.bba4467cd07a93b45ec68cac08c2f605.PNG

13-21.thumb.PNG.43e2c39bbc108b22f1e07a81ebe86853.PNG

13-21_.thumb.PNG.f9712f957d6524619647fd8162d5d285.PNG


 

Практически такой же набор манипуляций мы проделаем со всеми лигами и для сезона 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 дубля), по которым и переделал потом раунды.

Спойлер

13-22.PNG.05931f3adbc21a8c53f239b59acf8e95.PNG

Также я добавил в “Даты встреч” Кубка записи для чётных и нечётных лет, небольшие призовые и ТВ-даты (скрины выкладывать не буду, там ничего особо нового нет).

Теперь можно приступать к работе над чемпионатами U21 и U19.

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

прошу прощения за оффтоп

возможно буду неправ, но я думаю что это самый сложный апдейт, когда либо сделанный за всю историю ФМ. хочется увидеть его на комьюнити, вместе с обсуждениями.

и, возможно, мануал с переводом на инглиш. можно попробовать замутить.

Edited by Steff.

Share this post


Link to post
Share on other sites
Awards

@Steff. не думаю, что самый сложный в истории - есть еще как минимум Бельгия и у каких-то южноамериканских стран были замудрёные правила. Но, пожалуй, самый сложный из тех, что я делал. Правда, не в последнюю очередь из-за ошибок СИ и багов редактора.

Перевод на инглиш... Май инглиш из нот соу гуд то маке э транслэйт оф ол зис щит) Да и времени эта затея потянет очень много (помимо текста нужно будет переделать больше 160-ти скриншотов). Когда-нибудь я, возможно, задумаюсь об этом, но мне кажется, что на форуме СИ и так есть немало информации по редактору, да и людей, которые гораздо лучше разбираются в апдейтоделании, там хватает.

Share this post


Link to post
Share on other sites
Awards

 

Чтобы начать работу над молодежными лигами, сначала скопируем всю недостающую по ним информацию из дефолтных правил (“Правила для резервов” из раздела “Страна”, два “Правила матча”, а также три турнира). Первые две записи в “Резервные лиги” относятся к FMT/FMH и я не буду их менять. А вот две следующие записи как раз относятся к молодежным чемпионатам, которые будут использоваться в обычной версии игры. В них я только подправлю “Индекс правил встречи”, но сначала мне нужно создать два пустых правила и скопировать в них информацию из дефолтных правил.

Спойлер

 

14-1.thumb.PNG.99f9ac437d7cde07f95046f1e63bf282.PNG

14-2.thumb.PNG.84cb573f01c2704346b77ac629ce75a5.PNG

14-3.thumb.PNG.3223345b968905be0ad7fed440c83d63.PNG

14-4.thumb.PNG.da59b767e762d7e05973b17298e962b8.PNG

 

Теперь я создам три пустых правила в “Списке” и скопирую туда все данные по молодёжным турнирам из дефолтных правил.

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

U21:

  • Сезон 2019/20 - 11 команд (все команды Д1, кроме дисквалифицированного Олимпика), формат такой же, как в Д1.
  • Сезон 2020/21 - 13-14 команд (все команды из Д1, кроме дисквалифицированного Олимпика, если он не вылетел в сезоне 2019/20). Формат как и в Д1 - простая лига в два круга.
  • Сезон 2021/22 и далее - 16 команд (все команды из Д1). Формат, как и в Д1 - простая лига в два круга.

U19:

  • Сезон 2019/20 - 13 команд (все команды из Д1, кроме дисквалифицированного Олимпика + Волынь и МФК Металлург З из Д2). Формат - лига в два круга.
  • Сезон 2020/21 - 13-16 команд (все команды из Д1, кроме дисквалифицированного Олимпика, если он не вылетел в сезоне 2019/20 + например, те же Волынь и МФК Металлург З из Д2. Плавающее количество команд, потому что одна или обе команды из Д2 могут выйти в Д1 2020/21 и их команды Ю19 всё равно попадут в чемпионат). Формат - лига в два круга.
  • Сезон 2021/22 и далее - 16 (все команды из Д1). Формат - лига в два круга.

В дефолтных правилах эта система реализована не совсем правильно - в Ю21 играет 11 или 12 команд, а в Ю19 - 12 или 14. Нам предстоит по сути сделать почти тоже самое, что мы делали при изменении формата Д1, есть только пара нюансов, которые я выделю.

Прежде всего, нам нужно правильно отбирать команды в лигу. Если раньше для лиг мы просто брали все команды из дивизиона, а для кубков определённое количество команд из лиг, то теперь нам нужно НЕ брать определённую команду из лиги, еще и типа U21. На самом деле, это выглядит не так страшно, в редакторе есть возможность использовать любой способ отбора команды/команд, но с галочкой “Игнорировать команды”, что даёт возможность проигнорировать эту команду(-ы) по тому же способу отбора. Именно так мы и запретим молодёжке одного из клубов Д1 участвовать в чемпе Ю21 в сезонах 2019/20 и 2020/21.

Спойлер

14-5.thumb.PNG.e1eccb852b7e9cd98300c1dff580e3b9.PNG

 

Формат турнира я поменял так же, как и в Д1. Даты матчей я не менял по сравнению с дефолтом, мне было откровенно лень, а Ю21 не настолько важный чемпионат, чтобы тратить на него много времени. Можно было заморочиться, скопировать календарь их Д1 и сдвигать его на один день назад, но… “И так сойдёт”. (с) 

Единственный минус такого оформления чемпионата Ю21 - не будет копироваться календарь Д1 со сдвигом на один день назад, как сделано в реальности. Но я уже неоднократно убеждался - 100% реалистичности апдейтом не добьёшься, лучше потратить время на что-то более важное.

Дополнительные команды в Ю19 добавляются таким же способом, каким мы убирали команду из Ю21, только без галочки “Игнорировать команды”.

Спойлер

14-6.thumb.PNG.4cb5c3a9c44f639eead2764d8f560a36.PNG

 

Проверка правил показала, что всё сработало хорошо, а это значить, что со структурой мы предварительно более-менее разобрались.

Спойлер

 

14-7.thumb.PNG.4693697716b9b1588e774265c3c63a85.PNG

14-8.thumb.PNG.37a5384ba4df4c2eaf91a8598b8babfe.PNG

14-9.thumb.PNG.1530d6127d5c0e15958a414427a8c11e.PNG

14-10.thumb.PNG.05c16b27b48264a305021a2e6cbab849.PNG

14-11.thumb.PNG.3c81edd267f97339ca942ceb3eb753b8.PNG

14-12.thumb.PNG.39f655d4a0ffcb9d7dda1bc15c6f0d4a.PNG

 

В процессе игры могут выплыть какие-то баги, но, увы, на стадии выпуска апдейта все их определить невозможно. Я обычно тестирую апдейт в редакторе лет на 30-40, чтобы убедиться, что все сезоны за этот срок нормально отработают. Если позволяет время, бывает полезно прогнать апдейт в игре в режиме отпуска сезона 2-3. Лучших вариант, конечно, это полноценная игра на апдейте, но это сильно затянет процесс выпуска, поэтому, как не печально, будем тренироваться на кошках ждать обратной реакции от пользователей - несколько человек гораздо быстрее найдут неявные баги, чем один автор.

После всех манипуляций с молодёжными чемпионатами я убрал плей-офф между Д1 и Д2 в сезонах 2019/20 и 2020/21, сделал очередную проверку всех правил, а потом - проверку турниров до 2060-го года. В процессе проверки турниров выяснилось, что я забыл прописать запрет на участие в плей-офф за повышение дублям, первые команды которых уже играют в дивизионе выше. Редактор в случае победы дубля в плей-офф не сможет пустить его в дивизион выше, т.к. в одной лиге нельзя играть основной команде и дублю, но и заменить дубль на проигравшую в плей-офф команду он не сможет, поэтому засунет в тот дивизион какую-нибудь команду из низших неиграбельных лиг. Запрет прописывается в “Продвижение/Вылет” в пункте “Могут ли невышедшие команды играть в высших раундах плей-офф?”. 

Спойлер

14-13.thumb.PNG.bcb8417aac37e6c95b2a06c648a9f1a5.PNG

 

Правда, стоит заметить, что это условие не всегда срабатывает на 100%, но даже в таких случаях редактор может более-менее нормально себя вести. Например, в одном из тестов произошла ситуация, когда из Д2 напрямую вылетела основная команда и редактор взял дубль в плей-офф между Д2 и Д3. Дубль победил и, по идее, должен был заменить основную команду в Д2, но, видимо, редактор решил, чтобы это может привести к множественным затруднениям, поэтому вместо Д2 отправил дубль в Д4 (основная команда-то уже вылетела в Д3 и дубль не может там играть), а в Д2 отправил команду, которая заняла следующее после дубля место в той же группе. Решение вполне в духе украинских футбольных чиновников.

Еще один вариант, как избежать этой проблемы - просто запретить дублям выходить в Д2. Всё равно командам Д1 держать дубли нет особого смысла, ведь у них уже есть команды Ю21 и Ю19, а дубли команд Д2 могут играть не выше Д3. Да и уже несколько лет прошло с тех пор, как дубли играли в Д2. Так что, я в итоге решил запретить дублям выходить в Д2.

Спойлер

14-13_.thumb.PNG.a106fd166b79ebfcd85b9e1e9b7cafe9.PNG

 

Тесты до 2060-го года прошли успешно (не обращайте внимания на наличие Нефтяника, ФК Полтава, всяких академий и ДЮСШ - это издержки чистой базы), что позволяет мне сказать - с чистой структурой мы закончили, пришло время немного поработать с самой базой (предварительно сохранив отдельную версию с чистой структурой лиг - может пригодиться для следующих ФМов).

Спойлер

 

14-14.thumb.PNG.a47aed695f91dfd24633464d1e445502.PNG

14-15.thumb.PNG.f3603a31f7b8fc383f9d91a793e4f896.PNG

14-16.thumb.PNG.3e0455bda4aa477a688c0d3f0c114dab.PNG

14-17.thumb.PNG.ee6749777af190362db5f7ea055fcff2.PNG

14-18.thumb.PNG.f904f68144773234fdcd07c5f618b043.PNG

14-19.thumb.PNG.0780ff0c27c241fa6963c43bef8cd920.PNG

14-20.thumb.PNG.1b4e79b4c06a10ba3de2a76b43f56de1.PNG

14-21.thumb.PNG.a973c23620a929dd3fe16b0a08d36931.PNG

14-22.thumb.PNG.13e6b1fdf2a9f3df4aa5d625e68629b5.PNG

14-23.thumb.PNG.52afcbe7f90cfe6c8af54ab62ffab6dc.PNG

14-24.thumb.PNG.83b5098401dca50414410bf85109cc95.PNG

14-25.thumb.PNG.add928746c38df2c98a27206d8c0c233.PNG

 

Продолжение следует.

Share this post


Link to post
Share on other sites
Awards

 

 Прежде всего нам нужно сделать актуальным состав команд в Д4. Выбывшие команды я отправил в Д5 или сделал несуществующими, если они исчезли. На замену добавил команды из Д5, а одну из команд пришлось переделывать из ненужной, потому что в базе её не было.

Чтобы команды правильно распределялись по группам Д3 и Д4, нужно прописать всем командам страны региональные дивизионы. Это довольно большой объём работы и я стараюсь его делать уже после того, как я немного уменьшу количество команд в стране, избавившись от исчезнувших или ненужных команд. Каждая команда - это часть занимаемой игрой памяти и я на 100% уверен, что при игре 99,[9]% игроков не понадобятся дубли команд из неиграбельных Д7-Д8, да и команды из Д7-Д9 вообще. Даже просто пройдясь “по верхам” я убрал больше 120-ти клубов (это из 1468, что были активны в базе), а после небольшого углубления их число достигло 283 (почти 20% от изначального числа!). Если задаться целью еще сильнее облегчить базу, то можно еще больше уменьшить их количество, но я остановлюсь и на этом.

Теперь нужно прописать города тем клубам, у которых их нет, ведь дальше нам нужно будет фильтровать клубы по регионам.

Т.к. у меня идёт географическая привязка к региональным дивизионам, мне сначала нужно определиться, команды из каких регионов (областей) я буду направлять в какие группы. Вы, наверное, уже заметили, что я люблю таблицы (еще и по роду работы приходилось с ними очень много взаимодействовать), поэтому да - я оформил раскладку регионов по группам в таблицу.

Спойлер

15-1.PNG.c349610b3e34cd6127a52dd99ad3738d.PNG

Не буду расписывать, как именно я пришёл к этому варианту - просто взял карту страны и разделил на две части для Д3 и на три части - для Д4. Областям, находившимся на стыке разных частей, я решил прописать две группы, для большей вариативности.

После этого я в разделе базы “Клубы” с помощью фильтра отсеиваю клубы из каждого региона и выделяю их все (выделяю строку с первым клубом, а потом с нажатым Shift нажимаю на самую нижнюю строку).

Спойлер

15-2.thumb.PNG.e7bd8a91f40e937aeb5e840e63840615.PNG

 

После этого я нажимаю кнопку “Править” в правом нижнем углу окна и теперь могу вносить изменения сразу во все клубы региона одновременно. Иногда редактору требуется время на обработку таких изменений, но всё равно это гораздо быстрее, чем править каждый клуб отдельно (с ужасом вспоминаю те времена, когда массового редактирования региональных дивизионов еще не было).

Теперь я перехожу на строку “Региональный дивизион” в левом нижнем окне и с помощью кнопки “Добавить” и поиска прописываю региональные дивизионы сразу всем выделенным клубам. Небольшая хитрость - кнопку “Добавить” можно использовать только один раз, а дальше - кнопку “Дублировать”, она обрабатывается редактором немного быстрее. Ну и в отличие от РП, в базе уровень дивизиона идет более привычно - самый высший уровень = 1.

Спойлер

15-3.thumb.PNG.35a6eb26c7333e41a8e269c9b1a942e6.PNG

 

Может возникнуть логичный вопрос: зачем работать с каждым регионом отдельно, если, судя по таблице, их можно компоновать сразу по несколько и прописывать одни и те же региональные дивизионы сразу 5-6 регионам? Ответ довольно простой: можно и компоновать, но в процессе добавления региональных дивизионов я просматриваю репутацию клубов низших лиг на предмет адекватности и если 50-60 клубов еще можно нормально осилить, то больше - уже сложнее, придётся потом еще раз проверять. Также я в процессе проверяю проф. статус клубов, потому что иногда в проф. лиги может затесаться клуб, которому забыли изменить любительский статус, и наоборот.

После этой не особо увлекательной процедуры наши команды должны адекватнее распределяться по группам Д3 и Д4 (ключевое слово - “должны”, но не факт, что будут в 100% случаев).

В целом, апдейт структуры лиг уже принял достойный облик и я только укажу на еще несколько пунктов, которые не совсем связаны со структурой, но также повышают реализм и адекватность апдейта:

  • Репутации и бюджеты команд. Я всегда просматриваю и, если нужно, правлю репутацию клубов и их бюджеты. С момента выдачи базы СИшникам могла появиться новая информация, могут быть просто ошибки в ресёрче - всё это хорошо бы учесть.

  • Всем командам (или хотя бы из играбельных лиг) я прописываю стадионы. Если стадион неизвестен - беру стадион из города команды.

  • Если у меня есть время, то я правлю посещаемость клубов. Если в высших лигах зачастую ресёрчеры её периодически корректируют, то в низших лигах обычно творится закономерный ужас. Можно использовать разные варианты: делать таблицы, по которым высчитывать минимальную, среднюю и максимальную посещаемость; смотреть доступные статистические источники и т.д. Самый сложный, но самый шикарный вариант - программа “Футбольные Чемпионаты”. В ней можно вести кучу статистики, хоть она и начинает люто тормозить, когда в файле становится очень много игроков и матчей. Но её можно использовать, например, только для ведения статистики по посещаемости и стадионам и хранить там данные за несколько сезонов, что позволит вносить в базу более реалистичные данные. Но говорю сразу - это вариант больше для упоротых апдейтоделов-перфекционистов, которые попутно занимаются ресёрчем.

  • Смена стадионов командами. Если известно, что некоторые команды определённый сезон, часть сезона или некоторые турниры проводят не на своём стадионе, то это стоит отображать в “Стадионы” -> “Альтернативные стадионы”.

Спойлер

15-3_.thumb.PNG.285dc50a2ddb4d01aebd607074871bac.PNG

 

  • Если есть хорошие знания о стоимости игроков и их примерных зарплатах, то можно отобразить эту информацию в %страна% -> “Трансферы и контракты” -> “Стоимость трансферов” и “Значения еженедельных зарплат”.

  • В некоторых турнирах есть ограничения на минимальный и максимальный размер поля. Их можно указать в %турнир% -> “Минимальная длина поля”/”Максимальная длина поля”/”Минимальная ширина поля”/”Максимальная ширина поля”. Например, в нашем апдейте в Д1 по регламенту должны быть фиксированные размеры поля 105х68 м.

Спойлер

15-4.thumb.PNG.c111e2654e02b4248b75815a0c829f92.PNG

  • В строке %турнир% -> “Политика работы со СМИ” можно указать обязательность пред- и послематчевых пресс-конференций и кто в них должен принимать участие. Даёшь еще больше реализма!
Спойлер

15-5.thumb.PNG.1a6e658dbc381f3093545031c8b6dfb5.PNG

 

На этом всё, спасибо за внимание! Надеюсь, хоть кому-то эта простыня текста и картинок пригодится)

Share this post


Link to post
Share on other sites
Awards

2 часа назад, Ohrim сказал:

На этом всё, спасибо за внимание! Надеюсь, хоть кому-то эта простыня текста и картинок пригодится)

Обязательно пригодится. Претендент на историю года :D

Означает ли конец триллера то, что апдейт уже близок к завершению?

Share this post


Link to post
Share on other sites
Awards

@Steff. да, близок, но еще нужно кое-что допилить. Скрестив пальцы на руках и ногах думаю о завтрашнем дне (но я ничего не обещал, если что ;))

Share this post


Link to post
Share on other sites
Awards

Всех с наступающим... На счет не добавления записи в историю, можно попробовать уровни рейтинга проверить (на континентальных правилах, зачастую из-за неправильных уровней рейтинга не добавлялось у меня запись в историю... Если это не поможет то я не знаю, и если скажете буду рад! 

На одном из своих апдейтов по Кыргызстану тоже не могу понять почему на Д4 в родительский турнир (там у меня плей офф на повышение) не добавляется история, что примечательно в родительский турнир Д3 добавляется история при аналогичных настройках. У меня в Д3 два региона а в Д4 четыре региона, но настройки аналогичны (я продублировал все из Д3 и причесал их  под Д4 чтоб выходили в соответствующие уровни)

PS в Кыргызстане нет Д3 и Д4 - это мой личный фэнтези дивизион с имбовыми игроками из Кыргызстана... 

PS №2 )) Допилил на 19 Эдиторе Континентальные кубки Азии с добавлением суперкубка Азии и Кубка президента АФК...

Посоветуйте пожалуйста, стоит ли закидывать сюда Азию (актуальность все таки не та уже)  

Share this post


Link to post
Share on other sites

4 часа назад, BarsAziat сказал:

стоит ли закидывать сюда Азию (актуальность все таки не та уже)

Стоит, потому что часть людей вполне себе играет в ФМ19.

 

П.С. Остальное вынес в отдельную тему.

Edited by Ohrim

Share this post


Link to post
Share on other sites
Awards

@Ohrim  Аплодирую стоя. Это просто Мегамануал, который должен войти в Золотой фонд. Спасибо, друг, за такую серьезную работу, надо покумекать, как это оставить на века.

Share this post


Link to post
Share on other sites
Awards

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...