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

Своя кампания

  1. Продублируйте базовый ассет кампании (QzCompanyDataAsset) в свой мод. Дайте ему собственный Tag Company.<Префикс>.<Имя> и объявите его в ini с вашими тегами. Никогда не используйте Company.Main.*: он зарезервирован для официальных кампаний. Заполните Title, Campaign Psevdonim (название в главном меню), Description, Logo (карточка кампании), Supported Sections (секции симптомов), Supported Blocks (базовые здания), Days и Priority. Проверьте, что Debug выключен, иначе кампания видна в Play In Editor, но не в игре. Endless Repeat Day можно редактировать, только когда включён Endless.
  2. Продублируйте нужные ассеты дней (QzDayDataAsset) и отредактируйте их модификаторы дня, например Give Tools, Add available symptom, Open symptoms, OpenFeatures, Set Symptom Weight, Weather, Override profiles и Add Money. Перечислите дни в поле Days кампании.
  3. Выберите уровень. Задайте в Level Tag базовый уровень (например, Level.Chicago) или положите свою карту вместе с QzLevelDataAsset (см. Карты).
  4. По желанию: собственный LossConditionsDataAsset (см. свои правила поражения); профили посетителей (QzNPCProfileDataAsset) с тегом вашей кампании; свои Blueprint-акторы, размещённые на вашей карте (см. Запуск своей логики).
  5. Проверьте. Кампания появляется в списке кампаний автоматически. Тестируйте её в новом сейве.
  6. Сейвы. Сейв, сделанный в кампании мода, требует этот мод. Без него игра не загружает сейв и называет отсутствующий мод (начиная со следующего обновления игры). См. Моды и сохранения.

Рецепт: погода по дням​

День может нести модификатор дня Weather (QzDayModifier_Weather). Добавьте его в QzDayDataAsset нужного дня. Он заменяет погоду этого дня на то, что вы опишете в его поле Environment:

  • Start Time и End Time: диапазон игрового времени дня (по умолчанию 900 и 1700).
  • Animate Time: двигается ли время суток в течение дня.
  • Presets: список пресетов погоды. В каждой записи есть ассет Preset, Weight (чем больше, тем чаще выбирается), Duration Range (минимум и максимум, по умолчанию от 5 до 20: как долго держится эта погода) и Change Time (сколько длится переход).

Без этого модификатора день использует обычную погоду. Пресеты являются ассетами системы неба игры; в ките они лежат в UltraDynamicSky/Blueprints/Weather_Effects/Weather_Presets (например, Clear_Skies, Cloudy, Foggy, Rain).

Рецепт: свои правила поражения​

У кампании может быть собственный LossConditionsDataAsset: список условий поражения. Создайте его в своём моде, добавьте условия и назначьте в поле Loss Conditions Asset (категория QZ Settings | Data) у актора Game Flow на вашей карте. Это работает со своей картой (см. Карты); базовый уровень использует базовый ассет. Проще всего начать с дубликата базового ассета: Data/DA_LossGameV2 или Data/DA_LossGame_Miami.

Встроенные условия:

  • Money (LossConditionMoney): поражение, когда деньги падают ниже Min Money. Check Reward Next Day сейчас ни на что не влияет.
  • NPC Kill (LossConditionNPCKill): поражение после Kill Condition Count убитых посетителей. Каждая проверка этого условия засчитывает одно убийство.
  • NPC Dead Resource (LossConditionNPCDeadResource): пока не реализовано и никогда не срабатывает, что бы ни стояло в Min Alive In Block Condition Count.
  • Kill Quest NPC (LossConditionKillQuestNPC): поражение, когда квестовый NPC убит способом, заданным в Kill Reason.

У каждого условия также есть Enabled, Defeat Widget Class, название и сообщения поражения, картинка поражения и скорость игры на экране поражения. Условие без Defeat Widget Class никогда не завершает игру. Ненужные условия удалите или отключите.

У Loss Subsystem есть Blueprint-ноды Check All Conditions, Check Specific Condition и Get Specific Condition. Обе ноды Check проверяют условия и завершают игру, если какое-то выполнено; проверка условия NPC Kill к тому же засчитывает убийство. Не вызывайте их просто чтобы прочитать состояние. Возвращаемое значение true = поражения нет.