Objectives
- Grant Player agency over their collections
- Develop a Crafting system that encourages experimentation and discovery.
- Create a method to get rid of extra or undesired cards
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:
- Each Outer ring Represents a specific aspect of a Card: Realm, Element, Card Type.
- We would make it obvious through the User Interface that specific Materials go in specific locations to help guide the Player to a more desired outcome.
- Examples:
- Air, Earth, Fire, or Water Materia have to be placed in the Element Outer Ring
- Light, Dark, or Void Materia have to be placed in the Realm Outer Ring.
- Card Type, Element, and Realm are fixed materials those are automatically set to their appropriate materials.
- Example: Dark Fire Minion would require Dark Materia, Fire Materia, and Iron respectively to make that card.
- Examples:
- We would make it obvious through the User Interface that specific Materials go in specific locations to help guide the Player to a more desired outcome.
- If a Player puts not enough Materials in a location for Card A, but enough for Card B, Card B will be produced, and the remaining materials returned.
- Each Rarity requires a set number of Inner Ring materials to make a Card of that Rarity.
- Example: Standard cards requires that a Player used 8 Inner materials while Epic cards require 64 Inner materials
- Limit the number of different materials to three.
List of Possible Materials:
- Outer Ring Materials (Used to determine Realm, Element and Card Type)
- Realm: Dark Materia, Light Materia, Void Materia
- Element: Fire Materia, Earth Materia, Wind Materia, Water Materia
- Card Type: Tin, Copper, Lead, Iron, Mercury (none is also an option)
- Inner Ring Materials (used to distinguish Recipes between Cards) known as Planetary references
- Sulphur, Coal, Blood, Nitrous, Sugar, Root, Salt
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.
Elements:
- [Push Me for Recipes]
- Calls the RecipeGenerator.gs
- Begins the automatic creation process
- Grey Columns – Developer Input required
- Card
- Name of Card
- Rarity
- The Rarity of the Card
- Determines the number of Materials need to make the card
- Realm
- The Realm of the Card
- Determines the Realm Materia need to make the card
- Element
- The Element of the Card
- Determines the Element Materia need to make the card
- Card Type
- The Card Type of the Card
- Determines the Planetary Materials need to make the card
- Card
- White Columns – Recipegenerator.gs Output
- Totals Column
- Determines the total number of materials used in the Recipe
- Done? Column
- Determines if the recipe is valid
There are two major components to this tool:
- Google Spreadsheet:
- Activates the recipe creation process.
- stores the Recipes
- stores all of the possible resources that can be used to make the Recipes
- Indicates whether or not a Recipe should be changed.
- Counts the number of cards in each Rarity and Type.
- Google Scripts:
- Checks to see if Recipe needs to be populated
- Populates Recipes for each valid Card with resources according to calculations
- Checks to see if there are any duplicates
- Replace Duplicates with a new Recipe
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 Recipegenerator.gs script and will do the following:
- Read Spreadsheet one row at a time.
- If Done? Column field is empty.
- Go to Step 2.
- If Done? Column field is Done.
- Go to Next Row and Repeat Step 1.
- If Done? Column field is empty.
- Determine the number of materials needed for the card based on Rarity.
- Selects the Planetary (Inner Ring) materials needed for the card.
- Sets the Planetary (Inner Ring) materials randomly one at a time.
- Sets the Realm Materia (Outer Ring).
- Sets the Element Materia (Outer Ring).
- Sets the Card Type Materia (Outer Ring).
- Repeat Steps 1 through 7 until all cards are created.
- Create a temporary sheet to store new recipes.
- Checks for Duplicates.
- If it is a duplicate.
- Erase Planetary Materials.
- Repeat Steps 2 and 3.
- Check for duplicates.
- If it is not a duplicate.
- Sets the Done? column to Done.
- If it is a duplicate.
- 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.
Elements:
- Source Card Name.
- What card is going to be broken down?
- References Recipe Sheet.
- Following fields loads the Recipe.
- What card is going to be broken down?
- Source vs Breakdown Comparison.
- Compares the difference between the Source Card Recipe and the broken down card.
- Number of Cards to be broken down.
- How many instances of this card are to be broken down.
- Percentage to be Broken down.
- Determines the rough percentage of materials to be generated.
- # of Resources after Breakdown.
- The exact number of materials generated from card.
- Round(Total Resources * Percentage to be Broken down).
- The exact number of materials generated from card.
- [Disenchant] Button.
- Begins the process of breaking down card.
- [Clear] Button.
- Clears the Resources Given Section.
- Resources Given Section.
- Displays the materials.
- Target Card Name.
- A card that a Developer will want to create with the materials in the Resources Given Section.
- Target vs Breakdown Comparison.
- Compares the difference between the Target Card Recipe and the materials in the Materials Section.
There are two major components to this tool:
- Google Spreadsheet:
- Activates the breakdown process.
- Stores the Recipes.
- Stores all the possible resources that can be used to make the Recipes.
- Displays the materials generated during the breakdown.
- Checks to make sure that quantities are correct between:
- How many materials were used to make the card?
- How many materials were generated?
- If the difference between the two was correct.
- Google Scripts:
- Pulls Recipe from Recipes Sheet.
- Populates the Material Storage section with materials.
- Clears out the Resources Given Section.
Once the [Disenchant] Button is pressed, Google Sheets will call the Disenchanter.gs script and will do the following:
- Read the Recipe from the Source Card Name Fields.
- Read how many cards are to be broken down.
- Read how many materials were to be generated.
- Randomly add materials to the Materials Section.
- When the number of materials generated is equal to the desired value.
- Stop.
- When the number of materials generated is equal to the desired value.
Once the [Clear] Button is pressed, Google Sheets will call the Reset.gs 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
- Script: RecipeGenerator.gs
- Used to generate Recipes.
- Script: Disenchanter.gs
- Used to Generate materials the derive from recipes.
- Script: Reset.gs
- Used to clear the Materials from the Material Storage section.
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:
- The Five: These represent the five planets: Mercury, Venus, Mars, Jupiter, and Saturn.
- They also represent the elements of Mercury, Copper, Iron, Tin, and Lead, respectively.
- The Four: These are the basic elements Fire, Air, Water, and Earth
- The Three: These represent the Mind, Body, and Soul with Mercury, Salt, and Sulfur being their material representation, respectively.
- Notice that Mercury has been three times now, this is by design. The books we read were intentionally vague and filled with homographs.
Each one of these categories ended up in the crafting system.
- The Five determine one of the six card types with none as an option.
- The Four determine the card’s Element.
- The Three determine the card’s Realm.
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
- Increased the number of slots on the Inner Circle.
- It would increase the number of possible combinations, increased the difficulty of the Crafting System, and required more materials to be used.
- Allow Components to be used in different areas.
- It would add an interesting placement mechanic to the Crafting System.
- Allow some Materials to represent other things.
- Added the Alchemical Narrative, and give some materials more flexibility.
- Mercury is a good example:
- Iit could have been used in various locations.
Postmortem
What went right
- Managed to incorporate the basic material requirements for Hermetic Alchemy.
- Expanded upon our toolset for designers and created a good malleable prototype to work with.
- Was able to add a sense of agency and discovery to our game.
Challenges
- Simplifying our crafting enough that players would not be frustrated with our system.
- Determining the best way to build the prototype.
What I learned
- Simplifying a complex system of metaphors requires a lot of time and testing.
- Expanded upon my scripting knowledge using Google Script.