Хранение статических данных на стороне сервера - PullRequest
2 голосов
/ 18 апреля 2019

Почему некоторые данные на стороне сервера все еще хранятся в файлах DBC, а не в SQL-DB?В частности - заклинания (spells.dbc).Зачем?У нас много ошибок в заклинаниях, и очень трудно понять, что не так с заклинанием, но сложнее найти его заклинанием ...

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

Работа была начата, в частности, Каевым. Я думаю, что по крайней мере 3 DBC теперь бесполезны на стороне сервера (но, вероятно, все еще нуждаются в стороне клиента, по какой-то причине они называются DataBaseClient), как item.dbc.

Кроме того, оригинальная философия (для ВСЕХ ядер, а не только для AC) заключалась в том, что мы не будем касаться DBC, потому что мы не делаем пользовательских модификаций, поэтому не было никакого интереса иметь их на стороне сервера.

Но мы хотели изменить это и начали делать их доступными непосредственно в БД, если вы хотите помочь с этим, было бы неплохо!

2 голосов
/ 18 апреля 2019

Заклинания, таланты, достижения и т. Д. В основном встречаются в файлах DBC, потому что именно так Blizzard делала это раньше.Это правда, что в 2019 году это действительно устаревший способ работы.Базы данных становятся все более прочными и универсальными, а наличие жестко закодированных данных оказывается трудным для работы.Черт, DBC на самом деле не так уж и тяжелы, и причина, по которой мы еще не внесли это изменение, заключается в том, что ... У нас нет другой причины, кроме как быть задачей, которая занимает немного времени, и это монотонно делать.

Мы знаем, что ядро ​​Trinity уже внесло это изменение, но у него гораздо больше участников, чем у нас, если это послужит оправданием!

Тем не менее, это уже в наших делахсписок, если вы проверите средство отслеживания проблем в главном хранилище.

Хотя это правда, что мы не можем действительно редактировать файлы DBC, потому что мы потеряем весь прогресс при повторном извлечении или потерял файлы, однако мы можемизменить заклинания в файле C ++ под названием SpellMgr.

Там у нас есть функция с именем SpellMgr :: LoadDbcDataCorrections () .

Основная проблема при выполнении этого изменения заключается в том, что мыНужно изменить ядро, чтобы поддержать это изменение, и функция выше содержит много исправлений.Потребуется интенсивное тестирование, чтобы убедиться, что в процессе ничего не испорчено.

Здесь, изменяя биты, вы можете удалить или добавить определенные свойства к желаемым заклинаниям вместо того, чтобы касаться жестко закодированных файлов dbc.

Если вы хотите пример, в этой ссылке , я изменил заклинание Архимонд, чтобы не было времени наложения.

ПРИМЕЧАНИЕ: в этой строке комментарий об уроне может быть пропущенно это потому, что я допустил ошибку и еще не завершил этот запрос на получение данных от 18/04/2019.

0 голосов
/ 19 июля 2019

Почему?

Поскольку при запуске эмуляции поля dbc были на 90% неизвестны. Поэтому разработчики создали для них парсер, которому потребовалось всего несколько изменений кода для поддержки новых полей, как только была обнаружена их функциональность.

Теперь, когда мы обнаружили 90% обязательных полей dbc и создали несколько отличных инструментов преобразования для DBC <-> SQL, это всего лишь вопрос «усилий».

Преобразование SQL полезно, чтобы избежать использования данных клиента на сервере (вы можете полностью перезаписать их, если вы не хотите идти против EULA) или просто расширить / настроить их.

Здесь вы видите проблему преобразования DBC-> SQL: https://github.com/azerothcore/azerothcore-wotlk/issues/584

...