Начну с контекста. Я играю в EA FC (ранее FIFA) в режиме Clubs (11×11), где каждым виртуальным игроком управляет человек. Сам по себе режим интересный, но мне, как человеку, который любит цифры и аналитику, довольно быстро стало не хватать доступной статистики.
Я пришёл в лигу, у которой уже был свой сайт (я в этой статье опущу тему о том, что я администрировал проект порядка 3 лет). Там статистику собирали вручную: люди пересматривали записи матчей и заносили базовые показатели — голы, ассисты, перехваты, отборы и так далее. На основе этих данных считались различные рейтинги: лучшие игроки, бомбардиры, разрушители и прочее.
Выглядело это примерно так: набор таблиц, где действия сгруппированы по категориям и амплуа.

Почему это не работало
Для меня такой формат оказался неудобным.
Да, данные есть, но:
их сложно сравнивать
сложно анализировать вклад игрока
невозможно понять стиль игры
В какой-то момент (примерно в 2020 году) я задумался, что это можно сделать иначе. Но на тот момент у меня не было опыта разработки — да и сейчас я не считаю себя разработчиком в классическом смысле.
Откуда вообще брались данные
Логичный вопрос: почему всё делалось вручную?
Потому что у EA Sports нет API, который позволял бы получать нужную статистику.
Это ключевое ограничение, которое определило всю архитектуру проекта.
Первый этап: Excel и ручная аналитика
Я начал с простого:
Excel-файлы
публикации во ВКонтакте
разборы матчей и игроков
По сути, это были аналитические отчёты на основе тех же данных, но с попыткой интерпретации.
Уже тогда было понятно: у людей есть запрос на сравнение и оценку игроков, просто инструментов для этого нет.
Метрики: как я попытался уйти от «базовой статистики»
Ключевой идеей проекта была возможность быстрого понимания типажа игрока\команды через его профиль.
Базовые показатели вроде голов, ассистов или перехватов дают очень ограниченное понимание. Они показывают результат, но почти ничего не говорят о процессе: как именно игрок создаёт моменты, насколько он стабилен, какую роль выполняет на поле.
Поэтому следующим шагом стало создание собственных метрик.
Зачем это вообще нужно
Если упростить, я хотел ответить на три вопроса:
насколько игрок эффективен
как он влияет на игру команды
какую роль он выполняет на поле
И стандартных метрик для этого недостаточно.
Примеры метрик
pXA (пасы на ожидаемую голевую передачу)
Эта метрика показывает, сколько передач требуется игроку, чтобы создать момент.
Интерпретация:
чем ниже значение — тем быстрее игрок доводит мяч до опасной стадии
чем выше — тем больше «пустых» передач без создания угрозы
Это позволяет отличать:
игроков, которые реально создают моменты
от тех, кто просто много пасует
Beaten Rate
Метрика отражает, как часто игрок проигрывает единоборства.
Интерпретация:
низкое значение — игрок стабилен и редко проигрывает 1 в 1
высокое — уязвим в обороне
Это особенно важно для защитников и полузащиты, где обычные метрики часто не показывают реальную надёжность.
Коэффициент опасности удара
Показывает, насколько опасные позиции выбирает игрок для ударов.
Интерпретация:
высокий показатель — игрок бьёт из выгодных позиций
низкий — много дальних или неэффективных ударов
Это позволяет разделить:
«объёмных» игроков (много ударов)
и «эффективных» (качественные удары)
Композитные показатели
Отдельные метрики — это только часть картины.
Дальше я начал объединять их в профили:
радары игроков
агрегированные оценки
сравнения по амплуа
Это дало возможность:
быстро понимать профиль игрока
сравнивать игроков между собой
находить сильные и слабые стороны
Практическое применение
Главное, что метрики оказались не просто «для красоты».
Они начали использоваться:
при подборе игроков в команды
при анализе матчей
в скаутинге
в автоматических отчётах
Фактически именно метрики стали основой всей системы. Всё остальное (интерфейс, сайт, визуализация) уже строилось вокруг них.
Важно
Я не пытался сделать «идеальную» модель.
Задача была другой — сделать метрики, которые:
понятны пользователю
полезны на практике
дают больше информации, чем базовая статистика
Первый инструмент: Yandex DataLens
Следующим этапом стало создание более удобного инструмента.
Я использовал Yandex DataLens, чтобы:
агрегировать данные
визуализировать метрики
упростить анализ

Появление автоматизации
Дальше важный этап — автоматизация.
С появлением ChatGPT я начал:
генерировать аналитические тексты
автоматизировать разборы матчей
ускорять подготовку контента
Если раньше на один разбор уходило около часа, то теперь — порядка 10 минут.
Также появились:
радары игроков
автоматические описания
шаблоны аналитики
Фактически я перенёс свою логику интерпретации данных в автоматизированный формат.

Следующий шаг — собственный сайт
Логичным продолжением стало создание полноценного сайта.
На тот момент у меня не было опыта:
разработки
настройки серверов
работы с базами данных
Тем не менее, я решил попробовать реализовать всё, что до этого делал вручную.
Архитектура проекта
В итоге получилась следующая структура.
Стек:
Frontend: Next.js
Backend: API routes (Next.js)
База данных: MySQL
ORM: Prisma
Деплой: Docker + облако
Логика:
сбор данных → база
агрегации → API
отображение → интерфейс
Что есть в системе сейчас
На текущий момент это уже не просто набор таблиц, а полноценная платформа:
профили игроков
профили команд
расширенная статистика
сравнение игроков
скаутинг (подбор игроков под стиль)
фентези-лига
То есть проект прошёл путь:
от Excel и постов во ВКонтакте → к самостоятельной аналитической системе
Итог
Я понимаю, что у проекта довольно узкая аудитория.
Но изначально это и не была попытка сделать массовый продукт.
Это была попытка:
решить конкретную проблему
автоматизировать процесс
проверить, можно ли построить систему с нуля
В итоге получилась полноценная аналитическая платформа, которую я продолжаю развивать.
И, пожалуй, самое неожиданное для меня то, что всё это удалось реализовать без классического бэкграунда в разработке.
Сайт проекта
В заключении, мне бы хотелось почитать честные отзывы про сам сайт, а так же готов ответить на различные вопросы. Ну и заодно дать мотивацию людям, что даже без знания базы сейчас можно пробовать сделать то, чего вы так давно хотели!
donRumatta
Это все, конечно, замечательно, но главный вопрос: как вам удается найти в один момент еще 21 или хотя бы 10 взрослых людей с достаточно хорошим уровнем игры?
В идеале, в свою тиму вообще знакомыми комплектовать, во избежание так сказать) При том, что даже elo, которое не особо помогает, приходится самому писать. В доте вон даже 5 набрать задача нерешенная)
strb Автор
Пост в целом не об этом, но, как в любом виде спорта или игре всегда есть 20% лучших и остальные 80% "догоняющих", назовем их так. Так что из 1000 игроков примерно 200 наберется хороших, а среди этих 200 найдется и 40 лучших, которые концентрируются в лучших командах Премьер лиги. Так что отвечая на ваши вопрос - да, есть порядка 5-6 команд, которым удается набрать конкурентный состав в наивысшей лиге
donRumatta
Скорее интересуюсь, как вы защищаетесь от того самого типа, который начнет бить в свои ворота и испортит 2 часа жизни 20 людям) Или из вашего коммента следует, что у вас постоянные составы, не а-ля паб? Тогда вдвойне интересней, как удается собраться, когда 6 человек на настолку невозможно чаще чем раз в полгода состыковать)
strb Автор
Команды, которые участвую в турнирах, имеют +- постоянные составы и нет таких ситуаций, как ты описал. Всё же люди ответственно к этому относятся
donRumatta
Очень рад за вас, без шуток)
opusmode
Вам не надо 10, вам глобально надо пару человек, которые делают разницу. Остальное можно и массой или ботами, их задача не портить картину.
Ну и плюс режим очень специфичен. Большинство бегает в UT, в rush сильно меньше (а он проще), а 11х11 почти энтузиасты. Залётных там не так много
Другой вопрос, что играют там прокачанными аватарами (болванчики не одинаковые, прокачка влияет на шанс ошибки, например) и не всегда статистика отражает стиль или скилл.
strb Автор
Учитывая ответственность, о которой я написал, как минимум в высших лигах не допускается особо играть не прокачанными
donRumatta
Спасибо за ликбез, никогда не сталкивался с этой вселенной)