Prototypes, Tools & Simulations: The Card Generator

As I’ve mentioned in previous posts, we do a lot of prototyping at Small Jelly. We prototype for all sorts of reasons: testing mechanics, honing UX, developing game feel and so on. All of our prototyping informs the game’s development, and we’re often able to roll elements of the prototypes straight into the game itself.

Rocket Rumbling: Prowler vs. Smuggler

Rocket Rumbling: Prowler vs. Smuggler

The battle section of Rocket Rumble has matured nicely over the last few months, so we’ve started to shift our focus over to other elements of the game such as map exploration, crafting and the in-game economy. Players will collect a variety of items in the form of crafting resources, currencies and cards as they explore and battle, and we want to make sure that players feel a sense of progression as they invest time in the game, and that interacting with the various systems is a consistently rewarding experience.

While we can in theory design systems that we feel will achieve these goals, it’s difficult to gauge the reality without first implementing the design, and then play-testing the hell out of it. While it won’t be long before we start to invite players to the game, without the broader systems in place there’s only so much data we can gather. And so over the last year or so I’ve developed a series of prototypes, tools and simulations to test ideas, guide our design and balance various elements of the game.

I’ve built all of these in Unity, utilising Playmaker to avoid having to write a single line of code. As a designer this is invaluable, as I’m empowered to convert my ideas into interactive applications without having to take time away from the coders, who are busy building the rest of the game!

The Card Generator

One of the earliest prototypes/tools I built was the Reward Distribution Simulator. It was designed to help us get a sense of how long it would take to collect all the cards in the game, how many battles would be fought, won and lost in the process, how much time investment that would require from players, the equivalent cost were they just to buy card packs and so forth. However, at this time we had designed only a fraction of the total cards we would eventually have in the game, and so we lacked the necessary data to work with.

So, I built a Card Generator module into the Reward Distribution sim. This module let me specify a whole host of values:

  • The number of cards per class

  • The target number of common, rare, epic and legendary cards available

  • The number of Weapon, Utility and Crew cards of each rarity

  • A relative value for each rarity

Essentially the Generator front-end functions as a simplified spreadsheet, allowing me to input our target values. All of these values are saved to an XML file, so I can then easily recall and update them to reflect our design goals. When I hit Generate, the module creates a Card Database, an XML file populated with the required number of uniquely identified cards, with all the appropriate properties.

CardDatabase.xml - Note, none of these values are final!

CardDatabase.xml - Note, none of these values are final!

Over time, our model for distributing rewards matured and changed, and so parts of the Reward Distribution Simulator became obsolete I stripped them out resulting in a dedicated Card Generator tool. However, the work done on the Reward Distribution simulator didn't go to waste, it became the foundation for a much more comprehensive prototype, the Mothership Simulator, and indeed some of the work was rolled into the new one. And while the Card Generator is likely to be mothballed as we close in on completion of our first batch of cards, I’ve no doubt it’ll be fired up when the time comes to design the second set of cards!


In my next post, I’ll explain the Mothership Simulator and how it utilises the Card Database, and I’ll detail some of the goals and lessons learnt from the process.


If you’ve got any questions or thoughts, get in touch!

 @smalljellygames on Twitter or @SmallJelly on Facebook