Files
felwell-core/README_RU.md
T
2026-08-31 21:32:14 +04:00

17 KiB
Raw Blame History

SylvaniaCore

SylvaniaCore

C++-ядро игрового мира La Légion de Sylvania
Эмулятор сервера World of Warcraft® — Legion 7.3.5

Discord для разработчиков Лицензия: GPL v2 Звёзды Форки Форк DestinyCore

Практическая инструкция по Docker, production-развёртыванию FelWell и синхронизации с собственным Git-сервером: README.ru.md.


📖 О проекте

SylvaniaCore — ядро франкоязычного игрового мира La Légion de Sylvania для World of Warcraft® Legion 7.3.5. Это форк DestinyCore, который, в свою очередь, происходит из семейства TrinityCore. Проект постоянно развивается и поддерживается для нужд игрового мира.

Репозиторий одновременно служит актуальной кодовой базой и резервной копией production-сервера.

Философия: «адаптивный blizzlike»

Это не fun-сервер и не сервер с rates x∞. Оригинальные значения Blizzard (урон, баланс и экономика) сохраняются. Основная работа направлена на исправление отклонений от blizzlike, а не на упрощение игры. Каждая обнаруженная ошибка исправляется в источнике — в данных или в ядре, — а не обходится командами игрового мастера.


Дополнения SylvaniaCore

Помимо возможностей upstream-ядра, проект содержит собственные системы:

Модуль Описание
🤖 PlayerBots Управляемые боты-игроки (src/server/game/PlayerBot): групповые команды, роли танка и лекаря, управление экипировкой и автоматическое заполнение полей боя
⚔️ Осада столиц Ежедневные нападения отрядов ботов на столицы с назначенным командиром и PvP-флагом игроков (src/server/game/CapitalSiege)
💰 Наёмники Нанимаемые NPC-компаньоны: одиночный игрок может заключить с ними контракт за игровое золото (src/server/game/Mercenary)
🇫🇷 Локализация frFR Восстановление официальных французских текстов из клиента 7.3.5 — заданий, диалогов и broadcast-текстов — и перевод отсутствующего сценарного контента
🐛 Исправления контента Последовательное восстановление кампаний, подземелий и заданий по отдельным зонам: Мардум, Скитающийся остров, Вершина Смерча и другие

🛠️ Требования

  • CMake 3.31+
  • Boost 1.84.0
  • MySQL 8.0 или MariaDB 10.6+ — игровой мир использует MariaDB 11.4
  • OpenSSL 3.x
  • GCC / Clang / MSVC — рекомендуется Visual Studio 2022

Поддерживаемые платформы: Linux, Windows и macOS.


📦 Сборка

  1. Клонируйте репозиторий:

    git clone https://github.com/BlaMacfly/SylvaniaCore.git
    cd SylvaniaCore
    
  2. Настройте и соберите проект:

    cmake -S . -B build -DTOOLS=ON
    cmake --build build -j$(nproc)
    
  3. Установите базы данных согласно разделу Установка базы данных.

  4. Запустите серверы:

    ./bin/worldserver
    ./bin/bnetserver
    

В исходном коде намеренно сохранены внутренние имена upstream-проекта: DestinyCore, названия целей CMake и пути конфигурации. Это обеспечивает совместимость с upstream-обновлениями и существующими сценариями развёртывания.

Docker Compose

Ядро, сервер Battle.net и MariaDB 11.4 можно собрать и запустить вместе:

cp .env.example .env
# Поместите DB_world_*.sql и DB_hotfixes_*.sql (или .sql.gz) в docker/db-dumps/
# Поместите dbc/, maps/, vmaps/, mmaps/, cameras/ и gt/ клиента 7.3.5 в data/
docker compose up --build -d
docker compose logs -f worldserver

Схемы auth, characters и shop импортируются автоматически при первом запуске MariaDB. Полные дампы world и hotfixes также импортируются из docker/db-dumps/. Перед публикацией сервера обязательно замените пароли в .env. Объявляемый клиентам адрес задаётся переменной EXTERNAL_ADDRESS.

Production-развёртывание FelWell

Production-шаблон настраивает игровой мир FelWell по адресу legion.moon-well.online:8085:

cp .env.production.example .env.production
# Обязательно замените оба пароля в .env.production
docker compose --env-file .env.production up --build -d
docker compose --env-file .env.production logs -f bnetserver worldserver

При запуске запись auth.realmlist автоматически синхронизируется с REALM_NAME, REALM_ADDRESS и REALM_PORT. DNS-запись A/AAAA должна указывать на VPS, а брандмауэр должен разрешать TCP-порты 1119, 8081 и 8085. MariaDB должна оставаться только во внутренней сети Docker и не должна публиковаться в Интернет.

Volumes database-data и sylvania-logs сохраняют базу данных и журналы соответственно. Изменения в docker/db-dumps/ не импортируются повторно, если база уже была инициализирована.


💾 Установка базы данных

Репозиторий содержит только схемы auth, characters и shop. Базы world и hotfixes слишком велики для хранения в Git; их необходимо загрузить из релизов upstream-репозитория DestinyCore.

⚠️ Никогда не импортируйте файлы из sql/base/dev/. Это пустые структуры таблиц без игровых данных, предназначенные для разработчиков upstream-проекта. После такого импорта worldserver может запуститься, но клиент останется на экране загрузки из-за пустой базы world.

1. Загрузка upstream-базы

Загрузите последний релиз базы на странице slash-design/DestinyCore/releases. На момент написания это DB735.02.rar размером около 84 МБ. Архив содержит два дампа:

Файл База Размер после распаковки
DB_world_735.02.sql world около 375 МБ
DB_hotfixes_735.02.sql hotfixes около 127 МБ

Оба дампа самостоятельно выполняют CREATE DATABASE, а затем USE для баз world и hotfixes. Если нужны другие имена баз, измените эти две строки в начале соответствующего файла.

2. Создание и импорт баз

# Базы auth / characters / world / hotfixes
mysql -u root -p < sql/create/create_mysql.sql

# База shop не создаётся upstream-скриптом
mysql -u root -p -e "CREATE DATABASE shop DEFAULT CHARACTER SET utf8;"

# Схемы из репозитория
mysql -u trinity -p auth       < sql/base/auth_database.sql
mysql -u trinity -p characters < sql/base/characters_database.sql
mysql -u trinity -p shop       < sql/base/shop_database.sql

# Полные базы из upstream-релиза
mysql -u trinity -p < DB_world_735.02.sql
mysql -u trinity -p < DB_hotfixes_735.02.sql

3. Автоматическое применение обновлений ядром

Не импортируйте файлы из sql/updates/ вручную. В worldserver.conf должно быть указано:

Updates.EnableDatabases = 31   # auth + characters + world + hotfixes + shop
Updates.AutoSetup       = 1

При первом запуске worldserver самостоятельно применит около 330 файлов из sql/updates/world, а также обновления для characters и hotfixes. Таблица updates в upstream-дампах изначально пуста — это нормально: история обновлений будет применена целиком. Процесс может занять несколько минут.

4. Исправления контента игрового мира (необязательно)

В sql/sylvania/ хранится версионируемая история исправлений игровых данных: артефактов, кампаний, подземелий, модулей «Наёмники» и «Осада столиц». Они не относятся к механизму автоматических обновлений и импортируются вручную в хронологическом порядке после завершения предыдущих этапов. Production-база world игрового мира не распространяется.

🩺 Клиент завис на экране загрузки?

Следующие два сообщения появляются при каждом подключении на всех серверах этого семейства и не являются ошибками:

Client tried to call not implemented method ResourceService.GetContentHandle
Received not handled opcode [CMSG_GET_ACCOUNT_CHARACTER_LIST ...]

ResourceService — незавершённая upstream-реализация сервиса Battle.net, а CMSG_GET_ACCOUNT_CHARACTER_LIST, то есть межсерверный список персонажей, намеренно объявлен как STATUS_UNHANDLED в src/server/game/Server/Protocol/Opcodes.cpp. Если клиент не проходит экран загрузки, проверьте:

  • правильность импорта world и hotfixes, учитывая предупреждение о sql/base/dev/;
  • кеш клиента — очистите каталог Cache;
  • извлечённые данные: dbc/, maps/, vmaps/, mmaps/, cameras/ и gt/ должны происходить из клиента 7.3.5 build 26972, а DataDir должен указывать на содержащий их каталог;
  • DBErrors.log и начальные строки журнала worldserver, где будет указана проблемная таблица.

🌍 Подключение к игровому миру

Игровой сервер открыт, а инструкции по подключению опубликованы на официальном сайте: legendesylvania.com.


🤝 Участие в разработке

Мы приветствуем исправления ошибок, улучшения документации и новые возможности:

  1. Создайте форк репозитория.
  2. Создайте отдельную ветку для изменения.
  3. Откройте pull request.

Discord открыт для разработчиков и всех желающих участвовать в развитии ядра. Там можно обсудить исправление до начала работы, задать вопросы по архитектуре или попросить проверить pull request. Это не Discord игрового мира.

Присоединиться к Discord разработчиков


🐛 Сообщение об ошибке

Создайте обращение в трекере задач. Перед этим убедитесь, что аналогичная проблема ещё не зарегистрирована.


🙏 Благодарности

SylvaniaCore не существовал бы без проектов, на основе которых он создан:

  • DestinyCore — upstream-ядро, форком которого является этот репозиторий;
  • TrinityCore — исходное семейство проекта;
  • ArgusCore, проект FlyingPhoenix, — один из важнейших ориентиров для SylvaniaCore. В нём проделана огромная работа над движком, сетевым уровнем и механиками классов версии 7.3.5. Мы регулярно используем его как источник решений при восстановлении крупных частей ядра. Спасибо за открыто опубликованные наработки;
  • mod-playerbots — источник решений для логики ботов-игроков.

Состояние CI upstream-репозитория: Windows x64 GCC Clang


📜 Лицензия

Проект распространяется по лицензии GPL v2.0. См. файл LICENSE.

World of Warcraft® и Blizzard Entertainment® являются зарегистрированными товарными знаками Blizzard Entertainment, Inc. Проект не связан с Blizzard Entertainment и не одобрен этой компанией.


SylvaniaCore

Если вам нравится SylvaniaCore, поставьте проекту звезду!