Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Specification

  • Developed over 5 weeks half time
  • Unreal Engine 5.5
  • Asset Details
    • SuperGrid

Goals

  • To recreate pokemon to the best of my ability
  • Learn the advance blueprint systems found in unreal
  • Learn more about

Scalable Stat & Monster Systems


Establishing Ability & Monster Stats

I opted for using Data Tables as an efficient way of organising the various ability stats. Using Data Tables allows for scalability for future content and won’t have any issues regarding implementation as I’ve opted for a modular approach within my systems and the way they connect.

Establishing Monster Stats

The Monster (Pokémon) stats are also handled using Data Tables for the same scalability as the abilities, allowing me to easily add more monsters down the line without having to rewrite code.

Function Library

Utilizing Unreal Engine’s function library I was able to create global functions that could be used within the project, allowing me to save time and not have to duplicate code.

Utilizing Inheritance For Scalability

All of my Monsters are created as children from a MonsterBASE blueprint, allowing me to establish all of the variables and functions within a single blueprint, which then passes down everything to it’s children, resulting in a scalable and manageable system that doesn’t reuse any code.

Turn Based Battle System


Battle Scene Manager

I created a BattleManager blueprint that puts the player’s monster against a randomised one within a battle arena. The blueprint also initialises the Turn Based battle system, possessing the enemy monster with an AI Controller that will react with certain moves according to the state of the battle.

Initiating Abilities In Battle

As the 4 abilities and their stats are set within the specific monster blueprint, clicking on the corresponding attack would initiate those stats and apply them in battle.

As some abilities manipulated the damage stats of the monsters, the initialisation of an ability would also run math based on the current values of a monster’s stats, instead of their base values. This is so that the ability would take the current stats in mind before outputting damage numbers.

Widgets

Widgets were used as a way of interacting with the Battle Systems, allowing the player to click on which abilities to use and see their effects on the health bars. I also opted for a Text Output that stated the last ability used in battle and what effects it had, allowing for additional clarity.

AI Logic

Using Behaviour Trees I was able to create an AI that would use certain abilities based on the state of the battle. After waiting for its turn, the AI would choose a certain ability or exclude abilities depending on the HP values of both monsters.

To effectively keep track of the HP, I used a blackboard that would check and flag certain conditions after an ability was used, changing the behaviour of the AI.

Dialogue System


Data Tables For Scalability

Data Tables allowed for a scalable way of controlling the various dialogue lines within the game, allowing for new lines to be added with ease.

Multiple Dialogue Lines

The dialogue system checks whether the current dialogue line has a following line assigned to it within the data table and then sets that new line as the current one. This allow certain dialogue lines to lead into long conversations with multiple lines following after each other.

Letter By Letter Reveal

The dialogue system checks whether the current dialogue line has a following line assigned to it within the data table and then sets that new line as the current one. This allow certain dialogue lines to lead into long conversations with multiple lines following after each other.