top of page

AR Battle Prototype

A battle simulator that utilises the real world as an arena -

designed to get the player up and moving!

This project places the player in a one-on-one duel with a virtual opponent. Attacking is done by tapping on the screen to launch a projectile at the enemy.

While the opponent has the same projectile attack, it also has access to 3 other techniques, designed to keep the player on their toes!

The main design philosophy for this project is to keep the player moving around at all times - each enemy attack is made to move the player from their current location.

Doing this not only paves the way for an engaging and interactive battle experience, but also encourages activeness during play, and can help the player to stay fit through regular sessions.

A great example of this is the damage system. As the player gets closer to the enemy, a higher damage multiplier will be applied to the player's attacks. This encourages the player to get up close - however, the enemy has multiple attacks to keep the player at bay:

Screenshot_2021-12-17-13-51-50-574_com.AirshipStudios.SuperGOBattle-min.jpg

Projectile:

The enemy's primary attack, keeps the player dodging, but is slow enough to be fair and react-able.

Pillar:

Screenshot_2021-12-17-13-48-26-971_com.AirshipStudios.SuperGOBattle-min.jpg

Damages the player when they walk into it, fires thrice and adds complexity to the battlefield

Screenshot_2021-12-17-13-50-06-546_com.AirshipStudios.SuperGOBattle-min.jpg

Burst:

Fires if the player stays too close to the enemy, slow and telegraphed but deadly!

Screenshot_2021-12-17-13-57-13-751_com.AirshipStudios.SuperGOBattle-min.jpg

Special Move - Rapid fire:

An all out attack that the player has to duck, jump over or run around. Requires some charging up from the enemy and leaves them tired afterwards!

Scripting and Implementation:

Each attack has an 'attack power' value that utilises the player and enemy's attack and defense stats to form a sum of total damage. Damage is calculated by doing: attackPower * originAttackStat / recipientDefenceStat. For the player, this end value is multiplied by a value that gets higher the closer they are to the enemy, for a nice risk reward factor if the player wants to get up close and personal, at the risk of making enemy attacks trickier to dodge.

 

The enemy and its attacks are handled by a state machine that's scripted to always fire standard projectiles unless a certain criteria has been met - for instance the enemy will always perform Burst if the player is within 2 Metres of them. Using this state machine has created an AI which is highly reactive to the player's movement and location, which was my biggest goal for this project.

DamageCalc.JPG

Project Reflection:

What went well:
I loved working on this project! Starting it fueled my passion for AR development. This enthusiasm helped me plan out and successfully execute a battle system that rewards player movement. I think that for my first time both designing and programming for a platform as unique as AR, I did a great job.

What could've gone better:
Rather than creating my own behaviour tree for the enemy AI, I utilised Unity's animator. While this did help in saving time for a project originally created for a module at Uni, after developing it further it has started to limit how creative I can be with the enemy's behaviour overall. I wish to continue working on this project and eventually release it as a full game, where I will most likely re-create the AI from scratch.

bottom of page