Before I get into the project, I’m proud to stay that this is the first hackathon I’ve attended without any sleep, so, a round of applause to me. I’m very, very sorry.
Brumhack 6.0: WizARds
Location: University of Birmingham
Organisers: Poppie Simmonds, Dan Jones
Team: Liam Sorta, Nathan Dewell, John Paul Ibanez, Scott Brynnink
Photo credit: Filippo Galli
In the ever-expanding world of Virtual/Augmented Reality technologies, we wanted to create something that would show off how quickly an application could be put together with impressive results.
Any fans of the Yu-Gi-Oh franchise will appreciate how cool it was seeing projected monsters actually fighting, especially wanting one of their own. Sadly, I never did manage to create a full-scale monster fighting stadium in my backyard.
Our group being collective fans of card games all have too wanted to experience virtual monster battles.
We set out to create a relatively small AR wizard fighting game.
Here are a few of the features we managed to include in just the 24 hours:
- Three ‘types’, Fire, Water, and Earth (think pokémon) that would form a combat triangle, allowing for more strategic gameplay
- 6 playable characters
- A basic attack and two special abilities for each character
- Live health, displayed alongside the character
- Attacks bound to character rather than as an overlay
- Active player detection
- Round management for turn-based fights
- Live hot switching!! Swap out a character at any time
Though the magic of the AR framework, Vuforia, we were able to implement tracking fairly quickly, leaving most of the work down to the actual mechanics/player systems.
For Vuforia to track an image well, there must be a high amount of distortion in the image. For example, compare these two cards:
Fig A: No background, basic model and stats
Fig B: Background to both model and card
Due to the tracking data being based on the grey scale histogram of the image, it’s imperative that there’s sufficient variation in tone/texture.
Another issue I ran into was determining which player was which. Originally, the plan was to allow for a battle to take place at any angle, allowing for repositioning at any point. This poses the issue of detecting who owns who, there would be no way to determine this without verifying the player’s “deck” at the start of each game, adding a delay to every match.
To circumvent this, I gave ownership of the characters based on world position. This generic assignment meant that there was never an official owner of the model, resulting in the need for a constantly static playing field.
Adding a few world-positioned canvases to the characters was the only other step and bam, we have summonable models!
Round management was pretty simple after this, it ensures there are two players on the field, waits for both of them to select an attack move and fires away. If a player selects a move and ‘disconnects’, their status is revoked and cancels the turn, preventing the other player from getting any free hits in.
My team and I presenting WizARds post-hack
This project was a bunch of fun to work on and came out looking somewhat polished. We were honoured to win gold sponsor Capgemini’s prize for innovation, receiving a fancy new Raspberry Pi in the process. Here’s an awkward photo: