NikRedArrow 87 Опубликовано 25 Ноября Вот мы и добрались до момента, когда приходится скачивать Unreal Engine для работы с игрой... На Nexusmods нашёл гайд по работе с текстурами, перевод ниже. Автор гайда — suunnnnn. Оригинал — тут. Спойлер Пока не видел руководства по этой теме, поэтому решил его опубликовать. Этот метод должен работать для мэшей, текстур, материалов и т. д. Большинство других руководств по UE5 не охватывают потоковую передачу виртуальных текстур, а ведь они используются практические везде в «Сталкер 2». Нам понадобятся: FModel: https://fmodel.app/ Unreal Engine 5.1: https://www.unrealengine.com/en-US (устанавливается через EGS) Если движок откажется паковать архивы, ссылаясь на отсутствие SDK, установить следующее: SDK для UE5.1 для Windows: https://developer.microsoft.com/ru-ru/windows/downloads/windows-sdk/ .NET 3.11: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-3.1.24-windows-x64-installer Установка Установка FModel описана в этом руководстве.Для установки Unreal Engine: 1. Скачайте Epic Games Store, перейдите на соответствующую вкладку, а после — в библиотеку. 2. Нажмите на плюсик правее «Версии UE», нажмите на стрелку вниз справа от версии, выберите версию 5.1.1, запустите установку. Unreal Engine нужен ОБЯЗАТЕЛЬНО версии 5.1. Не 5.5, не 4.8, не Open-Xray. 3. Запустите движок и дождитесь компиляции шейдеров. Процесс не быстрый. Как узнать, нужно ли мне всё это делать? Не уверены, собираетесь ли вы заменить именно виртуальную текстуру? Откройте .uasset для текстуры в FModel и найдите там следующую строку: "VirtualTextureStreaming": true Если у вас этой строки нет или стоит false, то этот гайд всё ещё будет для вас актуален. Просто нужно будет пропустить процесс включения и преобразования виртуальной текстуры. Если же эта строчка есть в ассете вашей текстуры, вам обязательно нужно включить виртуальное текстурирование! Создание проекта Приступаем к самой работе в движке: 1. Создайте новый проект с шаблоном Games > Blank и выставьте следующие настройки: Blueprint Target Platform: Desktop Quality Preset: Maximum Starter Content: [ ] (не ставьте галочку) Raytracing: [ ] (не ставьте галочку) ОБЯЗАТЕЛЬНО назовите проект stalker 2. Пока что это единственный известный мне способ сделать так, чтобы пакет правильно определялся игрой и работал. Если кто-то знает способ обхода этого нюанса — расскажите. Настройка параметров Нажмите пункт «Platforms» и перейдите в «Packaging Settings» Включите «Use Pak File [X]» Включите «Use Io Store [X]» Включите «Generate Chunks [X]» В поиске введите «cook» и поставьте галочку напротив «Cook everything in the project content directory [x]» Настройка виртуального текстурирования 1) Выберите меню «Edit» и откройте окно «Project Settings». 2) Введите в поиске "virtual". 3) Проскрольте до пункта «Enable virtual texture support [x]» и активируйте его. 4) ОПЦИОНАЛЬНО Если текстуры, которые вы заменяете, включают в себя следующие параметры, включите их (п. п. автор гайда не уточнил, как это определить): Активируйте «Enable virtual texture lightmaps [x]» Активируйте «Enable virtual texture anistropic filtering [x]» Активируйте «Enable virtual textures for Opacity Mask [x]» UE5 предложит вам перезапустить себя. Сделайте это и подождите 6 лет, пока он вновь закончит кэшировать шейдеры. Добавляем текстуры в проект Добавьте ваши текстуры, повторяя иерархию папок в оригинальном pak файле. То есть если ваша текстура в FModel находится по пути «Stalker2/Content/_Stalker_2/items/loot/SM_loot_backpack_a.uasset», то и внутри проекта она должна полностью повторять этот путь. Теперь пришло время отредактировать свойства каждой из ваших текстур: Проверьте свойства вашей текстуры в FModel для этих полей: [?] CompressionSetting [?] PixelFormat [?] sRGB [?] VirtualTextureStreaming Вот что вам нужно искать в FModel в зависимости от типа текстур:Diffuse texture (литера D в конце тектуры) PixelFormat — DXT1, а CompressionSetting отсутствует, поэтому это текстура «по умолчанию» Normal texture (литера N в конце текстуры) PixelFormat — DXT5, а CompressionSetting — TC_Normal так что это "Normal" текстураRHO (roughness, height, opacity) или другие map-файлы (литеры RHO в конце текстуры) PixelFormat — DXT1, CompressionSetting — TC_Masks, так что это "Masks" текстура. Конвертирование в виртуальную текстуру Как только вы настроили настройки сжатия для всех текстур, настала пора преобразовать их в виртуальные текстуры. Выберите все текстуры, которые в коде имели строчку VirtualTextureStreaming: true, нажмите ПКМ и выберите Convert To Virtual Texture Во всплывшем окне вы увидите пункт «Texture Size Threshold». Выберите 4096, а после опускайте значение до тех пор, пока в списке не появятся все текстуры, которые нужно переконвертировать в виртуальные. (п. п.: не знаю, как это скажется на качестве текстур, но автор гайда настаивает на таком подходе) Нажмите «Save All». У текстур появится плашка «VT» в углу. Создайте ярлык ассета Вернитесь в папку Content, кликните ПКМ и создайте новый файл типа «Data Asset». Выберите «Primary Asset Label» Дайте ему название в формате «Label_НАЗВАНИЕМОДА», а затем дважды кликните на созданный файл. Выставите следующие настройки: Priority: 1 или выше Chunk ID: 1000 или выше, оно должно быть уникальным, поэтому не выбирайте 1420, так как это число уже занято (п. п.: видимо, автором гайда) Cook Rule: Always cook Label Assets in my directory: [x] (ПОСТАВЬТЕ ГАЛОЧКУ) Выберите в левом верхнем углу «File» и нажмите «Save All». Запаковываем всё это Кликните Platforms > Windows > Shipping Кликните Platforms > Windows > Package Project Выберите директорию для вашего сгенерированного package, я создал каталог «Build» с подкаталогами для уникальных сборок. ВАЖНО! Если на этом этапе у вас выйдет сообщение об отсутствии SDK для Windows, загрузите и установите этот пакет.Процесс займёт много времени.О-о-очень много времени...ГОТОВО! Подготовка и установка .pak файлов Мы почти у финиша! Осталось только подготовить измененные файлы к установке. Для этого перейдите в директорию, куда экспортировали файлы, а после переименуйте три файла с chunk id, который вы указали ранее в настройках Label. Переименуйте их по следующему принципу: z_YourMod_P. Убедитесь, что имя заканчивается на «_P»! Переместите все три файла в каталог «~mods/». Затем откройте FModel и убедитесь, что структура директории вашего мода совпадает со структурой оригинальных файлов (папки и весь путь до измененных ресурсов выглядят одинаково). Если нет, проверьте имя вашего проекта. Возможные ошибки Ресурс не заменён в FModel и выглядит как оригинал -» Попробуйте пеерсоздать Label с другим Chunk ID, а после перепакуйте проект. Тестируем! Откройте игру и проверьте изменения. В тридцатый раз за день... UPD: Итак, гайд не только переведен, но и проверен. Сами текстуры распаковываются через FModel спокойно. А вот время работы UE неприятно удивило - даже на NVME SSD и довольно мощном компьютере перепаковка одной текстуры заняла 50 минут. Не думаю, что от их количества будет сильно зависеть время - движок, по сути, пытается собрать полноценный прототип игры на вложенных по умолчанию ассетах, лишь в конце запаковывая нужную мне текстуру. Потом попробую удалить всё содержимое сцены и работать только с файловым архивом. Кто знает, может поможет и ускорит время. Если кому-то известен способ сократить время - прошу им поделиться, иначе модов на текстуры будем ждать два года. ) Скрытый текст 2 2 2 Поделиться этим сообщением Ссылка на сообщение
NikRedArrow 87 Опубликовано 26 Ноября UPD 26.11.2024 Перепаковал в том же проекте те же текстуры. Повторное время запаковки снизилось до пары минут. Будет время - проверю с другими текстурами, но есть подозрение, что долго идёт только первая запаковка, пока программа компилирует весь проект. При повторной компиляции того же проекта с заменой текстур, по идее, всё будет куда быстрее. Но это надо проверять на других ассетах 1 Поделиться этим сообщением Ссылка на сообщение