Дата: Понедельник, 21.10.2024, 01:58:14 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: OFF-Line
Создание корабля для XRebirth с нуля
XRCatExtract| Зеркало - Распаковка ресурсов игры X Rebirth Tools | Зеркало - альтернатива XRCatExtract XRWSunpack | Зеркало - Распаковщик файлов X Rebirth Workshop (XRWS) .dat файлов, скаченных из Steam XRConverters-v0.2.1 | Зеркало - преобразует геометрию корабля из формата редактора в понимаемый игрой формат и обратно blender-4.2.2 - редактор для создания трёхмерной графики collada-exporter-2.81 | Зеркало - аддон для блендера, который позволяет импортировать и экспортировать файлы *.dae с которыми работает XRConverters-v0.2.1 gimp - графический редактор способный работать с форматом *.dds FileLocatorPro - утилита для поиска текста в группе файлов. может искать как в названии файла так и в его содержании. особенно удобна тем что может очень быстро обработать большой объем информации Notepad++ - удобный, а главное быстрый текстовый редактор с большим набором плюшек. может работать с очень большими текстовыми файлами (более 100мб, не повторяйте этого в блокноте!) windowszip - архиватор, способный правильно запаковать файл сохранения если вдруг понадобится его отредактировать (WinRar может его только распаковать) Photoshop - мощный графический редактор Materialize - программа для создания материала на основе текстуры
Распаковываем collada-exporter-2.81. Внутри будет каталог io_scene_dae. Вот этот каталог и нужно скопировать в \blender\"номер версии блендера"\scripts\addons (сам каталог, а не его содержимое). Запускаем blender и идем в Edit->Preferences, слева находим группу вкладок add-ons, в поле поиска вбиваем col и находим import-export: better collada exporter, включаем плагин поставив галочку.
Файлы игры запакованы в формате *.cat,*.dat (01.cat,01.dat - 09.cat,09.dat) распаковываем их в папку "export" Ресурсы могут содержать разные версии одного и того же файла. Более старые версии лежат в файле с меньшим номером. Если используем XRCatExtract распаковывать файлы надо строго по порядку от 01 до 09 с заменой (положить cat и dat файл рядом с XRCatExtract.exe и запустить утилиту - она создаст папку "e" в которую и будут распакованы ресурсы). X Rebirth Tools может распаковать все сразу и достаточно умен чтобы сделать это в правильном порядке (вроде бы...)
Корневые файлы "проекта" корабля это XML файлы, начинающиеся с "units_size_" и лежащие в assets\units в одной из папок, соответствующих размеру корабля.
Основные размеры кораблей: size_xs - дроны size_s - истребители size_m - тяжелые истребители и малые торговые корабли size_l - корабли капитального класса (фрегаты, эсминцы, торговцы и сборщики) size_xl - сверх большие корабли капитального класса, как правило крейсера На самом деле грань между size_l и size_xl довольно размыта и по большому счету не существенна.
Для примера возьмем файл ксенонского линкора "i" units_size_xl_xenon_01.xml из папки \assets\units\size_xl.
В папке с корневым файлом корабля лежат папки с тем же названием и постфиксом _data. Например "units_size_xl_xenon_01_data". Внутри расположены файлы *.xmf - это файлы геометрии корабля во внутриигровом формате.
В каждой папке размера корабля есть папка "Macros". Внутри лежат макросы корабля, это XML файлы название которых состоят из корневого имени корабля и постфикса "_macros". Например "units_size_xl_xenon_01_macro.xml".
Вместе файлы корня и макроса содержат все связи и большинство общих настроек корабля.
Файл корня корабля главным образом служит для связи с геометрией корабля там же указываются слоты для внешнего оборудования и их координаты на геометрии. Файл макроса сопоставляет слоты под оружие и оборудование с конкретными экземплярами оружия и оборудования, также в нем указываются ссылки на название и описание корабля и прочность корпуса. Важно! Тэг "class" в макросе позволят игре определить тип объекта, по сути отличить корабль от станции или скажем астероида и соответственно предоставить объекту возможности его класса, не доступные другим классам.
Что бы найти остальные файлы проекта воспользуемся утилитой FileLocatorPro. В поле "file name" вводим *.xml (пока нас интересуют только xml). В поле "look in" выбираем папку с экспортированными ресурсами "export" Ставим галочку "search subfolders" В поле "containing text" пишем units_size_xl_xenon_01 И запускаем поиск кнопкой "start"
В результате будут найдены следующие файлы:
components.xml \index - файл индекса, содержит корневые имена и пути к их файлам (units_size_xl_xenon_01.xml) macros.xml \index - файл индекса, содержит макросы и пути к их файлам (units_size_xl_xenon_01_macro.xml)
Важно!!! Пути в этих двух файлах являются абсолютными. Для оригинальных ресурсов они начинаются с корня игры (который не пишется но подразумевается) например "assets\units\size_xl\units_size_xl_xenon_01" но для модов этот путь должен начинаться с папки "extensions" и включать в себя корневую папку мода. Например
ships.xml \libraries - файл с настройками конкретного корабля (пилот, фракция, тэги, груз, дроны, возможность захвата). Связь с общими настройками и геометрией через макрос. targetpoints.xml \libraries - файл с координатами внешнего оборудования для сканирования/взлома и некоторых других целей. Связь с общими настройками и геометрией через макрос. файл "_navmesh.xml" с навигационными точками вокруг геометрии корабля. Предположительно используется для реализации механики NavMesh для навигации ИИ, которая помогает игровым объектам найти путь до цели избегая препятствий. Предположительно используется дронами. В большинстве случаев все работает и без него.
Что бы открыть проект корабля в 3d редакторе нужно преобразовать ресурсы игры в формат, понимаемый редактором. Для этого используем утилиту XRConverters-v0.2.1 Утилиту запускаем из командной строки либо делаем bat файл.
Утилита сама пройдет по всем ссылкам и скомпонует файл .dae, который положит рядом с корневым файлом объекта для экспорта в его каталоге. Важно чтобы в каталоге ресурсов были все ресурсы игры, если утилита не найдет какой нибудь фрагмент, она просто завершит работу без каких либо ошибок и уведомлений. В результате получится файл units_size_xl_xenon_01.dae Этот файл можно импортировать в blender (File->Import->Collada (.dae)) или проверить в этом онлайн рендере: https://www.creators3d.com/online-viewer (не все рендеры могут корректно отобразить легаси формат)
Это очень большая тема - рекомендую посмотреть курсы по блендеру для начинающих. Например "172+ бесплатных уроков в Blender: обучение 3d с нуля" здесь https://videoinfographica.com/blender-tutorials/ Основные темы которые понадобятся: моделирование и методы/инструменты для работы с сеткой вершин, UV-развертка модели, материалы и текстурирование.
Нельзя просто взять и экспортировать модель из блендера в .dae файл. Предварительно нужно привести проект к формату, который впоследствии сможет понять конвертер XRConverters.
Структура проекта:
Все названия должны быть с маленькой буквы. Большая буква X зарезервирована как разделитель. Empty ноды - это Empty->Plain Axes ноды.
Корневой узел должен быть Empty нодой и он должен быть строго 1 в сцене (камеру, свет, коллекции удаляем). Имя корневой ноды должно быть именем корневого файла корабля.
Внутри корневой ноды располагаются ноды деталей модели. Их может быть произвольное количество с произвольными именами, но все они должны быть Empty нодами.
Каждая нода детали должна содержать 5 нод. 1 ноду сетки коллизий и 4 ноды дальности видимости. Нода сетки коллизий это копия модели (обычно упрощенная), которая располагается в тех же координатах что и модель и имеет ту же трансформацию. Сетка коллизий не прорисовывается, но "ощущается" т.к. используется для обсчета столкновений.4 ноды дальности видимости это по сути 4 копии модели, которые располагаются в одних и тех же координатах и имеют одни и те же трансформации, но предполагается что более "старшая" нода менее детальна чем младшая.Это нужно чтобы движок прорисовывал меньше деталей при удалении камеры от объекта, но что именно будет прорисовано и на какой дистанции решает не движок а дизайнер во время моделирования.Эти ноды прорисовываются, но не обсчитываются (можно пролететь насквозь если нет ноды коллизий в тех же координатах).Ноды видимости имеют имена с lod0 поlod4. lod0 - младшая, lod4 - старшая.
Примерные дальности для нод видимости:
Код
lod0 0-6km lod1 6-14km эту область видимости использует окно превью корабля lod2 14-20km lod3 20km+
На самом деле не обязательно чтобы нод видимости было строго 4, но... Предположим что мы создали модель только с одной максимально детальной нодой lod0. логично предположить что она будет использоваться для всех дистанций и это действительно так, но... опять есть нюанс. Если корабль спавнится в области видимости для которой у него нет ноды, то он не будет прорисован до тех пор пока игрок не "войдет" в область соответствующую существующей ноде. Если у корабля нет ноды lod1, то превью всегда будет пустым (с парящим в пустоте внешним оборудованием) т.к. корабль для превью всегда спавнится в изолированном пространстве вдали от игрока. Могут быть и другие неприятные "спецэффекты". Таким образом, если хотим качественную прорисовку модели в любой ситуации, придется создавать для каждой детали все 5 нод без исключений.
Важно!!! Имена большинства нод должны иметь строгий формат, отклонения от которого не допускаются. Нельзя вставлять в имена префиксы, постфиксы и т.п. Нельзя вставлять промежуточные ноды.
Нода коллизии должна является Mesh нодой. Ее имя должно состоять из имени родительской детали, разделителя и маркера "collision". Например если родительская деталь "part_main", то нода коллизии "part_mainXcollision". Вложенная в нее нода вершин должна иметь то же имя (предположительно это не обязательно, но багованный конвертер может быть резко против).
Ноды видимости должны быть Empty нодами. Их имена должны состоять из имени родительской детали, разделителя и имени ноды. Например для "part_main" это будет "part_mainXlod0", "part_mainXlod1", "part_mainXlod2", "part_mainXlod3"
Внутри ноды видимости располагается как минимум одна Mesh нода. Ее имя состоит из имени родительской ноды, разделителя и имени материала, который будет назначен этой ноде. Судя по всему предполагается что все сетки вершин, которым будет назначен один и тот же материал, должны быть объединены в одну сетку с этим материалом. Например для "part_mainXlod0" - "part_mainXlod0XgenericXgeneric_engines_01" и "part_mainXlod0XxenonXxenon_pattern_01", где generic.generic_engines_01 и xenon.xenon_pattern_01 это материалы из карты материалов известных игре (точки заменяются разделителем). Вложенные ноды вершин должны иметь те же имена что и у родительских нод "part_mainXlod0XgenericXgeneric_engines_01" и "part_mainXlod0XxenonXxenon_pattern_01". В ноду вершин вложена еще одна нода материала блендер (не путать материал редактора с материалом игры) его имя должно быть именем материала ноды с разделителем вместо точки. Например "genericXgeneric_engines_01" и "xenonXxenon_pattern_01". Также можно поставить материал в ноду вершин ноды коллизий. Хотя ноды материала блендера по видимому совершенно не важны. Если они есть, они будут автоматически вставлены в корневой файл XML при конвертации во внутриигровой формат (можно сделать вручную), замена же материала в XML файле не дает никакого видимого эффекта - нужно изменить материал в названиях нод и заново экспортировать и конвертировать модель в игровой формат. <<Но это еще требует уточнения>>.
Важно!!! В блендере модель может быть расположена как удобно, но перед экспортом ее нужно ориентировать согласно внутриигровым осям координат. Нос модель смотрит в сторону положительного направления оси Z(+Z). Ось X - ось ширины +X справа. Ось Y - высота +Y сверху. Если модель ориентирована неправильно, можно столкнуться с различными "спецэффектами". Например текстуры корабля будут видимы при перпендикулярном положении камеры и пропадать стоит ее отклонить на небольшой угол, оставляя в корабли огромные дыры с картинами космоса в них.
Также очень желательно чтобы начало координат располагалось внутри модели, в геометрическом центре или хотя бы логичным образом с краю. Возможно модель потребуется масштабировать (не забывайте применять трансформации в блендере после их использования чтобы они оказали реальное влияние на модель а не только на рендер).
Также модели нужны части part_main_wreck-lod0.xmf и part_main-collision.xmf. Это то, что остается после уничтожения корабля. В принципе можно скопировать part_main-lod0.xmf и part_main-collision.xmf и переименовать (корабль не изменит внешний вид после уничтожения), но в идеале part_main_wreck-lod0 требуется материал generic.generic_wreck. Можно сделать копию главной детали с именем part_main_wreck. Ноды видимости удалить, а ноду коллизии оставить. Скопировать ноду коллизии на место нод видимости и назначить ей материал generic.generic_wreck (все переименовать согласно правилам).
где: "C:\XR_BLEND\models" - каталог с .dae файлом units_size_xl_my_cruiser.dae - сам .dae файл
команда pause нужна для того чтобы окно не закрылось автоматически и можно было прочитать сообщение об ошибках, если такие будут.
Если запуск прошел хорошо, то рядом с .dae файлом появится папка с геометрией во внутриигровом формате "units_size_xl_my_cruiser_data" и заготовка под корневой файл "units_size_xl_my_cruiser.xml"
Также может быть показано следующее сообщение об ошибке: Node "название детали" has multiple meshes attached Это значит что в модели в Блендере присутствуют вершины и/или ребра не входящие в состав граней и это вводит конвертер в ступор. Нужно поправить модель, заново собрать .dae файл и попробовать конвертировать еще раз.
Самое печальное что инструменты багованные и иногда ругаются на нормальную модель. Причем непонятно багован экспорт в .dae или конвертер во внутриигровой формат (скорее всего оба). Но других инструментов нет и придется работать с тем что имеем.
В блендере много инструментов для чистки - гуглить или спросить у яндекса "blender loose geometry" "методы удаления дубликатов вершин и ребер"
Для начала можно проделать следующий трюк: - включаем рентген (режим блендера в котором можно выбрать скрытые другими объектами объекты) - переходим в object mode и выбираем все детали - переходим в edit mode и переключаемся в режим выбора вершин - рамкой выбираем обводим всю модель с большим запасом (чтобы гарантированно выбрать все) - правая кнопка мыши -> Merge verticles (или клавиша M на клавиатуре) -> By distance в результате блендер сольет все вершины с одинаковыми координатами. Повторять несколько раз пока сообщение внизу экрана не скажет что удалено 0 вершин.
Если не помогло есть еще один трюк: - включаем рентген (режим блендера в котором можно выбрать скрытые другими объектами объекты) - переходим в object mode и выбираем деталь из сообщения об ошибке - переходим в edit mode и переключаемся в режим выбора граней - рамкой выбираем обводим всю модель с большим запасом (чтобы гарантированно выбрать все) - в панели инструментов сверху находим меню Mesh -> Separate -> Selection в результате все грани в детали будут выделены в новую деталь а в старой останутся только не связанные гранями ребра и вершины (так как режим выбора граней не смог их выбрать). Старая деталь удаляется а все компоненты новой переименовываются чтобы были как в старой.
Если не помогло и это то... сочувствую, похоже что это бага инструмента и впереди путь боли и страданий... Для начала можно попробовать определить проблемный фрагмент аккуратно (чтобы не создавать новой не связанной геометрии) удаляя кусочки модели (не забудьте сделать резервную копию). Также можно попробовать разбить деталь иди объединить ее с другой деталью (возможно этого будет достаточно чтобы инструмент перестал глючить). Молиться богу рандома как самый крайний случай...
P/S: модель линкора ксенонов состоит из 700000 вершин из них после "чистки" осталось около 450000 остальное просто дубликаты от которых впадали в ступор и конвертер и даже блендер. Не полагайтесь на "корректность" оригинальных файлов слишком сильно...
в директории "extensions" создаем папку с модом "название мода" в ней папки: assets\units\"size"\macros, index, libraries, t и файл content.xml
в папку assets\units\"size" скопировать папку с геометрией и корневой файл корабля в папку assets\units\"size"\macros положить макрос корабля в папку index положить components.xml и macros.xml в папку libraries положить ships.xml, targetpoints.xml и wares.xml в папку t (язык и локализация) положить 0001.xml (файл английского языка) и 0001-L007.xml (файл русского языка). можно положить и другие локализации (см. другие моды)
например должно получиться следующее (часть файлов не обязательные):
Обратить внимание на: class="ship_xl" - тип объекта, для правильной интерпретации объекта движком source geometry="extensions\my_cruiser\" - путь к геометрии начинается с папки extensions и папки мода tags="contents", tags="position", tags="ship" - узлы для связи корабля с игровым миром, обязательны, добавляем как есть tags="part" - части геометрии, добавлены конвертером. если все сделано правильно внутри должны быть ненулевые max, center и material layers/layer/waypoints - точки навигации вокруг корабля. используются при стыковке с другим кораблем/станцией тег part будет добавлен в деталь конвертером, остальные теги нужно проставить вручную. известны следующие теги: detail_xs, detail_s, detail_m, detail_l, detail_xl, nocollision. Тег nocollision отключает обсчет столкновений детали с массивными объектами, используется главным образом для небольших и/или декоративных элементов.
узлы для внешнего оборудования имеют одну и ту же структуру, отличаются только имена и тэги:
yaw - поворот носа в горизонтальной плоскости (вправо/влево) pitch - поворот носа в вертикальной плоскости (вверх/вниз) roll - вращение вокруг оси нос-корма (бочка)
Для упрощения задачи можно использовать Блендер. На панели настройки объекта есть вкладка 'Object' внутри нее находится группа 'Transform'. Здесь можно указать параметры вращения в градусах и кватернионах а также преобразовать одно в другое. Однако нужно помнить что система вращения блендера не соответствует системе вращения в игре. Для преобразования игровых параметров в параметры блендера потребуется применить трансформацию.
Ориентация модели: Ось +Z блендера смотрит вверх. Нос модели смотрит в направлении +Z, +X 'правая' сторона модели, +Y 'верхняя'.
Трансформация для градусов (rotation): Режим трансформации блендера - YXZ Eiler (Важно!!! Этот режим использует игра, другие режимы дадут другие параметры) Pitch = x * -1 Roll = y * -1 Yaw = z * -1
Режим трансформации блендера Quaternions WXYZ позволяет задавать значения в кватернионах и преобразовывать их в градусы. Однако без трансформации для преобразования кватерниона к системе игры/блендера это мало полезно. Трансформацию еще предстоит вычислить.
Рецепт: создайте внутри корневой ноды полуконус (острие - нос вращаемой детали, плоскость сечения - основание), задайте вращение 0 по всем осям и ориентируйте его так как будет ориентирована вращаемая деталь относительно модели по умолчанию (с нулевым вращением по всем осям или без ноды вращения). Теперь можно вращая деталь ориентировать ее нужным образом относительно модели, взять параметры вращения со вкладки трансформации, применить трансформацию и перенести результат в игру.
у каждого корабля должны быть: мостик (1): здесь хранится экипаж и без этого узла его невозможно назначить на корабль
трюм (1..n): хранилище предметов, как и используемых кораблем, так и предназначенных для торговли. Есть разные виды трюмов, как специализированные под конкретный тип предметов так и универсальные. Каждый корабль должен обладать как минимум трюмом для топлива.
у каждого корабля могут быть: стартовая площадка дронов (0..n): здесь хранятся все используемые кораблем дроны. Отсюда же стартуют боевые дроны и сюда они возвращаются. Если площадка будет уничтожена, все пристыкованные дроны будут уничтожены вместе с ней (если площадок несколько, пристыкованные дроны распределяются равномерно между ними и соответственно будет уничтожена только часть дронов). Одна площадка суммарно может содержать до 150 дронов.
Обратить внимание на: component ref должен указывать на правильный корень для макроса macro name identification - название и описание корабля hull - прочность корпуса purpose primary - назначение корабля, активно используется в скриптах AI, влияет на поведение connection - назначение нодам, объявленным в корне (connection ref=) конкретные элементы (macro ref=)
ships.xml в этом файле создаются конкретные экземпляры корабля, которые могут быть использованы как НПС
параметры из category используются для появления корабля в миссиях cargo - груз units - дроны drop - дроп с корабля (можно создать и настроить собственный)
jobs.xml в этом файле корабли из ships.xml отправляются на трудовые подвиги
wares.xml этот файл отвечает за требуемые ресурсы для строительства корабля обратить внимание: каждый ресурс помноженный на его количество дает некоторое приращение к защите от абордажа корабля, если данные о ресурсах отсутствуют - защита от абордажа = 0
Текстуры находятся в папке\assets\textures
Судя по всему игра понимает как сжатый так и не сжатый форматы. Не сжатый формат это файл в формате dds. Для работы с ним используем gimp или другой графический редактор, понимающий этот формат. Сжатый формат это файл в формате dds без расширения, упакованный в формате gzip. Для работы с ним используем WindowsZip или другой архиватор, понимающий этот формат.
Для работы с текстурой нужно зарегистрировать новый материал в файле \libraries\material_library.xml Материал состоит из четырех текстур:diffuse_map, specular_map, color_glow_map, normal_map. По сути это текстура и дополнительные карты к ней, которые позволяют добиваться различных эффектов, например объема. Чтобы создать материал на основе текстуры можно воспользоваться программой Materialize.
Пути к текстурам должны начинаться с папки extensions и корневой папки мода.
Модель турели строится примерно на тех же принципах что и модель корабля, однако вопрос с движением и анимацией пока остается открытым. Если же воспользоваться существующей моделью, то турель состоит из: файла макроса - здесь настраивается сама турель файла пули - здесь настраивается то чем турель стреляет и двух записей в файле \index\macros.xmlс путями к файлу макроса и пули (путь должен начинаться с extension\"корневая папка мода"\)
файл макроса находится в \assets\props\WeaponSystems\macros файла пули находится в \assets\fx\weaponfx\macros
турель назначается кораблю в файле макроса корабля
В папке md создаем файл скрипта TestOnLoad.xml Этот скрипт автоматически создаст все корабли из списка $ShipMacro. Недалеко от игрока на дистанции от $MinTargetDistance до $MaxTargetDistance через 3 секунды после создания последнего. Примечание: новый корабль будет обладать всеми актуальными свойствами после редактирования его параметров. Если загрузить сохранение со старым кораблем, некоторые параметры не изменятся так как хранятся в файле сохранения для каждого экземпляра корабля.
В папке с файлами сохранения игры есть файл debuglog.txt. Если что то пошло не так, в него будет записано соответствующее сообщение (искать по имени макроса корабля). Рекомендуется чистить его перед запуском игры от старых данных и проверять его на наличие ошибок впоследствии. Даже если корабль визуально выглядит нормально, в нем могут присутствовать неочевидные ошибки debuglog поможет их обнаружить.
2. Получение данных из игры Для получения каких либо игровых данных можно воспользоваться следующими командами:
Код
<set_value name="$Text" exact="'some important text'" />
show_help - покажет текст на экране, переменная duration - длительность показа в секундах write_to_logbook - запишет текст в один из логов корабля, переменная category - выбор конкретного лога (этот текст будет сохранен в файле сохранения после сохранения) debug_text - запишет текст в файл debuglog.txt, лежащий в папке с файлами сохранений
Файл сохранения представляет собой текстовый файл в формате xml который может быть запакован в формате gzip. Игра понимает как сжатый так и не сжатый форматы. В настройках игры есть пункт "Сжимать сохранения" который включен по умолчанию. Если его отключить редактировать файл сохранения будет проще, но само сохранение будет происходить намного дольше.
Название файла сохранения save_001.xml - save010.xml Название архива save_001.xml.gz - save010.xml.gz
Распаковать архив можно с помощью архиватора WindowsZip (WinRar тоже умеет читать этот формат) Для упаковки используем WindowsZip (выбрать формат gzip и поменять расширение .gzip на .gz). По слухам 7-Zip тоже умеет запаковывать в gzip (но я не проверял).
Названия файлов должны быть такими же какими их создала игра.
Мод включен в сборник X-Rebirth Community Mod Pack DAEdition, который находится в соседней теме.
Чтобы выяснить все выше написанное пролилось много пота и крови... и тем не менее инструкция далеко не полная. Постараюсь дополнить при возникновении вопросов. Буду благодарен за дополнения/исправления/уточнения. Критика также приветствуется.
Сообщение отредактировал picturecollection - Суббота, 02.11.2024, 22:05:13
Дата: Вторник, 22.10.2024, 12:05:06 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: OFF-Line
Что то явно пошло не так )))
Одна маленькая ошибка и по ночи работы можно выкидывать (((
P/S: я просто не устаю поражаться чудовищной сложности ксенонского крейсера. Они там всей студией его хором полгода лепили? И это еще на тогдашних инструментах, а не на современных...
Сообщение отредактировал picturecollection - Среда, 23.10.2024, 13:08:44
Дата: Суббота, 02.11.2024, 22:26:07 | Сообщение # 7
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: OFF-Line
Ну вот и закончил я сей труд. Было здорово разбираться во всей этой механике... И в итоге то, что получилось, вполне тянет на одну из самых полных инструкций по модингу для XRebirth. Большинство модеров давно разбежались по другим проектам, но если кто остался или кто то из новичков хочет попробовать свои силы - пишите, постараюсь заглядывать в тему. А на этом все. Надеюсь Вам понравилось))).
Дата: Суббота, 02.11.2024, 22:57:49 | Сообщение # 8
Администратор
Группа: Администраторы
Сообщений: 8001
Статус: OFF-Line
Спасибо за статью о создании корабля для XRebirth с нуля! Очень ценно, что вы делитесь опытом и делаете процесс понятным для всех, кто интересуется разработкой игрового контента. Благодаря таким материалам многое становится яснее, а работать над своими проектами – легче и интереснее. Спасибо за ваш труд и поддержку сообщества!