XaiJu
Batsu Apps
Batsu Apps

patreon


Tech Blog: Action V3

(You can scroll to the bottom for a TL;DR)

Hey all! Just about hit the halfway mark on OP07 cards so thought I would take a break from the grind and post a little tech blog. I'm sure most of you are wondering why OP07 has taken months longer than usual, and well, it's threefold:

1. Prepping and Playing at Nationals

2. I'm currently job hunting before the company I'm at goes up in flames

3. (Most importantly) The OP07 cards are the first set of cards to use *New Code*, lovingly dubbed 'Action V3'.

A little bit of history:

Originally card actions were basically hardcoded (Action V1), so a card that would say

'On Play: KO a Cost 3 or Less' would have separate code from a card that said

'On Attack: KO a Cost 3 or Less', which would have separate code from a card that said

'On Attack: KO a Cost 4 or Less'. This was... pretty bad. So between sets 1 and 2 (I think?) there was a big code overhaul.

Action V2

Since then, card actions have worked as two distinct parts:

Action Trigger + Action Effect.

And at the same time, the triggers and effects were made more 'modular'. For example, the three cards above are now

(Trigger: OnPlay)(Effect: KOCostOrLess=3)

(Trigger: OnAttack)(Effect: KOCostOrLess=3)

(Trigger: OnAttack)(Effect: KOCostOrLess=4)

...you get the idea. So no matter what the effect of a card was, once that was coded it could be attached to any type of effect trigger. And a new trigger such as 'When an opponent's character gets sent to the deck' can be programmed and then any Effect can be slapped on as a result of the card action triggering.

This has been working for a long time, as card effects have been relatively simple. The issue is when cards start offering multiple choices, or doing multiple effects in a row. Cards such as Perona Leader, Rebecca, 8c Moria, etc. all have unique code currently written in the sim to handle their unique effects. On top of that, new ways of interacting with the game rules have made the ability to 'partially' complete card actions vital to some deck's success, such as Nami being able to play events that do nothing, or RP Law wanting to Don Minus with no targets available.

(Over time, the list of different corner cases for the same effects was getting... pretty long)

Drumroll Please

Introducing...

Action V3 - "Steps"

Without getting too technical, OP07 cards and beyond (as well as previous cards that eventually get updated), are now much simpler and yet able to be more complex, because they are made of lego parts!

Every V3Action has an initial 'Proc', such as Activate:Main, Trigger, etc. But outside of that initial Proc data, actions are now entirely composed of a list of 'Steps' which can be as detailed or simple as needed.

Let's take an extreme example card action: The Activate Main of

"Demonic Aura Nine-Sword Style Asura: Demon Nine Flash"

This Event costs 2 Don and states: "Up to one of your Leader or Character Cards gains +3000 power during this turn. Then, you may rest one of your cost 3 or Greater Characters. If you did, Rest up to One of your Opponent's Cost 5 or Less Characters."

This would have been a hard-coded nightmare effect in Action V2. With Action V3, it looks a little like this:

(Proc: ActivateMain)

(Step 1)(No Target)(Effect: DonTap2, TrashSelf)

(Step 2)(Target: 1 Friendly Leader/Character)(Effect: +3000 Power)

(Step 3)(Required to Continue)(Target: 1 Active Friendly Character, CostOrMore 3)(Effect: Rest)

(Step 4)(Target: 1 Active Enemy Character, CostOrLess 5)(Effect: Rest)(Seen above: Step 2 with 1 Friendly Character/Leader allowed as a Target, and an Effect of Buffing that card by +3000)

What this means is that I only need to code the 'Rest' effect once, and it will just apply that effect to whatever the step's Target was, whether it's a leader, a stage, or even an active don card. By adding a Required Target, I can quickly make 'resting an opponent' a required cost of an effect with no new code at all!And because of the new way Steps work, you can even do the very first step to pay don and trash the event, then go on to choose 0 targets to buff. Nami players rejoice!

The big win here is that future card development should be much faster, as even complicated cards coming can now be broken down into simple effect steps.

Hopefully my explanations weren't too confusing and you were able to follow along at least a little bit!

TL;DR

Big code rework finally finished on March 19th, and in the last 8 days 57 cards have been made. Once all the cards are made in another 8 days or so, some bug fixes and misc changes will be needed, then OP07 will be ready, and future sets should be much faster!

Take a look at that changelog:

Don't let anyone tell you I'm not grinding away at it :)

Comments

this is such a cool look into your process! thanks batsu

Efthimios Sakarellos

This was such a fascinating read! Crazy to think you do all this in your free time (on top of a full time job and family!). I hope the job hunt goes well dude, thank you always for everything you do!

DeNessuno


More Creators