Это обновление получилось не совсем обычным. Обычно мы приносим вам новые механики, технику и задания — и они здесь тоже есть, целых семь штук. Но главное в «Пятой симфонии» лежит под капотом.
За последние две недели мы заменили собственными разработками сразу четыре инструмента, на которых держался проект: лаунчер, защиту миссии и серверного аддона, сайт и — самое серьёзное — драйвер, через который игровой сервер разговаривает с базой данных. Всё это написано нами, под нашу задачу, и больше не зависит ни от чужих лицензий, ни от чужого желания что-то поддерживать.
Ниже — по порядку.
1. Свой лаунчер
Что это вообще такое
Лаунчер — это отдельная небольшая программа, которую вы запускаете вместо того, чтобы вручную возиться с ArmA 3, модами, мастерской Steam и TeamSpeak. Одно окно, одна кнопка «Запуск».
Раньше подключение к серверу выглядело так: найти нужные моды в мастерской, подписаться на каждый, дождаться загрузки, не перепутать версии, отдельно поставить TeamSpeak, отдельно найти и установить плагин рации TFAR, потом собрать всё это в стандартном лаунчере ArmA и надеяться, что ничего не забыл. Каждая ошибка на любом из этих шагов — это «не пускает на сервер», и дальше поход в Discord за помощью в и без того перегруженный чат технической поддержки (ребята, вы крутые).
Теперь всё это делает лаунчер.

Что он умеет
Сам находит игру. Лаунчер просматривает все библиотеки Steam на всех ваших дисках и сам находит Arma3_x64.exe. Если игра стоит в нестандартном месте — можно указать файл вручную, кнопка есть.
Берёт на себя моды. Лаунчер знает, какой набор модов сейчас нужен серверу, сравнивает его с тем, что у вас реально стоит, и показывает, чего не хватает. Список модов открывается прямо в лаунчере: каждый пункт — кнопка, ведущая на страницу мода в мастерской. Подписались — лаунчер сам находит скачанное Steam'ом (во всех библиотеках, на всех дисках), раскладывает по нужным папкам и проверяет, что мод на месте и не побит: папка существует, содержимое полное, идентификатор совпадает с нужным. Собирать список модов руками и импортировать пресет больше не надо.
Моды по-прежнему приходят из мастерской Steam — тут мы ничего не меняли. Лаунчер их не качает и не подписывает вас: подписка остаётся за вами, он лишь доводит дело до рабочего состояния и не пускает в бой с неполным набором.
Раздача модов напрямую с нашего сервера в лаунчере уже заложена — но пока не включена. Механизм готов и ждёт своего часа: у каждого файла в описи есть размер и контрольная сумма SHA-256, лаунчер считает суммы файлов на диске в несколько потоков, сам находит битый или недокачанный файл и перекачивает только его, а не весь мод целиком. Мы задействуем это, если понадобится — например, если мод не получится держать в мастерской или потребуется выдать срочную правку в обход Steam. Пока всё остаётся как есть, и качать вы будете из Steam.
Ставит TeamSpeak и плагин рации. Скачивает, устанавливает, кладёт плагин TFAR куда надо и показывает статус: версия TeamSpeak, стоит ли плагин. Перед запуском игры предупредит, если TeamSpeak не включён.
Показывает, что происходит на сервере. Прямо в окне: сколько человек онлайн, какая карта, сколько осталось до рестарта.
Обучение для новичков. При первом запуске лаунчер проводит по шагам: где игра, что качаем, зачем TeamSpeak, как подключиться. Пройти его заново можно в любой момент из настроек.
Обновляет сам себя. Вышла новая версия лаунчера — он её поставит сам, скачивать заново ничего не нужно.
Настройки запуска — по-человечески. Пропуск заставок, проверка подписей, BattlEye, гипертрединг, автоматическое подключение к серверу сразу при старте игры. Всё галочками, без ковыряния в параметрах командной строки.

Привязка Steam-аккаунта. Относится к той же будущей раздаче с нашего сервера: у привязанных аккаунтов выше лимит скорости скачивания. Пока моды идут из Steam, на скорость это не влияет — привязка просто заранее готова. Делается через сайт в один клик, пароль Steam лаунчер не видит и не запрашивает: вход проходит в браузере, на стороне Steam и сайта.
Полный сброс. Если что-то совсем разъехалось — одна кнопка возвращает лаунчер к состоянию «как при первом запуске». Установленные игры и скачанные моды при этом не удаляются.
Почему Windows показывает предупреждение
При первом запуске вы почти наверняка увидите синее окно: «Система Windows защитила ваш компьютер» и кнопку «Не выполнять». Это нормально, и вот почему.
Windows доверяет программам по двум признакам: подписана ли она платным сертификатом разработчика и сколько людей её уже безопасно запустили. Механизм называется SmartScreen.
Наш лаунчер — свежая программа. Сертификат для подписи, которому Windows доверяет сразу, стоит десятки тысяч рублей в год и выдаётся юридическому лицу — мы предпочитаем тратить эти деньги на сервер. А репутация нарабатывается только количеством запусков: чем больше людей запустит файл, тем быстрее предупреждение исчезнет само.
Поэтому SmartScreen говорит буквально следующее: «я эту программу раньше не видел». Не «она вредоносная», а «я её не знаю».
Что делать: нажмите «Подробнее», затем «Выполнить в любом случае». Один раз — дальше Windows запомнит.
Про антивирусы
Лаунчер не делает ничего, что антивирусу не понравится: он скачивает файлы, считает от них контрольные суммы и запускает игру. Никаких хитростей внутри нет.
Мы проверили итоговый файл Антивирусом Касперского (версия 21.26, антивирусные базы от 03.09.2026) — тем самым, который стоит у большинства из вас. Проверка разбирает установщик и смотрит всё, что внутри:
Проверено объектов: 1576
Обнаружено угроз: 0
Подозрительных: 0
Ошибок: 0
Ни одного срабатывания. Лаунчер спокойно работает с включённым антивирусом, добавлять его в исключения не нужно.
Для тех, кто хочет проверить сам — контрольная сумма файла на релизе обновления (она будет меняться с обновлениями, актуальную контрольную сумму всегда можно посмотреть на странице гайда "Как зайти на сервер" или получить её самостоятельно через команду в PowerShell):
SHA-256: d749bea2c44b105e01931153bedbcfb76240e111c74909d9149a961db0a68cd2
Её можно вбить на любом публичном сервисе проверки — например, на Kaspersky OpenTIP или VirusTotal — либо загрузить туда сам файл. Если скачанный вами файл даёт другую сумму — значит, он скачан не у нас, и запускать его не нужно.
Инструкция переписана
Страница «Как зайти на сервер» на сайте переписана под лаунчер. Раньше это были двадцать шагов со скриншотами: скачать пресет, положить на рабочий стол, импортировать в лаунчер ArmA, подписаться, потом одиннадцать шагов установки TeamSpeak и отдельно плагин рации. Теперь наверху короткий путь — скачать лаунчер, разрешить запуск, подписаться на моды по списку из самого лаунчера и нажать «Запуск». Прежняя ручная инструкция никуда не делась: она лежит там же, свёрнутая, — на случай если лаунчером пользоваться не хочется или что-то пошло не так.
2. Свой обфускатор
Что это такое
Обфускатор — это программа, которая превращает читаемый исходный код в работающий, но нечитаемый. Всё продолжает работать точно так же, но если кто-то вскроет файлы миссии, он увидит не аккуратный код с понятными названиями, а кашу из бессмысленных имён, разбросанных по случайным папкам.
Зачем это нам: миссия и серверный аддон RED — это без преувеличения тысячи часов работы. Файлы миссии физически попадают на компьютер каждого, кто заходит на сервер, — так устроена ArmA. Обфускация нужна, чтобы наш контент нельзя было просто взять и поставить у себя.
Почему это интересно само по себе
Инструментов такого класса для ArmA 3 на рынке буквально единицы. Все они — коммерческие, с платной лицензией, закрытым исходным кодом и, как правило, давно не развивающиеся: авторы выпустили продукт несколько лет назад и с тех пор к нему почти не возвращались. Мы пользовались одним из них — и упирались в его потолок каждый раз, когда хотелось что-то сделать по-своему.
Поэтому мы написали свой. Полностью: собственный упаковщик игровых архивов (PBO), собственный компилятор конфигов, собственный разборщик языка SQF, свой алгоритм сжатия, свою панель управления сборкой — и отдельно деобфускатор, которым мы проверяем собственную защиту на прочность.
Это, насколько нам известно, единственная живая разработка такого рода в русскоязычном сообществе ArmA 3, и она наша.
Что изменилось для вас: размер
Побочный, но очень приятный эффект собственного упаковщика — мы наконец смогли нормально сжимать содержимое. Цифры:
| Что | Было | Стало | Разница |
|---|---|---|---|
Миссия RED.pja310 | 1,12 МБ | 661 КБ | ≈ −41 % |
Серверный аддон RedServer | 1,90 МБ | 590 КБ | ≈ −69 % |
| Итого | 3,02 МБ | 1,22 МБ | ≈ −59 % |
Файл миссии сервер отдаёт каждому игроку при подключении. При полном сервере на 120 человек за один рестарт это было около 134 МБ только на раздачу миссии — теперь около 76 МБ. Меньше трафика, меньше нагрузки на канал сервера в самый неудобный момент (когда все заходят одновременно после рестарта), быстрее загрузка у вас и более стабильный игровой процесс в часы нагрузки с одновременным заходом игроков.
Серверный аддон стал легче больше чем втрое — это заметно при установке, при каждом обновлении и любом входе игрока на сервер.
3. Полный редизайн сайта
Сайт переписан визуально целиком. Новый стиль: тёмный фон с еле заметной сеткой, плоские панели без скруглений, красные уголки-кронштейны на активных блоках, моноширинные служебные подписи. Меньше украшательства, больше воздуха и читаемости — сайт военного проекта должен выглядеть как военный интерфейс, а не как витрина интернет-магазина.
Переработаны все разделы без исключения: главная, новости, каталог, чёрный рынок, ящики, личный кабинет, форум, публичные профили, подразделения, доска почёта, гайд и админ-панель.






В модальных окнах появились нормальные полосы прокрутки и пропала двойная прокрутка, ники в списках и на форуме стали кликабельными, а служебная карточка в личном кабинете переработана по композиции.
4. Свой драйвер подключения к базе данных
Это самая объёмная и самая сложная в реализации техническая часть обновления. Постараемся объяснить по-человечески, потому что для вас она значит больше, чем кажется.
Что это за файл и зачем он нужен
Вся ваша игровая жизнь хранится в базе данных: деньги, звание, гараж, арсенал, хранилище, подразделение, статистика, баны. База — это отдельная программа, которая живёт рядом с игровым сервером.
Сам движок ArmA 3 с базами данных работать не умеет. Совсем. Чтобы он мог, рядом с сервером кладут специальный файл — расширение, — который движок подгружает в себя и через который отдаёт команды базе. Это одна библиотека, RedExt_x64.dll, лежащая рядом с исполняемым файлом сервера.
Раньше эту роль выполняло стороннее расширение extDB3. Оно старое, написано не нами, давно не развивается и внутри устроено так, как в 2015 году было нормально, а сейчас — нет.
Теперь у нас своё, абсолютно уникальное, написанное на Rust — языке, который специально выбирают там, где программа не имеет права упасть.
Главное: почему сервер больше не подвисает
Вот суть проблемы, и она напрямую про то, что вы видите на экране.
Игровой сервер живёт кадрами — так же, как ваша игра. Он много раз в секунду пересчитывает весь мир: где кто стоит, куда летит пуля, что делает ИИ. Пока считается кадр, всё остальное ждёт.
extDB3 отправлял запрос в базу и ждал ответа прямо внутри кадра. Он не умел уступить очередь: получил задание — крутится на месте, пока база не ответит. Мы это измерили на настоящем сервере:
- один тяжёлый запрос — 35–79 миллисекунд полностью замершего сервера;
- один медленный запрос (база занята или подтормаживает) — 70–92 миллисекунды.
Кадр сервера при нормальной работе длится 10 миллисекунд. То есть один-единственный запрос к базе съедал от четырёх до девяти кадров подряд. А запросы редко приходят по одному: игрок заходит на сервер — это профиль, гараж, арсенал, хранилище, счётчики; открыл рынок — ещё пачка; массовая операция — десятки одновременно.
Вы это видели каждый день и, скорее всего, ругали интернет или свой компьютер:
- техника на секунду «залипает», а потом рывком оказывается в другом месте;
- ИИ дёргается и стреляет с задержкой;
- попадание засчитывается с опозданием;
- при заходе людей после рестарта сервер «дышит» рывками.
Это не был ваш пинг, а почти Arma3, или если точнее extDB3. Сервер каждый раз замирал, пока ждал базу.
Теперь запрос не задерживает кадр вообще. Игра отдаёт запрос расширению и сразу идёт считать мир дальше; запрос выполняют отдельные рабочие потоки, а ответ приходит, когда будет готов. Замеры в настоящем движке:
| extDB3 | RedExt | |
|---|---|---|
| Время внутри кадра сервера на один запрос | 35–92 мс | 0,001 мс (медиана), 0,02 мс для 99 % вызовов, максимум 0,12 мс |
| Кадров «съедено» одним тяжёлым запросом | 4–9 | 0 |
Разница в этом месте — четыре порядка. Не проценты, а в десятки тысяч раз.
Скорость
Там, где запросы идут пачкой (а это как раз вход игрока, гараж, ящики, сектора), новый слой выполняет их параллельно:
| Тип нагрузки | extDB3 | RedExt | Выигрыш |
|---|---|---|---|
| 50 тяжёлых запросов подряд | 1 751–3 960 мс | 184–215 мс | в 8–21 раз быстрее |
| 20 медленных запросов | 1 392–1 832 мс | 308–373 мс | в 4,5–5 раз быстрее |
На мелких дешёвых запросах, которые база отдаёт мгновенно, старый слой по общему времени отвечает даже быстрее — счёт идёт на доли миллисекунды, а кадр не страдает в обоих случаях, так что заметить это невозможно. Вся разница проявляется на тяжёлых и медленных запросах, то есть ровно там, где раньше сервер и замирал.
Что ещё чинится само собой
- Работа с новыми типами данных. extDB3 физически не умел читать один из типов колонок базы (
ENUM), и этим ограничивал удобство работы с базой, изменение исключительно внутреннее и вам не заметное, но всё же. - Текст в базе больше не ломает запросы. У extDB3 была злая особенность: если в текстовой колонке лежал обычный человеческий текст (например, описание лота на рынке), разбор ответа мог падать и пропадал весь результат запроса, а не одна ячейка.
- Числа пишутся точно. Вот об этом — отдельно, ниже, потому что это то самое «у меня неправильно показываются деньги».
Надёжность
Расширение написано так, что оно не имеет права уронить сервер: любая внутренняя ошибка ловится и превращается в аккуратный код ошибки, а не в падение процесса.
Проверяли долго:
- два часа непрерывной нагрузки по профилю полного сервера на 120 игроков: 29 339 разноплановых по сложности и скорости запросов, 0 ошибок, расход памяти около 25 МБ и без роста;
- сверка со старым слоем: 90 реальных запросов игрового кода прогнали одновременно через extDB3 и через новый слой в две одинаковые копии боевой базы, а потом сравнили одиннадцать затронутых таблиц по контрольным суммам. Разошедшихся таблиц — ноль. То есть новый слой приводит базу ровно в то же состояние, что и старый;
- обход всех 166 таблиц боевой базы — ошибок нет;
- отдельный тест конкурентной записи: 500 записей и 100 чтений пачкой, без пауз — счётчик сошёлся ровно, ни одной потерянной или задвоенной записи.
Честное предупреждение
Разработка свежая. Она протестирована так тщательно, как мы вообще умеем — но это первый выход в бой на живом сервере с живыми людьми, а живые люди всегда находят то, что не находит тест.
Если увидите странность с деньгами, гаражом, арсеналом, хранилищем или сохранением персонажа — пожалуйста, сразу пишите в техподдержку, с временем и описанием, что делали. Мы держим руку на пульсе и в состоянии откатиться на старый слой в любой момент. Логи мы теперь пишем подробно — по вашему сообщению мы увидим ровно тот запрос, который сломался.
5. Большие суммы отображаются и сохраняются правильно
Отдельным пунктом, потому что это заметит каждый, у кого на счету больше миллиона.
В языке ArmA есть неприятная особенность: при переводе числа в текст он оставляет только шесть значащих цифр и дальше уходит в научную запись. Число 1 656 437 превращалось в 1.65644e+06. Именно это вы видели в банкомате и планшете вместо баланса.
Хуже, что то же самое происходило при записи в базу: в базу ложилось 1 656 440 вместо 1 656 437. Деньги тихо округлялись.
Исправлено во всех местах сразу: баланс счёта, наличные, касса подразделения, цены на рынке, сроки банов и заключения. Теперь и на экране, и в базе — точное значение до единицы.
6. Новые механики
«Язык» ДРГ: пленный офицер, допрос и схрон
Квест «Поиск и уничтожение ДРГ» перестал быть «приехал, всех положил, уехал».
Как это работает. С шансом 75 % в составе диверсионной группы противника есть офицер. Он не участвует в бою и не входит в счёт выполнения квеста. Как только боевая часть группы уничтожена, а офицер жив — он бросает оружие и сдаётся в плен, о чём человеку, взявшему квест, приходит уведомление.
Дальше начинается самое интересное:
- Связать пленного (взаимодействие ACE, нужна стяжка
ACE_CableTie). - Довезти живым — можно погрузить в транспорт. Мёртвый или без сознания пленный бесполезен.
- Доставить либо к точке конвоирования у комендатуры (та же, через которую отправляют на губу, радиус 20 м), либо к развёрнутому полевому штабу (радиус 45 м).
- Допросить. Право допроса есть у ВП, ФСБ и командира операции — это их эксклюзивный боевой контур. Допрос длится 20 секунд, всё это время нужно стоять неподвижно рядом с пленным.
Пленный колется не всегда. Базовый шанс разговорить его — 60 %. Молчун не теряется: через 10 минут его можно допросить снова, любым дознавателем. За успешный допрос допросивший получает премию 150 $.
Что даёт успешный допрос. На карте появляется отметка схрона ДРГ — только у того, кто допрашивал (дальше уже ваша игра: передать координаты по рации, собрать группу). Схрон стоит в лесу, в 2,5–6 км от места допроса, и его охраняют 6 бойцов. В одиночку туда лучше не ездить.
Схрон — это не конец. Помимо груза, в ящике лежат документы ДРГ. Действие «Изучить документы» занимает 5 секунд, документы одноразовые. С шансом 60 % они вскрывают полевой лагерь группы — он дальше (3–8 км от схрона), жирнее и охраняется 12 бойцами двумя патрулями: ближним у ящика и дальним по периметру. Координаты лагеря получает только тот, кто изучал документы.
Навык «Дознаватель». Новый навык, качается допросами пленных и изучением документов противника. Поднимает и шанс разговорить пленного, и шанс вскрыть лагерь по документам с 60 % до 100 %. Каждая попытка — даже неудачная — качает навык.
Что там лежит. Гарантированных позиций нет. Наполнение случайное из нескольких пулов: препараты, медицина ACE, взрывчатка и гранаты, гранатомёты и редкие предметы Зоны — оружие, рюкзаки, магазины, снаряжение. Схрон отдаёт 4–8 разных позиций, лагерь — 7–12. Пул может не выпасть вовсе, количество каждой позиции тоже случайное.
Тайминги: язык живёт 90 минут, схрон — 90 минут, лагерь — 2 часа. Если рядом нет игроков, противник их «вывозит».
Смысл механики простой: в бою у вас теперь есть выбор. Положить всех и забрать обычную награду за квест — или рискнуть, взять офицера живым, устроить логистическую мини-операцию с конвоем и получить сверху охраняемый схрон, а с удачей — и целый лагерь.
Боевое дежурство подразделения
Фоновые атаки противника на захваченные флаги превратились из шума в события с началом, боем и результатом.
Как заступить. Командир или заместитель подразделения ВС РФ открывает планшет → меню подразделения → «Боевое дежурство» → «Заступить». Дежурит одно подразделение единовременно. Всем игрокам приходит оповещение, событие попадает в «Сводки».
Как это выглядит в бою. Когда противник готовит налёт, на базе включается сирена, а бойцы дежурного подразделения получают красный приказ с районом и квадратом. От объявления до подхода противника — 7–8 минут: время собраться, выехать и занять оборону.
Награда. Считается участие: суммарно не меньше 2 минут в радиусе 600 м от флага за время боя.
- любому, кто оборонял флаг — 75 $;
- бойцу дежурного подразделения — 150 $ (двойная ставка);
- плюс дежурным оплачивается пост на КПП с множителем ×2.
Налёт засчитывается отражённым, когда пехота противника у флага уничтожена, а флаг удержан. Если противник вернул флаг — выплат нет, и сторона теряет надбавку к зарплате за этот флаг.
Дежурство — это обязанность, а не почётный статус. Если бой у флага состоялся, а ни один боец дежурного подразделения не отработал минимальные 2 минуты — это неявка:
- подразделение немедленно снимается с дежурства с публичным оповещением и записью в «Сводки»;
- от командования в отношении подразделения могут последовать соответствующие санкции;
- заступить снова можно только через 30 минут;
- если при этом флаг был потерян — из кассы подразделения удерживается штраф 500 $.
Если атака закрылась без боестолкновения — неявка не засчитывается. Ставка фиксируется в момент объявления тревоги: заступить посреди налёта ради двойной оплаты не выйдет.
Механика заточена под подразделение, которое в этот вечер «на хозяйстве»: оно закрывает и КПП, и тревоги, и внутренняя служба перестаёт быть скучной.
Заодно починили наземную поддержку с чекпоинта НАТО: раньше бронетехника противника при налётах на флаги из-за ошибки в скрипте так и оставалась на месте появления. Теперь БМП и БТР доезжают до флага — учитывайте это при обороне.
Лента новостей «Сводки»
В планшете появился раздел «Сводки» — лента событий сервера за последнюю неделю. Это не чат и не объявления администрации: это то, что сервер пишет о себе сам.
Что туда попадает: захват и потеря флагов (с именем отличившегося), присвоение званий, итоги турниров, крупные сделки на торговой площадке (от 1 500 $), развёртывание полевого штаба, выбросы в Зоне, успешные допросы пленных ДРГ, вскрытые лагеря, заступления на боевое дежурство, отражённые налёты и неявки по тревоге, и все динамические события мира.
Как устроено: записи хранятся 7 дней, в планшет отдаются 60 последних. Каждый тип события имеет несколько вариантов формулировки, и вариант выбирается устойчиво. Координаты схронов в сводки не попадают: разведданные — дело того, кто их добыл.
Смысл — общая память сервера. Зашли после перерыва, открыли планшет и за минуту поняли, что происходило: кто взял флаги, кого повысили, куда прилетело, что потеряли.
Динамические события мира
Между ивентами мир теперь живёт сам. Сервер время от времени объявляет происшествие — оно одно на весь сервер, его нельзя «взять в очередь», и достаётся оно тем, кто первым собрался и выехал.
Сбитый транспортник. В «Сводках» — точный квадрат крушения. На месте горящий остов, охрана из уцелевшего экипажа и 2–4 ящика МТО по 60 ОС каждый. Охрану уничтожить, ящики вывезти на полевой штаб либо на базу для ускоренного предварительного развёртывания после установки ПШ.
Колонна снабжения противника. Разведка даёт квадрат выхода и направление. Колонна идёт по дорогам — её нужно перехватить. На месте разгрома появляется трофейный ящик с тем, что противник вёз: либо прекурсоры и ёмкости для химкрафта, либо компоненты крафта, включая промежуточные — то, что иначе пришлось бы покупать или собирать самому. По магазинным ценам груз обычной колонны тянет на 1 500–2 000 $. Набор случайный, гарантированных позиций нет. Каждая четвёртая колонна — «жирная»: везёт дорогие промежуточные компоненты примерно на 6 000 $. Не остановили — колонна дошла, и в сводках фиксируется неудача.
Аварийный сброс. Контейнер снабжения спускается на парашюте с дымовым маркером. Квадрат объявляется всем сторонам, включая сопротивление. Кто первым дошёл и удержал точку — того и груз. Внутри — только редкое из Зоны, и контейнер тематический: либо препараты, либо оружие, патроны и прицелы. Каждый четвёртый сброс — «жирный»: больше оружия плюс редкие предметы Зоны — приборы ночного видения, тепловизоры, глушители, редкие препараты, а иногда и редкий рюкзак.
Разведгруппа у базы — и вот тут внимательнее.
Противник проводит разведку окрестностей базы ВС РФ. В «Сводках» — только ориентировочный квадрат: группу нужно искать, прочёсывая зелёнку. Разведчики не атакуют базу, но отстреливаются при обнаружении. В составе группы есть офицер — взятый живым, он проходит всю цепочку «языка» со схроном.
Если сводку проигнорировать, будет плохо. При онлайне (больше 10 человек на сервере и не меньше 5 в периметре базы в момент появления группы) разведчики не уходят по обычному таймеру — они ведут наблюдение до 45–60 минут. Если за это время группу не уничтожили, противник по её данным атакует базу:
- от чекпоинта НАТО выходит бронеколонна с десантом;
- с базы США поднимаются вертолёты с десантом и ударные вертолёты;
- состав растёт с онлайном: до 15 игроков — одна машина, один десантный борт и один ударный вертолёт; 16–30 — две машины, два десантных борта и один ударный; от 31 — три машины, три десантных борта и два ударных вертолёта.
Начало наступления объявляется всем: запись в «Сводках», уведомление, сирена боевой тревоги на базе, дежурному подразделению — приказ на оборону. Первая цель противника — граница периметра со стороны чекпоинта; через 15 минут уцелевшие силы идут на штурм самого расположения. Атака считается отражённой, когда наземные силы противника уничтожены; если гарнизон держится долго, противник отходит сам.
Судьба офицера на это не влияет — его можно и нужно брать в плен. Значение имеет только одно: уничтожена ли разведгруппа вовремя. Уничтожили — удара не будет вообще.
Общие правила событий: первое — не раньше 25 минут после старта сервера, минимальный онлайн 8 человек, пауза между событиями не меньше 20 минут, каждый тип повторяется не чаще раза в 60–90 минут, время жизни события 40–45 минут. Ивентолог может остановить запуск новых событий перед крупным ивентом.
Касса подразделения и покупка очков снабжения
У подразделений появился собственный денежный фонд.
Взнос делается у банкомата: в меню под основной панелью появился блок «Фонд подразделения» с полем суммы. Внести может любой боец подразделения, минимум 50 $. Взнос безвозвратный — вывести деньги из фонда в кошелёк нельзя никак. Это сделано намеренно: иначе фонд превратился бы в сейф «спрятать деньги от потери 5 % при смерти».
Тратить может только командир подразделения (не заместитель) и только при развёрнутом полевом штабе: планшет → меню отделения → «Передать в ОС штаба». Курс — 35 $ = 1 очко снабжения, лимит 1000 ОС на подразделение за сессию (сбрасывается рестартом).
Зачем это нужно. Личные деньги ветеранов наконец получают командный смысл: «копим на операцию». Командир подразделения получает бюджетную роль и решение с ценой — когда влить фонд в операцию. КМДО получает источник ОС, который готовят заранее, до ивента. Для экономики сервера это чистый сток: деньги уходят из игры безвозвратно.
Ориентир по балансу: ящик МТО даёт 80 ОС за конвой, деньгами тот же объём стоит 2 800 $. Деньги дополняют логистику, а не заменяют её.
Модуль «Назначить языком» для ивентологов
В дереве модулей Zeus появился раздел Rising Sun → «Назначить языком».
Ивентолог ставит модуль на любого ИИ-юнита ивента — открывается окно ввода «Показания пленного». Вписанный текст — это ровно то, что услышит игрок, который возьмёт этого юнита в плен и допросит. Сервер ничего не генерирует и не дополняет.
Дальше всё идёт по общей схеме: юнит сдаётся штатным модулем ZEN «Капитуляция», его связывают, конвоируют к комендатуре или ПШ и допрашивают. Разница только в результате: вместо схрона допросивший получает дословный текст показаний на экране и копию в дневнике карты (Карта → Записи), чтобы его можно было перечитать и передать по команде.
Модуль можно применить к тому же юниту повторно — текст откроется для редактирования, а пустое поле снимает пометку «язык». Игрока языком назначить нельзя.
Проще говоря: у ивентологов появился способ выдать сюжетную информацию через живого пленного, а не текстом в чат. Хотите, чтобы игроки узнали координаты, пароль или замысел противника — сделайте так, чтобы им пришлось довезти пленного до комендатуры.
Взрывчатка в заданиях полевого штаба
Задание «Подорвите технику в укрепрайоне противника» принимало только два вида зарядов из всех, что есть в игре, — и молча отказывалось работать со всеми остальными. Игроки приезжали на охраняемый укрепрайон с полным рюкзаком взрывчатки и не могли выполнить задание.
Теперь список зарядов единый с заданием «Подрыв снабжения» и включает ТМ-100, ТМ-200, ТМ-500, СВУ и ЭШ-200/400 наравне с ранцевым и подрывным зарядом. А если заряд всё-таки не подходит — игра честно об этом скажет, а не промолчит.
7. Discord-бот переписан с нуля
Бот, который жил одним большим файлом и десятком !-команд, разобран на 18 самостоятельных модулей. Каждый можно включить и выключить отдельно, каждый настраивается — и всё это из панели администратора прямо на сайте, без правки файлов и перезапуска бота.
Что бот теперь умеет:
Порядок в чатах
- Анти-флуд и защита от взлома. Главный сценарий: угнанный аккаунт рассылает одно и то же сообщение по всем каналам. Бот держит скользящее окно сообщений каждого пользователя, ловит рассылку, мгновенно выдаёт тайм-аут, удаляет все копии и присылает администрации карточку с кнопками «Забанить» / «Снять».
- Авто-модерация: запрещённые слова, чужие Discord-инвайты, ссылки вне белого списка, капс, флуд упоминаниями. Нарушения копятся, при накоплении за сутки — автоматический тайм-аут.
- Правила каналов: тонкая настройка для каждого канала отдельно — «текст только в ветки», «только чтение», запрет ссылок, изображений, видео, файлов, стикеров, обязательное медиа для галерей. Ссылки на YouTube, Rutube, VK Видео и Twitch считаются видео, а не ссылками.
- Контроль никнеймов: серверный ник обязан быть в форме «Фамилия И.О.» русскими буквами, сотрудникам СпН разрешён позывной одним словом. Без правильного ника недоступны каналы и команды бота, а в личку приходит инструкция.
- Команды модерации:
/warn,/mute,/unmute,/kick,/ban,/unban,/history— с полной историей наказаний по каждому.
Связь с игрой
- Привязка аккаунта —
/привязкас ключом из профиля на сайте. Ответ скрытый, ключ никто, кроме вас, не видит. - Синхронизация ролей —
/роли: роль подразделения, командира, заместителя, Zeus. Если одну роль изменить не удалось, остальные всё равно применяются, а вы получаете список того, что не вышло, вместо общего отказа. - Контроль ролей подразделений. Боец, числящийся в подразделении, обязан быть на Discord-сервере с ролью своего подразделения — и без чужих. Нарушители получают игровой бан до исправления, командованию подразделения уходит уведомление. Ручные баны администрации при этом не перекрываются.
- Статусы и награды. Донат-статусы (RED Supporter → Sponsor → Investor → Main Investor) и наградные («Почётный игрок», «RED Team») выдаются и заменяются автоматически, а на сайте вас ждёт плашка-поздравление.
- Справка по подразделениям —
/отделениеи/отделенияс составом прямо из базы.
Служебное
- Мониторинг игрового сервера: статус, онлайн и карта в выделенном канале, обновление каждые 15 секунд.
- Журнал событий: удалённые и изменённые сообщения, входы и выходы, баны, смены ников и ролей — видно и в лог-канале, и в панели на сайте.
- Отчёты по онлайну подразделений в XLSX — ежедневно по расписанию и вручную командой
/отчет. - Приветствие новичка, пост с правилами и кнопка выдачи роли после принятия.
- Техподдержка: контроль шаблона заявок и автосоздание тредов.
Под капотом: секреты вынесены из кода, соединения с базой идут через пул, все !-команды заменены слэш-командами (старые отвечают подсказкой, какой командой пользоваться теперь), а сам бот шлёт в базу сигнал «я жив», чтобы панель на сайте показывала его состояние честно.
Заключение
«Пятая симфония» — обновление не столько про контент, сколько про фундамент.
Мы могли бы за эти две недели выкатить пять новых заданий и четыре новых ящика — это было бы проще, быстрее и заметнее. Вместо этого мы переписали то, на чём проект стоит: собственный лаунчер вместо ручной возни с модами, собственная защита контента вместо чужой платной лицензии, собственный сайт вместо накопившегося визуального хаоса и — главное — собственный драйвер базы данных на Rust вместо расширения, которое замораживало сервер до 80–90 миллисекунд на каждый тяжёлый запрос.
Скажем прямо: технической базы такого уровня нет практически ни у одного проекта на ArmA 3. Не потому что мы умнее — а потому что это долго, дорого по времени (а если говорить прямо, то и по денежным средствам) и совершенно не видно в первый вечер. Зато видно во второй месяц: когда сервер не дёргается на полном онлайне, когда моды ставятся одной кнопкой, когда на игровой сервер вы заходите в несколько раз быстрее.
Мы это сделали, потому что дальше запланированы вещи, которые на старом фундаменте просто не поехали бы. Следующие обновления будут ещё серьёзнее и комплекснее — и направлены они на то, ради чего всё это затевалось: максимально необычный, живой и непредсказуемый игровой опыт, которого больше нигде нет. Этим RED всегда выделялся на фоне других проектов, так будет и впредь.
Спасибо, что играете с нами.
Оставайтесь на связи, с вами была команда RED.
02 Комментарии 4
Войди через Steam, чтобы оставить комментарий.