Project Details:

  • Project Started: July 2019
  • Time Spent on Project: 1 Month
  • Language: C++
  • SDK: Unreal Engine 4.20.3

In early 2019 the release of the popular mod for Dota called Auto Chess was created and released to the public, after seeing the number of individuals interested in this type of game and genre the world most popular free game “League of Legends” released their own iteration. The game was named “Teamfight Tactics”, the game instantly grew in popularity on all streaming platforms most noticeably “Twitch”. After spending a small amount of time understanding the base fundamentals from each game and wanted to implement them into a new game with a different base intellectual property. This is where the idea for a Pokemon Auto Chess game came from.

T1 1 Pidgey 4 30 120
2 Ekans 2 60 120
3 Sandshrew 12 10 120
T2 4 Pikachu 5 30 150
5 Growlithe 3 60 180
6 Eevee  16 10 160
T3 7 Bulbasaur  7 30 210
8 Charmander  4 60 240
9 Squirtle  20 10 200

The next stage of the design process was to decide what Pokemon to pick what Tier they should be (The teir they are is the amount of gold they cost and overall quality), how much damage per attack, how often they should attack and finally whether all Pokemon from the same tier should do the same damage. After deciding they should vary in total damage and laying out in a table it became clear it was the best solution for difficulty of the game and keeping the experience different each time.

Work Completed:

  • Created and developed the core mechanics
    • Create a “AGameStateBase” class and had to decide how I was going to managed the different stages of the game. “Begin”, “Prep/Strategize”, “Go/Interaction”.
    • Created “StageModeTiming” Logic code for the “GameStateBase” this uses a variable of type “GameState” called “currentState” to compare to the different “ENUM”.
    • Implement C++ to Blueprint UI, this involved creating and using accessor functions on the “Pawn” to return an int and each int is associated with each Pokemon.

if (currentTime > 2 && currentState == Begin)


currentState = GameState::GameStagePause; OnRoundPrep.Broadcast();

currentTime = 0.0f;


  • Created and develop character spawning and sections management
    • Created a “ENUM” called “Enum_Character_List” which allows me to name each “ENUM” the same name as the class and the “ENUM” will give it an associated number.
    • Created a new function called “Spawn_Character” which requires a “ENUM” of type “Enum_Character_List” to be passed through to it.
    • “Enum_Character_List” that had just been passed through so that once the character select to be spawed was spawned it can “break” thus being more efficient is it mean if it was a pidgey “Enum_Character_List” top of the list it doesn’t need to check through the other one hundred lines of code.
  • Created and develop character logic
    • Created logic to the tick function for each actor to find if it is fight stage then do certain amount of damage per currentTime. (Pidgey will call the DamageFunction once every second and will do 4 damage per call doing a total of roughly 120 in the 30 seconds fight stage).
  • Created and developed game systems
    • Created arrays for the specific variables that had already been decided these included “Amount of Gold to Give, How many locations were active as each round, What damage the player should take based on each round and the Fvector Locations for the specific spawn locations of the actors”.
    • In each of the binded keys I set the game up to only produce pidgeys, after this I added a spawn actor functions which allowed me to spawn the actor by getting the static class and this class a specific location and rotation to spawn at.

Leave a Reply

Close Menu