Elex Элекс - Большая интерактивная карта игрового мира

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#1
Большая интерактивная карта мира Elex

hhrhhr_github_io_LuaELEX_elex.jpg

Автор: hhrhhr (собственно на его гитбабе и находится скрипт для создания карты из ресурсов игры.
Саму интерактивную карту мира Elex, можно открыть в браузере (в Мозилле у меня что-то не открылась, в Хроме нормально).

Эта карта сложена из ресурсов игры (объединении маленьких карт), её можно использовать для обозначений нахождения квестодателей, телепортов, продавцов, учителей, расположение врагов, полезного лута и.т.д..

Технические детали (для тех кому интересно как всё там работает, как создана карта, и для того чтобы делать доработки под себя)
Получение тайлов карт (отдельных плиток карт):
Код:
if not exist .\map_dds mkdir .\map_dds
lua pak_unpack_map.lua path_to\c_1_na.pak .\map_dds
Что тут происходит:
  • скрипт ищет файл 0_na_img\w_img_0_na.csv в c_1_na.pak
  • читает и сравнивает хэши в именах файлов (например w_img_0_na_98ca6197.rom -> Map_0000_0057_0029)
  • конвертирует имена из игровых файлов Map_ZZZZ_YYYY_XXXX в формат elex-Z-Y-X (убирает нули из формата даты)
  • копирует тайлы в формате DDS и новыми именами в папку .\map_dds

Файлы .dds находятся формате DX10 со сжатием BC7. Для массового преобразования я использовал Compressonator (пока не смог найти других CLI-утилит, поддерживающих DX10-текстуры):

Код:
if not exist .\map_tga mkdir .\map_tga
for /r .\map_dds %i in (*.dds) do @CompressonatorCLI "%i" ".\map_tga\%~ni.tga"
Получаемые фрагменты карт имеют весьма скромные размеры 256x256, потому их можно объединить с помощью ImageMagick в плитки по 512x512 px, применив для этого tga_256_to_512_webp.lua

merge.jpg


Код:
rem Make filelist
dir /b /s .\map_tga\*.tga > .\map_tga\tga_filelist.txt

if not exist .\map_www mkdir .\map_www
lua tga_256_to_512_webp.lua .\map_tga\tga_filelist.txt .\map_www > convert.cmd

rem Running the resulting batch-file
convert.cmd
После этого, вместо 1983 штук оригинальных плитки получает только 540.

Вы можете сами настроить формат вывода, для это вам нужно отредактировать переменные magick4 и tile в tga_256_to_512_webp.lua

(Перевод мой, выполнен в свободной форме, надеюсь ничего не упустил из оригинала)
 

Вложения

Последнее редактирование:
Автор
Автор
GeorG

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#2
На карте появились координаты телепортов:

teleport.jpg

(Ссылка на карту в шапке)

Несколько строк от автора:
Вышукал таки координаты телепортов. Для разбора обновлённых внутренних форматов большая часть парсеров от Risen не подошли. Там по большей части чтение по захардкоженным значениям, поэтому лишний байтик всё рушит. Я же сторонник более универсальных решений, поэтому пришлось на коленке набросать парсер (гитхаб, \WIP\gar5_parser.lua, "мануал" в описании).

Вывод пока что страшный и изобилует отладочными строками, но для выдергивания нужных значений вполне подходит. Обновлённая карта содержит слой с координатами 42 телепортов с игровыми ID-шниками, ещё один какой-то нестандартный, поэтому он исключён.

Для совмещения игровых координат с Leafjet методом тыка было найдено значение "размер мира" равное 819200 условных единиц. Как это перевести в какие-нибудь метры пока не знаю. Хоть замеряй время на пробегание от точки до точки и масштабируй этот размер в что-то типа "обычным шагов два часа пути".
Мануал - как парсировать World_Teleporter.sec
Для начала нужно создать хеш-таблицу всех строк файла ...\ELEX\system\ELEX.exe. Для этого проще всего использовать *nix утилиту:
Код:
strings -3 ELEX.exe | grep "^[A-Za-z][A-Za-z <>_\-]\+$" | LANG=C sort | uniq > strings.txt
После этого создать хеш-таблицу для её дальнейшего использования:
Код:
lua generate_hash.lua strings.txt > hash_names.lua
Также вам необходимо распаковать некоторые .rom файлы, например, чтобы найти нужные координаты телепортов ...\0_na_sec\0\9\w_sec_0_na_935f1e52.rom.
В шестнадцатеричном коде файла ...\0_na_sec\w_sec_0_na.csv, можно найти соответствие с именем файла, в нашем случае, это World_Teleporter.sec.

Теперь все готово для запуска самого парсера gar5_parser.lua:
Код:
lua gar5_parser.lua World_Teleporter.sec > World_Teleporter.txt
(Перевод мой, выполнен в свободной форме)
 

Вложения

ExCluD3D

Житель города
Модостроитель
Участник форума
Регистрация
9 Фев 2014
Сообщения
169
Реакции
208
Баллы
72
Лучшие ответы
0
#3
Не совсем конечно интерактивная. Но есть еще такая.
Карта
Плюс есть куча различной информации и других карт.
 
Автор
Автор
GeorG

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#4
На карту добавлены:
Рецепты/чертежи, аудиозаписи, картинки, книги/письма и самоцветы, изменены иконки телепортов (что были в первой версии карты).
Ссылка на карту в шапке темы (она автоматически обновляется).

hhrhhr_github_io_LuaELEX_elex_1.jpg

Технические детали распаковки:
Показать список всех файлов в архиве или распаковать их:
Код:
lua pXX_unpack.lua path_to.p00
lua pXX_unpack.lua path_to.p00 output_dir
Комментарий автора:
алгоритм для повторения примерно такой:
  • разобрать нужные *_Items.sec при помощи gar5_parser.lua
  • все полученные lua-файлы скормить скрипту parse_items.lua (список путей как аргументы)
  • на выходе получить текстовый файл с координатами и ID-шниками вышеперечисленных объектов (отсортированный по ID)
 

Вложения

Автор
Автор
GeorG

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#5
map_elex.jpg

Обновление веб-карты:
Новый слой с местоположением амулетов и колец.
Добавлены всплывающие подсказки.

Технические детали локализации:
Конвертирование \localization\w_strings.bin в таблицу Lua
Код:
lua w_strings.lua <w_strings.bin> <output.lua> [lang]
lang - языковой код от 0...15 (в патче 1.1)
 

Вложения

Kof

Kof

Новичок
Участник форума
Регистрация
2 Ноя 2017
Сообщения
7
Реакции
4
Баллы
8
Лучшие ответы
0
#6
У меня по ссылке в шапке не работает, вот ещё вариант - ссылка
--- Добавлено: ---

Кто нибудь видел карту с метками рудных жил?
 
Последнее редактирование модератором:
Автор
Автор
GeorG

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#7
У меня по ссылке в шапке не работает
Обновил ссылку в шапке, и на всякий случай напоминаю - в браузере Мозилла карта по умолчанию работает некорректно (причина вжатие которое используется, но уже частично исправлено, о этом ниже).

map_elex_01.jpg

Карта обновлена:
  • Добавлены слои с очками (6 штук)
  • Векторный слой с дорогами
  • Добавлены тайлы в JPG формате (теперь возможно открывать карту в Мозилле или IE). Переключатся в правом нижнем углу карты (см. скрин), или добавлением параметра ?f=jpg к адресу в строке браузера (URL).
  • Плагин leaflet-hash, формирующий ссылку на текущее положение и уровень зума. Теперь стало возможно, делиться конкретными координатами. Например, такая ссылка покажет русскую версию с JPG-тайлами (для IE/Firefox) и расположение очков: https://hhrhhr.github.io/LuaELEX/elex_map.html?l=ru&f=jpg#7|-2806.563|-2020.438

p.s. Ещё добавлю (я например, не сразу разобрался), что если кликнуть по предмету на карте, то появится подробная подсказка с его описанием.
p.p.s. Вот кстати ещё одна карта, но не русская.
 

Вложения

Автор
Автор
GeorG

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Участник форума
Регистрация
31 Мар 2010
Сообщения
16.932
Реакции
3.042
Баллы
821
Лучшие ответы
39
#8
Кто нибудь видел карту с метками рудных жил?
@Kof, автор услышал тебя :D

map-elex-02.jpg

Обновление:
  • Добавлен слой с залежами руды;
  • Автоопределение вашего браузера и автоматическое переключения на нужный набор тайлов (простыми словами, теперь работает и в браузере Мозилла с IE);
  • Остался ручной выбор формата WebP или JPG (см. скрин);
:)
p.s. Для локальной версии карты, можно использовать тайлы в лучшем качестве map_512_0-5_webp.zip или скачать с Меги (5.1 Mb)
p.p.s Кстати, у автора большая проблема с иконками (чем собственно обозначать элементы на карте), если кто может помочь с этим, то думаю он бы не отказался...
 

Вложения


Сверху Снизу