Cruma - Lineage 2 World Viewer & Radar Map Generator

~RosT~

Знаменитый
Участник
Старожил I степени
Легенда Истоков
Сообщения
11
Розыгрыши
0
Репутация
0
Реакции
17
Баллы
1 235

Cruma​

Предыстория​

Примерно в 2024 году мне понадобилась радар мапа высокого разрешения и я связался с одним из разработчиков в сообществе, который занимался подобными вещами. Разработка должна была занять около четырёх месяцев и обойтись почти в $10к. Я посчитал эту цену слишком высокой для моих нужд и решил создать такую карту самостоятельно.

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

Позже я нашёл l2mapconv, который на мой взгляд был реализован значительно лучше. Однако он поддерживал только некоторые типы текстур для статических мешей. Другие типы материалов, terrain и различные остальные элементы отображались без текстур.

Поскольку Java была мне гораздо ближе, а с C++ мне приходилось работать скорее по необходимости, я решил взять за основу второй проект, переписать его на Java и использовать некоторые наработки из первого проекта для поддержки большего количества типов материалов. Из-за существенных различий в архитектуре двух проектов это процесс не был простым/быстрым. В общей сложности работа заняла около двух-трёх месяцев. В результате я получил не только необходимую мне мапу, но и возможность загружать и исследовать весь игровой мир клиента L2.

Из неподдерживаемых возможностей оставались только FX эффекты, анимация билбордов (billboards), небо. Также присутствовали некоторые проблемы с ambient lighting, но для создания радарных карт всё это не имело особого значения.

Возвращение к проекту​

Несколько месяцев назад я решил попробовать одну из новых моделей OpenAI чтобы проверить сможет ли она помочь мне довести до ума рендеринг всех типов материалов, а также заменить OpenGL на bgfx. Основная мотивация заключалась в том, что macOS, моя основная операционная система, поддерживает OpenGL только до версии 4.1, а для дальнейшего повышения производительности мне требовались возможности более новых версий OpenGL. bgfx позволяет решить эту проблему благодаря поддержке различных графических бэкендов, включая нативный Metal на macOS, Vulkan и DirectX.

Текущее состояние​

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

Доступные режимы​

В приложении доступны три режима:
  • Explore: Свободное перемещение по миру с управлением камерой через WASD. Скорость движения можно изменять клавишами 1–5, а также ускорять или замедлять с помощью Shift и Alt. F1 отображает все шорткаты.
  • Inspect: Позволяет выделить и изолировать любой объект. Я добавил этот режим главным образом для быстрой диагностики и поиска проблем с материалами.
  • Diagnostics

Поддерживаемые платформы и производительность​

Приложение поддерживает Windows, macOS и Linux. Лучше всего оно работает на macOS, поскольку именно на этой платформе проводилась большая часть тестирования. На моём M5 Max я стабильно получаю более 50 FPS при обзоре всего мира. Также я тестировал приложение на Windows с использованием бэкендов DirectX 11, DirectX 12 и Vulkan.

Возможные проблемы​

Если у вас возникнут сложности или ошибки, пишите в этой теме. Пожалуйста, указывайте версию операционной системы и клиента Lineage 2, который используете. Если ваш ПК не справляется с нагрузкой, попробуйте изменить параметры в основных настройках а так же в Scene Settings после загрузки мира либо загрузите только часть игрового мира.

Инструкции по установке, настройке и использованию приложения можно найти в README.
На винде есть проблема с Vulkan бекендом, починю в след версии.

Новое
- Дополнительные настройки для тайлов при эекспорте. Capture теперь умеет сохранять отдельные снимки одного тайла: каждый этаж TOI, Cruma Tower и подземелий, срезанные на нужной высоте. Ещё можно спрятать кусты и мелкие растения (passable surfaces), чтобы увидеть землю под густым лесом ( ). Настройка: Options -> Capture -> Export -> Tile views. Готовые конфиги уже есть для TOI, Cruma Tower, Garden of Eva, Forgotten Temple, School of Dark Arts, Imperial Tomb, логова Антараса и комната Белета.
- Срез по высоте во Viewer. В виде сверху (клавиша O) в Scene -> World -> Height cut можно спрятать всё выше или ниже заданной высоты. Удобно искать этажи, а числа сразу подходят для Tile views. .
- Масштаб интерфейса. Options -> Interface -> Interface scale: автоматически по настройкам системы или вручную от 100% до 300%. Исправляет слишком мелкий текст на Windows.
- В стартовом меню есть кнопка Logs. Если что-то сломалось, приложите лог к сообщению. Хранятся логи последних трех запусков.

Улучшено
- Cruma больше не закрывается молча и не показывает просто «Failed to launch JVM». При ошибке появляется сообщение с объяснением.
- Capture теперь сохраняет тыйлы в папку Pictures/Cruma, для каждого клиента отдельно.
- Можно включить удаление старых тайлов перед новым экспортом.
- На радар-карте больше не обрезаны крыша TOI, а Primeval Isle и Forest of Mirrors показаны без крон деревьев.

Ссылка на новую версию:
Ссылка на предыдущую версию:



Проверялись только следующие версии клиентов: C4, C6, GF, HF и Salvation: The Gathering / Orfen (EN152).
 
Последнее редактирование:
Спасибо. Полезный и нужный софт.
Шрифт конечно выбран очень мелкий, пришлось лупу брать.
Но не разу программа не доработала, то закрылась то такая ошибка
1791523232129.webp
 
Последнее редактирование:
Спасибо. Полезный и нужный софт.
Шрифт конечно выбран очень мелкий, пришлось лупу брать.
Но не разу программа не доработала, то закрылась то такая ошибка
Посмотреть вложение 98344
Привет, спасибо за фидбек. Размер шрифта и обработку ошибок поправлю. Я думаю, что вылет может быть из-за памяти. Откройте файл app\Cruma.cfg (папка app лежит рядом с Cruma.exe) и замените строку java-options=-Xmx12g на, к примеру, java-options=-Xmx8g, если у вас 16 ГБ. Затем перезапустите Cruma и попробуйте загрузить только какую-то часть тайлов.

Если не поможет, напишите, сколько у вас памяти и какая видеокарта и пришлите файлы hs_err_pid*.log из папки Cruma, если они есть.
 
Привет, спасибо за фидбек. Размер шрифта и обработку ошибок поправлю. Я думаю, что вылет может быть из-за памяти. Откройте файл app\Cruma.cfg (папка app лежит рядом с Cruma.exe) и замените строку java-options=-Xmx12g на, к примеру, java-options=-Xmx8g, если у вас 16 ГБ. Затем перезапустите Cruma и попробуйте загрузить только какую-то часть тайлов.

Если не поможет, напишите, сколько у вас памяти и какая видеокарта и пришлите файлы hs_err_pid*.log из папки Cruma, если они есть.
Братишка 9 тысяч из 10 наверно было б за название понял да? Я просто за последние 10 лет ахуеваю бл**ь от того как люди придумывают названия своим проектам в области l2 - не важно что это сервер, софт или ещё что то: diontown, tanatos, orentown, l2baium, l2tateossionring.com, l2animalskin.ru
Я просто не могу понять неужели нельзя в англ словаре посмотреть или попросить ИИшку подсказать слово не связанное с миром l2 красиво описывающее ресурс даже без описания?
Хорошо пускай представим что крума это башня с высоты которой многое видно но ведь ТоИ выше? пизда.
 
скинь исход в ЛС - тоже хочу себе такую програмку накидать, может тут хоть какая-то оптимизация будет )))

Условно меня интересует как вообще получилось сделать отображения всех карт при условии что одна карта по 4гб (если полностью загрузить) в память займет...
 
ты че охуел
орен это бренд который был создан в 22 году, не было еще никаких нейросетей и прочих шляп, мы его сразу развивали как "подвал орена", нишевый сервер для работяг
 
Последнее редактирование:
Спасибо. Полезный и нужный софт.
Шрифт конечно выбран очень мелкий, пришлось лупу брать.
Но не разу программа не доработала, то закрылась то такая ошибка
Посмотреть вложение 98344
Проверь версию java в PATH или укажи путь к нужной версии, должно сработать
 
ты че охуел
орен это бренд который был создан в 22 году, не было еще никаких нейросетей и прочих шляп, мы его сразу развивали как "подвал орена", нишевый сервер для работяг
Хуёво развивали, раз не додумались до красивого названия, поставили бы HunterVillageTownCity.ru

Чё то я в тиктоке в комменты поднасрал что проект ждёт судьба dointown так сразу приставку town убрали оставили только oren
 
Братишка 9 тысяч из 10 наверно было б за название понял да? Я просто за последние 10 лет ахуеваю бл**ь от того как люди придумывают названия своим проектам в области l2 - не важно что это сервер, софт или ещё что то: diontown, tanatos, orentown, l2baium, l2tateossionring.com, l2animalskin.ru
Я просто не могу понять неужели нельзя в англ словаре посмотреть или попросить ИИшку подсказать слово не связанное с миром l2 красиво описывающее ресурс даже без описания?
Хорошо пускай представим что крума это башня с высоты которой многое видно но ведь ТоИ выше? пизда.
Я и представить не мог, что название какого-то рандомного проекта может так стриггерить. Слушай, всем не угодишь. Вот ты предлагаешь не связанное с L2 название проекта, а я как раз хотел наоборот. Этот проект в первую очередь для просмотра ассетов Л2, а не дженерик UE2 asset viewer. Использовать в названии L2 не хотелось, но хотелось краткое название узнаваемое каждым кто играл в игру. Проектов с названием Крума или вовсе нет или их мало. К тому же это была моя любимая локация когда я начинал играть 2005.
Сообщение объединено:
скинь исход в ЛС - тоже хочу себе такую програмку накидать, может тут хоть какая-то оптимизация будет )))

Условно меня интересует как вообще получилось сделать отображения всех карт при условии что одна карта по 4гб (если полностью загрузить) в память займет...
Привет, я в течении месяца-двух расшарю исходники на github.

А касательно карт, то ты наверное имеешь в виду мапу и все пакеты которая она подгружает? Потому что сами unr архивы в maps маленькие. DXT текстуры уходят в таком же сжатом виде (в 4-8 раз меньше не сжатых) на видеокарту. Многие обьекты (например, деревья) переиспользуются разными тайлами и в gpu хранятся только в одном экземпляре.
Сообщение объединено:
Обновил версию до 0.1.1, смотрите первое сообщение. Продублирую и здесь
На винде есть проблема с Vulkan бекендом, починю в след версии.

Новое
- Дополнительные настройки для тайлов при эекспорте. Capture теперь умеет сохранять отдельные снимки одного тайла: каждый этаж TOI, Cruma Tower и подземелий, срезанные на нужной высоте. Ещё можно спрятать кусты и мелкие растения (passable surfaces), чтобы увидеть землю под густым лесом ( ). Настройка: Options -> Capture -> Export -> Tile views. Готовые конфиги уже есть для TOI, Cruma Tower, Garden of Eva, Forgotten Temple, School of Dark Arts, Imperial Tomb, логова Антараса и комната Белета.
- Срез по высоте во Viewer. В виде сверху (клавиша O) в Scene -> World -> Height cut можно спрятать всё выше или ниже заданной высоты. Удобно искать этажи, а числа сразу подходят для Tile views. .
- Масштаб интерфейса. Options -> Interface -> Interface scale: автоматически по настройкам системы или вручную от 100% до 300%. Исправляет слишком мелкий текст на Windows.
- В стартовом меню есть кнопка Logs. Если что-то сломалось, приложите лог к сообщению. Хранятся логи последних трех запусков.

Улучшено
- Cruma больше не закрывается молча и не показывает просто «Failed to launch JVM». При ошибке появляется сообщение с объяснением.
- Capture теперь сохраняет тыйлы в папку Pictures/Cruma, для каждого клиента отдельно.
- Можно включить удаление старых тайлов перед новым экспортом.
- На радар-карте больше не обрезаны крыша TOI, а Primeval Isle и Forest of Mirrors показаны без крон деревьев.

Ссылка на новую версию:
Ссылка на предыдущую версию:
Сообщение объединено:
Спасибо. Полезный и нужный софт.
Шрифт конечно выбран очень мелкий, пришлось лупу брать.
Но не разу программа не доработала, то закрылась то такая ошибка
Посмотреть вложение 98344
Попробуй запустить новую версию. Смотри изменения. Появилась опция скейла интерфейса. Ошибки теперь должы быть более информативные. Также добавлена в меню кнопка открывающая папку с логами.
 
Назад
Сверху Снизу