Skip to content

Repository files navigation

Bylins MUD Client

Современный клиент для MUD «Былины» на Kotlin + Compose for Desktop. Windows, Linux, macOS.

Установка

Готовые сборки — в релизах: bylins-client-windows.zip, bylins-client-linux.zip, bylins-client-macos.zip.

Распаковать и запустить (Bylins Client.exe, Bylins Client, Bylins Client.app). Java ставить не нужно — своя JRE внутри. В комплекте идут плагины, примеры скриптов и MCP-мост для ИИ-агентов.

Настройки, карты и логи клиент держит в ~/.bylins-client.

Возможности

Подключение и протоколы

  • ✅ Telnet, по умолчанию bylins.su:4000
  • Профили подключений — несколько серверов, быстрое переключение, запоминание последнего
  • Кодировки — UTF-8 (по умолчанию), windows-1251, KOI8-R, ISO-8859-1; своя для каждого профиля
  • ANSI цвета — 16/256/RGB, правильная VGA палитра
  • MSDP — статус персонажа, комната, зона; подписка на переменные
  • GMCP — разбор JSON, просмотр пакетов в UI, доступ из скриптов

Автоматизация

  • Триггеры — regex, группы $1-$9, gag, приоритет, раскраска
  • Алиасы — regex, группы $0-$9, приоритет
  • Горячие клавиши — любая клавиша с Ctrl/Alt/Shift. Клавиша определяется физически, поэтому хоткей работает в любой раскладке
  • Контекстные команды — предложения по обстановке (Alt+1..Alt+0), с областью действия: весь мир, зона или конкретные комнаты
  • Переменные#var/#unvar/#vars, подстановка @name и ${name}; автоматические из MSDP
  • Speedwalk5n, 3n2e, 10sw прямо в строке ввода
  • Профили персонажа — свои триггеры, алиасы, хоткеи и правила, активные только пока профиль в стеке
  • Звуковые уведомления — низкое HP, tell/whisper и команда #sound
  • ✅ Экспорт/импорт настроек в JSON, выборочный, с режимами merge и replace

Карта

  • Автомаппер по MSDP — комнаты, выходы, зоны и тип местности строятся из данных сервера
  • ✅ Визуализация на Canvas: перетаскивание, зум, уровни (z)
  • ✅ Мини-карта на главной вкладке
  • ✅ Цвета, заметки и произвольные свойства комнат; имена зон
  • Ручная правка выходов — скрытые и тёмные проходы, которых нет в строке «Вых:», прописываются вручную
  • Поиск пути — A* и BFS; #goto <id>, #find <название>, #run
  • Ходок — идёт по маршруту шаг за шагом, дожидаясь подтверждения, и пересчитывает путь, если персонажа снесло; #stop прерывает
  • ✅ База карт в SQLite (~/.bylins-client/maps/maps.db), экспорт/импорт JSON

Интерфейс

  • Вкладки вывода — раскладка текста по regex, режимы copy и move, свой лог у вкладки, метки времени, сохранение между запусками
  • ✅ Стандартная вкладка «Чат» — говорят, кричат, шепчут, оффтоп
  • Прокрутка вывода с раздвоением — при чтении истории окно делится: сверху скроллбэк, снизу живой хвост
  • Поиск по выводу (Ctrl+F, на macOS Cmd+F), выделение и копирование
  • ✅ Панель статуса, графики HP/Mana/Move в реальном времени
  • ✅ Статистика сессии, логирование в файл, циклические бэкапы конфига
  • ✅ 5 тем оформления и настройка шрифта — применяются сразу

Плагины

Загружаются из каталога plugins рядом с приложением. Права (управление клиентом, сеть, подключение) выдаёт игрок в настройках.

  • Ассистент — определение промпта, разбор статов, автоматические действия, мини-карта и панель статуса. #assistant
  • Управление ИИ — локальный HTTP+JSON сервер для внешних ИИ-агентов: свой контекст на агента, чтение вывода с последнего места, отправка команд, правка триггеров и карты. Слушает только 127.0.0.1, каждое действие видно игроку. #ai
    • В комплекте mcp/bylins_mcp.py — мост MCP, чтобы агент ходил в клиент штатными инструментами

Скрипты

  • JavaScript (Nashorn 15.4), Python (Jython 2.7), Lua (LuaJ 5.2)
  • ✅ События: on_load, on_unload, on_connect, on_disconnect, on_line, on_command, on_msdp, on_gmcp, on_trigger, on_alias, on_room_enter, плюс боевые (on_combat_start, on_damage_received, on_mob_killed и другие)
  • ✅ API: send(), echo(), addTrigger(), addAlias(), setTimeout(), setInterval(), переменные, MSDP, GMCP, карта
  • Вызов скрипта с клавиши#script call <скрипт> <функция> [аргументы]
  • ✅ Автозагрузка из каталога scripts, управление через UI
  • ✅ Примеры в scripts/examples/: автолечение, автосбор, статистика боя

Команды клиента

Всё, что начинается с #, обрабатывает сам клиент и на сервер не уходит:

Команда Что делает
#help справка по командам
#var, #vars, #unvar переменные
#goto, #find, #run, #stop навигация по карте
#script список, перезагрузка, #script call
#plugin список, загрузка и выгрузка плагинов
#context, #cc контекстные команды
#zone зоны карты
#sound проиграть звук

Сборка из исходников

Нужен JDK 17 или выше; Gradle идёт в комплекте (wrapper).

# Запуск в режиме разработки
./gradlew run

# Готовый к раздаче комплект: приложение со своей JRE, плагины,
# скрипты и MCP-мост -> build/release/
./gradlew releaseDist

# То же архивом
./gradlew releaseBundle

Установщики (packageDistributionForCurrentOS) собираются без плагинов: jpackage строит их не из образа приложения, и всё, что туда положить, попадает в classpath — плагины перестают выгружаться и перезагружаться. Комплект для раздачи собирает releaseDist.

Структура проекта

src/main/kotlin/com/bylins/client/
├── Main.kt              # Точка входа
├── ClientState.kt       # Состояние клиента, связывает подсистемы
├── ui/                  # Compose UI: окно, панели, вкладки вывода
├── network/             # Telnet, MSDP, GMCP
├── connection/          # Профили подключения
├── commands/            # Команды клиента (#goto, #script, speedwalk)
├── triggers/            # Триггеры
├── aliases/             # Алиасы
├── hotkeys/             # Горячие клавиши
├── contextcommands/     # Контекстные команды
├── variables/           # Переменные и подстановка
├── mapper/              # Карта, поиск пути, ходок
├── scripting/           # Движки скриптов и их API
├── profiles/            # Профили персонажа
├── tabs/                # Вкладки вывода
├── status/              # Панель статуса
├── audio/               # Звуковые уведомления
├── config/              # Конфигурация и бэкапы
├── stats/               # Статистика
├── logging/             # Логирование
└── plugins/             # Загрузчик плагинов

plugins/                 # Отдельные модули Gradle
├── core/                # PluginAPI: то, что видит плагин
├── assistant/           # Плагин «Ассистент»
└── ai-control/          # Плагин «Управление ИИ» + MCP-мост

Подробнее — в ARCHITECTURE.md, про вывод — в docs/OUTPUT_PANELS.md, про скрипты — в scripts/README.md.

Лицензия

MIT

About

MUD клиент. Изначально создавался для МАДА Былины, но в теории может быть использован и с другими. Создавайте тикеты, по мере возможностей, буду чинить. Точнее, заставлять чинить AI, т. к. всё здесь написано им. Я только пинал его в нужную сторону.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages