Files
sindoring 8c8e982fc3 Enable launcher-free local development builds
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.
2026-10-18 12:11:35 +04:00

5.7 KiB
Raw Permalink Blame History

Локальное тестирование 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, сохраняя результаты предыдущего запуска.