Keep launcher tickets mandatory by default and compile password authentication only into the dedicated local image. Build the shared local image once and add an end-to-end SRP login check.
5.7 KiB
Локальное тестирование Vanilla 1.12.1
Используется сборка ядра и импорт русской базы из продакшен-конфигурации.
Compose project vmangos-local создаёт отдельную БД, сеть и volumes логов.
Пароли и клиентские данные находятся в deploy/local/.
Порты доступны только на этой машине: 3724 и 8085, БД — 13306.
Warden отключён для Windows и macOS. Консоль мира включена.
Нужен Docker Compose 2.24.4+ (поддержка !override).
Из корня репозитория:
cd deploy/local
./prepare.sh
# Извлечение данных из установленного Windows-клиента (в терминале WSL):
./extract-data.sh "/mnt/c/Games/Stonetavern-Classic-1.12.1-v1.8"
./compose.sh build
./compose.sh up -d db
./compose.sh run --rm realm-config
./compose.sh up -d realmd mangosd
./compose.sh ps
./compose.sh logs --tail=100 realmd mangosd
prepare.sh создаёт локальные пароли и проверяет/скачивает штатный world
dump. Повторный запуск сохраняет пароли. Параметры лимита игроков, патча
и сборки можно изменить, скопировав .env.example в .env.
Клиентские данные должны читаться UID 10001; используйте извлекатели этого ядра.
Порядок импорта базы и сведения о русских переводах описаны в
продакшен-инструкции.
В realmlist.wtf клиента:
set realmlist 127.0.0.1
Нужен клиент 1.12.1 build 5875, отправляющий ruRU для русских текстов.
Локальная сборка принимает обычные логин и пароль аккаунта без лаунчера:
override собирает отдельный образ vmangos-local:dev с
REQUIRE_LAUNCHER_TICKETS=OFF. По умолчанию эта опция включена; продакшен
продолжает требовать тикеты лаунчера. После изменения режима нужна пересборка
./compose.sh build и пересоздание контейнеров ./compose.sh up -d realmd mangosd.
При Docker/WSL запускайте клиент на том же компьютере, где опубликованы
локальные порты. Этот вариант не предназначен для подключения из LAN.
Чтобы создать тестовый аккаунт, подключитесь к консоли:
./compose.sh attach --sig-proxy=false mangosd
После загрузки мира введите команды (замените логин/пароль):
account create TESTUSER YOUR_PASSWORD
account set gmlevel TESTUSER 3
Вторая команда нужна только для тестового GM. Отсоединение без остановки контейнера: Ctrl+P, затем Ctrl+Q. Для обычной остановки:
./compose.sh stop
БД сохраняется между запусками. Для полного удаления локального мира, аккаунтов, персонажей и логов:
./compose.sh down -v
Локальный и продакшен-варианты используют порты 3724/8085, поэтому на одной
машине запускайте их по очереди. Всегда используйте ./compose.sh для
локального варианта: он задаёт отдельный project и объединяет конфигурации.
Не запускайте этот override как самостоятельный Compose-файл.
После запуска проверить вход без лаунчера можно командой python3 test-auth.py.
Она создаёт временный аккаунт, проверяет отказ при неверном пароле и полный
SRP-вход с получением списка реалмов, затем удаляет временный аккаунт.
Извлечение данных клиента
extract-data.sh собирает извлекатели из текущего ядра в Docker и создаёт
data/dbc, data/maps, data/vmaps, data/mmaps (а также вспомогательные
Buildings и Cameras). Папка игры подключена только для чтения.
Для ядра также создаётся ссылка data/5875/dbc на data/dbc.
Запускайте скрипт в WSL/bash; путь Windows C:\Games\... соответствует
/mnt/c/Games/.... Весь клиент в data/ копировать не нужно.
Генерация mmaps может занять несколько часов. По умолчанию используются
два параллельных процесса; изменить их количество можно через
EXTRACT_THREADS=4 ./extract-data.sh "/mnt/c/Games/...".
Не запускайте мир до окончания извлечения. Повторное извлечение требует
свежего каталога вывода: скрипт отказывается использовать существующий
data/Buildings, сохраняя результаты предыдущего запуска.