PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : про вытаскивание тайлов для создания web-ка



hhrhhr
20.10.2017, 04:29
Всем привет.

Когда-то немного поучаствовал в создании интерактивной карты по Ведьмаку (расположение врагов, телепортов, квестодателей, продавцов и тд), теперь дошло и до ELEX-а.

https://raw.githubusercontent.com/hhrhhr/LuaELEX/master/docs/img/map_example.jpg?raw=true

Самое простое оказалось вытащить тайлы игровой карты и немного пошаманить над ними для перевода в формат, понятный браузерам и картографическим движкам. Готовые скрипты и тестовый пример лежат на гитхабе (https://github.com/hhrhhr/LuaELEX). Как мог, изложил порядок действий на английском, попробую немного добавить на родном.

Первый скрипт вытаскивает из игрового архива все тайлы связанные с внутриигровой картой. Разработчики использовали DX10 DDS формат со сжатием BC7, что вылилось в поиск утилит, способных переконвертировать этот формат. Кроме Compressonator (>70 Мб инсталлятор) ничего сходу не нашлось, может кто подскажет более компактный аналог.
Этот же скрипт переименовывает файлы из игрового именования Map_ZZZZ_YYYY_XXXX с ведущими нулями в elex-Z-Y-X , который более понятен картодвижкам.

Второй скрипт из четырёх тайлов размером 256*256 склеивает один тайл размером 512*512 с соответствующим переименованием для экономии места и уменьшения общего количества файлов практически вчертверо.

Теперь о сложностях. Не знаю масштаба игрового мира, поэтому на демо-карте масштабная линейка показывает взятую от балды цифру. После его определения появится возможность легко и непринуждённо добавлять информационные слои с расположением телепортов, особо злых вражин, секретных мест и тд.
Но, для этого нужно как-то надёргать игровые координаты всех интересующих объектов или хотя бы уметь получать текущее положение ГГ. Вариант с ручным прописыванием не приемлю в принципе, а исследованию игровых файлов на этот предмет мешает некое отсутствие информации.

Поэтому принимаю любые намёки и помощь, в общем — приглашаю к обсуждению.

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

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

Для совмещения игровых координат с Leafjet методом тыка было найдено значение "размер мира" равное 819200 условных единиц. Как это перевести в какие-нибудь метры пока не знаю. Хоть замеряй время на пробегание от точки до точки и масштабируй этот размер в что-то типа "обычным шагов два часа пути".

MaGoth
26.10.2017, 01:41
Для совмещения игровых координат с Leafjet методом тыка было найдено значение "размер мира" равное 819200 условных единиц. Как это перевести в какие-нибудь метры пока не знаю. Хоть замеряй время на пробегание от точки до точки и масштабируй этот размер в что-то типа "обычным шагов два часа пути".
В Готиках 1-2 РВ для миров использовали "сантиметры" в качестве единиц измерения для мира, возможно и здесь будет аналогично, учитывая что у них используется самописный движок.. :)


MfG MaGoth, :gratz

hhrhhr
26.10.2017, 06:33
очень даже совпадает с данными, полученными "с секудомером" ;)

вывел ГГ на прямую дорогу, пошёл ускоренным шагом. за 20 сек ГГ делает 50 шагов, за 45 сек проходит ~360 точек на тайлах максимального масштаба. плюс-минус лапоть, получился коэффициент ~0.008 к размеру мира; почти попал в "правильный" 0.01.

p.s.
доступная для исследования площадь карты вышла довольно скромной — ~8 км^2.

hhrhhr
26.10.2017, 10:51
добавил на карту расположение рецептов/чертежей, аудиозаписей, картинок, книг/писем и камешков (для усилений). картинка в первом посте должна обновиться автоматически.

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

hhrhhr
29.10.2017, 00:30
+ ещё один слой с расположением амулетов и колец
+ всплывающие подсказки с названием/описанием (где имеется)
* под это дело обновлены скрипты

GeorG
29.10.2017, 11:35
Навёл на тот же Амулет вора что на скрине в шапке, описания нет, просто написано - Амулет вора.

hhrhhr
29.10.2017, 13:51
при наведении появляется всплывающая подсказка (tooltip), а при щелчке — всплывающее сообщение (baloon) с описанием.

Shifroval
29.10.2017, 18:21
Замечательная карта, почти как по первому Ризену, там аж с координатами все предметы и неписи.
Стоит ожидать эту карту в виде отдельной программы или даже приложения на андроид\иос? Что куда удобнее при игре, чем постоянно в браузере копаться. К сожалению, я сам в кодинг не умею от слова совсем.
В качестве предложений по улучшению - в всплывашках с описанием предметов вписывать и их свойства, если они доступны. А для книг и записок можно указать количество даваемого опыта.

hhrhhr
29.10.2017, 19:31
у неписей есть расписание, по которому они находятся в определённых координатах в определённое время. время и ссылки на guid-ы координат есть, но сами координаты пока в поиске.

отдельное приложение — даже и мыслей таких нет. максимум, доработка карты под мобильные девайсы.

Ametistys
29.10.2017, 19:40
Спасибо большое, hhrhhr, за Ваш кропотливый труд! :gratz

Замечательная карта, почти как по первому Ризену, там аж с координатами все предметы и неписи.
Стоит ожидать эту карту в виде отдельной программы или даже приложения на андроид\иос? Что куда удобнее при игре, чем постоянно в браузере копаться. К сожалению, я сам в кодинг не умею от слова совсем.
В качестве предложений по улучшению - в всплывашках с описанием предметов вписывать и их свойства, если они доступны. А для книг и записок можно указать количество даваемого опыта.
Вот это было бы круто! Очень поддерживаю. Конечно, наверно, правильнее находить всё самостоятельно и, всё же, такая карта на iPad рядом с монитором многим могла бы послужить хорошим подспорьем!

Ametistys
29.10.2017, 19:55
отдельное приложение — даже и мыслей таких нет. максимум, доработка карты под мобильные девайсы.
Ну, может "энтузиастые" умельцы проявят интерес. База готова почти. Если решат, что игра того стоит, может и сделают. Кроме нашего, русскоязычного и в других разделах тему про карту разместить можно. А там, если пойдёт, глядишь и для всего WOP-Форума отдельное приложение на мобильные платформы сделают. Кто знает...

elind
29.10.2017, 20:42
Очень крутая работа! :gratz
Закинула все ссылки нашим воповским модераторам и умельцам. Надеюсь, они разберутся, поскольку я в технических вопросах мало чего смыслю.
Насколько я понимаю, в случае чего, ты сам сможешь с ними объяснится на английском.
Надеюсь, уважаемый hhrhhr, наша интернациональная команда сможет тебе помочь и поддержать это замечательное начинание!§wink

Ametistys
29.10.2017, 21:33
Здорово, Алёна! Знал, что не обойдёшь вниманием! Спасибо большое! :gratz

hhrhhr
30.10.2017, 10:23
для книг и записок можно указать количество даваемого опыта.
нужен пример такой книги или записки, хотя бы примерное название.


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

hhrhhr
31.10.2017, 12:32
в общем, всё уже сделано до нас — http://elex-map.eu/map

тягаться с таким "монстром" мне нет смысла...

elind
31.10.2017, 16:53
Ты умничка! Не огорчайся...:gratz

В этом "монстре" нет русского языка. Думаю, многие русскоязычные игроки будут тебе очень благодарны!§wink

Shifroval
31.10.2017, 17:23
В том монстре и инглиша нет, кстати. Так что ценость представляет лишь для немцев. Ну или если нужно что-то одно найти и ты точно знаешь как это переводится.
А я только хотел предложить помощь по вытаскиванию координат предметов...
Всегда найдётся азиатнемец, что делает что-то лучше тебя (с)

hhrhhr
01.11.2017, 03:05
Не огорчайся...
да я не в этом плане, но всё равно спасибо.


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

иконки ещё нужно научиться доставать, текущие как-то не вдохновляют.


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

вот такие заборчики в открытом мире ;)

MaGoth
02.11.2017, 15:45
очень даже совпадает с данными, полученными "с секудомером" ;)
Гут.. :)


вывел ГГ на прямую дорогу, пошёл ускоренным шагом. за 20 сек ГГ делает 50 шагов, за 45 сек проходит ~360 точек на тайлах максимального масштаба. плюс-минус лапоть, получился коэффициент ~0.008 к размеру мира; почти попал в "правильный" 0.01.
Ну, погрешности можно скинуть на издержки мат., конвертеров единиц, ведь и в оригинале мира в 3дс-максе например, значения были иные нежели в итоге в игре. Опять же сужу по Г1-Г2, т.к. Г3 и Геном никогда не интересовали..


p.s. доступная для исследования площадь карты вышла довольно скромной — ~8 км^2.
Главное что есть где гулять.. ;)


Зы, + не в курсе будет полезна или нет эта инфа, в Г1-2 сетка мира относительно карты и позиционирования на ней Гг строилась путем отбора самых крайних вертекстов по сторонам света, и их значения вносились в расчет скриптов игры..
Зы-зы, а русскую карту продолжай, буржуинских нам не нать.. ;)


MfG MaGoth, :gratz

hhrhhr
06.11.2017, 18:53
немного обновлений:
слой с очками (правда, всего шесть штук)
векторный слой с дорогами (совершенно бесполезный ;)
тайлы в JPG-формате (чтоб пользователи IE/Firefox отстали). переключение через ссылки в правом нижнем углу или при добавлении аргумента "...?f=jpg..." к адресу.
плагин leaflet-hash, формирующий ссылку на текущее положение и уровень зума. можно делиться конкретными координатами.

например, такая ссылка покажет немецкую версию с jpg-тайлами и расположение очков для "замечания живых существ":
https://hhrhhr.github.io/LuaELEX/elex_map.html?l=de#7|-2806.563|-2020.438 (https://hhrhhr.github.io/LuaELEX/elex_map.html?l=de#7|-2806.563|-2020.438)

GeorG
07.11.2017, 00:23
Такое предложение - возможно ли на карте, нанести метки рудных жил? ;)

hhrhhr
07.11.2017, 09:34
ну как-то так:

https://s8.hostingkartinok.com/uploads/images/2017/11/cb05611977641f831682cc89b1a03cbb.jpg (https://hhrhhr.github.io/LuaELEX/elex_map.html)

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


+ слой с залежами руды.
+ определение поддержки WebP-формата и автоматическое переключение на запасной набор тайлов.
* ручной выбор теперь доступен просто в списке слоёв.

p.s.
для самых ленивых полный набор тайлов в не таком гадком качестве, как в репозитории (для локальной версии, например):
map_512_0-5_webp.zip 5.1 MB
https://mega.nz/#!q0A1BJya!bYC3_OtDNsAgSg0TRN3N7ynfowQx76R5immFDMt-OZE