Дневники разработчиков: Состояние проекта
Мы хотим открыто поговорить о тех вызовах, с которыми сталкивается проект, и о том, как мы подходим к их решению. Наша цель – дать вам более ясное представление о том, что происходит “за кулисами”, какие проблемы мы уже выявили и какие шаги предпринимаем, чтобы их устранить.
В этих заметках мы сосредоточились на трех ключевых направлениях, критически важных для здоровья многопользовательской игры: проблема ливеров, борьба с читерством и система матчмейкинга. Каждое из этих направлений напрямую влияет на игровой опыт и требует особого подхода.
Часть I. Проблема ливеров
Broken Arrow – командная игра, и отсутствие игроков в команде серьезно снижает ее шансы на успех. Причины обычно сводятся к двум категориям:
- Технические факторы
Иногда игроки не могут подключиться к серверу в начале матча, и система их просто не регистрирует. Причин этому может быть множество, и мы постоянно их выявляем и исправляем. В других случаях игрок может потерять соединение уже во время матча, а кнопка “Переподключиться” не появляется. Эта ошибка будет исправлена в патче 1.0.10. До его выхода временным решением может быть перезапуск игры для обновления соединения.
- Выход из игры
Отсутствие упорства
Некоторые игроки покидают матч слишком рано: одни – из-за эгоизма, не думая о товарищах, другие – после первой неудачи, хотя шанс на победу еще остается. Но в командной игре ситуация всегда может измениться: если на одном участке карты дела идут плохо, то на другом у союзников может быть преимущество. Режим игры специально спроектирован так, чтобы ранние ошибки не решали исход матча, а каждая фаза давала возможность отыграться.
Эффект лавины
Уход одного игрока часто запускает цепную реакцию и остальные тоже выходят. Но дисконнект не всегда означает, что игрок покинул игру навсегда: это может быть временная проблема, и он вернется. У игроков есть 5 минут на переподключение, а оставшейся команде компенсируется недостаток численности дополнительным доходом, что позволяет продолжать сражение даже в формате 4х5.
Несбалансированные команды
Слишком односторонние бои не приносят удовольствия и не дают возможности чему-то научиться. Мы уже внесли изменения в матчмейкер: допустимая разница в рейтинге ELO теперь увеличивается медленнее, а также введено ограничение на максимальный разброс. Это повышает вероятность сбалансированных матчей, пусть и ценой немного более долгого ожидания, если в вашей рейтинговой зоне мало игроков.
План по улучшению
Голосование за капитуляцию и наказания за преждевременный выход из матча
Эти функции появятся в патче 1.0.10. Мы осторожно подходим к системе наказаний и не хотим штрафовать игроков в тех случаях, когда они покидают матч не по своей вине. После выхода обновления появится кнопка “Сдаться” и специальный значок в меню списка игроков.



Если команда проголосует за капитуляцию, матч завершится поражением, а игроки увидят статистику и результаты боя, как обычно. Те, кто покидает матч без голосования и не возвращается, будут считаться дезертирами и временно лишатся возможности искать новые игры.
Диагностика
На момент запуска у нас не было всех вспомогательных инструментов, необходимых для полноценного анализа проблем, с которыми сталкиваются игроки. С тех пор мы последовательно работаем над их созданием и укрепляем технический фундамент проекта.
Понимаем, что со стороны это может быть не так заметно, и иногда складывается впечатление, будто ничего не происходит. Но в перспективе это позволит нам гораздо быстрее и эффективнее реагировать на любые сложности, с которыми мы можем столкнуться.
Часть II. Борьба с читерством
Справедливость – основа любого онлайн-проекта. Читы подрывают доверие, и мы боремся с этим сразу на нескольких уровнях.
Перенос логики на сервер
Ключевая часть нашего подхода – постепенный перенос все большего объема игровой логики с клиентской стороны на сервер. Процесс этот непростой, но крайне важный: чем больше полномочий у сервера, тем меньше остается возможностей для вмешательства на стороне клиента. С каждым шагом в этом направлении мы сокращаем пространство для читов, и со временем низкоуровневые манипуляции станут практически невозможными.
Подобное решение трудно реализовать в динамичных шутерах от первого лица, где критически важна мгновенная реакция на действия игрока и точная регистрация попаданий. Но в жанре RTS этот подход гораздо более реалистичен, и мы намерены использовать его в полной мере.
Комбинация внутренних и внешних решений
Помимо разработки собственных серверных механизмов защиты, мы также работаем над интеграцией сторонней античит-системы. Такое сочетание позволяет перекрывать большее число потенциальных уязвимостей. Внешние инструменты дополняют внутренние решения, делая систему в целом надежнее и значительно усложняя жизнь тем, кто пытается использовать читы.
Мониторинг и анализ логов
Еще одна основа нашей стратегии борьбы с читами – систематический сбор и анализ логов каждого многопользовательского матча. Даже если нарушитель не выявлен и не заблокирован сразу, собранные данные помогают выявлять подозрительную активность и принимать меры позже. Это создает долговременную “страховку”, снижающую вероятность того, что постоянные злоупотребления останутся незамеченными.
Античит – это процесс
Важно подчеркнуть: работу над античитом нельзя считать завершенной раз и навсегда. Это непрерывный, развивающийся процесс, в котором мы адаптируемся к новым методам обхода правил по мере их появления. Несмотря на это, результаты уже есть: на сегодняшний день заблокировано более 8 000 читеров, а каждое улучшение делает игровую среду более честной и сбалансированной.
Исправление ошибок, похожих на читы
Некоторые ошибки синхронизации могут выглядеть как читерство – например, если юнит для двух разных игроков оказывается в разных местах. В такие моменты оба могут подумать, что соперник жульничает. Когда сервер выявляет подобную рассинхронизацию, он корректирует положение юнита, из-за чего тот стремительно перемещается по карте.
Исправление большинства таких ошибок в патче 1.0.10 поможет снизить у игроков впечатление, что в каждом матче непременно присутствует читер.
Часть III. Матчмейкинг
Хороший матчмейкинг – основа честного мультиплеера: быстрый поиск соперников равного уровня и с хорошим соединением.
Алгоритм матчмейкинга
Наша система подбора соперников основана на алгоритме ELO. Это простой, но проверенный временем способ оценки уровня игроков. Как и любая рейтинговая система, он создан для того, чтобы сводить между собой соперников с близкими навыками и делать матчи более захватывающими, чем при случайном подборе команд. Однако у этой системы есть свои ограничения, и мы работаем над их решением.
Проблемы рейтинга ELO
Первая из них – инфляция. Очки ELO обмениваются между игроками в зависимости от побед и поражений. Но так как каждый новый игрок начинает с определенного количества очков, их общий объем в системе со временем увеличивается, как в экономике при печати новых денег.
Частично этот эффект уравновешивается тем, что очки уходят вместе с теми, кто перестает играть. Однако в целом это может приводить к периодам как инфляции, так и дефляции, в зависимости от того, сколько игроков приходит в игру и сколько уходит.
Ещё одно ограничение связано с отсутствием деградации рейтинга ELO. Это означает, что игроки, сделавшие долгий перерыв, сохраняют свой прежний рейтинг, даже если их уровень игры после паузы может измениться.
Кроме того, система учитывает только историю побед и поражений, но не анализирует индивидуальные показатели игрока в каждом матче. По сути, рейтинг игрока отражает не только его собственный вклад, но и усредненный результат тех, с кем он чаще всего играет.
Эти два фактора могут приводить к менее точному подбору соперников. Однако проблема сглаживается, если игроки продолжают регулярно играть, не зацикливаясь на рейтинге: после нескольких матчей система сама корректирует неточности.
Психологический барьер
И здесь мы подходим к самой сложной проблеме, которая носит не технический, а психологический характер. Игроки крайне не любят видеть, как их рейтинг снижается. Для многих он превращается в некое “сокровище”, гору золотых монет, которую хочется оберегать, как дракон из сказки.
В итоге они всеми силами стараются избежать потери очков: уходят от сложных матчей, отказываются играть с более слабыми союзниками или даже вовсе прекращают играть, лишь бы не допустить поражения. Но все это сводит на нет истинное назначение рейтинговой системы – делать матчи интересными и динамичными.
Это наглядный пример закона Гудхарта: инструмент измерения превращается в самоцель, и игроки начинают ценить виртуальные цифры выше, чем реальное удовольствие от игры.
За пределами навыка: балансировка задержки и групп
Навык игрока – лишь одна составляющая матчмейкинга. Чтобы обеспечить честный и плавный игровой процесс, система также учитывает дополнительные параметры.
Среди них:
- Средний рейтинг группы (Average party ELO): когда игроки объединяются в команду, система учитывает их суммарный рейтинг, а не оценивает каждого отдельно.
- Средняя задержка группы (Average party latency): матчмейкинг также оценивает качество соединения всех участников и старается разместить матч на сервере с минимальной задержкой для обеих команд. Это особенно важно для стабильной игры на разных территориях.
Балансировка этих факторов позволяет игрокам не только встречаться с соперниками равного уровня, но и получать наилучшие технические условия для игры.
Баланс скорости и справедливости
Любая система матчмейкинга – это компромисс между скоростью поиска и точностью подбора. Нашей целью является обеспечение быстрого поиска матчей для игроков, одновременно сохраняя их честность и баланс. Мы с гордостью отмечаем, что 90% игроков находят матч менее чем за одну минуту, что является беспрецедентным показателем для жанра стратегий и военных игр.
Выбор игрового сервера и подключение
В долгосрочной перспективе мы планируем внедрить функцию выбора сервера, чтобы игроки могли выбирать оптимальные по подключению серверы (ориентировочное время разработки более 3 месяцев). Пока эта функция разрабатывается, мы продолжаем совершенствовать алгоритм подбора серверов, чтобы матчи проводились на серверах с минимальной задержкой для всех участников.
Взгляд в будущее
Мы продолжим совершенствовать систему матчмейкинга, решая указанные выше задачи. Хочется сделать каждый матч не только быстрым для поиска, но и максимально честным и конкурентным.
Ретроспектива после релиза
После выхода игры наша команда перешла в режим, который мы часто называем “тушение пожаров” – мы решали самые срочные проблемы как можно быстрее, чтобы стабилизировать игру. Этот этап оставлял мало времени для глубокого анализа, но был необходим, чтобы игроки могли продолжать играть без серьезных перебоев.
Когда самые острые вопросы были решены, мы переключились на долгосрочные улучшения и более глубокое изучение проблем. Снаружи это может казаться медленным процессом, но он крайне важен для стабильности игры и для создания прочного фундамента, на котором игра сможет развиваться.
На момент запуска наша команда была небольшой. Благодаря поддержке сообщества мы смогли расширить команду и привлечь новых специалистов. Процесс интеграции новых сотрудников требует времени, иногда до двух месяцев, прежде чем их работа отразится в живой версии игры. Однако эти инвестиции позволяют нам обеспечивать более качественные и устойчивые улучшения в долгосрочной перспективе.
Заключение
Надеемся, что этот подробный материал помог вам лучше понять, как мы решаем три главные задачи Broken Arrow: уход игроков из матчей, борьбу с читерами и систему подбора матчей. Ни одна из этих проблем не имеет быстрых или окончательных решений, но с каждым шагом мы движемся к прогрессу.
Мы будем продолжать делиться с вами обновлениями, чтобы рассказать не только о наших достижениях, но и о сложностях, с которыми мы сталкиваемся. Помимо этого, мы представим дорожную карту, демонстрирующую наше видение развития проекта на ближайший год.
Осознание того, что так много из вас глубоко интересуются игрой, имеет огромное значение для нас, и мы бесконечно благодарны, что вы идете вместе с нами в этом пути.
