Skip to main content

What modders have built, and how

This page is based on mods already published on mod.io. Each section shows what a mod looks like in the game, which building blocks it uses, and where to read the details. Use it to see what is possible before you start.

Visitor cosmetics​

In the game. Monsters in Disguise: Cosmetic Kit by Dendro Studios adds new random items to visitors in every campaign: a witch hat, demon wings, plastic fangs and monster skin tones. They appear rarely (about 1 in 20), so they feel like a find. Find it on the mod.io game page.

How it is built

  • Hats, accessories and skin tones are data assets of the matching visitor-appearance classes (hat, other accessory, skin tone).
  • New keys are declared in the mod's tags ini as Generator.DataKey.<Section>.<AssetName>.
  • Wings and fangs are Blueprint actors with the parent class QzNPCAttachment, plus an actor tag NPC.Accessory.* declared in the tags ini. Without that tag the item is chosen but never spawned.
  • The low spawn chance is just the asset's selection weight.

Read more: Visitor appearance, Custom GameplayTags.

Symptoms with their own logic​

In the game. Monsters in Disguise: Toolkit (Dendro Studios, mod.io) adds vampire symptoms: a Vampire Bite that is visible on the X-ray, Vampire Fangs that appear on the visitor, and Crucifix Aversion that makes the visitor hiss when you use a tool.

How it is built

  • Each symptom is a symptom data asset with a tag under Symptom.Virus.*, so only infected visitors get it. Symptoms are included in every campaign automatically.
  • The filling rule decides how a symptom is found: "Worms" shows it on the X-ray, "Electroshock" makes it react to a tool.
  • The symptom's ability is a Blueprint with the parent SGameplayAbility. On activation it takes Get Current Source Object, casts it to the visitor character, and then does the work:
    • Vampire Bite paints the bite with dynamic material parameters.
    • Vampire Fangs uses Add Component By Class, Set Static Mesh and Attach To Component to put a mesh on the visitor.
  • X-ray markers are Blueprints with the parent QzXRayWormSymptom.
  • A tablet section for the new symptoms is an own symptom-section data asset plus a UI.Game.Tablet.Symptoms.* tag.

Read more: Symptoms, Running your own logic.

Tools with their own behaviour​

In the game. The same Toolkit adds a Flashlight (visitors show their teeth in its light) and a Crucifix (visitors react to it).

How it is built

  • Each tool is a child Blueprint of a base tool: the Flashlight of the base UV flashlight, the Crucifix of the base electroshock tool (it reuses its curve and has its own sounds and montages).
  • The Flashlight, on tool activated and deactivated, does a sphere trace from the camera, finds the visitor and plays a "show teeth" montage.
  • Tools are item data assets that are handed out manually: a campaign day gives them with the day modifier Give Tools.

Read more: Tools, Reading game state.

Your own campaign on your own map​

In the game. Dendro's SafeHouse and Halloween in the Neighborhood (Dendro Studios, mod.io) are full campaigns with their own card in the campaign list, their own map, their own days and their own rules.

How it is built

  • Campaign: a company data asset with your own Company.<Prefix>.<Name> tag. Enable only the symptom sections and base buildings you need.
  • Days and modifiers: day data assets with modifiers such as Give Tools, Add available symptom, Open symptoms, OpenFeatures, symptom count weights and Set Symptom Weight.
  • Weather: a Weather modifier per day. Halloween uses a different weather preset for each night.
  • Map: a level data asset (with a Level.* tag) that points to a copy of a base checkpoint level. The copy keeps the gameplay actors (game flow, NPC manager, base manager, inspection points, queue spawn points), and the environment is replaced through sub-levels and Packed Level Actors.
  • Loss rules: your own loss conditions asset.
  • Rule actors: actors placed in the map that watch visitors (Get All Actors Of Class, Get NPC Data BP, Get Final Goal) and react, for example by letting an infected visitor in.
  • Interactive objects: doors (parent SDoorCurveAuto) with focus and highlight, context actions (Open / Close), an ability set and a gameplay ability. A bed and a cat are child Blueprints of base content.

Read more: Making your own campaign, weather per day, custom loss rules, Maps, Interactive objects.

A campaign on a base level​

In the game. A campaign can also play on a game map without making a new one.

How it is built

  • One released mod uses a copy of the Chicago level and reuses the base days and quests.
  • Only day 1 is replaced (for example, with no intro). Everything else comes from the base game.

This is the lightest way to make a campaign: you only write what you change.

Read more: Making your own campaign.

Mods built on other mods​

In the game. Halloween in the Neighborhood uses the fake fangs from the Cosmetic Kit on its visitors, and it needs the Toolkit for its tools and symptoms.

How it is built

  • Dependencies are declared on mod.io: Halloween depends on the Toolkit, which in turn builds on the Cosmetic Kit.
  • References between mods go by tag and key only. The Halloween visitor profiles use the Cosmetic Kit's fake-fangs key, with no assets copied.

Read more: Mods that use other mods, Packaging & publishing.

A big overhaul​

In the game. Jurassic Contagion (Castox, mod.io) is a big campaign on a copy of the Miami gameplay level: dinosaurs, a raptor tank, a companion dog, a shop, videos and its own music and credits.

How it is built

  • Own game mode (parent QzGameMode) and own player controller (parent QzPlayerController). Its HUD component uses its own widget registry, so the tablet and HUD widgets are replaced with copies of the base widgets.
  • Own player character (parent QzCharacter).
  • Creatures: dinosaurs (parent QzZombieCharacter, with AI perception), a raptor tank (parent QzSharkTank), a companion (parent QzDog with an AI controller, behaviour tree and EQS) and a love interaction (parent QzLoveInteract).
  • Extra gameplay: housing and shop as plain actors, daily targets (parent QzDailyTarget), video through a MediaPlayer, an own music data asset, health bar and death screen widgets, and an own credits game mode.
  • A new tool (parent QzToolBase) and new symptoms.
  • A Level Blueprint with a lot of logic (spawning, gates, video, day checks) and streamed sub-levels, including a shop map.

Read more: Running your own logic, Making your own campaign.

Your own UI and input​

In the game. A released mod adds a dialog window that opens on a key press while you look at a visitor.

How it is built

  • Dialog widget: Border, ScrollBox, RichTextBlock (with the base text style) and EditableTextBox.
  • Input: an own Input Action and Input Mapping Context on a free key (T), enabled with Add Mapping Context.
  • Reading the focused visitor: Get Actor In Focus, cast to the visitor character, then Get State and Get NPC Data BP.
  • Advanced: running a manager in every campaign. The mod uses a checkpoint staff skin (NPC.Skin.Military) whose mesh has a Post Process Anim Blueprint. The Anim Blueprint passes the pose through unchanged and spawns a manager actor once. This is a trick, not an official hook, so use it only if you need your logic everywhere. See the skin tutorial for staff skins.

Read more: Input, Reading game state, Running your own logic.

Things to keep in mind​

caution
  • Child Blueprints of base content and runtime edits of base widgets can break after a game update. The tablet tweaks in some mods are unsupported and fragile. Prefer your own widgets and data assets where you can.
  • Symptoms, tools and staff skins are included automatically and also affect official campaigns. Make sure that is what you want.
  • Use your own tag prefix for tags, keys and asset names. Never put your tags under Company.Main.*.
  • Remove test assets from the mod before you package it.

Next: Making your own campaign, the skin tutorial, Packaging & publishing.