Трёхмерная сцена: ти DDNet стоит на платформе у фризовой ямы, вокруг него варианты движения: бег, прыжок, хук. Опасные уходят во фриз и отбрасываются, выбран хук по сопернику.
Автономный бот для блока в DDNet
Каждое решение просчитано в физике игры
25 раз в секунду бот просчитывает около 45 вариантов на полсекунды вперёд: бег, прыжки, хук и молот. Играет тот, что лучше по оценке: соперник ближе к фризу, сам бот дальше от него.
Карта Copy Love Box. Бот здесь nameless tee, двое других тестовые соперники.
Без звука
Одно решение каждые 40 мс
Пять шагов в физике DDNet 20, перенесённой из исходников игры.
невозможенво фризгодитсявыбран25 решений в секунду
01
Наблюдение
Позиции, скорости и хуки всех рядом, фриз и стены, за которые цепляется хук. Сначала мир прокручивается вперёд на пинг самого бота.
02
Симуляция
Каждый вариант просчитывается на 27 тиков вперёд, это 0,54 с: куда бежать, когда прыгать, куда кидать хук, когда бить молотом.
03
Оценка
Каждый вариант получает оценку: плюс, если соперник у фриза или во фризе, минус, если туда попадает сам бот. Свой фриз весит в полтора раза больше чужого.
04
Действие
Первый шаг лучшего варианта уходит на сервер как обычный ввод клиента. Перед отправкой бот проверяет, что после него ещё можно остановиться или выпрыгнуть.
05
Повтор
Через 2 тика сервера всё заново. Прошлый план служит отправной точкой.
Что бот делает и как им управлять
По умолчанию бот дерётся со всеми рядом, кроме тимы, игнора и тех, кто стоит на месте дольше 10 секунд.
Бой
Кидает хук с дистанции и держит захват
Тащит соперника к фризу и кидает замороженных во фриз, пока они не оттаяли
Отличает запертого во фризе от того, кто оттает через 3 с, и сразу переходит к следующему
Не выбивает молотом замороженных из фриза: удар молота размораживает
Выбирает цель по угрозе: чей хук на нём, кто бил, кто приближается, до кого можно дойти
Выживание
Перед каждым нажатием проверяет, что путь назад от фриза остаётся
Бережёт второй прыжок рядом с фризом
Не дёргается туда-сюда у края фриза
Помнит, где замерзал на каждой карте
Учитывает собственный пинг
Застрял во фризе и никто не спасает: /kill
Автоматика
С пустым полем сервера сам заходит на самый живой блок-сервер без пароля
Уходит, когда сервер пустеет
Если рядом не с кем драться, идёт туда, где играют, по пути без фриза
Окно перезапускает бота, если он упал, и сообщает об отключениях
Обновляется сам при запуске и каждые пять минут
Режимы
ВБ на Copy Love Box: держит вейблок один, кидает входящих во фриз и отбирает его у держащих
Дуэль 1 на 1: включается сама, когда бот принял дуэль; счёт виден во время дуэли, а все дуэли с итогом во вкладке «Записи»
Второй бот (дамми) на том же сервере, в тиме с первым и на своём ядре
Тима: бот её не трогает, первым бьёт того, кто лезет к другу, и выбивает друга молотом из фриза
Автоматический чат: строка раз в N секунд, ответ на ник бота, ответы на слова, например «дуэль» → /accept
Управление
Кнопки «тима», «вар» и «игнор» у каждого игрока
Пауза из любой программы: Ctrl+Shift+F9
F3 / F4 в окне: бот голосует «за» / «против» в идущем голосовании
Запуск вместе с Windows, сразу в трей
Записи опасных моментов вместе с тем, что ожидал план
Команды: !mode, !wb, !duel, !target, !goto и другие
Команды бота
Пишутся в строке команд окна или в консоли и в чат игры не уходят. Клик по команде копирует её.
Игра и список серверов в одном окне
Можно смотреть, как он играет, не заходя на сервер самому.
Карта, скины, хук и молот как в клиенте
Сервера DDNet с поиском по карте и нику, «Играть здесь»
Табло, лента заморозок, пинг
Мини-окно поверх всех окон
Одно решение в цифрах
между решениями, это 2 тика сервера
40мс
вариантов в каждом решении
~45
вперёд в каждом варианте, это 0,54 с
27тиков
на весь перебор, не больше
18мс
Число вариантов это медиана по журналам решений с живого сервера. Остальное взято из кода бота.
Что нового
Бот обновляется сам, пока играет. Последние версии:
У exe пока нет цифровой подписи, поэтому при первом запуске Windows SmartScreen может предупредить. Нажми «Подробнее», затем «Выполнить в любом случае». Исходный код открыт для просмотра на GitHub.
Linux и macOS: поставь Node.js 24 и запусти ./run.sh в распакованной папке, страница бота откроется в браузере. Окно-приложение пока только для Windows.
Вопросы
Это нейросеть?
Нет. Это перебор: каждый вариант просчитывается в физике DDNet, а лучший выбирается по оценке с весами, подобранными вручную.
Он нажимает кнопки на моём компьютере?
Нет. Бот это отдельный клиент DDNet, он сам заходит на сервер. В то же время можно играть в DDNet на том же компьютере.
Нужна видеокарта?
Нет. Просчёт идёт на процессоре, окну хватает любой видеокарты.
На каком языке приложение?
На русском и английском. По умолчанию язык как в системе, сменить его можно в настройках окна.
Сервер с паролем?
Впиши пароль при первом запуске или в настройках. Он хранится только на твоём компьютере и стирается при переходе на другой сервер.
Бот сыграл плохо. Как сообщить?
Значок в трее, пункт «Собрать отчёт об ошибке». На рабочем столе появится zip с записями. Приложи его к сообщению на GitHub.