• Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
  • Current Version: 2.1.2: 2024-01-17T10:41:57Z
  • First Published: 2022-08-02T11:32:15Z
  • Size: 1426112
  • Supported Unity Versions: 2020.3.44
tools utilities

SPAM - Spell, Projectile, Ability, Magic Framework

(13 Votes)
$29.94 $29.94

Discord | Documentation | Forum | Changelog


What's And How's?

  • How do I spawn a projectile and make it move towards a given target?
  • How do I make this spell damage the enemy?
  • How do I pool projectiles and VFX to make my game more performant?
  • How do I add cooldowns, animations and sounds to abilities?
  • How do I make an ability only affect targets that are stunned?
  • How do I apply and trigger damage/healing over time?
  • How can I make my lightning spells do extra damage when it rains?

All of these technical details and more are solved for you. It saves you time by enabling you to focus on what you game should be instead of how you implement and optimize abilities and projectiles.

SPAM supplies the logic for spawning, moving, and pooling all your abilities, projectile and VFX so you can focus on the what's of your game:


  • What happens when a target takes damage?
  • What happens when I kill an enemy?
  • What happens when I stun a character?

SPAM is also easy to integrate with any current systems you have as the code is interface-based and works in an "opt-in" fashion.



Features


Abilitities and projectiles system:

  • Projectile abilities such as bullets, rockets, and fireball...
  • Targeted abilities such as heal, shield, lightning strike...
  • Directional abilities such as shotgun, ground-slam, fire-breath...
  • Raycast abilities (beams, gunshots...)
  • Arched projectile movement, customisable with animation curves for easy editing.
  • Easily add variation to projectile abilities by setting min/max values for arched movement, speed, and spawn time. SPAM will use a random value in this range every cast.
  • Multiple projectiles per cast.
  • Zero garbage after initialization.
  • Area of effect and inter-area line-of-sight check (don't want to get hit through a wall, do you?)
  • Wedge and circle telegraph/indicator with in-editor previews.
  • Automatic and configurable pooling of VFX and projectiles.
  • Event-driven for loose coupling (optional, can be toggled off)
  • Clean code interface: Just call Ability.Cast(direction) or Ability.Cast(target).
  • In-editor documentation and validation.
  • Easy to use custom editors and windows. Add an ability to a character with just the click of a button!

Conditions system:

  • Apply status effects such as stun, burn, shield.
  • Apply and damage & healing over time.
  • Pre-conditions: Only apply effects when target has a certain condition (if wet add frozen. If target is undead apply extra damage).
  • Emergent gameplay: Let the world add and remove conditions to targets and characters and design how your abilities behave under different circumstances.
  • Apply buffs/debuffs from abilities, world, equipment.

Additional features:

  • Simple procedual shatter component: Shatter any mesh procedually!
  • Force shield shader.
  • Mask cutout shader (used for indicators / telegraphs).
  • Example UI-prefabs for cast time and ability slot with cooldown indicator.
  • Indicators / telegraphs can be set to show "time to cast", filling them up during the ability's cast time.

High Performance & Zero Garbage Policy

The framework is meant to be highly performant and optimized so you can focus on your game instead of digging through the profiler. The only garbage allowed from the framework is during startup and initialization. This means that as soon as your ability is ready it's garbage free to cast (spam) again and again and again.

All components turn themselves off/on depending on their internal state so there's no unnessecary update loops running during gameplay.



Extendable & Pluggable

SPAM is built to be extendable and you can easily add effects that aren't supplied in the base framework. Derive your custom effect from the effect base class and the framework will automatically pick it up and let you add the effect to your abilities.

Effects are applied by checking for an interface at their target, so you can easily use this framework side-by-side of your existing solution. All you have to do is to make sure the target has a component that implements the given interface the effect is trying to apply and you're good to go.


Examples of some built-in effects:

  • Damage
  • Heal
  • Add explosion force
  • Pull towards
  • Shield
  • Teleport
  • Stun
  • Shatter (procedual shatter behaviour supplied)
  • Buff/Debuff
  • Add/Remove condition

Planned features

These features are not yet in the framework but will be added as they're ready. Let us know if any of these are of special interest to you!

If you've purchased the asset these features (and possibly other not mentioned here) will come as a free update:

  • Channeled abilities (meteor shower, circle of healing...)
  • Arched physics projectile movement (grenade)
  • Resources system: A system that handles ability cost (mana, stamina, health, limbs, ammo...)
  • Delayed trigger abilities (click to cast in direction or at position, click again to trigger).
  • Trap abilities.
  • Advanced area of effect features like multiple smaller strikes in a bigger area like lightning storm or artillery rain.
  • Effect area and telegraph for a box/line, and advanced use-cases as multiple boxes in different directions.
  • More built-in ability effects (split projectile, dash)
  • Improved editors with even more custom-tailored components.

Note that this list is subject to change, and some might incur breaking changes to the frameworks API. If this is the case it will be detailed in the releasenotes and by a major version bump.


Add to cart
This site contains affiliate links, which means that we can receive a commission if you click on a link and buy something that we have recommended.
Although clicking on these links will not cost you anything, they will help us finance our development projects while recommending good products!