Nikki Liu's profile

Slay the Spire Modding: The Process Behind the Dragon

Iterating on my Slay the Spire mod: The Dragon
I wanted to talk a bit more about the process behind designing The Dragon. It actually started with someone else's idea for a Dragon character. I reached out to them and asked what they had in mind, as the basis of their character seemed feasible to implement. It had ramping breath attacks, bulky energy costs, gems, and nests, all concepts that I have maintained throughout iteration, even though the mechanics themselves have drastically changed. The general idea was that The Dragon had powerful Breath attacks they needed to ramp up to and powerful, but costly attacks, leading to inconsistent turns. To help offset this inconsistency, nests would make use of any unused energy. With the original person's consent, I started implementing and iterating.
A typical character in Slay the Spire has 75 cards. This isn't including generated tokens and so on, so it is often upwards of 80 cards created for a character. Currently, The Dragon has 99 cards, including generated tokens. This is a lot of cards to keep track of, so I make use of a spreadsheet provided by the community and added a few of my own touches to it. Here's some snippets of how I stay organized:
The image shows a spreadsheet with information needed to create a card.
The image shows a spreadsheet that tracks different tags such as "Attack, Skill, and Power."
I also keep an ongoing changelog (now 20+ pages) that contains playtesting notes, flags to watch for, and of course the actual changes I make between each version.
The text in the image reads: "
Commit: 26d5236
Changed card+ to upgraded card in card text in the following cards: Treasure Claw, Strike Gold, Treasure Scale, Treasure Mind, Roaring Temper, Trade Offer. 

Common:
Treasure Claw: Deal 9(12) damage. Shuffle a random (upgraded) Gem into your draw pile. -> Deal 8(12) damage. Add a random (upgraded) Gem into your hand.

Strike Gold: Deal 9(12) damage. Place a random (upgraded) Gem on top of your draw pile. Put the next card you play this turn on top of your draw pile. -> Deal 9(12) damage. Add a random (upgraded) Gem into your hand. Put the next card you play this turn on top of your draw pile"
The text in the image reads: "
Shed and NoEnergy Bugfixes
Shed was not affecting NoEnergy and NoEnergy was not functioning on the second turn.
BUG FIX: I Need It Now, upgrade had the wrong numbers displayed and used.

A12
Semi worried about creating infinites? Energy generation and shed and card draw are all present alongside hoarding to thin decks…but I don’t think it’s overly forceable? Especially with block being a little difficult to get. I may need to introduce a bit more normal block for the heart?

BUGFIX: Smoldering Scales Uncommon->Common
Consider: Buff Singed Armor to Common?
REWORK: Treasure Bath 1(0)->1 energy uncommon skill: Fill your hand with random Gems -> Add random Gems to your hand until you have 6(7) cards in your hand."
I also highly value outside playtesting feedback, not just for balance purposes, but to ensure I'm delivering a cohesive player fantasy. I was given a strong identity for the character direction, so I want to make sure the gameplay is supporting that consistently. I was very happy with this feedback in particular as one gripe I have with many character mods is that the systems can often feel disjointed. I especially wanted to make sure that the mechanics I added to the original idea still felt like a cohesive part of the character.
The text in the image reads: "I like the way several of the archetypes weave into each other, it's probably my favourite part of the character. My first run was extremely focused on hoard synergies with Pride payoff via Ego Check, and skipped a lot of stuff like ember and cauterize along the way. With the nerfed More, however, and with a different set of early cards, I found myself in a more interesting spot. Cauterize is its own set of payoff cards, but they really enjoy having Ember as a support via some of the synergistic breaths. Because I had such a focus on Sparks, I wanted card draw, and Hoard has some of the best card draw available while also being a powerful block engine. With so much card draw, I also wanted energy, allowing me to make use of nests with the ability to manipulate my hand and pick the cards I wanted to play nearly every turn. It's very satisfying when it's all working."
With those overviews out of the way, I want to talk a bit about how the Spark design has mechanically changed from its place in the original design to the present. While it's maintained its identity of a small card building up to a big Breath attack, the implementation and systems surrounding it has drastically changed.
In the original Spark/Breath design, the Sparks were potential cantrips that cost 0 energy, dealt 1 damage, and had a small bonus effect. When The Dragon built up enough Ember, the Spark would transform into its Breath form, and cost 2 energy, deal a large amount of Area of Effect (AoE) damage, and apply a larger version of its bonus effect, based on the Ember consumed. Unfortunately, it was difficult to make all these bonus effects feel similar in power. This meant the player would often not want to "waste" Ember on a "bad" Breath and hold out until the "good" Breath was drawn. To some extent this was a numbers issue, but the different effects weren't granular enough that I felt I could balance the cards from a pure numbers standpoint. Additionally, upgraded Sparks would draw a card, leading to weird scenarios where The Dragon's power came from a large number of Sparks instead of a less frequent, but more impactful Breaths.
This eventually led to an overhaul to the Spark/Breath system. While I had some initial conceptions for changing the Sparks and Breaths, I want to make sure I wrote out the specific problems I wanted to address. First, I wanted to differentiate between the various Sparks. Even though this meant losing the 1 damage, apply 1 bonus effect structure, I wanted the Sparks to feel meaningful when played and drafted. The second goal, was part of an ongoing overall goal: remove easy to achieve infinites/near infinites. There were multiple ways to trivialize fights by making use of the upgraded Sparks. While upgraded Sparks on their own wouldn't trivialize fights, they were enabling other combos too easily without creating any meaningful tradeoffs. Normally, drafting a card has an inherent cost because it increases your deck size, meaning you have reduced the chances of drawing your other cards in any arbitrary hand, as well as increased the time it takes for you to redraw said card after the shuffle. Upgraded Sparks would only cost the upgrade because of the draw and 0 energy. Lastly, I wanted to avoid the scenarios where the player does not want to "waste" Ember on a "bad" Breath.
One simple way of addressing the "waste" of Ember, was to reduce the Ember cost. At the time, Breaths would always consume all Ember, but I could change that to a set value instead. Another way to add more impact to Breaths was to actually increase the amount of Ember required before Sparks became Breaths. This makes each Breath feel more impactful than the last. I had also received some feedback that Breaths did not feel as impactful in the late game. Even though the power level would actually go slightly down, since Breaths would be played less frequently, due to the higher Ember requirement, the impact of the Breath itself would feel larger. Of course this solution fed into the Spark problem as well. The final fix I will talk about was allowing Sparks and Breaths to have variable damage and Ember scaling, depending on the power of the secondary effect. Before, all Breaths had almost identical scaling, with either a 1:1 or 1:2 ratio of Ember to damage/effect. This made it easier to for players to immediately parse the power of a Breath or Spark, but meant the levers were too swingy to balance. I decided to change up the existing Ember economy so that I could have smaller levers to fine-tune the Sparks and Breaths, resulting in this chart.
This image shows a chart of the different Sparks and Breaths with different values.
In short, I increased the overall availability of Ember so that the scaling could be more varied, from 1:1 to even 1:5 ratios. As a tradeoff, the base values of the Breaths all came down. At 5 Ember, Breaths before and after the change were essentially untouched, but the Breaths with strong secondary effects would have significantly less damage than Breaths with weak secondary effects at higher Ember values, creating meaningful tradeoffs in Breath usage. Alongside this, the Sparks also changed, letting them have meaningful upgrades in both damage and their secondary effects instead of being shoehorned into card draw upgrades. Of course, this meant readdressing The Dragon's overall card draw state as a large amount had been removed. I knew this would not be a light undertaking, design or code wise, so I wanted to make sure I documented my goals and intents with this overhaul.
While The Dragon and her Breath mechanics are still a work in progress, I hope this shed some insight into my thought process and problem solving in creating this character mod!
Slay the Spire Modding: The Process Behind the Dragon
Published:

Owner

Slay the Spire Modding: The Process Behind the Dragon

Published:

Tools

Creative Fields