Перейти к основному содержимому

Туториал: скин-моды

Как модом поменять внешность NPC: и персонала блокпоста, и посетителей.

Вариант А: замена персонала блокпоста​

Пример результата — мод, который превращает всех пятерых сотрудников КПП в зомби.

  1. Запустите редактор Creator Kit (Run_QZSim_Editor.bat) — не открывайте QZSim.uproject двойным кликом: Windows попросит выбрать версию движка и завершится ошибкой «This project does not have any source code» (в ките специально нет C++-исходников). Создайте мод через mod.io → Create & Upload → Create Mods.
  2. В Content своего мода создайте ассет QzStaticNPCSkinDataAsset (ПКМ → Miscellaneous → Data Asset → выберите класс).
  3. Заполните поля:
    • NPCTag — кого меняем: NPC.Skin.Doc (доктор Джорджи), NPC.Skin.Usmon, NPC.Skin.UsmonWhite, NPC.Skin.Military (все солдаты разом), NPC.Skin.Scientist (хирург в рентген-зоне).
    • Mesh — новый скелетал-меш (опционально; пусто = менять только материалы). Меш должен быть ригнут на скелет, который игра умеет анимировать — проще всего взять меш, который уже есть в игре (например, меш зомби), или свою модель, подогнанную под скелет персонала — см. Своя модель. Модель с Mixamo «как есть» не встанет — нужен перескин в Blender на этот скелет.
    • Materials — переопределение материалов по слотам (номер слота → материал). Можно ссылаться на любые материалы базовой игры.
  4. Один ассет = один NPC. Хотите заменить всех — сделайте ассет на каждый тег (всего их пять).
  5. Проверьте в Play In Editor прямо в ките: моды из QZSim\Mods\ монтируются автоматически.
  6. Упакуйте через Package Mods и залейте на mod.io — или сначала протестируйте локально: распакуйте упакованное в <папка игры>\QZSim\Modio\<ИмяМода>\ и запустите игру.

Сюжетных NPC (Шульц, Торрес, Майор, MrWhite) заменить нельзя.

Вариант Б: замена/добавление внешности посетителей​

Внешность генерируемых посетителей (одежда, причёски, лица, тела) собрана в пулы по ключам.

Ключ — это поле ассета Key Tag Data; вписать его вручную в панели деталей нельзя.

  • Заменить базовую вещь: продублируйте базовый ассет в свой мод. Копия сохраняет базовый Key Tag Data, поэтому заменяет базовую вещь везде, включая восстановление сейвов. Поле Generator Data Source на это не влияет.

  • Добавить новую вещь:

    1. Продублируйте базовый ассет в свой мод и переименуйте его. Копия пока хранит в Key Tag Data базовый ключ.
    2. Сначала сохраните ассет. Кнопка Generate data key tag на несохранённом новом ассете ничего не делает.
    3. Нажмите Generate data key tag. Key Tag Data станет Generator.DataKey.<Layer>.<ИмяАссета>.
    4. Редактор записывает строку тега в QZSim\Config\Tags\Generator.ini самого кита, а не в ваш мод. Перенесите строку в Config\Tags\<ИмяМода>Tags.ini своего мода (шаблон: Свои GameplayTags) и удалите её из файла кита, затем сохраните. После этого Package Mods включит ini в мод.
    5. У продублированного базового ассета может быть включено Use Only Custom Profile. Снимите галочку, если вещь должна появляться у случайных посетителей.

    Новая вещь сама попадает в пул генерации; частоту появления задаёт её Selection Weight.

    Продублированный ассет шляпы, у которого в Key Tag Data всё ещё базовый ключ

    До: у дубликата всё ещё базовый ключ (...DA_Hats_Beer_helmet).

    Тот же ассет после нажатия Generate data key tag

    После: Key Tag Data = Generator.DataKey.Accessory.Hat.DA_Hats_MyFirstHat.

См. также Внешность посетителей.

Своя модель​

Вариант 1 — меш из игры. Создайте QzStaticNPCSkinDataAsset, укажите тег персонажа (NPC.Skin.Doc, NPC.Skin.Military ...), в поле Mesh выберите подходящий меш, который уже есть в игре (например, меш зомби), при желании переопределите материалы. Экспорт не нужен.

Вариант 2 — своя модель. Меши персонала блокпоста в Creator Kit — обычные, экспортируемые ассеты, поэтому скелет персонала можно взять из них.

  1. В Content Browser найдите меш персонала, который хотите заменить, в Art/Characters/PA_Collection/Assets/Characters/Mesh/: доктор D2_Zheka, солдат D4_Mirbek, Usmon / Usmon White / хирург D1_Usmon (также D3_Bolat).
  2. ПКМ → Asset Actions → Export... → FBX. В FBX лежат меш и его скелет (D1_Usmon_Skeleton; он общий для всего персонала).
  3. В Blender импортируйте этот FBX, смоделируйте или подгоните своего персонажа под эту арматуру (имена арматуры и костей не меняйте), заскиньте и экспортируйте в FBX.
  4. В ките импортируйте FBX в папку своего мода. В диалоге Import Content на вкладке Skeletal Meshes укажите Skeleton = D1_Usmon_Skeleton; анимации не импортируйте.

Диалог Import Content с выбранным скелетом персонала

Диалог Import Content, вкладка Skeletal Meshes: Skeleton = D1_Usmon_Skeleton.

  1. Создайте QzStaticNPCSkinDataAsset, выберите NPCTag и укажите в Mesh свой импортированный меш.

Список тегов в выборе NPCTag

Выбор NPCTag: Doc, Military, Scientist, Usmon, UsmonWhite.

Заполненный скин-ассет

Заполненный скин-ассет: NPCTag = NPC.Skin.Doc, Mesh = собственный скелетал-меш.

  1. Проверьте в Play In Editor, затем упакуйте и опубликуйте.

Экспортировать можно только персонал; остальные сторонние (cooked) ассеты по-прежнему нельзя, а Migrate остаётся отключённым.

Моды и сейвы​

  • Сейв, созданный без модов, спокойно работает после установки мода: новое подхватывается со следующего дня, замены применяются и к уже сохранённым NPC.
  • Удаление мода слот НЕ ломает: контент мода хранится в сейве тегами и при отсутствии мода просто выпадает (симптомы мода исчезнут у сгенерированных NPC, инструменты пропадут из колеса, замены вернутся к базе).
  • Рекомендация игрокам: подписываться/отписываться между кампаниями или хотя бы между днями, не посреди дня.

Частые грабли​

  • Uplugin: инструмент Package Mods сам проставляет EngineVersion и GameVersion — руками не трогайте. Без них (или со старым GameVersion) игра мод отклонит: игрок увидит в меню «Mods need an update» (или «Some mods were not loaded», если причина не в версии).
  • Обновили мод, а в игре старьё — установка/обновление посреди сессии применяется сразу, но уже загруженный уровень контент на лету не подменит: выйдите в главное меню и зайдите заново. Если и после этого старьё — перезапустите игру.
  • Меш встал в позу «T/A» — скелет вашего меша несовместим с аним-блюпринтом персонажа. Возьмите меш на скелете персонала D1_Usmon_Skeleton (импортируйте с выбранным этим скелетом) — см. Своя модель.
  • Теги скинов эксклюзивны между модами: каждым тегом NPC.Skin.* может владеть только один мод. Если два мода задают один тег, применяется только один из них, и какой именно — не определено.
  • Скин применяется в каждой кампании, включая официальные. Перед публикацией уберите тестовые скины.
  • Для продвинутых: Post Process Anim Blueprint меша должен пропускать позу дальше, иначе NPC встанет в T-позу.
  • Свои GameplayTags (для новых симптомов, инструментов и т. п.) объявляйте в Config\Tags\<ИмяМода>Tags.ini внутри мода — они подхватятся и упакуются автоматически.