VoZ Crafting System



Alchemical Crafting System Design

Players use a combination of materials to craft a Card for their collection. Each card has a unique Recipe that is composed of various Materials, some of which represent the Card’s Realm, Element, and Type. 

There are a total of 19 different materials that need to be placed into four rings (one inner ring and three outer rings) at various quantities. 

Depending on how a Player places a Material and where they place it will change the outcome of the crafting system. Generating no cards while still, consuming materials is a possibility. 

To help guide the Player to craft card and prevent them from experiencing negative feelings towards losing materials most of the time, there are some rules in place:

List of Possible Materials:

Materials are generated by disenchanting or breaking down cards in the Player’s collection. Each card has a chance to generate a percentage (~75% as of writing) of the Materials required to make the card.


Tool Design – Recipe Maker

This tool is meant to expedite to the creation of recipes for a card(s) entered into the spreadsheet from list of materials and checking for duplicates.


There are two major components to this tool:


When a Developer wants to create new Recipes, they will need to first populate the Name column with the Recipe name and enter the Rarity, Realm, Element, and Card Type to set the values for the rest of the Recipe. 

They will also want to make sure that the Done column is empty, so the script knows to add a recipe there. 

After all of the values are set, the Developer can press the [Push me for Recipes] button. Once pressed, the Google Sheet will call the script and will do the following:

  1. Read Spreadsheet one row at a time.
    1. If Done? Column field is empty.
      1. Go to Step 2.
    2. If Done? Column field is Done.
      1. Go to Next Row and Repeat Step 1.
  2. Determine the number of materials needed for the card based on Rarity.
  3. Selects the Planetary (Inner Ring) materials needed for the card.
  4. Sets the Planetary (Inner Ring) materials randomly one at a time. 
  5. Sets the Realm Materia (Outer Ring).
  6. Sets the Element Materia (Outer Ring).
  7. Sets the Card Type Materia (Outer Ring).
  8. Repeat Steps 1 through 7 until all cards are created. 
  9. Create a temporary sheet to store new recipes.
  10. Checks for Duplicates.
    1. If it is a duplicate.
      1. Erase Planetary Materials.
      2. Repeat Steps 2 and 3.
      3. Check for duplicates.
    2. If it is not a duplicate.
      1. Sets the Done? column to Done.
  11. Removes temporary sheet.


If a Developer reviews the Recipe and they do not like the Recipe, they can delete the Done from the Done? Column and [Push me for Recipes] Button to fill in the Recipe. 

Tool Design – Disenchanter

This tool is meant to pull from the Recipes Sheet and generate a random number of materials from the Recipes as if the Card was being broken down to its base components. This is not a clean process, and some materials will be lost. 



There are two major components to this tool:


Once the [Disenchant] Button is pressed, Google Sheets will call the script and will do the following:

  1. Read the Recipe from the Source Card Name Fields.
  2. Read how many cards are to be broken down.
  3. Read how many materials were to be generated.
  4. Randomly add materials to the Materials Section. 
    1. When the number of materials generated is equal to the desired value.
      1. Stop. 


Once the [Clear] Button is pressed, Google Sheets will call the script which will clear each Row and Column in the Materials Section.

A Developer can add more instances of the same card. Materials generated are added to the current Card entry in the Resources Given Section. If a Developer breaks down a different card, new card entry is added to the Resources Given Section.

A Developer can also compare the Materials Generated to the Recipe of a Target Card by using the Target Card Name Field. 

The compared values will remain red if the materials in the totals section do not equal the Recipe selected Cards in both the Source vs Breakdown Comparison and Target vs Breakdown Comparison.

Go ahead and jump into my personal copy and check it out. 

Scripts Used


Thought Process

One of the issues that all collectible cards games have is extra cards. Physical Collectible Card Games have many options that help drive the market as well as create a community. If you don’t want your extra cards, you can sell/gift them to a friend to a local hobby shop, trade them amongst other players, or get creative with them and make something from them. Digital versions don’t usually have those options, and in most cases, you only need a specific number of copies of a card and have the ability to use them in as many decks as you want. So we needed to find a method to get rid of the cards without just removing the card from the card pack algorithm. 

Another issue we had been the fact that our game is a Free to Play CCG, meaning we gave the game away for free and relied on microtransactions to generate revenue. In most Digital CCGs that involves selling packs of cards that is the main component of the game. Depending on the amount of money a player is willing to spend affects how good the player’s collection is and how well they can play. TThis leaves Players who play the game but cannot pay for card packs, at a disadvantage. To mitigate that we needed to give those players a method of gaining specific cards that they wanted and needed to stay competitive. 

A Crafting System was the ultimate solution to these problems. First of all, it would allow players to get rid of their unused cards and give them a better chance to complete their collections without spending more money on Packs if they didn’t want to. It also tackles those players who play without buying packs a chance to also create specific cards with the assumption that Materials could be earned by playing in matches and defeating monsters. Narratively speaking it also felt right to have a crafting system in place due to the games overall theme being Hermetic Alchemy, a magical system revolving around transmuting one material into another (e.g., lead into gold).

With those factors in mind, we decided to dive into books about Hermetic Alchemy. Though these books were ultimately metaphors wrapped in an enigma covered in super secret sauce, we did cipher the general idea behind Alchemy. Without going too much into details the idea behind the books is to discover what the Prime Materia is and how to use it to craft the Elixir of Life, which when drunk will grant you immortality. We were sure that we could figure out how to make the Elixir, but it was decided there wasn’t enough time and made a crafting system instead. Priorities.

From the books, we determined that there were three categories of objects that needed to be understood before you could determine the Prime Materia:


Each one of these categories ended up in the crafting system.


As part of Alchemy, you are required to form complex Alchemy circles either in the sand or with chalk and place components at key points. We have seen many references in all kinds of media that probably have taken this concept to heart as well. Our version ended with the Five, the Four, and the Three as major components along the Outer Ring of our Crafting Circle. Even though you could come up with many combinations with these three elements, it did not give as many combinations as we wanted when we consider how much agency we wanted to give the player in the system. So we looked into creating the Inner Circle. 

The Inner Circle was the key to making sure we had enough combination to make enough cards for future releases. This was guaranteed by making the Inner Circle only have three spots for materials but have seven materials that could utilize them. After calculating the number of combinations, we determined that having over 200000 different possibilities would be enough. The materials that we decided to use were all pulled as components to various Alchemical rituals to keep in line with the theme of the game.  

Ultimately, I feel we had developed a very robust system that will be able to satisfy the needs of the game and the community.  


Things I would change



What went right


What I learned