Matthew Baranek

— PROJECT NAME

Spells


— ROLE

Technical Game Designer,

Backend Developer,

HUB World Designer


— DATE

Jan. 2025 – Apr. 2025

Spells is a stylized fantasy roguelike, in which the player controls a powerful Lexomancer; a rare class of wizard who can conjure magic through the use of language. As a Lexomancer, you have the ability to enhance your spells by stringing together letter tiles into words that will modify your spells in unique ways.


As you wake up, you begin your journey through forests and caves in order to reach the Word Forge. As you travel through these areas, you must battle your way through hoards of enemies, gathering new letter tiles as you go.


Other Links:

Itch.io Page:

https://tuckerkoepp.itch.io/spells


Spells Game Design Document:

Spells Game Design Document


Technical Design

Spell Casting Framework


3D Assets By Matthew Vroman


My intentionality behind the Spell Casting System was to make a framework that would have any and all important variables in one place. This was to ensure that we wouldn’t have variables all over the place making it difficult to change the damage output or movement speed of a spell as an example. The second reason the Spell Casting System was set up in the way it was, was so that we would have the opportunity at any point to go back and add more spells if we felt it was needed and would add to the experience.

When creating a new spell, all of the information is stored in the Spell Traits map. The first element to be filled is the specific spell that will have the associated spell information. For this example we will follow Fireball. There are 4 categories for each element:

1. Type of Spell Cast

2. Projectile Type

3. Projectile Movement

4. Projectile Time

For fireball, we fill the Spell Cast Type in as a projectile, as this spell will fire a projectile from the player character. Next we move into the Projectile Type structure. This structure holds all the base information required for a spell. How much damage will be applied, should an AOE spawn on impact, what VFX is associated with the spell. Any information that relates to how the spell will react is stored here.

After the Projectile Type structure is the Projectile Movement structure. This structure holds all the information related to how a spell should move through space if it is a spell that moves. How fast a spell should travel, the range a spell has, its homing acceleration. Information regarding a spells movement is stored here.

Finally, we have the Projectile Time structure. This structure holds any information that impacts the timing of a spell. The spells cast time, how long the cooldown is, the duration of the AOE. Any time related factors are stored here.

Spell Casting Documentation:

Technical Design

Modifiers Framework


UI by R. Tucker Koepp


The Modifiers Framework is closely associated with the Spell Casting Framework. On updating the spellbook by adding letters to a spell slot, a function is initiated which gets the letter, find its letter function, and applies its effect.

Letter Modifier Documentation:

Level Design: The Journey Begins


3D Assets by Matthew Vroman

UI Art & Dummy functionality by R. Tucker Koepp


The Hub World is the start area for the player before starting a run. This area is meant to be a resting spot for the player. A place the player is allowed to settle down before getting back into the action. Elements are placed around the environment for the player to interact with and explore using our interaction system.

This sketch of the Hub World shows the breakdown of elements into square sections the environment were separated into. The angle represents the orthographic view the player is in when playing and had to be considered when designing the layout. Important sections are meant to be close to each other and flow through each other creating loops of important segments.

The final design reflects the elements in the initial sketch. The flow between segments to allow for the player to reach areas quickly. The spawn is placed on the lower half of the map, with a direct path to the start gate. Interaction events that the player will typically use before a run are placed along this path for players who want to get back in the action quickly. Loops allow for all of these elements to interact and create a flow between points of interest.

Environmental Interaction

There are many systems to interact with in the Hub World. Some the player will interact with between every run, and some meant to be tertiary. One of the main areas is the Training Yard. Placed in the center of the area, this is meant to be a space that the player will interact with no matter what each run. Its central location forces the player to pass through wherever the player is in the Hub World.

The Training Yard has two main components. The first is the Spell Stand, placed on the far right of the Training Yard, this is in the direct path of the player from spawn to the portal of which the player must enter to start a run. This allows for the player to switch spell classes quickly if the player wants to get back into the action.


The Spell Stand is also placed in this location to be close to the Shop. Player’s can quickly reach the Shop following the path to the right. Once the player is done, the have the choice of going up, giving another access point to the portal to start a run. The player can also choose to go to their left and enter the Training Yard, putting them right next to the Spell Stand and allowing them to switch classes quickly to get back into the action.


The third element of the Training Yard is the dummies. Placed in the top left section, three dummies are placed for the player to test out the different spell classes and pick out a class for the type of gameplay they prefer. The location of the dummies is close to the Spell Stand, allowing for the player to switch between classes



Along with interacting with some of the more important systems, we use this interaction system to provide tips for the player in small interactable elements scattered around the Hub World. Signs are placed around traps and other interactable items that are meant to cause harm to the player. These tips are meant to give the player an insight into what to look out for when in a run. However, we do not require the player to interact with these items, giving the player the option to ignore them if they so choose.


Player’s can walk up to a sign and press F when prompted to get a tip about the item in front of them. Walking away or pressing the LMB will get rid of the message.


The Shop

As with any Roguelike, the player has to be able to apply upgrades to their character from run to run. Spells is no different, using two types of currency as part of the Economy System. Players have access to in run currency (Gold), which they can spend at shops that show up after competing a certain amount of rooms. Players also have a second currency type known as Infusion Gems, which they get while in a run from breaking barrels or buying more gems at the shops found throughout the game.

The shop system uses two main aspects to communicate. BP_NPC and BPC_Shop are the two main actors for this system. An array is stored in BP_NPC known as Shop Items. This array holds all of the shop items available in the game. Each item requires the following information:


ItemAvailable: Boolean to check if the shop keeper has the item in their inventory.


Image: The items icon.


Title: The name for the item as it will appear to the player


ItemInfo: Description of the item as it applies to the player.


GoldPrice: How much the item costs in gold.


InfusedGemPrice: How much the item costs in Infusion Gems.


InStock: How many of that item the shop keeper has before the player cannot buy any more.


ItemEffect: What effect will be applied to the player.


This array is instance editable to change values between in-run and out-of-run shops. When the ItemAvailable Boolean is checked to True, that item will appear in the shop.

The BP_NPC blueprint controls the items that will appear in the shop, while BPC_Shop controls the functionality when the player is interacting with the system. Once the player opens the shop, an array on the component is filled with the available items from the BP_NPC’s shop item array.

Credits:

R. Tucker Koepp: Combat Designer, Technical Game Designer, Gameplay Programmer

https://www.rtuckerkoepp.com/


Caleb Wilson: Level Designer

Caleb Wilson


Matthew Vroman: 3D Art, Technical Art, Lighting, VFX

https://www.artstation.com/mvroman