WORLD OF WARCRAFT

Тема: Введение в датамайнинг WoW [v1.0]  (Прочитано 14097 раз)

0 Пользователей и 1 Гость просматривают эту тему.

AlanMix

  • Датамайнер
  • Старожил
  • *
  • Сообщений: 3137
Введение в датамайнинг WoW [v1.0]
« : 02 Декабря, 2019, 07:35:28 »
  • Рейтинг:49 (+49 | 0)



Часто в новостях, статьях, про просмотре тех или иных тем, ответов или общение вы слышите фразы вроде "датамайнеры получили информацию о ..." или "опять эти датамайнеры слили всё, ух, накажу-накажу!", но задавались ли вопросом - как именно эти самые "датамайнеры" получают информацию? Как она устроена? В данной теме я попытаюсь рассказать доступным языком о том как устроена информация внутри игры и об инструментах.:cut:

Прежде чем начать, начнем с базовых вещей, как хранятся файлы игры и как распространяются сборки. После этого рассмотрим хранение информации, какие существуют файлы и как работают таблицы баз данных WoW. А после этого рассмотрим что же такое DataMining или же добыча информации, как найти новые вещи и собственно как же еще проанализировать. Часто я буду указывать оригинальное название, потому что перевод русский язык может испортить некоторый смысл, не всегда точно будет обозначать вещь, ибо значение слов могут различаться.

Давайте приступим.

Оглавление



Хранение и Распространение / Storage & Distribution

Хранение файлов и их распространение (новых) версий тесто связаны друг с другом, в этом пункте будет как раз об этом рассказано.

Билды / Builds

Билд можно использовать как по прямому переводу, в виде "сборки", так и использовать оригинальное слово, которое будет использовать ниже.

Билды ссылаются на конкретную версию WoW. Конкретно, будучи последним числом в формате версии, WoW использует  (x.x.x.xxxxx), но весь формат можно назвать номером сборки. К примеру "build 18125" и "build 6.0.1.18125" будет одно и тоже.
При ссылке на конкретный патч, например "патч 6.0.1", это может относится ко всем билдам для этого патча, одного билда или просто ко времени, когда этот патч был актуален, в зависимости от контекста. В процессе датамайнинга иногда билдами называются "контент билдом" (content build) или "хотфикс билдом" (горячим исправлением / hotfix build). Контент билды обычно содержат новый / обновленный контент, в то время как билды хотфиксов содержат только изменение базы данных / незначительные изменения файлов интерфейса.

CASC

Начинания с версии 6.0 (Warlords of Draenor) WoW использует CASC (Content Addressable Storage Container) для хранения файлов, заменив старую систему MPQ. Архивы CASC обычно находятся в каталоге Data вашей папки WoW. Это обычно называют "локальным" хранилищем. В качестве локального хранилища выступает "удаленное" хранилище, представляющее собой вариант CASC, который находится в CDN Blizzard (сети доставки контента), куда игра загружается / устанавливается или даже транслируется во время игры. Локальное хранилище CASC содержит все игровые ресурсы, которые требуются вашим установленным версиям WoW для этой конкретной сборки и языка. Онлайн хранилище CASC содержит все игровые ресурсы для нескольких веток (branches), сборок, языков и многого другого.

Проекты / Projects

Есть 2 общеизвестных "проекта".
ИмяОписание
MainlineMainline WoW (Battle for Azeroth, Shadowlands и т.д.)
ClassicClassic WoW

Продукты / Products

Существует несколько версий WoW, которые мы называем «продуктами», и те, о которых мы знаем, перечислены в таблице ниже. Номера сборок совместно используются и увеличиваются для разных продуктов. Различные продукты могут быть обработаны / исправлены одновременно.
ИмяПродуктПроектОписание
RetailwowMainlineСовременный WoW, в который играют большинство пользователей
PTRwowtMainlineПубличный Тестовый Реалм для современного WoW
BetawowbMainlineБета для предстоящих дополнений
VendorwowvMainlineЗашифровано, используется поставщиками оборудования (hardware vendors)
Classicwow_classicClassicОсновная версия WoW Classic
Classic Betawow_classic_betaClassicБета-версия WoW Classic

Аддовая Аббревиатура NGDP / TACT / CASC

Введение CASC было частью более крупного проекта / попытки использования более современных систем для их различных процессов хранения / исправления / распространения. Упомянутый проект называется NGDP (Next Generation Delivery Platform).  Часть NGDP, которая обрабатывает распространение / загрузку сборки, называется TACT (Trusted Application Content Transfer). Имейте в виду, что эти аббревиатуры часто используются взаимозаменяемо, поскольку мы не всегда знали точное различие между ними, и некоторые из них по-прежнему частично совпадают.


Корневой манифест / Root manifest

Одним из заслуживающих внимания файлов во всем этом является корневой манифест (Root manifest). Этот файл содержит следующую информацию для каждого игрового ресурса:

  • FileDataID
  • Filename hash (только для интерфейсных файлов по состоянию на 8.2)
  • Content hash (контрольная сумма MD5 файла, изменяется если файл изменен)
  • Locale (доступность файла для языка клиента)
  • Content flags (например, файл зашифрован, только для клиентов с низким уровнем насилия и т.д.)

Для получения дополнительной технической информации об этих системах, обязательно ознакомьтесь с вики wowdev.


Информация о версии / Version information

Клиент Battle.net и WoW в настоящее время используют два разных метода для получения информации о версии.

HTTP NGDP
HTTP NGDP относится к старому (и, вероятно, в будущем устаревшему) методу проверки версий. Он все еще используется клиентом WoW и использует обычный HTTP для получения информации о версии. Информация о версии доступна по следующему URL:
http://<region>.patch.battle.net/<product>/version где <region> относится к определенному региону (us, eu, cn, public-test) и <product> относится к продуктам, перечисленным в пункте product. Проверка на наличие изменений требует периодического извлечения файла версии для определенного продукта и сравнения его с ранее полученным файлом.
Более техническая информация об этом доступна здесь.

Ribbit
Ribbit - более новый метод проверки версий. Кэширование легче, и его содержимое можно проверить с помощью подписей, чтобы люди не связывались с информацией о версии. Ribbit используется приложением Battle.net (/Agent) для обнаружения обновлений. Проверять изменения в Ribbit можно, периодически проверяя "сводку" (summary), в которой перечисляется все доступное через Ribbit, а также идентификатор, который можно использовать для проверки того, что определенный файл версии продукта изменился без извлечения.
Более техническая информация о Ribbit доступна здесь.

История версий / Version history

Список всех известных сборок можно найти на этой удивительной странице WoWPedia, список всех сборок, начиная с появления CASC в 6.0, вы можете найти здесь.



Файлы / Files

Типы / Types

Blizzard использует несколько типов файлов / форматов внутри WoW. Это не полный список, перечислены лишь важные. Значение аббревиатур в значительной степени импровизировано / угадано.

РасширениеЗначениеОписание
WDTWorld Data TableСодержит информацию для всей карты. Одна карта может содержать до 64x64 ADT.
ADTArea Data TableСодержит информацию для определенной области внутри карты. Может относиться к BLP (для текстур ландшафта), WMО и M2.
WMOWorld Map ObjectОбычно более крупные модели. Может иметь подмножества моделей M2 (наборы doodad).
M2Model (2.0)Используется обычно для более сложных и / или небольших моделей.
BLPBlizzard PictureТекстуры
DB2Client Database (2.0)Ранее был DBC (Client Database). Содержит информацию, необходимую клиенту. Все от существ до предметов и заклинаний (см. "Таблицы База данных"). Может быть исправлено/хотфикшено (см. "Исправления"). Как и обычные базы данных, отдельные части базы данных (файл DB2) также называют "таблицей".

Имена файлов / Filenames

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

Чтобы идентифицировать файлы, был сделан доступ к хэшу имени файла вместо полного имени файла, хранящегося в хранилище. Хеш-функцией, используемой для хэширования имени файла, был Боб Дженкинс lookup3 с тех пор, как были представлены MPQ. Хотя ранние версии игры ссылались на файлы по имени, перед их открытием клиент хэшировал путь, а затем использовал значение хеширования для поиска файла. Для удобства WoW всегда поставлял так называемый listfile (список файлов) со всеми MPQ, используемый только для файловых браузеров, чтобы дать хороший список архивов. Это сделало интеллектуальный анализ данных очень удобным.

В 7.0 Blizzard решила избавиться от этих listfiles (списка файлов) и всех основных патчей, поскольку избавилась от файлов, ссылающихся на другие файлы также по имени файла. В то время как файлы все еще имели хэши имен файлов, можно было угадать (перебор/брутафорс) имена файлов, поскольку хэши все еще присутствовали. Хотя это делало именование файлов немного сложнее, правильные попытки угадывания / перебора все еще можно было проверить. Публичные попытки сделать это в основном были найдены на Github, но с тех пор перешли на WoW.tools, когда в 8.2 было удалено большинство хэшей имен файлов. WoW.tools позволяет сообществу предлагать имена файлов и загружать список файлов, содержащий идентификаторы FileDataID и предлагаемые (неофициальные) имена файлов.

Хотя имена файлов по-прежнему очень полезны для людей, любые инструменты, взаимодействующие с файлами WoW (начиная с 8.2), должны (внутренне) использовать FileDataID для ссылки на файлы вместо имен файлов. Имена файлов должны использоваться только в пользовательских интерфейсах. Для инструментов, взаимодействующих с WoW Classic, по-прежнему потребуется возможность ссылаться на файлы с именами файлов внутри, поскольку WoW Classic находится в странном месте, где некоторые вещи ссылаются на файлы по идентификатору (ID), а другие ссылаются на файлы по имени файла.


FileDataIDs

В современном WoW на файлы ссылаются не по имени файла (хэш), а по уникальному идентификатору, 32-битному номеру. Этот номер уникален для разных версий и продуктов и, по-видимому, внутренне связан с именами файлов. FileDataID были впервые замечены в Wrath of the Lich King в контексте синематиков и постепенно использовались в других местах. Теперь последние форматы файлов заменили все имена файлов непосредственно на FileDataID, что позволило корневому файлу CASC (который содержит список всех файлов) также удалять хэши имен файлов. Это неявно сделало невозможным надежное угадывание/подбора имен файлов, что побудило сообщество изобрести собственные имена для большого количества файлов.

Большинство файлов, используемых в пользовательском интерфейсе WoW, (по состоянию на 8.x) все еще поставляются с хэшами поиска имени файла, а также с таблицей базы данных, содержащей их имя, для экспорта файлов интерфейса, для удобства авторов аддонов.

Некоторые имена файлов все еще можно угадать (но не проверить) из контекста, ссылок в других файлах и экстраполяции старых схем именования. Например, файлы WDT всегда называются
world/maps/$name/$name.wdt (где $name берется из файла базы данных карты, например,
world/maps/emeralddream/emeralddream.wdt), причем ADT для карты находятся в одном каталоге с именем
$name_ $x_ $y.adt (emeralddream_24_25.adt). То же самое относится и к связанным файлам, таким как миникарты, запеченные текстуры ландшафта листов карты с низким разрешением, четыре файла ADT для текстур и объектов и т.д.

Аналогичным образом, файлы групп WMO всегда имеют то же имя, что и их родительский файл, но с идентификатором группы (group ID) (трехзначным числом), вставленным перед суффиксом файла (например,
world/wmo/dungeon/valgarde/valgarde.wmo и
world/wmo/dungeon/valgarde/valgarde_010.wmo).

Более общие структуры имен файлов, используемые в WoW, можно найти здесь.

Чтобы не пропускать описания контента такими способами, Blizzard начала использовать менее описательные имена (теперь карты обычно называются такими же, как их идентификаторы, или намеренно вводит в заблуждение, например, "TrollRaid" - "Расколотые острова"), или решила удалять описания везде, где это возможно, как звуковые наборы (наборы звуков), в которых файл базы данных SoundKitName содержит имя для каждого набора (sets of sounds) звуков, намекая на то, для чего они используются. При удалении этой таблицы из общедоступных клиентов больше нет очевидных указаний на их использование. Однако все еще возможно группировать звуки по их использованию или связывая их с конкретными существами на основе ссылок из других файлов базы данных.


Шифрование / Encryption

В течение 7.0/Легион Blizzard начал шифровать определенные наборы файлов. С тех пор они использовали его для шифрования синематиков, магазинных маунтов/петов, наград BlizzCon, а также карт/историй.

Ключ шифрования (также известный как ключ TACT) состоит из двух частей: имени (также известного как lookup(поиск)) и самого ключа.

Файл кодировки CASC, а также сам зашифрованный файл определяют lookup ключа, который использовался для шифрования файла. Клиент хранит список имен ключей, а также список их соответствующих ключей, если клиент не знает ключ для определенного поиска, он не может расшифровать файл и обычно отображает то, что эквивалентно "ничего" для этого файла. Для моделей это клетчатая коробка, для синематика это короткий черный экран и т.д.

Старые / широко известные ключи обычно включаются в сам клиент в таблицах базы данных TactKeyLookup и TactKey. Хотя ключи обычно отображаются в виде hex, ключи, хранящиеся в этих таблицах, хранятся в виде числовых представлений каждого байта.

Новые ключи, с другой стороны, применяются к вышеупомянутым таблицам базы данных с помощью исправлений, отправляемых сервером клиенту. Иногда ключ глобально разблокируется / публикуется и отправляется клиенту при входе в игровой мир (например, когда выходит новый маунт в магазин), в то время как в других случаях он отправляется клиенту непосредственно перед его необходимостью (например, когда пользователь собирается смотреть синематик в конце рейда).

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

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

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



Таблицы базы данных / Database tables

Blizzard включает значительную часть информации WoW в самом клиенте, которая хранится в файлах DB2. Файлы DB2 хранятся в архивах игры в папке DBFilesClient. Информацию о существах, предметах, заклинаниях, картах, диалогах с NPC и многом другом можно найти в этих файлах.


Известные таблицы

Некоторые таблицы, которые я считаю заслуживающими внимания/важными по разным причинам:
ИмяОписание
AchievementДостижения и отслеживание статистики
AreaTableДанные о территории/подзоне, включая текст, отображаемый при смене зоны
BroadcastTextНеполный диалог NPC, как правило, только те вещи, которые имеют голос за кадром
CreatureНеполный список существ, обычно только существа, используемые на стороне клиента
ChrRacesСписки рас персонажей, источник множества спекуляций Союзных рас
FactionВнутриигровые фракции/репутация
GameTipsСодержит советы/подсказки, отображаемые на экранах загрузки
GarrMissionГарнизонные миссии
GlobalStringsСтроки, используемые для различных вещей в игре, такие как сообщения об ошибках
ItemSparseИнформация о предметах (включая имена)
JournalEncounterЖурнал ... подземелий.
MailTemplateШаблоны для внутриигровой почты
MapСписок карт в игре, иногда содержит dev/test maps
ManifestInterfaceDataСписок файлов интерфейса для команды консоли ExportInterface
NamesReservedНазвания, которые вы не можете иметь в имени вашего персонажа (много китайского...)
SceneScriptTextКод, используемый для игровых сцен/мини-игр на стороне клиента
TactKeyКлючи шифрования!
UIMapБаза новой системы карт мира, представленная в 7.x


История версий / Version history

WDBC
Первая версия DBC использовалась до Легиона.

WDB2 (4.0.x - 7.0.1.20740)
Введен в Cataclysm вместе с изменением расширения файла на DB2. Файлы DBC постепенно конвертировались в DB2 один за другим, поэтому Blizzard могла применять хотфиксы к этим файлам, что невозможно для DBC.

WDB3 (7.0.1.20740 - 7.0.1.20810)
Начало работ по дедупликации для уменьшения размера файла/использования памяти.

WDB4 (7.0.1.20810 - 7.0.3.21414)
Перемещение некоторых вещей по мелочи, небольшие изменения.

WDB5 (7.0.3.21479 - 7.2.0.23436)
Вводит определения структуры полей (structure definitions) в файле и layouthashes.

WDB6 (7.2.0.23436 - 7.3.5.25600)
Дальнейшие усилия по дедупликации путем добавления "common data table" (общей таблицы данных).

WDC1 (7.3.5.25600 - 8.0.1.26231)
Дополнительные усилия по дедупликации, изменения структуры полей в файле изменились, и это представляет relationship map.

WDC2 / CLS1 (Mainline: 8.0.1.26231 - 8.1.0.28048, Classic: 1.13.x-теперь)
В этой версии введено понятие sections (разделы) и различные изменения в хранении строк (string storage).
Переименованная версия "CLS1" , основанная на этих версиях, используется для DB2 Classic 1.13.

WDC3 (8.1.0.28048 - сейчас)
WDC3 была первой версией формата, в которой для шифрования использовались несколько encryption purposes (зашифрованных разделов).

Более подробное / техническое описание изменений между версиями DB2, на которых основано вышеизложенное, можно найти здесь.


Разделы / Sections
WDC2 впервые представил концепцию разделов, а WDC3 первым применил ее. Эта функция разбивает файл на несколько разделов, каждый из которых имеет свои свойства.
Одним из указанных свойств является поле поиска ключа TACT (TACT key lookup field), которое, если установлено, означает, что указанный раздел зашифрован этим ключом TACT (см. Шифрование). Это позволяет Blizzard отправлять в DB2 данные, которые можно будет разблокировать позднее, когда станет доступен ключ TACT. Это на момент написания статьи единственное использование разделов, поскольку многосекционные DB2 всегда означают, что их часть зашифрована. Эти разделы обычно содержат только несколько зашифрованных строк.


Отношения / Relations

WDC3 представил концепцию столбца отношений. Это специальный вид столбца, который содержит идентификатор (ID), который ссылается на другую таблицу.


Структурные определения / Structure definitions

Структура файлов DB2 хранится в 2 местах. Сам файл DB2 имеет блок field_structure, который определяет позицию/размер каждого поля. Исполняемый файл WoW содержит гораздо больше информации о каждом поле внутри того, что обычно называют "DBMeta". За исключением редкой утечки, ни один из них не определяет, как называется конкретное поле.

Для отслеживания структура/макет (structure/layout definitions) таблицы сообщество создало проект WoWDBDefs. Этот проект направлен на предоставление именованных структур для каждого DBC/DB2 в истории WoW и автоматически обновляется при каждой сборке. Когда структура/макет таблицы изменяется, кто-то в сообществе вручную выясняет, что было добавлено/изменено/удалено.


Хотфиксы / горячие исправления / Hotfixes

Все таблицы базы данных могут быть исправлены данными, отправленными сервером при входе в мир или даже по требованию при выполнении определенных действий. Исправления могут добавлять, изменять или удалять данные, а также аннулировать ранее отправленные исправления. Blizzard использует исправления практически для всего, что есть в файле базы данных, от разблокировки нового контента (путем отправки ключей шифрования клиентам) до применения изменений баланса или даже исправления опечаток.

DBCache.bin
В файле DBCache.bin исправления хранятся между сеансами. Его можно найти в папке
Cache\ADB\<region> внутри вашей папки WoW. Часть папки ADB относится к более старому формату файлов, который использовался для хранения исправлений в отдельных файлах, пока исправление 7.2.0.23436 не объединило все эти файлы в один файл DBCache.bin.

Этот файл собирается от пользователей с помощью специализированных инструментов (например, клиента Wowhead или загрузчика WoW.tools) сторонними веб-сайтами, такими как MMO-Champion, Wowhead и WoW.tools, для дополнения информации базы данных от клиента. В связи с тем, что Blizzard все чаще использует исправления для скрытия / изменения данных, пользователи, отправляющие этот файл, стали обязательным требованием для этих сайтов поддерживать актуальность и актуальность информации.

Больше технической информации, как ADB, так и файла DBCache.bin, можно найти здесь.

Файлы WDB / WDB files
Файлы WDB находятся в папке Cache\WDB\<region> и используются для кэширования определенной информации, отправляемой клиенту сервером, чтобы клиенту не приходилось запрашивать его у сервера. В настоящее время в файлах WDB хранятся следующие вещи: существа, игровые объекты, NPC, текст страницы (например, книги), петиции и квесты. Эти файлы, такие как файл DBCache, также используются сторонними веб-сайтами для предоставления как можно большего количества информации пользователям.




"Datamining"

Datamining часто определяется в сообществе как «поиск нового» в патчах, отправляемых в PTR и тому подобное. Хотя это не технически точное определение слова, мы будем придерживаться его.

(в дальнейшем используется описание способа получения, собственно сам датамайн, самим Marlamin'ом, от его лица, считайте что в основном всё так же делают, пропуская некоторые этапы если они им не интересны или уже ранее известны, ну или как делают в лайв режимы команда с wowhead)

Когда я получаю данные, я склонен использовать только те инструменты, которые я знаю или разрабатываю сам. Все они с открытым исходным кодом и общедоступны. Я добавлю больше глав о том, как собирать данные «для конкретных вещей» в будущем, но сейчас документируем основы процедуры «О, боже, новая сборка».

Процедура "О Боже, новая сборка"

В этой главе я буду проходить процедуру, которой я грубо следую после новых сборок, обычно выполняемых одновременно с приемом обильного количества закусок  ;D.

На сервере WoW.tools выполняется скрипт, который каждые 2-3 минуты проверяет наличие новых версий, обнаруживая изменения и публикуя сообщение в моем Discord. Если это изменение является новой сборкой, бэкэнд WoW.tools загрузит его. В зависимости от размера сборки это может занять несколько минут. Новые сборки, генерятся как правило, в течение 10 минут или около того.

Разница в файлах / File diff


Первое, что я проверяю, это File diff. Этот инструмент читает CASC root files для обеих сборок и сравнивает их.

Вы можете получить доступ к файлу diff, перейдя сюда, нажав кнопку "Diff Builds" и выбрав соответственно старую и новую сборки. Нажатие на зеленую кнопку "Diff" после этого отправит вас на страницу сравнения файлов. Генерирование может занять до минуты, в зависимости от того, посетил ли кто-то недавно страницу.

Добавленные файлы обычно не имеют имени файла (которое окрашивает столбец имени файла в красный цвет) или типа, когда сборка идет изначально. Типы добавляются скриптом, работающим в фоновом режиме, и должны появиться в течение 10 минут после того, как на сайте появится сборка. Имена файлов (когда известно, как и где они используются) добавляются участниками сообщества.

Файл diff также включает некоторые инструменты для предварительного просмотра изменений для нескольких форматов файлов. Если формат файла не доступен для предварительного просмотра, он покажет (частичный) двоичный разностный файл (binary diff).

Если различие пустое или очень короткое, скорее всего, это не сборка контента, и вы можете продолжить копирование репутации из более старых расширений или из того, что вы делали, когда оно попадало.


DB2 также можно сравнить внутри инструмента (см. Изображение выше).

Однако может пройти несколько минут до того, как начальная разность будет выполнена, прежде чем можно будет сравнивать DB2, поскольку определения структуры еще не обновляются. Сравнение DB2 до этого времени не покажет изменений.

Я обычно просматриваю все страницы, чтобы проверить, изменилось ли что-нибудь интересное. Обновления DB2, как правило, находятся там, где будет находиться большинство интересных и легко доступных вещей, и я обязательно проверю DB2 из моего заметного списка таблиц, а также некоторые другие. Иногда я просто проверяю их все.

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


После того, как types станут полностью доступными, M2 и WMO будут доступны для просмотра внутри встроенного средства просмотра моделей (при условии, что они не зашифрованы). Я фильтрую (используйте выпадающие меню в верхней части таблицы) файл diff для Action = Added и Type = M2 (а затем Type = WMO after), чтобы получить хороший список вновь добавленных моделей. Если щелкнуть ссылку предварительного просмотра в конце строки, откроется окно просмотра модели. Если просмотрщик моделей ведет себя странно или я хочу больше экранной недвижимости, под предварительным просмотром есть ссылка на полноразмерный просмотрщик моделей для этого файла.

Еще одна интересная вещь, которую я всегда хотел бы проверить - это изменения в интерфейсных файлах. Чтобы сделать это, я фильтрую Lua (и иногда XML, если мне больно). На сайте показаны встроенные различия для этих файлов, поэтому их просмотр, как правило, довольно быстрый.

Шифрование / Encryption

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

Иногда ключи публикуются ими при добавлении в TactKey.db2. Когда это происходит, я должен добавить их на сайт вручную и обновить некоторые инструменты, которые занимаются извлечением файлов.

Клиентский или серверный / Clientside vs. Serverside

Все, на что мы смотрели до сих пор, чисто клиентское. Однако многие вещи (почти все в файлах ADB, а также исправления для конкретных таблиц, которые отправляются только по запросу) доступны только на сервере, и для этого потребуется запрос этой информации.

После поднятия PTR (обычно через некоторое время после выпуска сборки) я захожу на PTR, захожу в world и затем снова выхожу из игры, чтобы загрузить файл DBCache.bin в WoW.tools.

Основные сайты по обработке данных WoW идут дальше, используя инструменты, которые в значительной степени рассылают спам серверу на передачу его секретов, я не делаю этого, поскольку это пересекает черту того, как далеко я хочу пойти, так что это, как правило, там, где они будут иметь информация, которая не будет на WoW.tools. Обычно это такие вещи, как BroadcastText и тому подобное.

Больше?

Существует множество инструментов/улучшений, над которыми мы работаем, что облегчает анализ новых сборок. Например, Maku собрал страницу, которая сравнивает все DB2 с текстом в них на одной странице (так как они, как правило, самые интересные).

Эта страница все еще проходит тестирование и еще не готова к прайм-тайму, но вот скриншот:




Итог

В данной статьи указаны общая информация как по поиску файлов, так и ссылки на те или иные инструменты. Сообщество датамайнеров очень узкое и каждый друг с другом сотрудничает в той или иной форме, тем самым помогая остальным. И даже если вам не интересны инструменты поиска новой информации, возможно вы хотите вытащить какую то информацию для себя (картинки или же озвучку персонажа), вы узнаете как это сделать. Конечно же, Blizzard позволяют это и в один прекрасный момент могут сказать "стоп" заблокировав многие возможности, но надеюсь, этого никогда не случится, поскольку мы лишимся огромного количество полезных фич, даже банальных аддонов, а как известно, то что делают мододелы, в итоге воплощается самим разработчиком. Всем спасибо за внимание.

Данная статья появилось благодаря Marlamin, оригинал находится здесь. А источниками информации являются wowdev.wiki и wow.tools.
« Последнее редактирование: 05 Декабря, 2019, 14:16:34 by AlanMix »
Twitter - инсайдики и прочие посты.
Project NELF - discord

AlanMix

  • Датамайнер
  • Старожил
  • *
  • Сообщений: 3137
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #1 : 02 Декабря, 2019, 08:08:32 »
  • Рейтинг:8 (+8 | 0)
Предрекаю первый комментарий


Но всё таки всё так есть. Я сам пользуюсь немногими другими инструментами, но и так же wowtool (удобно банально), так же скидываю их в наш дискорд канал нубклаба новинки и эксклюзивные скрины, которые так же появляются в статейках. А как вы относитесь к датамайну? Или доставали что нить ради себя? Или уже давно про всё знали? Пишите, интересно мнение.
« Последнее редактирование: 02 Декабря, 2019, 10:09:00 by AlanMix »
Twitter - инсайдики и прочие посты.
Project NELF - discord

Амани

  • Завсегдатай
  • **
  • Сообщений: 501
  • В лёгкой победе нет чести.

  • Варкрафт: +
    • Имя: Аманя
    • Класс: Шаман
    • Сервер: Ревущий Фьорд
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #2 : 02 Декабря, 2019, 09:09:41 »
  • Рейтинг:4 (+4 | 0)
Спасибо за статью, было интересно.


WhateWowa.vb

  • Завсегдатай
  • **
  • Сообщений: 486
  • Сава по жизни

  • Варкрафт: +
    • Имя: Виваен
    • Класс: Друид
    • Сервер: Азурегос-Гром
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #3 : 02 Декабря, 2019, 09:49:59 »
  • Рейтинг:25 (+25 | 0)
Ничего не понятно, но оооочень интересно  :D

Guredo

  • Старожил
  • ***
  • Сообщений: 1194

  • Варкрафт: +
    • Имя: Сирекка
    • Класс: Воин
    • Сервер: Свежеватель душ
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #4 : 02 Декабря, 2019, 09:58:28 »
  • Рейтинг:4 (+4 | 0)
От майнеров одни спойлеры

Алкотрафик

  • Завсегдатай
  • **
  • Сообщений: 306
  • Ищу жену - нашедшему вознаграждение! ;|]

  • Варкрафт: +
    • Имя: Алкотрафик
    • Класс: Дк
    • Сервер: Гордунни
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #5 : 02 Декабря, 2019, 10:23:56 »
  • Рейтинг:0 (+0 | 0)
[режим хейта активирован]
Спасибо за статью, было интересно. нет
[режим хейта деактивирован]

Вэл

  • Новичок
  • *
  • Сообщений: 89

  • Варкрафт: +
    • Имя: Вэлвэл
    • Класс: Друид
    • Сервер: Ревущий фьорд
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #6 : 02 Декабря, 2019, 10:34:41 »
  • Рейтинг:0 (+0 | 0)
Под этой статьей будет очень сложно разжечь срач по темам "Люблю/ненавижу близов", "Гацикостас/Холокостас", "Темная госпожа/Гнилая баба", "Орада сосат/Псы Альянса", "Торт/Неторт", "Ритейл/Классик и пр., но думаю местные специалисты справятся 8)

Mermond

  • Старожил
  • ***
  • Сообщений: 1274
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #7 : 02 Декабря, 2019, 11:10:11 »
  • Рейтинг:0 (+0 | 0)
Под этой статьей будет очень сложно разжечь срач по темам "Люблю/ненавижу близов", "Гацикостас/Холокостас", "Темная госпожа/Гнилая баба", "Орада сосат/Псы Альянса", "Торт/Неторт", "Ритейл/Классик и пр., но думаю местные специалисты справятся 8)
Наивный.

Hearth of Hatred

  • Завсегдатай
  • **
  • Сообщений: 565
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #8 : 02 Декабря, 2019, 11:55:53 »
  • Рейтинг:4 (+4 | 0)
Ого. Наконец-то качественный контент потёк. Статья не от Вишко, да ещё и не перевод, да ещё и по небанальной теме. Неужели конец близок?

Аффтар жжот, пеши исчо.

stefan_flyer

  • Лучший автор
  • Старожил
  • *
  • Сообщений: 4943
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #9 : 02 Декабря, 2019, 12:21:13 »
  • Рейтинг:0 (+0 | 0)
Опять Ванделей со своей билдотой... ой, ошибся  ;D

Opti

  • Завсегдатай
  • **
  • Сообщений: 350

  • Варкрафт: +
    • Имя: Психозис
    • Класс: пал
    • Сервер: ял
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #10 : 02 Декабря, 2019, 12:33:40 »
  • Рейтинг:4 (+4 | 0)
Два ведра пряников и медаль "Афтар месяца" этому господину. Сложно

AwakumRu

  • Новичок
  • *
  • Сообщений: 45
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #11 : 02 Декабря, 2019, 12:34:10 »
  • Рейтинг:0 (+0 | 0)
Отличная статья, спасибо!
Жду введение в создание аддонов

Tirriosh

  • Завсегдатай
  • **
  • Сообщений: 593

  • Варкрафт: +
    • Имя: Парагон
    • Класс: Охотник
    • Сервер: Гордунни
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #12 : 02 Декабря, 2019, 13:31:38 »
  • Рейтинг:0 (+0 | 0)
От майнеров одни спойлеры
Эм, так читай офф сайт и всё...

DarkBargain

  • Завсегдатай
  • **
  • Сообщений: 702
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #13 : 02 Декабря, 2019, 13:56:14 »
  • Рейтинг:3 (+3 | 0)
А как вы относитесь к датамайну? Или доставали что нить ради себя? Или уже давно про всё знали? Пишите, интересно мнение.
Отлично отношусь. WoW как игра давно наскучил, а с учетом специфики моего хобби как разработчика пираток и реверсера клиента, я знаю абсолютно все механики и как всё взаимодействует. Могу достать определенную скрытую информацию, которая помогает мне в ротации или на на рейдовых боссах. Так глубоко (со сравнением версий и т.д) не лез, но крупные интересные билды ковыряю сам, правда на кэш не опираюсь, использую снифер, чтобы в лайв-режиме парсить те же хотфиксы. Ну еще потенциальный читер и взломщик клиента, потому что это интересно вечерком под пивко поковырять защитные механизмы WoW и обойти их, чтобы например использовать лайв-отладку клиента.

За статью спасибо, может и соберусь тоже написать статью о том как устроен нынешний WoW с технической точки зрения, что задумывали разработчики и как это видят игроки, какие защитные решения использует близард в своих продуктах, и почему WoW.exe без подписи близард однозначно определится как вирус. А и еще про то, почему пиратки потихоньку загибаются и нового контента скоро можно не увидеть вообще. Все сосредоточатся на развитии крупных интересных прошлых аддонов типа ЛК или легиона.

AlanMix

  • Датамайнер
  • Старожил
  • *
  • Сообщений: 3137
Re: Введение в датамайнинг WoW [v1.0]
« Ответ #14 : 02 Декабря, 2019, 14:01:52 »
  • Рейтинг:3 (+3 | 0)
Отличная статья, спасибо!
Жду введение в создание аддонов

Там главное требования - понимание как устроен язык Lua (например здесь основные ответы на вопросы), он же графический интерфейс вывода информации. А вот дальнейшие функции написаны даже близзами с выводом некоторой информации или комментариев.
end

-- Returns the weaponSlot and appearanceSourceID for the weapon that an illusion should be applied to (for dressup frames, etc)
-- If the player has a mainhand equipped that can have an illusion applied to it, uses that
-- If not, and the player has an offhand equipped that can have an illusion applied to it, uses that
-- Otherwise uses the fallback weapon in the mainhand
function TransmogUtil.GetBestWeaponInfoForIllusionDressup()
local mainHandVisualID = C_Transmog.GetSlotVisualInfo(GetInventorySlotInfo("MAINHANDSLOT"), LE_TRANSMOG_TYPE_APPEARANCE);
local offHandVisualID = C_Transmog.GetSlotVisualInfo(GetInventorySlotInfo("SECONDARYHANDSLOT"), LE_TRANSMOG_TYPE_APPEARANCE);

local weaponSlot = ((mainHandVisualID == NO_TRANSMOG_VISUAL_ID) and (offHandVisualID ~= NO_TRANSMOG_VISUAL_ID)) and "SECONDARYHANDSLOT" or "MAINHANDSLOT";
local weaponSourceID = TransmogUtil.GetWeaponInfoForEnchant(weaponSlot, LE_TRANSMOG_TYPE_APPEARANCE);

return weaponSlot, weaponSourceID;
end
Twitter - инсайдики и прочие посты.
Project NELF - discord

 

закрыть