Augmented Reality
Augmented Reality
This augmented reality project was created as part of my degree in my 4th year at Abertay University. The application was created through the use of Unreal engine 5, AR Core and the android software SDK to develop and configure the project for compatible android devices.
The aim of the project was to translate the concept of a minigame from both New Super Mario Bros and Super Mario 64 DS into augmented reality to improve the gameplay loop with its new platform.With the minigame in question is called Sort or ‘Splode in which the player sorts hordes 'Bob-Ombs' into respective pens based on their colour before time runs out.
Game Design
The application fetures the player setting the position of the spawners and the collection points for each type of cube, giving an extra sense of immersion to the project. This gives the player a sense of setting up a party board game but also allows for a level of control when definig their own area of play. The simple movement of the NPCs also provides a nice sense of place and play as they move about the player, like a swarm of small animals. Providing the player with a chaotic and exciting gameplay experience similar to herding cats.
Something you may have noticed was the visibilty of AR planes which are used by ARCore to Describe the current best knowledge of a real-world planar surface. After some testing and feedback from my peers I decided it would benefit the game to keep these visible for two reasons. They needed to be visible to allow the player to accuratley place the spawnners and collection points themselves. It would also make it immedialey clear to players where the NPCs or 'Creatures' they needed to catch could traverse which made the game easier to understand and play.
Another option would have been to have the player define their area of play when starting up the game, but I decided to leave that as a feature that could be implemented if I were to take the project further.
Software Design
When developing the project I decided it would be best to go with a Component based architecture, allowing for the project to maintain code that is reusable, independant, extandable and replicable. One of the ways this was achieved was through the use of dynamic multicast delgates to communicate changes whilst not needing to refrence objects directly resulting in a low level of coupling between components. Allowing for independance for each component/object and easier maintanece.
Unreals Behaviour Trees and Blackboard components were also made use of for the NPCs Movement logic. With each new behaviour tree task node (BTTask) being created in C++. With the task node finding a random location in a certain radius and if it was navigable, it would give this location to the blackboard component which would then give this location to the Behaviour tree.
Improvements and Conclusion
In terms of improvements that I believe would benefit the project ; they are as follows
The use of image-based markers for the pens and spawners could be used to help give the player a greater level of control over the game world whilst adding to the party game environment. This would also help give the game a more tactile feeling whilst also letting the player more precisely place these objects.
Depth occlusion could also be used to increase the players immersion within the game world avoiding objects and planes going through or over objects.
A player defined space would have meant that it could have not been expanded during gameplay true. But it could also help save on processing power and heap space when not creating new AR planes during the game.
Unique assets for the game would have given it a more immersive and less cheap feel and giving the AR planes a unique texture would also add to this immersion and quality feel.
There is a non-replicable bug where the game may crash on a second playthrough, however I could not recreate often enough for a root cause to be discovered.
The Spawners and the bins can exist within each other however this could be fixed by creating an area around each object using a collision component and treating that area as out of bounds for spawning.
Finally, the spawners could have been set to spawn the NPCs in the direction of the player making them easier to keep track of and helping to avoid any issues with overlap when spawning the NPCs. Achieving this by setting the forward vector of the spawner towards the camera component of the AR pawn.
Overall I am proud of what I accomplished with this project and would very much like to work with augmented reality again and grow my skills with its development further as I find it a truly intresting field with an enormous potential for applications, creative and or technically based.