Моддер улучшает систему кастомизации в GTA San Andreas. Рассказываем, как это изменит моддинг игры
Моддер White Black создает большую модификацию, которая меняет движок GTA San Andreas, значительно улучшает кастомизацию и геймплей. Для нашего сайта он поделился подробностями проекта.
Изменения в системе нанесения тату
Система кастомизации в GTA San Andreas сильно ограничена. Её главной проблемой является блендинг текстур. Пиксели накладываются друг на друга и текстуры смешиваются. Так работают причёски, татуировки, одежда для торса. В GTA 5 система для одежды такая же, но татуировки там уже накладываются декалями поверх модели тела.
Так выглядят татуировки в GTA San Andreas. Это большое полотно с прозрачным куском. Если равномерно распределить эти кубики по всему полотну, то они наложатся на всё тело. Так ещё и разрешение должно быть, как у текстуры тела. Довольно неудобно.
Реализовав систему декалей можно решить две проблемы сразу: разрешение может быть любым (даже меньше, чем у оригинальной текстуры, что даст прирост к производительности, грузиться текстура будет в разы быстрее), текстура будет распределена по всему полотну. На теле текстура может быть расширена, повёрнута, и отрисована в любом месте. Декали представляют из себя полигоны, которые находятся в том же месте, где и оригинальная модель. И дабы не грузить для этого дела отдельный .dff с полигонами, на которых должна будет отображаться татуировка, автор написал алгоритм процедурной генерации.
Моддер разделил торс на три части: торс, левая рука, правая рука. Каждой из этих частей присвоен разный цвет материала. По этому цвету движок определяет, какой частью тела является тот или иной полигон. Так выглядят текстуры татуировок в GTA 5. Ничего лишнего, только татуировка.
Примеры перемещения татуировки по телу, её масштабирование и поворот.
В оригинальной игре для этого пришлось бы проводить работу в фотошопе. В моде это производится реализуется на программном уровне. Автор добавил для моделей вторую UV карту, с которой проводится манипуляции. Таким образом, текстура без проблем может деформироваться.
Декали — это копия модели. В этом случае процедурно сгенерированные алгоритмом, но они не всегда занимают все полигоны тела. В алгоритме присутствует функция удаления ненужных полигонов. На картинках белым цветом отмечены те полигоны декали, которые будут обрезаны вместе со своими вершинами. Выходит, чем больше декаль по размеру, тем больше полигонов она использует.
Система декалей планируется не только для татуировок, но и для одежды, чтобы наносить на неё различные рисунки. Это даст возможность перекрашивать саму одежду, оставляя неизменным рисунок, либо перекрасить рисунок в отдельный цвет.
Метод процедурной генерации по скорости работает быстрее, чем загрузка и блендинг геометрии .dff файла. Блендинг геометрии нужен, чтобы персонаж мог становиться мускулистым или же толстым. Декали для татуировок генерируются на основе уже готовой геометрии, прошедшей блендинг. Это значит, что тату работать на абсолютно любом теле персонажа, независимо от его телосложения.
Сравнение татуировки, отрисованной методом блендинга (способ, использующийся в оригинальной игре), и сгенерированной декали. Для того, чтобы добиться такого же результата, как на второй картинке необходимо увеличивать разрешение текстуры тела, а после увеличивать разрешение татуировки до такого же разрешения.
Функция прекрасно работает и с другими моделями. Например, фото с голым торсом и футболкой. Татуировка обрезалась на рукаве так, как и должно.
Количество татуировок может быть неограниченным. В теории, можно полностью забить тело разными татуировками. Автор набил на перед торса шесть различных татуировок и две татуировки на левую руку.
Моддер также планирует добавить возможность набивать татуировки на ноги и голову. Там также имеется система настройки RGBA цвета.
Изменения в кастомизации одежды
Разрешение одежды теперь тоже не зависит от разрешения текстуры тела. Также больше не нужны прозрачные участки в том месте, где используется тело. Модель может использовать несколько текстур. Игра берёт информацию из цвета материала и, основываясь на этом, назначает полигону либо текстуру тела, либо текстуру одежды. Такая же система работает и с ногами.
Например, ноги (их часть без одежды) используют отдельную текстуру. Белые трусы тоже были выведены в отдельную текстуру. Это значит, одежда на ногах теперь не должна содержать текстуру кожи и вообще может иметь любое разрешение. Также, благодаря этому была исправлена ошибка с коленями на шортах. Модель одна, а текстуры две. Шорты здесь используют одну текстуру, а ноги — другую.
Воротник футболки сделан в 3D. Это тоже фишка проекта.
Моддер реализовал возможность носить очки и маски вместе. Он добавил новые слоты: под сумки, перчатки, серьги.
На стадии тестирования смена одёжки под открытой верхней одеждой, как в GTA Online. Под этой курткой можно носить абсолютно любую футболку, или же майку. А можно и вовсе ничего не носить.
Также, одежда будет иметь параметр настройки RGB цвета (можно будет красить определённые части одежды, к примеру, рукава в один цвет, а торс — в другой).
Усы, бороды и прически
Бороды и усы были отведены в отдельной слот. То есть, теперь бороду можно носить с абсолютно любой причёской, они не зависят от друг друга. А ещё, их можно вот так вот перекрашивать в парикмахерской. Для 2D бород можно изменять параметр насыщенности. Бороды также могут быть в 3D. Модель волос теперь отделена от модели головы. И текстура тоже содержит лишь волосы, без лица. Это сделано для того, чтобы модмейкеры могли создавать новые модификации на игрока без лишних заморочек.
Оптимизация игровых процессов
Код ребилда был оптимизирован и ускорен. К примеру, был добавлен бинарный поиск хешей моделей и текстур в player.img. При изменении любого элемента одежды происходит полное удаление всех текстур и моделей их загрузка по новой. Теперь же, при изменении текстуры той же футболки, будет удалена и загружена лишь текстура необходимой футболки, а не перестройка персонажа в целом.
Также для одежды больше необязательно иметь 3 клампа (normal, fat, ripped), как в оригинале. Она может иметь от 1 до 3 клампов. Обязательно, чтобы один из них был Normal. Это тоже сделано в целях оптимизации, так как не все модели меняются в зависимости от мускулистости или полногты персонажа. (например, кепки). Такая оптимизация сокращает размер файла в 3 раза и ускоряет загрузку.
Сейчас, чтобы создать хороший мод с поддержкой кастомизации, необходимо определиться с разрешением текстур, а после менять каждую текстуру и редактировать ряд моделей. В B1ack_Eng1ne для этого необходимо лишь изменить модель головы и отредактировать четыре текстуры (текстур торса, ног, ступней, лица). И, всё, все остальные элементы редактировать не нужно, они будут работать как положено, ведь они не зависят от тела, как в оригинальной игре.
В планах моддера добавление масштабирования и поворот отдельных моделей, а также генерация парных моделей — сюда относятся, к примеру, серьги (необходимо сделать лишь одну модель на левой части, а вторую на правой уже сгенерирует сама игра). То же самое касается и обуви. Всё это облегчит конечный .dff файл и позволит добавить дополнительные элементы кастомизации.
В следующей статье мы расскажем о системе загрузки модификаций, которая будет присутствовать в данном проекте.