База данных

Материал из World of WarCraft Developers Wiki
Перейти к навигации Перейти к поиску

Эта статья является черновиком.
Вы можете помочь проекту, дополнив её: исправить неточности, добавить информацию, улучшить форматирование.

База данных — в контексте серверов World of Warcraft на ядре TrinityCore, это набор взаимосвязанных баз данных, которые хранят всю информацию, необходимую для работы игрового мира. Понимание их структуры и взаимодействия — ключевой навык для разработчика и администратора сервера.



Общая архитектура

Серверное программное обеспечение TrinityCore использует **четыре основные базы данных**, каждая из которых отвечает за определённый логический слой:

Auth → Characters → World ← Hotfixes


Важно: Все четыре базы данных являются обязательными для запуска и стабильной работы сервера.


Слои данных

Назначение и взаимосвязь баз данных
База данных Основное назначение Ключевая таблица (пример) Как часто меняется? Зависимости
Auth Управление учётными записями, безопасность, доступ к реалмам. `account` Редко (при регистрации, входе) Независима
Characters Хранение всего прогресса персонажей (инвентарь, квесты, навыки). `characters` Постоянно (во время игры) Зависит от **Auth** (связь по `account.id`)
World Статический и конфигурационный контент мира (NPC, предметы, квесты, заклинания). `creature_template` Редко (при обновлении контента) Независима
Hotfixes «Горячие» правки данных клиента (DBC/DB2), применяемые без перезапуска. `hotfix_data` По необходимости (баланс, исправления) Зависит от **World** (переопределяет данные)

Детальное описание баз данных

{{#if: | |}}
База данных: Auth

Логотип WoW Library

Девиз "{{{Девиз}}}"
Тип Вики-энциклопедия
Назначение Аутентификация, учётные записи и безопасность
Язык SQL
Дата основания Базовая структура TrinityCore
Владелец Сообщество
Автор Энтузиасты сообщества
Сайт wowlib.ru

База данных auth предназначена для управления учётными записями, аутентификацией, доступом к игровым мирам (реалмам), системой банов, логированием и ролевым управлением доступом (RBAC).

Основные разделы:

  • Учётные записи: `account`, `account_access`, `account_banned`, `account_muted`.
  • Battle.net учётки: `battlenet_accounts`, `battlenet_account_banned`.
  • Безопасность и доступ: `rbac_permissions`, `realmcharacters`, `realmlist`.
  • Логирование и служебные данные: `logs`, `logs_ip_actions`, `uptime`.

→ Перейти к полному списку таблиц Auth

{{#if: | |}}
База данных: Characters

Логотип WoW Library

Девиз "{{{Девиз}}}"
Тип Вики-энциклопедия
Назначение Динамические данные персонажей и прогресс
Язык SQL
Дата основания Базовая структура TrinityCore
Владелец Сообщество
Автор Энтузиасты сообщества
Сайт wowlib.ru

База данных characters предназначена для хранения динамических данных персонажей и их прогресса. Содержит информацию о персонажах, их характеристиках, инвентаре, экипировке, достижениях, квестах, репутациях, навыках, питомцах, почте, гильдиях и других игровых состояниях, изменяющихся в процессе игры.

Основные разделы:

  • Персонажи: `characters`, `character_account_data`, `character_achievement`, `character_inventory`.
  • Квесты и репутация: `character_queststatus`, `character_reputation`.
  • Навыки и заклинания: `character_skills`, `character_spell`, `character_talent`.
  • Социальные структуры: `guild`, `guild_member`, `groups`.
  • Почта и аукцион: `mail`, `auctionhouse`.
  • Экземпляры предметов: `item_instance`.

→ Перейти к полному списку таблиц Characters

{{#if: | |}}
База данных: World

Логотип WoW Library

Девиз "{{{Девиз}}}"
Тип Вики-энциклопедия
Назначение Статический контент игрового мира
Язык SQL
Дата основания Базовая структура TrinityCore
Владелец Сообщество
Автор Энтузиасты сообщества
Сайт wowlib.ru

База данных world предназначена для хранения статического и конфигурационного контента игрового мира. Содержит данные о картах и зонах, существах и игровых объектах, квестах, заклинаниях, событиях, сценариях, фазировании, транспорте, луте и правилах взаимодействия мира с игроками.

Основные разделы:

  • Существа (NPC): `creature_template`, `creature`, `creature_loot_template`.
  • Игровые объекты: `gameobject_template`, `gameobject`, `gameobject_loot_template`.
  • Заклинания: `spell_template`, `spell_proc`, `spell_script_names`.
  • Квесты: `quest_template`, `quest_poi`, `quest_mail_sender`.
  • Системы мира: `game_event`, `pool_template`, `conditions`.

→ Перейти к полному списку таблиц World

{{#if: | |}}
База данных: Hotfixes

Логотип WoW Library

Девиз "{{{Девиз}}}"
Тип Вики-энциклопедия
Назначение Динамические обновления данных клиента (DBC/DB2)
Язык SQL
Дата основания Базовая структура TrinityCore
Владелец Сообщество
Автор Энтузиасты сообщества
Сайт wowlib.ru

База данных hotfixes предназначена для хранения данных, загружаемых клиентом динамически без необходимости обновления клиента или перезапуска сервера. Содержит hotfix-записи DBC/DB2-таблиц (баланс, параметры заклинаний, предметов, NPC, квестов и интерфейса).

Основные разделы:

  • Данные hotfix-обновлений: `hotfix_data`, `hotfix_blob`.
  • Контент, подверженный правкам: Таблицы, дублирующие структуру DBC/DB2 файлов (достижения, предметы, заклинания, существа и т.д.).
  • Локализация: Множество таблиц с суффиксом `_locale` для хранения переведённых строк.

→ Перейти к полному списку таблиц Hotfixes

Типичные сценарии работы

Как взаимодействуют базы при входе игрока?

  1. Игрок вводит логин/парть → сервер проверяет их в таблице `account` базы **Auth**.
  2. После успешной аутентификации игрок выбирает реалм из `realmlist` (тоже в **Auth**).
  3. Игрок выбирает персонажа → сервер загружает его данные (координаты, инвентарь, квесты) из **Characters**.
  4. Для отображения мира (NPC, предметы, квестовые цели) сервер использует статические данные из **World**.
  5. Если для данного клиента есть активные «горячие» правки, они подгружаются из **Hotfixes** и имеют приоритет над данными из **World**.

Где искать...

  • **Параметры заклинания «Огненный шар»?** → `spell_template` в **World** (или соответствующие таблицы в **Hotfixes**, если правка активна).
  • **Предмет в инвентаре конкретного персонажа?** → `item_instance` и `character_inventory` в **Characters**.
  • **Шаблон NPC «Анахорет»?** → `creature_template` в **World**.
  • **Права доступа GM-аккаунта?** → `account_access` и `rbac_permissions` в **Auth**.

Практические советы по работе с базами

ℹ️

Примечание: Перед любыми правками в рабочих базах данных обязательно создавайте резервные копии (бэкапы).


Часто используемые SQL-запросы

SQL

{{{1|-- SQL запрос}}}


SQL

{{{1|-- SQL запрос}}}


SQL

{{{1|-- SQL запрос}}}


Типичные проблемы

1. **Персонаж не загружается, ошибка в логах.** → Проверить целостность данных в таблицах `characters`, `character_inventory` в **Characters**.

2. **NPC отсутствует в мире, хотя запись в `creature_template` есть.** → Проверить таблицу `creature` в **World** (спавн) или фазирование (`phase`).

3. **Игрок не может зайти, пишет «неверный пароль».** → Проверить соответствие данных в `account` (Auth) и настройки хэширования в `authserver.conf`.

4. **Изменения в `creature_template` не применяются.** → Убедиться, что нет активной записи, переопределяющей этот `entry` в **Hotfixes**.

См. также

index.php?title=Категория:База данных index.php?title=Категория:Документация index.php?title=Категория:Руководства