DevLog: Project L2x

  • Автор темы Автор темы rmx
  • Дата начала Дата начала
Добавлю что форк движка необязателен, Plugin Importer функционала UE хватает с лихвой начиная с шейдеров и карт и заканчивая интерфейсом (удачи с конченным UMG :D).
Форматы любых данных клиента так или иначе есть в свободном доступе (та же оф дока по UE2 сильно поможет с шейдерами ) + сурсы UE2 и примеры реализаций в Umodel.

Когда только начинал знакомиться с UE, не имея вообще представления как и что там работает в течении пары месяцев по вечерам занес почти весь контент из Black Desert Online в двиг используя только импортер функционал, так что все в ваших руках. Самый геморой будет тогда, когда вам придется реализовывать саму игровую логику в клиенте - а ассеты это дай бог 20% от всего обьема работы.
 

Вложения

  • HighresScreenshot00004.webp
    HighresScreenshot00004.webp
    305,6 КБ · Просмотры: 221
  • HighresScreenshot00005.webp
    HighresScreenshot00005.webp
    272,8 КБ · Просмотры: 200
  • HighresScreenshot00006.webp
    HighresScreenshot00006.webp
    240,8 КБ · Просмотры: 196
  • HighresScreenshot00007.webp
    HighresScreenshot00007.webp
    360,4 КБ · Просмотры: 187
  • HighresScreenshot00008.webp
    HighresScreenshot00008.webp
    444,6 КБ · Просмотры: 184
  • HighresScreenshot00009.webp
    HighresScreenshot00009.webp
    557,1 КБ · Просмотры: 210
  • HighresScreenshot00003.webp
    HighresScreenshot00003.webp
    104,2 КБ · Просмотры: 253

rmx

Баллов: 10
Очень красиво и вдохновляюще! Спасибо большое за этот пост, придали энергии и мотивации на годы вперёд!

BladeRunner

Баллов: 13
ты сам не понимаешь, насколько это круто) особенно в глазах чайников типа меня )
Добавлю что форк движка необязателен, Plugin Importer функционала UE хватает с лихвой начиная с шейдеров и карт и заканчивая интерфейсом (удачи с конченным UMG :D).
Форматы любых данных клиента так или иначе есть в свободном доступе (та же оф дока по UE2 сильно поможет с шейдерами ) + сурсы UE2 и примеры реализаций в Umodel.

Когда только начинал знакомиться с UE, не имея вообще представления как и что там работает в течении пары месяцев по вечерам занес почти весь контент из Black Desert Online в двиг используя только импортер функционал, так что все в ваших руках. Самый геморой будет тогда, когда вам придется реализовывать саму игровую логику в клиенте - а ассеты это дай бог 20% от всего обьема работы.
Спасибо за ответ! И за огромную дозу вдохновления! (как мне теперь сфокусироватся на работе хаха)

Очень большую работу проделали и очень красиво выглядит. ?


Добавлю что форк движка необязателен, Plugin Importer функционала UE хватает с лихвой начиная с шейдеров и карт и заканчивая интерфейсом

Всё верно, как я и отписал можно пойти любым из этих путей и я думаю выберу оба.

Сделаю форк для более интегрированного DX, подчистить эдитор от барахла если силёнок хватит и их политика по хранению Third Party Dependencies мне совсем не греет душу. Сурс код UE5 имеет более 2GB если заливать его в гитлаб вместе с lfs а билдить хреного тучу сторонних библиотек из сурсов ну такое себе.

---

Для людей которые уже пред-установленным UE5 или тем не хотят работать на кастум форке (потомучто мерджить фиксы в свой форк занимает время) будут да, маленькие плагины под каждый импорт на основе UFactory которые в форке будут доступны предустановленными.

удачи с конченным UMG :D

О да, так как главная задача этого проекта сделать generic MMO платформу (песочницу) которую можно использовать для создания своих версии популярных стареньких ММО, и использовать L2 как опорную точку proof-of-concept переноса игры, я точно хочу сделать входной порог как можно ниже чтоб и экспертам было ок работать и самым зелёным новичкам.

UMG это кусок лютого дерьма.

---

Как альтернативу, буду использовать webview overlay, с выбором еще не определился, может стану колупать CEF и удалять с него все чисто вебовское и интегрировать (если мозгов хватит), может пойду путём Tauri где в зависимости от платформы юзают либо виндовский CEF Win10/Win11 или интегрируют CEF в билд отдельно на линуксах.

Может даже просто буду использовать как плагин, всёравно врятли хоть один проект на базе этой платформы превысит 100к$, но тут такое. Надо думать.

Тем самым любые ребятишки с базовыми знаниями HTML/CSS смогут модифицировать любую часть интерфейса и это может послужить входной точкой дальше в IT на более професиональном уровне.
 
Немного идеи о проекте документации L2x

Так как финальный план у меня еще в голове не готов, а над roadmap'ом я еще работаю, решил на ночь "отлогать" несколько целей для Documentation Project v1.0.0-alpha-rc.1

Более или менее структура документации думаю подойдет от Nextra c некоторыми дополнениями.

1726685033075.webp

- Добавить поддержку переключения игр, по умолчанию Lineage II
- Добавить поддержку i18n
- Документировать обзор игры
- Документировать лор игры в очень примитивной, черновой форме
- Документировать игровой мир, персонажей, предметы и другие особенности или механики
- Документировать весь протокол клиент <-> сервер, пакеты [C1-HF] (AsyncAPI)
1726685772259.webp
- Документировать все общие и уникальные UI компоненты клиента, в грубой форме (Storybook, mdx)
- Добавить поддержку доступных, приятных для глаз компонентов документации
- Добавить поддержку компонентов для сравнения между двумя или несколькими обновлениями игры (версиями) для просмотра различий таких как DevLog: Project L2x
 
Та давай нам уже рабочий Хантер виладж на юнити?
 
Добавлю что форк движка необязателен, Plugin Importer функционала UE хватает с лихвой начиная с шейдеров и карт и заканчивая интерфейсом (удачи с конченным UMG :D).
Форматы любых данных клиента так или иначе есть в свободном доступе (та же оф дока по UE2 сильно поможет с шейдерами ) + сурсы UE2 и примеры реализаций в Umodel.

Когда только начинал знакомиться с UE, не имея вообще представления как и что там работает в течении пары месяцев по вечерам занес почти весь контент из Black Desert Online в двиг используя только импортер функционал, так что все в ваших руках. Самый геморой будет тогда, когда вам придется реализовывать саму игровую логику в клиенте - а ассеты это дай бог 20% от всего обьема работы.
Предлагаю экспортировать террейн, вместе со всеми материалами и моделями и скинуть их мне =) в свою очередь добавлю как стартовую локацию в грядущей ммошке)
 
Предлагаю экспортировать террейн, вместе со всеми материалами и моделями и скинуть их мне =) в свою очередь добавлю как стартовую локацию в грядущей ммошке)
Террейн пока не готов. Дело в том что в BDO он воксельный и я временно использовал статикмеши лодов с кое как натянутыми текстурами. Жду многострадальный обещанный "Next Generation Terrain Solution" и нормальное решение для нанит-мешей с острыми углами.
Может когда-нибудь, как будет время все доделать, зашарю весь проект с импортерами и прочим - там уже сам надергаешь. Сейчас там слишком много условностей и каждую итерацию это все грохается и импортируется заново.
 
Добавлю что форк движка необязателен, Plugin Importer функционала UE хватает с лихвой начиная с шейдеров и карт и заканчивая интерфейсом (удачи с конченным UMG :D).
Форматы любых данных клиента так или иначе есть в свободном доступе (та же оф дока по UE2 сильно поможет с шейдерами ) + сурсы UE2 и примеры реализаций в Umodel.

Когда только начинал знакомиться с UE, не имея вообще представления как и что там работает в течении пары месяцев по вечерам занес почти весь контент из Black Desert Online в двиг используя только импортер функционал, так что все в ваших руках. Самый геморой будет тогда, когда вам придется реализовывать саму игровую логику в клиенте - а ассеты это дай бог 20% от всего обьема работы.

В БДО очень красивый мир и реалистичный, но почему-то очень однотонная цветовая палитра, коричнево- зеленая. Как будто видео в формате RAW
 
Спасибо за ответ! И за огромную дозу вдохновления! (как мне теперь сфокусироватся на работе хаха)

Очень большую работу проделали и очень красиво выглядит. ?




Всё верно, как я и отписал можно пойти любым из этих путей и я думаю выберу оба.

Сделаю форк для более интегрированного DX, подчистить эдитор от барахла если силёнок хватит и их политика по хранению Third Party Dependencies мне совсем не греет душу. Сурс код UE5 имеет более 2GB если заливать его в гитлаб вместе с lfs а билдить хреного тучу сторонних библиотек из сурсов ну такое себе.

---

Для людей которые уже пред-установленным UE5 или тем не хотят работать на кастум форке (потомучто мерджить фиксы в свой форк занимает время) будут да, маленькие плагины под каждый импорт на основе UFactory которые в форке будут доступны предустановленными.



О да, так как главная задача этого проекта сделать generic MMO платформу (песочницу) которую можно использовать для создания своих версии популярных стареньких ММО, и использовать L2 как опорную точку proof-of-concept переноса игры, я точно хочу сделать входной порог как можно ниже чтоб и экспертам было ок работать и самым зелёным новичкам.

UMG это кусок лютого дерьма.

---

Как альтернативу, буду использовать webview overlay, с выбором еще не определился, может стану колупать CEF и удалять с него все чисто вебовское и интегрировать (если мозгов хватит), может пойду путём Tauri где в зависимости от платформы юзают либо виндовский CEF Win10/Win11 или интегрируют CEF в билд отдельно на линуксах.

Может даже просто буду использовать как плагин, всёравно врятли хоть один проект на базе этой платформы превысит 100к$, но тут такое. Надо думать.

Тем самым любые ребятишки с базовыми знаниями HTML/CSS смогут модифицировать любую часть интерфейса и это может послужить входной точкой дальше в IT на более професиональном уровне.
И как успехи ? CEF хоть удалось интегрировать в движок Unity ?
В л2 он более менее работает
 
Да сорян, давно не постил. Работа, ребенок. Начиная с середины февраля появится много времени смогу реализовать много из дизайн документов и думок моих. Нужно было сменить проект, все дела.

Просто список думок...
- Продолжить изучать каждую тему на форуме и собирать проект полной документации по хлебным крошкам с идеально прописанной структурой и техническим материалом, также в использованием `read accessible hints`, и паттерном обучение `progressive disclosure`. Кароче сделать доку читабельной для людей с AD/HD, Dyslexia и прочей хуетой.
- Досканально изучить каждый пакет с версии с1 по High Five, авось и до последних хроник дойду хз
- Разобратся со всеми классами UE2 и переписать опен сурсный код доступный на тему в Rust в более чистой форме
- Реализовать toy server на TS / NestJS с красивым API пакет хэндлеров используя декораторы чтоб быстро так сказать понять и прощупать все досканально.
- Реализовать java (w/ Lombok) /kotlin на Quarkus как алтернативу l2jserver c микросервис архитектурой чисто по фану (но под коммерц проект, не опен сурс)


На счёт клиента сейчас одна цель, ведется работа:
1. Реализовать game-independent mmo boilerplate, возможность реанимировать другие старые и богом забытые, или обосранные оригинальным разработчиком игры.
2. Прийти к ахуенной dir structure/code architecture
3. Прийти к обобщенной базовой библиотеки компонентов на lit.dev для любой хроники.
4. Content Library ВСЕХ АССЕТОВ L2, на CAS с сохранением в двух форматах, `.blend` и `.gltf2`.

и реализовать первый milestone...

🖤 DevMode Lineage2 на UE5

Все-таки конечная цель сделать проект на годы вперед, и дать комюнити песочницу реализации любых фантазии с любым всем миром Л2 вне зависимости в какую хронику каждый влюблен. К таким вещам как структура гит репозитории, лицензиям, структуре директории в каждой репке и общей архитектурой нельзя относится поверхностно.

Команды у меня пока нет, но как реализую основу девмода, и архитектуру, сделаю open-source, и на форуме точно найдутся энтузиасты подсобить с пакеткой, игровой логикой и некоторыми дебильными, но для аутентичности нужными для сохраности механик (кубики хуюбики и их дебильная "физика", всякие там кораблики и прочее)
 
Последнее редактирование:
Маленький эксперимент перед сном

improved_version.webp


Продумываю чёткий пайплайн модернизации каждого ассета мира Л2 для `IMPROVED` версии. Почему бы и нет?

Automatic checks
- Check for errors in mesh normal vertices orientation
- Check for all common errors in 3D (manifold edges, detached vertices etc.)

Mesh changes
- Apply `Merge points by distance` for all meshes
- Apply `Subdivision surface lv 1` to all meshes.

Texture changes
- Upscale color map (Maybe even go UDIMs and 4 level mipmaps?)
- Generate and artistically enhance up-scaled roughness map
- Generate SSS maps (skin maps if applicable)
- Generate up-scaled normal map using manual/AI assistant tooling
- Merge redundant `<example>_ori.tga` into 4th channel (alpha) on the same color map texture to save space on each texture
 
Так, а друкончик справа или слева до? или оба пробные? отражения странные на голове. левый сочнее по цвету и графике, правый как будто с ПБР и высокополигональный
 
Так, а друкончик справа или слева до? или оба пробные? отражения странные на голове. левый сочнее по цвету и графике, правый как будто с ПБР и высокополигональный

Слево оригинальный двумя текстурами, справа апскэйл текстуры, subdivide и 4 доп текстуры, не только Корейцы с НЦСофт могут быть ленивыми, пардон.

---

Согласен не раскрыл до конца чакры, выглядит сомнительно, это пока заметки об автоматизации пайплайна, дракончика взял в пример, вроде как изза шейдеров displacement'a выглядит темнее, а апскейл в данном случае не дал норм результатов ;(, текстура не выглядит очень чёткой а скилл рисования текстур с нуля я не апал с давних времен...

Однако как и в других ассетах оригинала - баги, нюансы и ленивая разработка ИМХО негативно сказывается на перформансе на слабых компах (о реальных тестах напишу позже) которую я хочу в пайплайне импорта ассетов фиксить, импрувить в зависимости от типа assetpack'a (BASE, IMPROVED, REMASTER). Поэтому просто шарю свои находки, а это в свою очередь поможет мне составить чеклист для автоматизированных фиксов. Авось кто-то да вспомнит свои находки и это поможет мне двигатся быстрее)

Список я буду обновлять по ходу идентификации различных недочетов и ошибок. А так вот один из них.

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

1737761440149.webp

edit: Попытка #2

strider_v3.webp
 
Последнее редактирование:
надо пилить ла2 на УЕ4, а ты какой-то херней страдаешь!!! (шутка... хотя....)

хотя...не шутка, всё правда. Отвлекаюсь на всякую хуйню(

На данный момент Milestone, чёткий и понятный. И я пытаюсь вести работу в свободное от работы время по 4ем направлениям.

  • Research существующих вариантов импорта/экспорта и их нюянсов и изьянов.
  • Документация всего и вся что связанно с Л2 начиная с C0 - Prelude и разбитие всего на:
    • Регион игр
    • Версия игры (Legacy / "Classic" / Essense)
    • Глава игры (Chronicle / Throne / ?)
    • Протокол (спасибо @akumu - akumu.ru за вдохновение)
    • Изменения (что добавлено, изменено, удалено в сравнении с пред версиями или с двумя на выбор (ака `git diff`))
  • Реанимация L2Mapper / UEViewer / XDat Editor(ы) на Rust для того чтобы добить всетаки интеграцию с VSCode и избавится раз и навсегда от хуевой тучи разных мелких утилит для работы с Л2 а иметь 1 централизированное место (L2Dev Framework?)
- Структура очень generic mmo template на UE5
- Адекватная интеграция урезанной CEF / использование встроенной в винду библиотеки
- Разработка индивидуальных блоков под общие нужды любой ММО используя `data-oriented` парадигму.

Но покамсь продолжаем балаболить...

Другие думки...

Unreal 5.3.2 - падла, на обычном деволтном уровне без референса деволтных ассетов всеравно включает их в билд и на моем корыте пустая карта 20 минут билдится и еще и на выходе в релизной сборке получается ~350мб...НЕДОПУСТИМО.

Хочу всетаки вести свой форк анриала и попытатся фиксить эти хрени сам, парелельно обновляясь на более новые, но не уверен что хватит мозгов, хотя мне 32 в феврале, до 45 еще время есть, может стану умнее, чёт где-то в мозгу кликнет хД

 
Последнее редактирование:
хотя...не шутка, всё правда. Отвлекаюсь на всякую хуйню(

позволю поумничать. хочешь сделать все и сразу - не сделаешь ничего. надо выделить первый и основной этап. допустим сделать тот же ИЛ на уе4. все остальные версии, документации, форки и хз что еще - делается потом на базе и в дополнении к этому. ну и надо просто взять и начать пилить) отвлекаясь например только на автоматизацию импортов, чтобы не делать все ручками
 
That’s such a huge project, good luck! I’ve made an interface based on the JS client, but I have no idea how to convert the client maps textures to Web3D engines like Babylon.js
 
Немного по теме UE5. Вроде у них там вообще с оптимизациями полный отказ. Вот свежее видео о том что происходит с текстурами и почему последний анреал такой вот хреновый :
 
Последнее редактирование:
Эксперименты с пайплайном миграции и модернизации ассетов

И так, по тем крупицам времени что у меня есть, пытаюсь хоть что-то делать и не забрасывать проект полностью

Плагин импорта ассетов

1. Открывает нативный `.ukx` / '.usx`
2. Конвертит во временные `.gltf` и открывает их в одну сцену
3. Позиционирует каждый импортируемый ассет в одну сцену по сетке
4. Может применить определенные авто-фиксы на выбор
- Проверяет и фиксит ориентацию нормалей
- Мэрджит все vertices по дистанции 0.3 чтоб избежать не нужных поверхностей и странных артифактов
- Применяет Subdivision Surface 1
5. Для каждого Package'a создает каталог с тем же именем в Blender'e
6. Всё кроме костей (арматуры) а это, mesh, texture, material маркирует как ассет

В процессе:
- Создание 1-2 мастер материала на каждый domain объекта (физические объекты мира, эффекты, играбельные персонажы, и т.д)
- Поиск подходящих текстур с тем же именем по всем ассетам в папке с Л2, не только текущий импортируемый пакет
- Auto-assign всех текстур на подходящий мэш (GLTF это умеет а вот дефолтный экспортер гилдора с которого я тырил код чёт делает не то)
- Подгон свойств материалов UE2 в приблизительно схожие альтернативы в Blender'e (opacity, specularity etc)

Далее:

- Де-выпечка теней и света из base-color текстуры и подгон в нормальный PBR
- Генерование normal maps / bump maps / parallax occlusion maps из существующих
- Убирать более не нужный второй сет UV всем ассетам при импорте (Dynamic GI FTW)
- Фикс и оптимизация LODs во время импорта, либо код Гилдора не правильно работает и все лоды имеют тоже самое количество полигонов что и LOD 0, либо корейцы просто забили болт на это))
- Проверка костей и создание совместимого рига для UE5
- Импорт анимаций и создание библиотеки анимаций
- Проверка на всех хрониках
- Улучшение быстроты работы плагинов через паралелизацию работы (импорт, экспорт и pre/post processing)

1770492740413.webp 1770492106250.webp
1770467208636.webp
1770490514302.webp
1770490747873.webp

Плагин импорта ассетов персонажа

- Импорт еденичной модели для превью, работы над моделью / lookdev

1770501961914.webp

- Импорт всех моделей армора в сетку для их маркировки по ассетам, сравнении и других нужд для креативщины

1770500943044.webp
 

Вложения

  • 1770489703152.webp
    1770489703152.webp
    434,8 КБ · Просмотры: 59
Более подробно о плагине импорта ассетов персонажа

Посмотреть вложение 2026-02-08_01-55-31.mp4

  • В первом проходе просто сканит пакет/директорию с .gltf и определяет:
    • количество доступных рас
    • количество архитипов определенной рассы+пола
    • вариаций лиц/причесок
    • вариаций верхней брони нижней брони, перчаток и ботинок
  • Далее в активной сцене импортирует выбранную вариацию мэшей

Зачем это нужно?
1. Облегчить создание и мэнжджмент разных комплектов брони для 3д художников
2. Облегчить создание совершенно новых комплектов брони для текущих л2 клиентов
3. Облегчить процесс модернизации брони для ремастер версии игры или новых игр на основе л2


Что далее:
  • Фиксануть несколько косяков с орками шаманами и бэйз мэшом.
  • Риггинг на основе текущей арматуры
  • Хэндлить загрузку LODов.
  • Текстуры и материалы
  • Превью всех доступных анимаций для комбинации расы+архитипа+пола
 
Последнее редактирование:
Назад
Сверху Снизу