Бот, который сам играет в блок в DDNet
Кидает хук, бьёт молотом, закидывает соперников во фриз и выбирается из него.
Каждый ход он проверяет в настоящей физике игры, 25 раз в секунду.
Русский · English · Сайт проекта
Быстрый старт · Окно · Как он играет · Управление · Вопросы
Caution
Официальный DDNet AI распространяется только через этот репозиторий и его GitHub Releases. Сборки из Telegram, Discord, файлообменников и других репозиториев не являются официальными и могут быть изменены третьими лицами. Если файл получен не отсюда — не запускай его. Для релизов публикуется SHA256SUMS.txt; проверяй хеш перед запуском.
- Скачай
ddnet-ai.zipиз последнего релиза и распакуй в любую папку. - Дважды щёлкни
DDNet AI.exe.
Больше ничего ставить не нужно: окно и Node.js уже внутри. Окно само перезапускает бота, если тот упал, и обновляет его.
Note
У DDNet AI.exe нет цифровой подписи, поэтому в первый раз Windows может показать «Система Windows защитила ваш компьютер». Нажми «Подробнее», затем «Выполнить в любом случае».
Бот спросит ник, клан и скин, а потом пойдёт играть. Поле сервера можно оставить пустым: бот сам зайдёт на самый живой блок-сервер без пароля и перейдёт на другой, если этот опустеет. Ответы сохраняются в settings.json, и в следующий раз он зайдёт на сервер сам.
Окно говорит по-русски и по-английски: язык берётся из системы и меняется в настройках (Настройки, Приложение, Язык). Страница бота, его ответы и консоль переходят на тот же язык.
Linux и macOS
Linux (x86_64): окно есть и здесь, Node.js ставить не нужно.
- Скачай
ddnet-ai-linux.tar.gzиз последнего релиза и распакуй:tar xzf ddnet-ai-linux.tar.gz. - Запусти
./"DDNet AI.sh"из папкиddnet-ai(если файл не запускается, например после обновления бота старой версией, выполни один разchmod +x "DDNet AI.sh"или запустиsh "DDNet AI.sh"). Чтобы DDNet AI появился в меню приложений, один раз выполни./"DDNet AI.sh" --install-desktop; файлddnet-ai.desktopиз папки тоже открывается двойным щелчком, но GNOME может спросить «Разрешить запуск» (Allow Launching).
Окно обновляется вместе с ботом, как в Windows; если новая версия просит другой Electron, DDNet AI.sh сам скачает его при запуске. Если ядро запрещает Chromium песочницу (например, Ubuntu 24.04), скрипт сам запускает окно без неё: окно открывает только свои страницы и страницу бота на 127.0.0.1. Значок в трее появляется там, где есть область уведомлений (KDE, XFCE, GNOME с расширением AppIndicator); без неё крестик закрывает окно. Под Wayland глобальная клавиша паузы может не работать, пауза есть в окне. Запуск вместе с системой на Linux пока не поддерживается.
Без окна, в консоли (сервер без экрана, macOS): поставь Node.js 24 или новее и запусти ./run.sh из папки бота. Страница бота откроется в браузере на http://localhost:7777, а в консоли можно писать команды. Окно-приложение для macOS пока не собирается.
![]() |
![]() |
| Игра в графике DDNet: скины, хук, фриз, ники над игроками | Таблица игроков, лента заморозок, пинг |
![]() |
![]() |
| Сервера DDNet с поиском по карте, режиму и нику игрока | Первый запуск: пара полей, и бот идёт играть |
- Игра как в клиенте. Карта, скины, хук, молот и эмоции рисуются графикой из твоей установки DDNet. Камера следит за ботом или за любым игроком.
- Сервера. Весь список DDNet с поиском, фильтрами и избранным. Кнопка «Играть здесь» переносит бота на выбранный сервер.
- Пауза отовсюду. Из окна, из трея, с миниатюры в панели задач и клавишами Ctrl+Shift+F9 из любой программы, даже из самой игры.
- Тима, вары и игнор. У каждого игрока сервера кнопки: «тима» (бот его не трогает), «вар» (бьёт всегда), «игнор» (не трогает и не отвечает). Те же списки, что у
!friend,!warи!ignore. - Кнопки за бота. F3 и F4 голосуют за него, кнопками он делает
/kill, уходит в наблюдатели, показывает эмоцию или ставит голосование сервера. - Мини-режим. Маленькое окно поверх всех, чтобы смотреть за ботом, пока играешь сам.
- Лог и уведомления. Бот отключился, вернулся на сервер, обновился: окно скажет.
- Отчёт об ошибке. Кнопка «Собрать отчёт об ошибке» складывает клипы, память карт и выбранные демки в один zip на рабочем столе. Пароль сервера туда не попадает.
- Прокси. В Настройках, раздел «Сервер», каждому боту можно задать свой SOCKS5-прокси (нужен SOCKS5 с UDP: HTTP-прокси игру не пропускают), и два бота зайдут с разных адресов.
Бот держит у себя копию физики DDNet 20 и на каждом шаге прогоняет в ней десятки вариантов на полсекунды вперёд: куда бежать, когда прыгнуть, куда и когда кинуть хук, когда ударить. Выбирает тот, после которого соперник ближе к фризу, а сам бот дальше от него.
| Хук с дистанции | кидает хук издалека, как сильные игроки, а не подходит вплотную |
| Держит и тащит | ведёт соперника на хуке к фризу и добивает молотом |
| Учитывает пинг | прокручивает мир вперёд на свою задержку, с учётом нажатий, которые уже летят на сервер |
| Выбирает цель | не держится за уже замороженного, когда рядом есть свободный |
| Выбирается сам | если застрял во фризе и никто не спасает, делает /kill |
Note
Бот не видит экран и ничего не нажимает за тебя. Это отдельный игрок: он заходит на сервер сам, как обычный клиент, и ты можешь в это время играть в DDNet на том же компьютере.
| Клавиши | Что делают |
|---|---|
| Ctrl+Shift+F9 | пауза и продолжение из любой программы (меняется в настройках) |
| F3, F4 | голос за / против от бота, когда окно бота в фокусе |
| Esc | закрыть панель серверов или настроек |
| двойной щелчок по заголовку | развернуть окно |
Команды бота
Пишутся в строке команд окна или в консоли. В игровой чат они не уходят. Всё, что написано без !, бот скажет в чат от своего имени.
| Команда | Что делает |
|---|---|
!stop, !go |
остановиться / продолжить |
!mode fight, passive, hold |
драться / никого не трогать / держать позицию |
!target <ник>, !target - |
драться только с этим игроком / снять |
!war <ник>, !friend <ник>, !ignore <ник> |
бить всегда / не трогать / не трогать и не отвечать |
!clanwar <клан>, !clanfriend <клан> |
то же по клану |
!home <x> <y> |
куда возвращаться, когда драться не с кем |
!wb auto, !wb left, right, off |
держать ВБ на Copy Love Box: сам берёт сторону, где меньше игроков, держит её и кидает входящих во фриз; !wb без слова показывает, что сейчас |
!duel on, off, auto |
дуэль 1 на 1: без ВБ и без походов; auto включает сама после принятой дуэли |
!style default, wb, duel |
три способа играть из окна: как обычно, ВБ, дуэль |
!d <команда> |
команда второму боту (дамми), например !d wb left |
!goto tele, !goto <x> <y>, !goto <ник> |
дойти до телепорта, до точки или до игрока (идёт за ним, пока не дойдёт) |
!clip [заметка] |
сохранить последние 30 секунд игры в файл |
!stats, !where |
счётчики / где бот и с кем дерётся |
!emote <имя> |
показать эмоцию |
!yes, !no, !votes, !vote <имя> |
голос как F3 / F4, список голосований сервера, поставить одно |
!spec, !join |
в наблюдатели / обратно в игру |
!kill, !reset |
убиться и возродиться |
!lang ru, !lang en |
язык консоли и страницы бота |
!quit |
выйти |
Бота можно держать на компьютере, а смотреть и управлять им с телефона: страница бота откроется в браузере телефона по Wi-Fi, с игрой, меню и настройками, как на компьютере.
- Включи «Доступ из локальной сети» на странице бота: вкладка «Настройки», карточка «С телефона» (или в окне, раздел «Бот», и перезапусти бота; или запусти с флагом
--lan; вsettings.jsonэто"lan": "on"). По умолчанию выключено. - На странице бота, в той же карточке, покажутся адрес вида
http://192.168.1.5:7777/, QR-код и шестизначный код. Телефон и компьютер должны быть в одной сети. - Открой адрес на телефоне (или наведи камеру на QR) и введи код. Код вводится один раз: телефон остаётся внутри, пока бот не перезапущен и пока код не заменён кнопкой «Новый код».
Бот слушает только частные адреса сети (10.x, 172.16-31.x, 192.168.x), без кода с телефона ничего не открывается, а пять неверных кодов подряд закрывают вход на минуту. Включай это только в домашней сети: в чужом Wi-Fi любой, кто видит адрес, может пробовать коды. Адреса определяются при запуске: сменил сеть, перезапусти бота. Адаптеры VPN (WireGuard, OpenVPN, Tailscale и подобные, по имени) пропускаются, чтобы страница не открылась всем участникам VPN. Двадцать неверных кодов за десять минут (с любых устройств) закрывают вход на десять минут; после пятидесяти неверных бот сам меняет код (телефоны, уже вошедшие, остаются). Выключение «Доступа из локальной сети» выходит со всех телефонов. Соединение идёт по обычному http без шифрования: в открытом Wi-Fi код и страница видны всем рядом. Если страница не открывается, проверь, не блокирует ли порт 7777 брандмауэр Windows (при первом включении он спросит разрешение для Node.js: разреши для частных сетей).
Ничего делать не нужно. Бот проверяет новую версию при запуске и дальше раз в пять минут, скачивает её и перезапускается сам, а окно обновляется вместе с ним. Настройки, записи и память карт при этом не трогаются.
Бот сам прыгнул во фриз или играет странно. Как помочь?
Щёлкни значок в трее и выбери «Собрать отчёт об ошибке» (или Настройки → «О программе» → «Собрать отчёт об ошибке»). На рабочем столе появится zip: клипы, в которых видно, что пошло не так, память карт, лог окна и settings.json без паролей, прокси и ключей; демки ты выбираешь сам. Если писал демку, добавь её туда же. Приложи zip к сообщению на GitHub и напиши карту, пинг и что случилось. Пока бот играет, !clip сохраняет последние 30 секунд в runs/clips.
Windows пишет «Система Windows защитила ваш компьютер» (SmartScreen)
У DDNet AI.exe нет цифровой подписи, поэтому SmartScreen предупреждает при первом запуске. Нажми «Подробнее», затем «Выполнить в любом случае». Перед этим убедись, что файл скачан отсюда, из GitHub Releases, и сверь хеш: в PowerShell Get-FileHash .\ddnet-ai.zip -Algorithm SHA256, результат должен совпасть со строкой в SHA256SUMS.txt того же релиза. Если хеши разные, не запускай.
Антивирус ругается на файл
Программа без подписи, внутри Electron и Node.js, и антивирусы иногда считают такое подозрительным. Сначала сверь хеш (см. выше): если он совпал, файл настоящий. Если нет, удали его и скачай заново с страницы релизов. Исходный код открыт, его можно прочитать. Если после совпавшего хеша антивирус всё же блокирует запуск, разреши папку бота в его исключениях.
Бот зашёл на сервер, но стоит на месте
Посмотри строку состояния на странице бота (в окне она снизу): «цели нет» значит, что драться не с кем. Бот не трогает:
- игроков, которые ничего не нажимали больше 10 секунд (AFK), и тех, кто в наблюдателях или на паузе;
- друзей (
!friend, кнопка «тима») и игнорируемых; - всех, если режим
!mode passiveили!mode hold, если ты поставил паузу (Ctrl+Shift+F9,!stop) или задан!target, а этого игрока рядом нет (бот бьёт только его).
На карте с ВБ бот, когда драться не с кем, встаёт на ВБ и держит его (с заданным !home ВБ не держит, а возвращается в эту точку). Если вместе с этим в строке состояния горит «ПК не успевает» (см. ниже про пинг), бот просто не поспевает считать.
«На этой карте нет ВБ»
ВБ (вейблок) бот держит только на Copy Love Box и её копиях с тем же залом (JoniTee, Copy The Box TF, Copy Love Box 2s, Mega и некоторые другие). Команда !wb скажет, что есть на этой карте. Если карта с таким же названием, но другой версии, бот проверяет её по плиткам (зал, труба с качелью, выход) и, если что-то отличается, не держит её и пишет об этом в журнале. На остальных картах бот просто дерётся там, где идёт игра. !wb off, !wb left, !wb right и !wb auto задают сторону.
Какой пинг показан и почему бот лагает
Пинг на табло и в окне это то, что сообщает сам сервер о соединении бота. Бот прокручивает свой мир вперёд на свою измеренную задержку (без замера на этот пинг), но не больше чем на 6 тиков (120 мс): дальше предсказание превращается в выдумку. Если пинг стабильно выше, дело в сети (проверь Wi-Fi, VPN, прокси) или в самом сервере. Если пинг огромный (сотни и тысяча), а бот стоит на месте и на странице горит «ПК не успевает», процессору не хватает сил: включи «Режим для слабого ПК» (галочка на странице бота, или !low on). Бот сам его не включает, а если включён «Сильный режим» и бот не успевает, выключи его (!strong off).
Прокси не работает
Нужен SOCKS5-прокси с поддержкой UDP (UDP ASSOCIATE): игра идёт по UDP, а HTTP-прокси, SOCKS4 и многие «SOCKS5 только для браузера» его не пропускают. Бот напишет в журнале «Прокси не поддерживает UDP» или «Нужен SOCKS5-прокси». Формат: socks5://логин:пароль@хост:порт или хост:порт. Пароль прокси не попадает в отчёт об ошибке.
Linux: нет значка в трее, окно не открывается
Значок в трее появляется только там, где есть область уведомлений (KDE, XFCE, GNOME с расширением AppIndicator). Без неё крестик закрывает окно вместе с ботом, а пауза есть кнопкой в окне. Если Chromium запрещает песочницу (например, Ubuntu 24.04), DDNet AI.sh сам запускает окно без неё; свой выбор можно задать переменной: DDNET_AI_SANDBOX=0 ./"DDNet AI.sh" без песочницы, DDNET_AI_SANDBOX=1 с ней. Если файл не запускается, chmod +x "DDNet AI.sh". Подробнее в разделе «Linux и macOS» выше.
Телефон не открывает страницу бота
Проверь по порядку: включён ли «Доступ из локальной сети» (по умолчанию выключен; если включал в окне, перезапусти бота, а адрес и QR-код ищи на странице бота: «Настройки», карточка «С телефона»), телефон и компьютер в одной сети (не в гостевой Wi-Fi и не в мобильной), адрес с портом (http://192.168.x.x:7777/, именно http), и не блокирует ли порт 7777 брандмауэр Windows (разреши Node.js для частных сетей). Сменил сеть или включил VPN: перезапусти бота, адреса определяются при запуске. Подробнее в разделе «С телефона».
Нужна ли видеокарта?
Нет. Бот считает на процессоре, окну хватает любой видеокарты.
Сервер с паролем?
Впиши пароль при первом запуске или в настройках. Он хранится только на твоём компьютере и стирается, когда переходишь на другой сервер.
Где настройки и записи?
| Путь | Что там |
|---|---|
settings.json |
сервер, ник, клан, скин, язык |
runs/clips |
записи моментов игры |
runs/memory |
что бот запомнил о картах |
app-win, app-linux |
само окно (Electron), его запускает DDNet AI.exe (Linux: DDNet AI.sh) |
DDNet AI бесплатный и не приносит мне денег: я делаю его в свободное время. Если бот тебе пригодился, можешь поддержать проект криптой. Так у меня будет мотивация развивать его дальше.
| Сеть | Адрес |
|---|---|
| BTC | bc1qpkaeksf84tsmg8ma9thajdr3g07eghe9kedals |
| TON | UQAGz-ZisbbkNcUYxt98RPeZu7zxOfrfKFatfQr0Cn6209kg |
| SOL | 5GKAETatYe2knHJ5FtKpd1w4NgXgR1a5QAz4rBk5gJV8 |
| BSC | 0x295Ed37F5C9f120ce37b511A7e69f2cd0432bB89 |
| TRON | TBJNNRDXoaxNyxktfJoTAD8jcYMt2dJcSS |
| ETH | 0x295Ed37F5C9f120ce37b511A7e69f2cd0432bB89 |
BSC и ETH: один и тот же адрес (сети EVM). Перед отправкой проверь сеть. Кошельки есть и в окне: Настройки → «Поддержать».
GPL-3.0 (файлы LICENSE и NOTICE). Бота можно запускать, изучать и переделывать. Но кто выкладывает свою версию, изменённую или нет, обязан указать этот проект как исходный и открыть свой код под той же лицензией. Физика, перенесённая из DDNet, остаётся под лицензией DDNet (zlib), библиотеки под своими.




