author

Shon

Mar 25 2023

12 min read

1st Class Mod Support

Last month on Article #8 Cursed Problems In Tactics Games , I explain a couple of paradoxes that appear in even the best of strategy games. There are a couple of minor solutions mixed in the ole article to reduce the blow of these issues, yet these alone cannot be enough to completely mitigate the problems therin.

So what then?

So then we've gotta add robust mod support to the game in order to have a snowball's chance at combating these problems. Besides, I love modding games! It is one of the primary features I look for when digging into a new title; "Is this new game xyz possible to mod?"

Hold up, what is a "mod"

A "mod" is short for modification. In this context, it refers to manipulating the game itself by altering runtime memory, configurations, assets, or even in some cases game scripts.

Gamers wanting to improve a gaming experience through perhaps desperation, or potentially creative bursts, may choose to embark on a deep investigation uncovering the underlying software which makes a game "tick". These varying methods of modding can be "supported" by the creators of the game, or not.

Skyrim

The most popularly modded game that I know of is The Elder Scrolls V Skyrim. Bethesda engineers whom created the game included a set of content creation mod tools that many use to mod the game.

The insatiable community wishing for further more direct control over the game frequently uses SKSE (Skyrim Script Extender), a powerful method of modding not supported directly by the creators of Skyrim.

SteelPinion

Naturally we'd want a modding culture to be centric in SteelPinion; baking it in from the ground up akin to Bethesda's Skyrim. Since we have another great game's history to reference, how might we improve the modding situation before it begins?

How can we anticipate what the community might want, and what they might do to SteelPinion?

We can't predict the future, but we are confident that people ultimately will want to play together with mods.

~an intuition

History Repeats...

We've seen it before, every great modable game is an experience worth sharing with your best mate, or even randos.

Therefore multiplayer support is something that is built into the SteelPinon game engine, along with mod injection on the fly. SteelPinion has some deeply 1st class supported hooks into the game engine's cycles.

1st class support means that when the game is updated, the previous mods have a clear path to compatibility with the new version. In best cases, updates to a game with 1st class mod support could mean no disruption to the pre existing player mods.

While in a worst case, a migration script or guide could be released alongside new versions of the game to identify breaking changes to api implementers and modders.

Since we know that we'll inevitably have to update the game, we build the mod system out in such a way that it may stay functional for a time even as the game updates. Effectively supporting more than one version of the game in order to not annoy modders with random sudden "outages".

Show me the money moddy

The common mod file in SteelPinion represents an instantiable entity. Something that can exist in the game is given a definition so that it can later be "spawned" under certain circumstances with the expected behaviors.

The files can be very simple, like the "Premium Fuel" customizable component. It merley bumps the speed stat, and may only be attached to a parent entity which utilizes combustion fuel.


  ---
  id: premium-fuel
  release: 0.0.0
  slot: technology
  name: Premium Fuel
  cost: 2
  desc: >
    req: combustion system, respec: speed +1
  flavor: >
    It is actually the same as regular fuel, 
    just with a different marketing campaign...

  required:
    system:
      - comboostion

  stats:
    power: 0
    speed: 1
    hull: 0
    armor: []

  traits:
    chemical: flammable
  

The speed stat is mostly used in calculations regarding evasion and collision. So A higher speed stat offers more chances to evade when an entity finds itself within threatening salvo arcs.

Simple control of game entities like the above can put quick balancing in player's hands. They can fix costs, stats, spelling mistakes, or even alter the requirements to access the equipment.

Lets face it, at some point, players will have more insight into SteelPinion metagame than we the creators will; eventually...

Injectable Rules

K, so simple text changes are nice, but we need more than just simple stat mods! In order to pay tribute to cheaters and elite gamers both, we wanted to introduce a "360 no scope" attack.

This is rather complex. Since the mod needs to literally hack into past events and change them per the original inspiration of hackers doin their thing..


  ---
  id: no-scope-360
  release: 5.0.0
  slot: talent
  name: No Scope 360!
  cost: 5
  desc: >
    on graze: devestate defender
  flavor: >
    Implement life hacks in realtime to produce unrealistic results.
    Shots that appear to have grazed, 
    instead nail the target where it hurts!

  required: ~

  ability:
    assault:
      power: 0
      ammo: 2
      angle: 131
      range:
        min: 2
        max: 3
    on:
      after: pinion grazed
      if: |
        defender.hasEffect(EFFECT.GRAZE_SHIP)
        && !defender.hasEffect(EFFECT.CRIT_SHIP)
      then: |
        addEffect({
          to: defender,
          effect: EFFECT.CRIT_SHIP,
          effectOpts: {
            intensity: 1
          }
        })
        nullifyEffects({
          eventId: event.eventId,
          effects: [ EFFECT.HIT_SHIP, EFFECT.HIT_OBSTACLE ],
          condition: effect => effect.cause === 'salvo-graze-past'
        })
  

The "No Scope 360" is a sinister and expensive talent actionable by pilots. It converts a particular kind of miss into a critical hit!

Ridiculous? Unbalanced!? Maybe, it is. There will be plenty of other things like this that would be exposed and changable by modders just in case we introduce madness that player's don't care for.

Now, I did try to place some semblance of balance here. If one looks closely, you'll notice that the attack can only be used twice, and it has a min/max range.

These restrictions coupled with the cost will hopefully make it balanced, but we know that only playtesting will tell. Even with extensive playtesting, synergies introduced by new cards down the line could further make this OP (overpowered).

Leo the Artisan Artificer

Leo, our newest modeler has imagined up a neat mechanism of which I am proud to present; Our first Artisan Artificer model which has recently been completed! It is a Dieselpunk Engine which is a somewhat expensive ship component offering high speed maneuver benefits. It also has a smog generating side effect which should obscure vision a little bit under the right (or wrong) circumstances!

Since we are talking about mod files, here is the current mod file for the Diesel Engine.


  ---
  id: diesel-engine
  release: 0.0.0
  slot: engine
  name: Diesel Engine
  cost: 6
  desc: >
    on move: create Dense Smog, 
    on complex(fast): convert to standard
    on complex(very-fast): convert to standard
  flavor: >
    Great for the environment

  required:
    body:
      - medium
      - large
      - giant
      - massive

  stats:
    power: 0
    speed: 0
    hull: 0
    armor: []

  ability:
    on:
      - after: executes a maneuver
        if: random.chance(0.55)
        then: |
          world.instantiate({
            defId: 'dense-smog-small',
            owner: 'arena',
          })

  traits:
    system: combustion

  asset:
    card:
      0: pin-1!swan!white-clouds!EASE=4&SHINE=true&SPEED=1.15&BACKSPEED=1.0
      6: eng-4a!diesel!white-clouds-clip!EASE=4&SHINE=true&CASE_BLEND=.5&POP=true&SPEED=1.15&BACKSPEED=1.0&CLIP_TOP=0.75
  

This last mod file also includes references to visual assets. All the mod files will have this section which allows changes to visual representation of the entity. Separating the behaviour from the visuals is critical for player control over the entities.

How-To Guide (must have)

Modding SteelPinion is gonna be hard if there isn't a clear guide as to what EFFECTs exist, what EVENTs are reported by the engine, and what the normal behavior is for those EVENTs and EFFECTs.

Modders will want to know what they can do, and what they can extend. There is a github repo that we will eventually make public when we are ready to open up that guide with complete files list.

The guide will need to cover the "turn lifecycle", which consists of specific events generated from the maneuver phase and combat phase.

What's Next

I think a review of the aforementioned lifecycles at a high level would be a great next thing to cover.

Remember, remember

I am sure people can come up with all sorts of insane ideas, and yet there will still be limits to the SteelPinion game engine. One thing that can likely not be modded out is the turn-based nature of the game. Remember the game is first n foremost a turn-based strategy game; SteelPinion doesn't try to be anything else. Even though rich modding support is included; attempting to convert it into a RPG (role palying game) or FPS (first person shooter) would most likely be met with pain. No, instead the modding here is designed to empower players to have fun with the engine and their friends whom also love turn based tactics.

Join our newsletter!