Add Online Multiplayer Code
Add Spells for Alchemist
Add Spells for Elementalist
Add Spells for Time Mage
Refactor game code
After finishing version 0.2 the size of the code base was approx. 8000 lines of code with about 4000 executable lines. Additionally, a number of files remained from version 0.1 even though they were no longer. While not initially an issue, after designing the spell list for the blood mage it took 4h to add 2 spells to the game. Given the sheer number of spells that will be added to the game (around 125 across all 5 classes) it became clear that a refactor must be done. The aim of the refactor is to get the size down to <3000 lines
Add key elements to spells
A large amount of the spell code was composed of workaround the structure of the spells. Because when porting from version 1 spells were designed as to follow the pattern deal damage to the enemy -> apply the effects of each component element -> maybe do something like heal, more unorthodox spells like, adding blood element to the board or changing all blood elements to the element provided in the first element slot, would result in an ever-growing cycle of refactoring and patching. The spell code was simplified to just as single DoSomething( ) but this raised issues about special spell types like magic circles and barriers. This uncovered one of the major reasons the spell code was so bloated: element advantages when dealing with barriers. Version 0.2 simplified the way barrier health worked but the spell -barrier interaction still treated each element type in the spells composition as a different kind of damage. A solution for this, and to the issue of players never really understanding how the elemental advantages worked against a barrier made of 4+ elements, was to add key elements to spells. Now they type of the element in the first element slot of the spell dictates the type of damage that gets deals. As a result, all spells are now mono-elemental for the purpose of elemental advantages as well as for stacking effects. Furthermore, the emphasis on elemental advantage will be increased by having the key element increase the magic power generated by elements weak to it and lower the power of elements stronger than it. This solves the bizarre situation where a player uses a lot of water elements in a fire spell by actively discouraging this kind of behaviour and instead forcing a more thought out approach. Also, should slow the pace of the game since its inefficient to just add every element you collect to the spell
Following from the simplifications to the spells, effects require a full rewrite to account for the unorthodox ways in which they act. If before they did something every turn or just when cast using a number of code patches each unique for each effect, now all effects act using a if (preconditions are met) DoSomething then do Some Kind of clean-up. This way ALL effects can share the same base framework regardless when they actually act (when you make a move, when you start your turn, every 3 turns, etc)
Additionally, now that spells are mono-elemental stacks have been simplified and since only one effect from the components can be added per attack, they simply stack. This should improve player feedback since it does not take 3 attacks for an effect to be noticeable.
Add menu for class selection
A menu for selecting your class and your spell loadout would be extremely useful especially given the large amount of spells per class
Add Spells for Blood Mage
Add all 25 spells cards as well as any associated effects or elements such as curses ,bleeding or the blood runes
Add Spells for Battle Mage
Add all 25 spells cards as well as any associated effects or elements
Add local hotseat multiplayer
Because of the extensive refactor to the base code, coupled with the lack of enough pcs to properly test multiplayer, Local hotseat was added to speed up development times. Its more important to get a playable working game that does not crash first than to spend 2 weeks debugging network connectivity issues. While online multiplayer will be a key feature when we release the beta, for now hotseat is sufficient. If it worked for heroes of might and magic, it’ll work for an alpha version
Refactor User inteface to use drag and drop controlls
While working to implements the code for switching element on the board I made it drag and drop as an experiment. One play tester accidently saw that and liked it so now we are remaking the entire interface like that. Makes sense seeing as how we will also target mobile devices. The possible reasons for this gross omission is that we are developing it on pc first so dragging is less used than just clicking.
Move backend from a C++ dll to native Unity C# scripts
The C++ DLL approach makes updates to the backend slow, nearly impossible to debug, raises major issues with cross platform distributions and given the fact that we are reworking the spell and element system it just makes sense to move all game logic to unity compatible C#
Simplify element system
Currently with 8 elements on the board at the same time, combos > 3 are rare and the board looks too cluttered and confusing. Additionally, there is no cascading combo effects which as noted by game reviewer Total Biscuit, is one of the major elements that bring satisfaction when playing a match 3 game. So, we decided to go back to the basics and have only the 4 base elements on the board with time and health be non-usable in spells but instead instantly consumed (No player in the playtest did not instantly cast them in a self-buff spell after they gather the anyway). With a total of 5 elements we match most other match 3s. Don’t fix what isn’t broken right? With only 4 base elements, elemental advantages become easy to understand (and program)
Add support for Combining Elements
Players loved the number and the diversity of elements in the game but expressed issues with board clutter, complicated elemental advantages (some of which didn’t particularly made sense). The solution to keep complexity but simplify the interactions was to add combining elements. This simplified elemental advantages by making them easily deducible, and has the benefit of adding a new mechanic to the game to increase the level of strategy. Elements combine into tiers:
Tier 1: earth, fire, water, air
Tier 2: Plasma (Fire and Air), Lava (Fire and Earth), Ice (Water and Air), Poison (Water and Earth)
Tier 3 (special class specific elements): Thunder (Air + Earth), Ash (Water + Fire)
Add spell cards to the interface
Back when designing version 0.1 we made plans of adding classes which would have special abilities that let them alter the board in order to gain a strategic advantage. After the playtests it became apparent that while interesting the basic spells that every player had access to we simplistic and would result in “optimal” rush strategies after a couple of games. In order to correct that we experimented with altering the spell effects based on the elements in it in a similar way to how Magika does it but all resulting systems were too complicated to form a reliable strategic option, especially given our casual target audience. The solution came in the way the class specific spells worked. The idea was to give every player just class specific options. The problem then came with the large number of class themed spells that we came up with so we took a page out of Hearthstone and we decided to let every player chose a “deck” of 5 class specific spells called a loadout and use that to battle. These spell cards would replace the standard 5 spells in version 0.1
Recode spell system to be cast as indiviadual cards
Creating spell cards meant recoding all spells from game wide standard behaviours to self-contained units of functionality. This required the old spell system to be scrapped in its entirety
Add and AP sytem for turns to replace turn limit
One issue in version 0.1 uncovered after play testing was the fact that you could never set up a good combo because on the next turn your enemy would take it. To fix it we took a page out of strategy game XCOM and decided to use an action point system for the player turn. This would give a larger amount of flexibility including forgoing the ability to cast a spell in order to spend one move setting up a combo and the other grabbing it. This resulted in an unexpected mechanic where we could add different AP costs to the spells in order to balance their power. Now a player can wait a couple of turns gathering AP in order to cast a very powerful spell but in doing so they leave themselves open to being attacked.
Implement new stacking effect system
In 0.1 effects were described as confusing and overpowered. The burning effect in particular. In order to fix that we decided to do a stacking tier system. Each time a player would be hit by a specific elemental stack the effect would gain a stack and only activate after a number of stacks were achieved would it activate in tiers. Tier 3 corresponded to 9 consecutive attacks and would be as powerful as the effects in version 0.1
Add new spell desciption window to provide detail for damage rundowns
A feature we decided to add after the 0.1 playtests was the spell description window which would tell you how much damage you would deal with the current configuration of the spell before casting it. This was because the damage calculations were really complicated and a breakdown would let the players have a better grasp of what is happening.
Change element artwork
One complaint we got during the plates was the fact that the elements were hard to tell apart to people with bad colour distinction.
Add basic spell for basic mechanics playtest
Given the sheer amount of mechanic changes in the game at least one spell needed to be coded for internal test purposes.