Roadmap

26/12/2026

Spark’s Patch Notes - 02/26/2026

UPDATES TO SPARK CORE & PREVIOUS PLUGINS

Core

  • Added the Quick Game Loader tool. Accessible from the Spark menu, the toolbar, or a keyboard shortcut. Lets you select a save slot and target scene, then launches Play Mode directly into that scene. You can also pick a precise position in the scene so the character spawns exactly at that location.
  • Added a search bar in the Spark Editor left panel to filter and search installed plugins by name.
  • Added a "Create New" button to the database entry selector in the Spark Editor. Opens the correct plugin tab and creates a new entry of the selected type without leaving the current context.
  • In Game UI now uses a new system that instantiates it at runtime, and allows you to clone the default UI, and modify it safely, so it is not overridden when you update.
  • Added a Display Name to Spark entities. Can be set in the Inspector or updated at runtime.

New FREE plugin: Requirements

The Requirements plugin has been added to Spark Core. It provides a universal condition evaluation system used across all Spark plugins to lock behavior based on the current game state.

Requirements are organized into Requirement Group entries. Each group contains one or more individual requirements and evaluates them using a configurable logic type:

  • And: All requirements in the group must pass.
  • Or: At least one requirement must pass.
  • Nand: Passes if at least one requirement fails, meaning not all can be true at once.
  • Nor: Passes only if all requirements fail.
  • Xor: Exactly one requirement must pass.
  • Threshold: A configurable minimum number of requirements must pass.

Multiple groups are then evaluated with OR logic between them, so any single passing group satisfies the overall check.

Each individual requirement also has two additional options: an Invert toggle that flips the result (the requirement must NOT be met to pass), and a Failure Handling mode that controls whether a failing requirement blocks the action entirely or simply raises a warning while still allowing it.

Custom requirement types can be created by extending RequirementTypeBase.

Currently active in: ability execution, individual ability effects, interactable objects, loot table drop groups, quest accept conditions, and NPC dialogue interactions.

Built-in Requirement Types (19 total):

Stats (Combat Plugin):

  • Value Stat: checks if a value stat on the source satisfies a comparison condition
  • Resource Stat: checks if a resource stat on the source satisfies a comparison condition

Status (Combat Plugin):

  • Has Status: checks if the source or target entity has a specific status effect currently active

Items (Items Plugin):

  • Has Item in Inventory: checks if the entity holds a specific item, optionally with a quantity comparison
  • Has Item Equipped: checks if a specific item is currently equipped
  • Has Equipment Slot Equipped: checks if a specific equipment slot has any item equipped
  • Has Weapon Type Equipped: checks if a specific weapon type is equipped in any slot
  • Has Empty Inventory Slot: checks if at least one inventory slot is unoccupied

Currency (Currency Plugin):

  • Currency Amount: checks if the entity's wallet balance for a currency satisfies a comparison condition

Crafting (Crafting Plugin):

  • Has Crafting Recipe: checks if the entity has a specific crafting recipe unlocked

Progression (Progression Plugin):

  • Progression Level: checks if the entity's level in a specific progression track satisfies a comparison condition

Quests (Quests Plugin):

  • Quest Status: checks if a quest is in a specific state (Not Started, Active, Completed)

Classes (Classes Plugin):

  • Has Class: checks if the player has a specific class as main or secondary
  • Has Secondary Class: checks if the player has a specific class as a secondary class
  • Main Class: checks if the player's main class is a specific class

Rules (Rules Plugin):

  • Rule Value: checks if a boolean Rule on the source entity matches the required value

Playables (Playables Plugin):

  • Distance to Coordinates: checks if the source entity is within a configurable distance of specific world coordinates

ScreenTexts Plugin

  • Added new screen anchor positions to Screen Text Entries: Center, Top, Bottom, Left, Right, TopLeft, TopRight, BottomLeft, BottomRight.
  • Added X and Y pixel offset fields to Screen Text Entries for fine-tuning placement relative to the chosen anchor.
  • Added new Spark event types supported by Screen Text Entries.
  • Fixed screen text entities not following their target when animation was disabled.

Interactables Plugin

  • Added a highlight object field to interactable objects. The assigned object activates when the player is in range and all requirements are met, and deactivates otherwise.
  • Added Requirement support to interactable objects. Interactions can be locked behind requirement conditions. An optional flag controls whether the indicator still shows when requirements are not met.

Crafting Plugin

  • Added a trigger list to Crafting Recipe Entries. Configured triggers fire automatically when the recipe is crafted successfully.

Save Plugin

  • Refactored save data so each plugin owns and persists its own data independently. Previously, save data was partially embedded in template-specific files.

Items Plugin

  • Added Requirement support to Loot Table Entries. Drop groups can be locked behind requirement conditions.
  • Added separate in-combat and out-of-combat weapon position configurations to weapon data. Each weapon configuration defines an independent body part attachment point and position/rotation coordinates for both combat and non-combat states, with character-specific coordinate overrides for each.
  • Added a sheath and unsheath system to weapon items, with Animator integration. Weapons define separate sheathed and unsheathed states driven by animator parameters, with full in/out of combat transition support.
  • Fixed a bug where equipping the same item entry multiple times on the same entity caused stat calculations to produce incorrect results.
  • Fixed item stats being overridden by stat templates when loading a saved game.

Triggers Plugin

Added 11 new Trigger Types:

  • Toggle UI Panel: Shows, hides, or toggles a Spark UI panel by ID.
  • Add Secondary Class: Assigns or removes a secondary class on the player entity via the Classes plugin.
  • Add Spellbook: Grants or removes a spellbook from the player's active spellbook data via the Spellbooks plugin.
  • Add Profession: Adds a profession to the player entity via the Professions plugin.
  • Gain Experience: Awards a configurable amount of experience to the player for a specific progression track.
  • Gain Currency: Adds or removes a configurable amount of a specific currency from the player's wallet via the Currency plugin.
  • Add Quest: Adds or abandons a quest for the player via the Quests plugin.
  • Complete Quest Objective: Completes a specific quest objective, or all objectives, for an active quest on the player.
  • Learn Crafting Recipe: Unlocks a specific crafting recipe for the player via the Crafting plugin.
  • Unlearn Crafting Recipe: Removes a previously unlocked crafting recipe from the player via the Crafting plugin.
  • Roll Loot Table: Rolls a configured loot table and either adds the results directly to a target entity's inventory or drops them at a world position.

Combat Plugin

Ability Types

Added six new Ability Types:

  • Direct Target: Fires on the caster's current target. Supports range validation, facing angle, line-of-sight, target relationship filtering, and optional auto-attack on use.
  • Direct Target Projectile: Same as Direct Target but fires physical projectiles. Supports multiple projectiles per ability with independent timing, and body part spawn and impact positioning.
  • Direct Target AoE: Requires a selected target but applies effects to all entities within a radius of that target. Supports AoE and per-hit VFX, Y-axis filtering, and per-entity line-of-sight validation.
  • Self: Applies effects directly to the caster with no target required.
  • Aura: Periodically applies effects to all entities within a radius around the caster over a total duration. Supports tick interval, Y-axis filtering, line-of-sight checks, and a caster-attached aura VFX.
  • Ground: Opens a circular placement indicator before firing. The player confirms a position or cancels. Effects apply at the confirmed position instantly or after a delay.

Activation Types

Added the Activation Type system. Each Ability Entry has an Activation Type that defines how it is triggered before execution. Three built-in types are provided.

  • Instant: Fires immediately after validation.
  • Incantation: The caster must cast for a specific duration before the ability goes off. Supports movement interruption, timed muzzle VFX, and a looping ambient sound.
  • Channel: Fires immediately but last for a configured duration. Cooldown starts after the channel ends. Supports movement restriction, an animator bool toggled during the channel, and a looping sound.

Abilities

  • Added Global Cooldown support. Each Ability Entry can start a GCD on use with a configurable duration. Individual abilities can be set to ignore the GCD. Reflected visually on Ability Bar slots.
  • Added Requirement support to Ability Entries. Requirements are evaluated before execution and displayed in the Ability Tooltip with color-coded pass/fail status.
  • Added a per-effect proc chance to Ability Entries. Each effect has an independent percentage chance to apply on execution.
  • Added Requirement support to individual ability effects. Effects can be conditionally applied based on any requirement type.
  • Added conditional status modifiers to damage and healing effects. Bonus multipliers can be configured to apply only when specific status effects are active on the target, opening up new ability design possibilities.
  • Added audio support to damage, healing, knockback, and status application effects. Each effect can play a configurable sound on execution.
  • Added hot reload support for Calculation Formula Entries. Formula changes made during Play Mode are detected automatically, the formula cache is cleared, and subsequent calculations use the updated expression immediately.

Validation

  • Added an ability validation pipeline. Abilities return a typed result with a failure reason string. Built-in checks cover range, facing, line-of-sight, target relationship, and dead target. Custom failure states are supported and can trigger ScreenText feedback events.

Ability Bar

  • Support for multiple individual ability bar, each with independent slot counts. Bar states are saved and loaded per entity via the Save plugin.

Targeting

  • Added Tab Targeting. Cycles through hostile and neutral targets in a configurable cone and range in front of the player, prioritizing enemies. The cycle resets when the target list changes or the current target dies.

Nameplates

  • Made the Nameplate system fully modular. The nameplate component now accepts any prefab implementing INameplateUI, removing the dependency on a specific nameplate type.
  • Added a Simple Nameplate built-in nameplate type.

Player

  • Fixed various issues with in/out of combat state transitions.
  • Fixed combat state not resetting correctly on death.

Tooltip

  • Added an ability tooltip system. Renders modular tooltip content from keyword-driven database entries assigned on the Ability Entry. Ability requirements are displayed with color-coded pass/fail status. Custom tooltip providers can be registered at runtime.

Status Effects

  • Added a status list UI component. Displays active status effects as a dynamic icon list. Supports scene reference, tag search, current-target tracking, or code-based assignment.

UI Plugin

  • Added a generic tooltip system. Supports icon, title, and description, with optional header-only or description-only display modes. Can be shown or hidden from any script at runtime.
  • UI panels are now moved to the last sibling position when opened, ensuring they always render on top of other already-open panels.
  • Added a cursor manager system. Seamlessly swap cursor texture based on what you are hovering. Each cursor option has a configurable priority, and the highest-priority result wins. Falls back to a configurable default cursor when no provider is hit or the pointer is over UI. Cursor options can be registered and unregistered at runtime.
  • Fixed Escape not closing some UI panels.

Inputs Plugin

  • Replaced Input Action Reference fields with database input entries. Input Action References could not be serialized correctly inside prefabs, causing references to be lost. The database entry wraps the reference and resolves it at runtime.

NPCs Plugin

Note: This is still the PLACEHOLDER for the future, real NPC plugin that will have to be purchased when it is released.

  • Added a Threat system to NPC combat. Tracks threat generated by damage and healing from nearby entities.
  • Added an NPC identifier component. Assigns an NPC Entry to a GameObject, identifying it to quest tracking and other NPC systems. Automatically sets the entity display name to the NPC Entry display name on Start.
  • Added an NPC spawner. Spawns NPCs within a configurable area using Box, Sphere, or Circle shapes, with surface or volume-based placement. Supports a weighted NPC list, active and total spawn limits, initial burst on Start, interval spawning, and automatic respawn on death with a configurable delay. The spawn area is visualized in the Editor via gizmos.
  • Added a trigger list to NPC Entries that fires on death.
  • NPCs now regenerate to full health after exiting combat.
  • Added right-click loot support. NPC loot interaction can now be triggered via right-click in addition to the interact key, with a configurable maximum distance.
  • Full Quests integration included for kill and interact objectives.

MMO Character Controller

Added a new WoW-style MMO character controller. Movement supports independent speeds for forward running, strafing, and backpedaling. Q/E keyboard turning, right-mouse-button orbiting, and combined left+right mouse forward movement are all supported. Autorun is toggleable.

Jump height and gravity are configurable. Stationary jumps allow limited mid-air steering; running jumps maintain the launch direction.

The camera orbits with configurable sensitivity, zooms with the scroll wheel within set distance bounds, and avoids geometry clipping by pushing in instantly and pulling out smoothly. The cursor locks while orbiting and restores to its original screen position on release.

Currency Plugin

  • Added a Currency item type. Items of this type bypass the inventory entirely when obtained and are automatically converted into the matching currency in the entity's wallet. This allows currency rewards from loot tables, quest rewards, or any other item source to flow directly into the wallet without occupying inventory space.

NEW PLUGINS

Quests Plugin

The Quests plugin provides a fully modular quest system. Quests are defined as database entries with an assignable category, accept requirements, a list of objectives, and both guaranteed and player-selectable reward sets. The number of rewards a player can choose from the selectable list is configurable per quest.

Quest state (Not Started, Active, Completed) is tracked and persisted per entity. Quests can optionally be turned in directly from the Quest Journal without interacting with an NPC. Any active quest can be pinned for HUD tracking.

The system is designed around extension points. Objective types automatically register their event listeners on load with no manual wiring required. New objective types can be created by extending QuestObjectiveTypeBase. New reward types can be created by extending QuestRewardTypeBase. This makes the Quests plugin fully open to any game-specific objective or reward logic without modifying core code.

Built-in Quest Objective Types:

  • Kill NPC: tracks kills of a specific NPC entry
  • Interact with NPC: tracks interactions with a specific NPC
  • Use Ability: tracks ability usage
  • Craft Recipe: tracks crafting a specific recipe
  • Unlock Recipe: tracks unlocking a specific recipe
  • Gain Currency: tracks currency earned over time
  • Reach Currency Total: tracks reaching a total wallet balance
  • Loot Item: tracks looting a specific item
  • Equip Item: tracks equipping a specific item
  • Unlock Class: tracks a class unlock event
  • Enter Scene: tracks entering a specific scene

Built-in Quest Reward Types:

  • Gain Item: awards one or more items to the player
  • Gain Currency: awards currency directly to the wallet
  • Unlock Recipe: unlocks a crafting recipe
  • Unlock Class: unlocks a character class
  • Unlock Spellbook: unlocks a spellbook
  • Trigger: fires any configured trigger on reward

Extension: NPC Interactions integrates quests directly into NPC dialogue, enabling quest offer and turn-in from interaction nodes.

Requirement Type: Quest Status (checks if a quest is Not Started, Active, or Completed)

Trigger Types: Add Quest, Complete Quest Objective

Classes Plugin

The Classes plugin provides a character class system with support for a primary class and any number of secondary classes. Classes are defined as database entries and all state is persisted in save data.

Classes open up a wide range of design possibilities: abilities locked to specific classes, class-restricted quests, class-locked loot, and class-dependent NPC dialogue are all achievable through the built-in requirement types and cross-plugin extensions without any custom code.

Requirement Types: Has Class, Has Secondary Class, Main Class

Quest Objective: Unlock Class

Quest Reward: Unlock Class

Trigger Type: Add Secondary Class

Races Plugin

The Races plugin provides race definitions for character creation. Each Race Entry defines a list of character variants, each linked to a Character Entry that specifies the prefab, avatar, and starting configuration. Races are managed through the Spark Editor and fully integrated with the Database system.

Spellbooks Plugin

The Spellbooks plugin groups abilities into named, manageable collections. Each Spellbook Entry holds a list of abilities. Each ability in the list can be configured to automatically add itself to the player's ability bar on game start if all of its requirements are met at that time.

Spellbooks provide a clean, reusable way to define the ability sets associated with classes, races, factions, quest rewards, or any other unlock condition in the game.

Quest Reward: Unlock Spellbook

Progression Plugin

The Progression plugin provides a flexible experience and leveling system. Multiple independent progression tracks can be active on a single entity simultaneously, each defined by its own Leveling Entry. Tracks are entirely independent, making it straightforward to have separate progression for character level, crafting skill, a combat rating, or any custom axis without any interference between them.

Each Leveling Entry supports Finite progression (with a level cap) or Infinite progression (no cap, with a configurable soft cap level and post-cap XP multiplier). XP curves are configurable per track as Linear, Exponential, or Logarithmic. A full manual XP table is also supported with an auto-generate button in the Spark Editor that populates it from the curve settings, which can then be manually adjusted per level.

Level and experience state are persisted per entity and loaded from save data. Events are published on level up for any listener to react to.

Requirement Type: Progression Level

Trigger Type: Gain Experience

Professions Plugin

The Professions plugin provides a lightweight profession system for tracking which professions a player has learned. Professions are defined as database entries and persisted in save data. The plugin is designed as a foundation for crafting specialization paths, unlock flows, and profession-restricted content.

Trigger Types: Learn Profession, Add Profession