Добавить в корзинуПозвонить
Найти в Дзене
PlayGround.ru

Создание моделей для GTA: San Andreas

В этом гайде расскажу, как создаются модели для GTA SA, в большей степени для SAMP. Данное руководство можно использовать как для создания сборок с редактированием .img файла самой GTA, так и для создания отдельных файлов для добавления через функции Pawn. Сам имею продолжительный опыт работы с dff, txd и col файлами, делал и делаю карты для серверов, чаще под SAMP 03dl, так как эта версия позволяет добавлять кастомные модели без редактирования пользовательской сборки без сильной необходимости. Для создания нам понадобится 3D-редактор. Подойдет и обычный blender, но лучше всего раскрывается связка blender и 3ds max разных версий. Почему разных? Тут на вкус и цвет. Я приверженец 3ds max 2023 версии и соответствующего Kam Tool от goldfish. Тут важно понимать, что существует несколько вариаций KAM script'ов, и они имеют свои особенности. Объясню разницу версий. Преимущественно используется 3ds max 2015, так как на нем запускается стандартный KAM script — аддон для 3ds max, позволяющий экс

В этом гайде расскажу, как создаются модели для GTA SA, в большей степени для SAMP. Данное руководство можно использовать как для создания сборок с редактированием .img файла самой GTA, так и для создания отдельных файлов для добавления через функции Pawn.

Сам имею продолжительный опыт работы с dff, txd и col файлами, делал и делаю карты для серверов, чаще под SAMP 03dl, так как эта версия позволяет добавлять кастомные модели без редактирования пользовательской сборки без сильной необходимости.

Для создания нам понадобится 3D-редактор. Подойдет и обычный blender, но лучше всего раскрывается связка blender и 3ds max разных версий.

Почему разных?

Тут на вкус и цвет. Я приверженец 3ds max 2023 версии и соответствующего Kam Tool от goldfish. Тут важно понимать, что существует несколько вариаций KAM script'ов, и они имеют свои особенности.

Объясню разницу версий. Преимущественно используется 3ds max 2015, так как на нем запускается стандартный KAM script — аддон для 3ds max, позволяющий экспортировать модели в формат .dff. В зависимости от скрипта мы получаем разный итог.

Kam Tool в 3ds max 2015 экспортирует модели чаще всего без зазоров и несостыковок, если добавляется многополигональное здание в несколько частей, и сразу автоматически накидывает прелайт, но имеет существенный минус для разработки чего-то глобального — не умеет в массовый экспорт.

Кто-то готов с этим мириться, кто-то нет, а кто-то первым скачал KAM script'ы от goldfish. Goldfish упростил скрипт и добавил массовый экспорт, перейдя на более новые версии 3ds max. У него, к сожалению, отсутствует авто-прелайт, как в более старой версии, что некоторых может отпугнуть.

Это, наверное, самое важное, что надо было обозначить и с чем стоит ознакомиться, прежде чем идти дальше.

Какие программы понадобятся

Для начала — список основного софта.

3ds max — для подготовки к экспорту в dff

blender — для работы с геометрией

kdff — для работы с dff. Программа от Калкора, разработчика SAMP

MagicTXD — для работы с текстурами и создания txd

CollEditor2 — для быстрой несложной работы с коллизией

Это из основного. Для удобства далее:

Свой сервер Texture Studio для тестирования своих моделей.

Звучит страшно, понимаю, но на деле работает просто, и разобраться нетрудно. Если будет актив, то дам готовый сервер, в котором понадобится минимум усилий для теста моделей.

HEXeditor — в случаях, когда хотите залочить свою модель или попытаться разлочить чужую.

Ordenator — нужен для оптимизации текстур.

dffviewer — простенькая программа. На первых порах ей пользовался, потом перестал. Позволяет полюбоваться на свою dff-модель.

TXDworkshop — более старый аналог MagicTXD, можно сказать его отец. Нужен, если при просмотре txd каких-то моделей MagicTXD начинает жевать мозги.

Sublime Text — крайне удобная программа для работы с текстом.

Подготовка модели

Для начала нам понадобится сама модель. Мы же что-то портируем в GTA? Лично я больше люблю конвертировать миры других игр, но можно создавать и свои модели.

При создании модели учитывайте несколько основных правил моделлерства: не допускайте энгонов, следите за топологией и старайтесь выдержать баланс между качеством и проработкой.

С текстурированием немного сложнее. RenderWave — движок GTA SA — штука старая, поэтому можете забыть о картах нормалей, высот и тому подобном. В некоторых случаях приходится забывать и про блендинг. Чаще всего нужна только Base Color текстура, но можно играться и с альфой, если работаете с img файлом.

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

Добавив модель в сцену blender, убедитесь, что она у вас протекстурирована. Никто же не хочет вручную назначать текстуры? В X-ray engine tool для этого достаточно в настройках аддона проставить путь к папке gamedata stalker'а, остальное аддон чаще всего подхватывает самостоятельно.

Теперь важный момент: включите статистику сцены, чтобы видеть количество полигонов вашей модели. GTA SA поддерживает модель до 25000 полигонов. Убедитесь, что ваша модель соответствует этому показателю. Все, что больше, GTA просто выплюнет вам в лицо, отказавшись, в лучшем случае, ее отображать.

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

Убедились, что текстуры лежат и привязаны к модели? Геометрия устраивает? Развертка в порядке? Тогда идем дальше. Экспортируем в формат .obj с вот этим пресетом. Размер указан для моделей из stalker'а. Каждый случай индивидуален из-за разницы метрических систем внутри движков.

-2

Использовать FBX не советую. Частенько сжирает то тайлинг, то развертку, то сам меш.

Импорт в 3ds max и подготовка к экспорту

Теперь переходим в 3ds max. Открываем сцену и импортируем наш .obj файл. Здесь тоже можно включить статистику и настроить ее в параметрах вьюпорта.

Важно: перед импортом привяжите папку текстур в 3ds max. Так редактор сам поставит текстуры на свои места. Для этого откройте выпадающее меню сверху Customize - Configure Project Paths. В открывшемся окне выберите вкладку External Files и нажмите кнопку Add, дальше укажите папку с текстурами.

Если используете папку с подпапками, как это сделано в X-ray Engine, то для удобства снизу поставьте галочку Add Subpaths. 3ds max дальше сам проставит пути к остальным папкам внутри директории.

Отлично, модель уже внутри 3ds max, а это почти половина пути. Убедитесь, что все на месте и ничего не слетело.

Если модель больше 25000 полигонов, то нарезайте ее. Я советую резать по полигонам, а не через knife или pro cutter. Они не всегда справляются с поставленными задачами и бывает приводят к вылету.

Обрежьте модель на куски до 25000 полигонов. Когда сделаете это, убедитесь, что модели находятся приблизительно у 0 координат мира или сцены.

Теперь надо центровать pivot point — точку центра модели. От pivot point внутри RenderWave танцует много вещей, но сейчас важно то, что именно от него идет отгрузка модели. Именно от pivot идет отсчет расстояния до игрока, а не от самого крайнего полигона.

Чтобы центровать pivot на геометрии, выделяем все получившиеся модели, открываем вкладку Utilities и в меню Kam's GTA Script's жмем Align Pivot To Center. Вуаля — pivot'ы стоят на своих местах. Теперь записываем координаты получившихся моделей куда вам удобно, они еще пригодятся.

После этого центрируем модели. Выбираем каждый получившийся кусок, жмем на клавиатуре W и проставляем координаты 0 0 0. Молодцы, отцентровали. Теперь можно экспортировать в .dff.

Для этого открываем DFF IO и экспортируем с этими настройками.

-3

Коротко по настройкам:

Apnd особо не влияет на модель.

lock DFF работает только на старых версиях KAM script'ов и полностью игнорируется аддоном DragonFF для blender, то есть он бесполезен.

Vertex Alpha практически не используется.

Теперь самое интересное — Vertex Color (VC/NVC). В старых играх крайне редко можно было встретить полноценное освещение, чаще это были запеченные статичные текстуры. Реализовывалось это через покраску вертексов, то есть вершин модели. Здесь мы задаем общий параметр света модели, то, насколько она будет яркой. Первый параметр отвечает за яркость днем, второй — ночью. В GTA SA два пресета vertex color, что, собственно говоря, логично.

UV Fix и Mesh Fix помогают модели не потерять свои куски на этапе экспорта. Бывает так, что при экспорте сложной геометрии скрипт может склеить несколько вершин, и получится месиво, а не модель. Чтобы этого избежать, и используются эти две функции, где UV — это развертка, или совсем просто говоря текстура, а Mesh — геометрия модели.

SKIP COL нужен для того, чтобы не пытаться сразу добавлять коллизию в модель. Почему? Потому что все Kams Script'ы так или иначе выдают приколы на этом этапе.

Как это работает? Под капотом нашей dff вшита не только геометрия, но и названия текстур вместе с коллизией. Да, коллизия идет отдельным файлом с расширением .col, но на последующих этапах она вшивается внутрь dff-модели через kdff. Процесс не необратимый: в случае ошибки коллизию можно удалить из модели через RWanalyze.

Подготовка текстур и создание TXD

Теперь у нас есть .dff-модель, но она без текстур. DFF-модели не носят внутри себя текстуры, как делают это с коллизией. Текстуры идут отдельным файлом .txd.

TXD-файл представляет собой архив текстур, в который можно закидывать используемые текстуры пачками. Важный нюанс: после того как ваш TXD начинает весить больше 9 мегабайт, GTA начинает истерить и может спокойно перестать желать загружать модель с таким txd. Но могут быть случаи, где txd весит и 10, и 14 мегабайт, и все нормально. Почему? Одни Rockstar знают.

Но что делать, если ваши 4K-текстуры весят все 20 мегабайт, а их еще и штук 20 или 40? Тут нам на помощь приходит Ordenator.

Мой совет — используйте буферную папку, в которой будут лежать текстуры сцены. Давайте вытащим их, чтобы вручную не перебирать основную директорию текстур.

Для этого воспользуемся встроенной функцией Resource Collector внутри 3ds max. Она находится во вкладке Utilities, кнопка More. Там указываете выходную папку. Выглядеть это будет вот так.

-4

Жмете Begin, и спустя считанные 2–3 секунды ваши текстуры скопируются в выбранную папку.

Теперь через Ordenator можно массово сжать все текстуры в 2, 4, 6 — да сколько угодно раз. Программа может работать и выборочно: например, можно указать порог разрешения и сжать все, что больше 1024 пикселей.

Возможно и такое, что Ordenator не будет сжимать текстуры, если они не в том формате. Насколько помню, он любит .dds-текстуры, а на остальные смотрит косо. В таком случае можно через командную строку Windows массово конвертировать .png или .jpeg в .dds. Действие крайне простое и выполняется за секунд 20–30.

Обычно это позволяет оптимизировать вес вашего TXD с 20–40 МБ до 5–7 МБ, что крайне полезно. Учитывайте также, что игра от 3 лица, и вкупе с низким полигонажем моделей и мощностью движка ей крайне редко нужны текстуры выше 512x512. Золотым стандартом я бы назвал 256x256 и ниже для бордюров, дверей и мелкой шелухи, и 512x512 для стен зданий в условиях правильного тайлинга.

Теперь закидываем оптимизированные текстуры в наш txd-архив. Обратите внимание на метод сжатия — он очень важен. Используйте метод сжатия dxt1. Это самый надежный метод, который максимально сохраняет качество и сильно уменьшает итоговый вес.

Также есть параметры mip-уровней, или mip mapping. Это функция, отвечающая за отрисовку текстуры на расстоянии. Именно она не дает превратиться стенам, пляжам, земле и всему подобному на расстоянии в пиксельное месиво, сжимая текстуру по мере удаления от игрока. Штука важная и много не весит, пользуйтесь.

Сборка DFF, TXD и COL через kdff

Теперь у нас есть модель и текстурник. Как бы нам это дело подружить? Вот тут нужен kdff. Эта программа позволяет склеивать dff, txd и col файлы, которые необходимы для правильной работы модели. Также именно она позволяет проще всего сделать коллизию нашей модели.

Открываем нашу dff и наш txd в kdff. Тут есть окно, чтобы полюбоваться творением. Сразу видно и текстуры.

-5

Справа сверху видим небольшое окошко Make Col. Используем Mesh Faces с галочкой Optimize. Если модель была сделана правильно, без энгонов и вписывается в ранее указанные ограничения движка, то .col-файл сгенерируется без проблем. В противном случае нас ждет Make Col Error:1.

После этого получившийся .col-файл сам подставится в графу col, и подсветится кнопка в виде дискеты с подписью dff. Именно по ее нажатию мы склеим все три файла, сохранив пути текстур внутри .dff и вшив .col внутрь.

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

Примерами могут стать невесть откуда взявшиеся невидимые стены, стены для пуль, которые прострелить невозможно, или вообще ситуации, когда вы где-то станете проваливаться под свою коллизию.

Причина здесь проще, чем кажется. Дело в концентрации вертексов в одном месте. Движок путается, если в одном углу сразу 100 вертексов, и начинает строить оттуда невидимые стены непосредственно в игре. Этих стен вы не увидите в самом .col-файле ни через ColEditor, ни через Collision IO в 3ds max.

В таких случаях придется переделать либо модель, либо коллизию, используя ColEditor2 или Collision IO в KAM script'ах. Чаще всего у меня это появлялось из-за мебели внутри зданий. Чтобы поправить, удалите проблемный участок из коллизии модели и воссоздайте его из пары простейших фигур. Можно еще и просто добавить пару полигонов, чтобы не сжирать полигонаж.

Прелайт и финальная доработка

Вот так и получается почти готовая модель, которая будет работать в GTA SA. Остается пихнуть ее в игру, используя IMGtool или сервер Texture Studio, кому что больше хочется.

Почему почти готовая? Потому что на ней нет прелайта. Помните, я писал про vertex color? Он симулирует тени простейшим образом, закрашивая вертексы на модели. Таким способом получается сделать какие-то полигоны темнее, какие-то светлее.

Также эту функцию можно назвать Vertex Paint. Им я бы пользовался для создания эффекта источника света, разукрашивая землю возле костра в теплый оттенок. Вариантов побаловаться много, но основной прелайт сделать куда проще, чем кажется.

В kdff 0.2.5 есть встроенная функция Easy Color. Она позволит с легкостью создать прелайт на вашей модели. При нажатии на эту кнопку откроется меню, в котором вы можете задать позицию источника света для дня и ночи. Также там есть два волшебных ползунка ambient.

В рамках RenderWave это что-то типа баланса белого. Ambient позволит сделать тени более мягкими или, наоборот, более жесткими. Точно так же можно выбрать цвет источника света и, что очень важно, настроить яркость.

Яркость в GTA SA работает не как в новых играх. Тут это, опять же, что-то типа баланса белого как в модели, так и внутри самой игры. Выкрутив яркость на максимум в игре, вы, скорее всего, просто уберете тени, а яркость модели, выкрученная на максимум, выжжет игроку глаза.

Вообще яркость, ambient'ы и тому подобное — это отдельная тема для треда. Внутри GTA SA модель очень тесно завязана на этих функциях, и на нее влияет не только внутренний ambient, но и ambient timecycle самой игры, а также еще несколько параметров.

Для достижения максимальной красоты или использования полного функционала воспользуйтесь дата-файлом timecycle или перейдите сразу к tymecyc_24h.dat. Там можно очень много всего накрутить.

После настройки прелайта сохраните итоговый .dff-файл через кнопку Save в меню Easy Color. Поздравляю, теперь в вашем распоряжении полностью рабочая dff model, с которой можно играться как душе угодно.