Датамайнинг
February 7, 2021

Как устроен клиент «Dragon Nest»

Мы публикуем вскрытия клиента игры («датамайнинг») с 2019 года.
Сегодня хотим рассказать в подробностях как он устроен внутри.

Итак, это клиент Dragon Nest.

Клиент сервера СЕА.

Вне зависимости от сервера все важные файлы находятся внутри документов с форматом .pak. Это по своей сути запакованные «архивы», благодаря которым игра работает. Документы созависимы — нельзя удалять один из них, иначе сломаете работоспособность на вашем компьютере.

С выходом обновления лаунчер скачивает несколько файлов, содержимое которых автоматически вшивается в имеющиеся файлы «Resource**.pak».

Так выглядит не вшитое обновление корейского сервера за февраль 2021.

Что внутри «Resource**.pak»?

Если заглянуть внутрь, мы первым делом увидим лаунчер, исполнительный файл игры («dragonnest.exe»), файл общих настроек («version.cfg») и две папки — «mapdata» и «resource».

Примечание: Сейчас мы рассматриваем клиент целостно, то есть это содержимое — сумма всех файлов. Вскрывать их по отдельности смысла нет, разница будет не очень большая.

Смотрим папку «mapdata»

Папка «mapdata» практически не используется датамайнерами. Тем не менее, пара интересных моментов там всё же найдётся.

Здесь содержится всё, что связано с окружающим миром, — локации, города, инстансы. Тут есть файл «information» без указания формата и две папки — «grid» и «resource». Первый необходим для игрового движка. Если его открыть в блокноте или Notepad++, можно увидеть текст «Eternity World Infomation File».

mapdata/grid

В папке «grid» содержатся ничем непримечательные файлы конфигурации, имеющие формат .ini, и мини-карты в формате .dds для каждого логова, инстанса и города.

Вторая папка, которая находится внутри «mapdata», называется «resource».
В ней содержится пять папок: «envi», «prop», «sound», «tile» и «trigger».

Папка «Envi» содержит файлы окружающей среды (формат .env) и связанные с ними текстуры (.dds) и модели (.skn).

«Prop» — это всё незначительное, что нас окружает: лягушки, мосты, камни, фонтаны, сундуки и так далее. Модели (.skn), текстуры (.dds), рабочие файлы (.act) и в некоторых случаях анимации (.ani).

«Sound», как понятно из названия, содержит файлы звуков (форматы .ogg или .wav) — но в данном случае только тех, что касаются локаций: ОСТы игры, водопад, звуки рычания драконов, чириканье птичек.

mapdata/resource/sound

Все существующие ОСТы игры из папки «bgm» можно найти в плейлисте группы «Dragon Nest Europe»: https://vk.com/music/playlist/-97501396_2_9a95e5d9691e32a19e

Несмотря на закрытие сервера, он продолжает обновляться силами команды «Kopenych & Co».


В папке «Tile» лежат текстуры травы, растений, воды, снега, камня и т.п.

«Trigger» — это скриптовые файлы в формате .lua (язык программирования, похожий на JavaScript).

Смотрим папку «resource»

Это — главная папка всего клиента. Тут находится практически всё самое интересное. 18 папок.

1. Char. Здесь все модели, текстуры и анимации монстров, НПЦ, питомцев, маунтов и игрока. Ну и папка new_select — папка с файлами экранов, отображающихся при входе в игру в формате .cam.

2. Camera. Менее интересная папка — просто файлы, необходимые, чтобы наши персонажи видели что-либо.

resource/camera

3. Dmv. Здесь хранятся все катсцены в одноимённом формате.

resource/dmv

4. Effect. Текстуры разных эффектов.

resource/effect

5. Fonts. Файлы использующихся в игре шрифтов.

resource/fonts

6. Movie.Все видеоролики, которые есть в игре: превью умений (как игроков, так и наёмников) и титульная заставка в формате .avi.

resource/movie

7. Script. Здесь находятся необходимые для работы контента скрипты и ВСЕ текстовые файлы квестов — как сюжетных, так и побочных. У скриптов формат .lua, у текстов заданий — .xml

8. Sound. Папка со всеми звуками, которые произносят НПЦ, персонажи, монстры или предметы (например, выстрелы пушки) в формате .ogg или .wav.

resource/sound

9. Stateeffect. Act-файлы монстров, необходимые, чтобы произошёл тот или иной эффект или действие. Без них, например, дракон не будет бить — только обездвижено стоять на месте.

resource/stateeffect

10. Weapon. Модели и act-файлы оружий игрока.

resource/weapon + va_battlesword_forestdragon.skn

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

resource/ui

12. Uitemplatetexture — дополнительные файлы текстур: если чего-то нет в ui, тогда оно есть тут. В основном это какие-то менее значимые иконки: стрелочка, ведущая к месту прохождения квеста, сундуки в конце инстанса, отображение на экране шкалы для использования умения Fever/Hero skills).

resource/uitemplatetexture

13. Uistring. Тут лежат очень важные текстовые файлы формата .xml:


а) help — содержит инструкцию к игре, которая отображается системой (например, когда вы нажимаете на чат).

help.xml

б) prohibitword — все запрещённые слова, с которыми вы не сможете создать персонажа и которые в чате будут заменяться на звёздочки.

prohibitword.xml

в) uistring_server — различные ошибки (неверный логин или пароль, никнейм уже занят, ваш аккаунт заблокирован и так далее).

uistring_server.xml

г) uistring — ВЕСЬ остальной системный текст, в том числе который пока не используется в игре, но появится в будущем. Это практически самый важный файл для датамайнеров. Именно в нём находятся, например, имена НПЦ, название сюжетной главы и так далее.

uistring.xml — начало
uistring.xml — конец: можно заметить, что отдельные моменты не переведены — это значит, что они являются заделом на будущее.

14. Item — текстуры и модели разных предметов, «лежащих» на полу или не привязанных к конкретному персонажу (крылья, духи, ивентовые шапки).

15. Ext — папка с таблицами в формате .dnt. Здесь лежит самый интересный для датамайнеров файл — filetable. Это таблица с абсолютно всеми файлами игры, в том числе теми, которых в клиенте пока ещё нет. Другие таблицы также интересны: названия квестов, имена использующихся НПЦ, шансы выпадения предметов, требования для логова и так далее. Однако разобраться во всём этом трудно, поскольку во многих случаях прописываются не названия, а id.

resource/ext — всё содержимое папки, часть 1
resource/ext — всё содержимое папки, часть 2
filetable.dnt — начало
filetable.dnt — конец
maptable.dnt — начало
maptable.dnt — чуть дальше начала

16-18. sharedeffect, particle и etc. Это три папки, про которых рассказать особо нечего. Содержимое первых двух полностью системное и вспомогательное, а последней — то, что не относится ни к чему другому (например, анимации при готовке или рыбалке).

На этом всё.

Теперь вы знаете как клиент «Dragon Nest» устроен внутри.
Надеемся, что статья была вам интересна. Если это так, поставьте, пожалуйста, посту лайк и оставьте комментарий с благодарностью. Мы будем рады.


Подпишитесь на Подслушано в Dragon Nest ВКонтакте: https://vk.com/overheard_dn