Knights in Tight Spaces

KiTS is a tactical deckbuilder follow-up to 2021’s Fights in Tight Spaces, which adds all-new party, quest, interaction and inventory systems. Joining the team in July 2024 as a Designer, I was directly responsible for most of the production pipeline for narrative content alongside a number of other duties.

The story side of this is a lot of fun, and you get some cool moments where you get to navigate conversations that can not only lead to different rewards, but also potentially side quests to undertake as well.

It means that you get to feel like an actual character, and not just someone playing a deck-building game. It’s a nice touch of character that goes a long way, and makes the losses hit a little bit harder too.

The Sixth Axis – 9/10

Responsibilities

  • Iterative design of core narrative systems
  • Producing and maintaining technical specifications for designs
  • Writing, editing, and implementing narrative and quest content
  • Debugging quest content in proprietary scripting tools
  • Objective and reward design
  • Coordinating and implementing localisation in I2

Writing Sample – The Turncoat Knight (Encounter)

=== turncoat_knight ===
VAR helpknight = false
{
- archetype() == "Fighter" or archetype() == "Swordsman":
#player_1
Another one? I'll run you through with my sword!
- archetype() == "Hunter" or archetype() == "Rogue":
#player_1
Another one? I needed some target practice!
- archetype() == "Sorcerer" or archetype() == "Warlock" or archetype() == "Cleric":
#player_1
Another one? I was looking for an opportunity to test my new powers!
- else:
#player_1
Another one? I needed a work out!
}
#npc_1
Wait. I'm not with them.
#player_1
Then who are you with?
#npc_1
All I know is that one day everything was normal and the next day we're at war. Don't you find that odd? Don't you want to know why?
You hear voices approaching.
#npc_1
You have to help me, play along, I'll make it worth your while.
* Agree
#player_1
Fine. Just don't get in my way.
~helpknight = true
~AcceptQuest()
->DONE
* Refuse
#player_1
Trusting a panicky armoured goon doesn't seem like a good idea.
#npc_1
Then you leave me no choice but to kill you.
~AcceptQuest()
->DONE
=== turncoat_knight_outro ===
{helpknight == true:
You stride over the armoured bodies and nudge the fallen turncoat.
#player_1
You can get up, they're all gone.
Between gasps of air, he props himself up and fixes you with a glare.
#npc_1
You certainly made that convincing.
#player_1
You're alive aren't you? Now, are you going to tell me what's going on?
#npc_1
Ah, of course! The truth! That's what they wanted from me. They know that I know what they think only they know, but they don't know that I know that they know that I know.
#player_1
... and what do you know?
#npc_1
Weren't you listening?! You are not prepared to know. You must be prepared in case they come for you. I must leave, thank you for your assisstance!
~AddCard("emergency_move")
Confused, you watch as the turncoat slips away into a side street.
->DONE
-else:
You stride over the armoured bodies and search the fallen turncoat. Among his belongings you find illegible scrawlings ranting about the end of the world, and a pouch with some coins in.
~AddMoney(20)
->DONE
}