Как сделать любого персонажа

Обновлено: 04.07.2024

Игра называется — Galaxy Pass Station. Вы смотритель первой космической станции, куда прилетают гости со всей галактики. Есть множество инопланетных рас и культур, а в галактике правит Галактическое Правительство, которое устанавливает правила межзвездной миграции.

Подробнее об игре я рассказал в этой статье:

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

Представьте, что у вас есть десятки вариантов носов, глаз, ушей, причесок и т.д. Теперь их надо стандартизировать, выработать общие правила компоновки, чтобы всё друг с другом стыковалось наилучшим образом.

По отдельности нарисовали:

  • Каждую форму головы + варианты причесок под формы.
  • Разные части лица — уши, глаза, рты, и т.п.
  • Разные варианты костюмов.

Все это хранится через Scriptable Objects и редактируется прямо из редактора Unity. Выглядит это так:

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

На скрине представлены варианты формы головы для землян. На практике, мы выяснили, что проще всего хранить варианты причесок через форму головы. Если быть точнее, варианты чёлок, т.к. прически мы тоже храним отдельно.

Наш генератор не предполагает выбора пола. Это исходит из особенностей нашей игры. В 90% случаев сама игра должна генерировать персонажа и определять, кто примерно получился — женщина, мужчина или что-то среднее.

Вы могли заметить выше на скрине, что у каждой части тела и лица встречается опция — Female. Это процент женственности части тела — от 0 до 1 (от 0% до 100%). Он помогает нам определить пол персонажа после генерации. Тут ничего сложного:

Берем среднеарифметическое female коэффициента от всех частей тела.

  • Если результат больше 0.6, то это скорее всего женщина.
  • Если меньше 0.4, то скорее всего мужчина.
  • Если от 0.4 до 0.6 — это может быть как мужчина, так и женщина.

Если каждой части тела задать коэффициент funny (т.е. забавность), то игра сможет определять, получился ли персонаж забавным. Удобно, можно чередовать забавных персонажей с обыкновенными, чтобы игрок не скучал.

Для генерации мы используем Random с определенным seed числом. По-русски, это зерно генерации.

Мы имеем объект Random со случайным или неслучайным числом-зерном, из которого генерируются варианты глаз, ушей, волос и т.п. Это позволяет нам сохранять сгенерированного персонажа, просто, храня его зерно.

Что если сгенерированный персонаж должен появится в игре несколько раз? Для этого не нужно хранить результат генерации, сгенерированную графику и т.п. Достаточно сохранить число и заново сгенерировать по этому числу персонажа!

Алгоритм работы Random предполагает, что передав на вход одно и то же число (т.е. зерно), вы всегда получите одни и те же случайные числа. Конечно, нужно сохранять порядок их генерации. Примерно так мы и делаем.

Мы используем шаблон с точками, в которых создаются определенные части тела и лица. Сделано это через prefab, в нём собран типичный персонаж. Для каждой инопланетной расы у нас свой шаблон или даже несколько вариантов шаблонов:

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

Однако, что делать, если у нас разные пропорции формы головы? Мы используем всё тот же шаблон, только высчитываем разницу между формой головы в шаблоне и в той, которую создает генератор. Полученная разница — это коэффициент, на основе которого мы модифицируем координаты наших ушей, глаз, рта, носа и т.д. Тело и шея в нашем случае это одно целое и они не зависят от формы головы.

Тут есть один нью-анс. Мы часто используем Pivot точку самого спрайта, чтобы регулировать корректное смещение части тела. Например, для волос, точка pivot соответствует месту, откуда приблизительно должны расти волосы. С носом похожая ситуация.

Pivot точки спрайтов позволяют нам регулировать место появления части лица или тела без изменении логики генератора.

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

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

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

Мы не используем sprite sheets для частей тел. Да, это не очень оптимально для Unity, но в нашем случае, это не влияет на производительность так сильно, чтобы мы начали оптимизировать этот момент. Мы избавляем себя от ручной разметки спрайтов в редакторе, на что у нас уходило много времени. Однако, всегда можно использовать функцию Sprite Atlas из новых версий Unity. Она позволяет собрать несколько спрайтов в одну большую текстуру без особых изменений в игре.

Графику мы храним в одном цвете. Наш генератор, если это нужно, заменяет цвета на другие. Используется это для изменения цвета кожи, перекраски костюма и изменения цвета волос. Делаем это через создание новой текстуры с заменёнными пикселями с одного цвета на другой.

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

Буду рад любым комментариям к статье, игре и т.д. Если вам понравилась игра, не забудьте её добавить к себе в список желаемого в Стиме, чтобы не пропустить релиз в 2022 году:

Также смотрите moveto, который может вызвать персонажа с refID с помощью следующих команд: PRID RefID и moveto player.

Также смотрите duplicateallitems.

Кроме того, removeperk удалит полностью перк. Данное действие не возвратит вам очков навыка.

Например, player.removeperk 000babe8 удалит ранг 1/5 у одного из перка.

Смотрите также kill.

Смотрите также forceAV и modAV.

Полный список атрибутов доступен в Actor Value Indices.

В версии игры 1.3.10.0 эта команда не работает.

Поскольку команда изменяет базу NPC, вы всегда должны проверить, сможете ли вы убить NPC. Использование команды kill не дает полностью достоверного результата, поэтому придется убивать вручную, пока персонаж, либо упадет замертво (смертный), либо начнет ползать вокруг (бессмертный).

Скайрим мод

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

Что делает этот мод
Добавляет фракцию к выбранному NPC
Меняет свое отношение к игроку
Устанавливает их уверенность на 4 (будет сражаться с NPC сильнее их)
Устанавливает их агрессию на 1 (атакует врагов при появлении)
Устанавливает их мораль на 0 (Совершит любое преступление)

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

Как использовать?
Откройте консоль (клавиша `~ тильда), затем найдите своего NPC, щелкните по нему с открытой консолью, появится его имя, затем введите: bat mf

А затем, когда вы поговорите с ними, у вас будет возможность их нанять.

Оригинальное название: Make any NPC a follower
Требование: Skyrim
Версия: v1.0
Автор: xzen
Распространение: запрещено копирование текста


Семен Зобин 8 декабря 2015 в 19:39 45917

Геймеры Fallout 4 быстро осознали, что помимо стандартных компаньонов при должном умении можно расширить список доступных спутников. Как стало известно , теперь появилась подробная инструкция о том, как сделать любого неигрового персонажа своим компаньоном.

Хитрость заключается в использовании консольных команд, которые также называют чит-кодами в Fallout 4. С помощью консоли можно сделать с любым NPC практически все, что угодно. Однако для его приручения потребуется выполнить несколько последовательных действий.



По данным , игроки и прежде могли заполучить себе в союзники, например, Когтей смерти. Однако это достигалось с помощью мода. Теперь любой неигровой персонаж из мира Fallout 4 доступен для геймеров в любом месте и в любое время.

Читайте также: