top of page

Escape Room AR

Augmented Reality mobile puzzle game made in Unity.

Position: Co-Founder and Lead Programmer

Developed by: Team NT Studios

Contributions: C# scripting, set up Photon multiplayer, set up Vuforia Augment Reality related mechanics and systems. Mentored junior programmers on augmented reality development.

About

Escape Room AR is an escape room for the mobile platform that aims to expand the limitations and accessibility of escape rooms through the use of Augmented Reality, by utilizing the advantages of both virtual and physical escape rooms.

Physical escape rooms have limited accessibility, limited tools and puzzles, and can be cheated by brute-forcing locks. Having the game on mobile and using target images means that the player can print out the pieces, play anywhere and anytime, and be able to play again with no set up or clean up. This keeps the immersive aspect of physically walking around an escape room to look for puzzles, but gains all of the ease of access of a virtual one.

Augmented Reality, or AR, allows for unique tools and mechanics that wouldn't be possible in a fully physical escape room. This includes things such as slingshots, magic beams, and the ability to easily carry a full inventory of items around the room with you.

Using AR to build different puzzles and mechanics also means that the solutions can be randomized, and brute force can't be used to skip puzzles or guess solutions.

Item and Inventory System

I created the item and inventory system for this game based on systems you would find in traditional 2D point and click adventure games. I used a ScriptableObject as the base to allow designers to be able to quickly create new items from the Create menu, that could then be efficiently spawned at run time using the data filled out on the ScriptableObject.

The Inspect Area was a system I came up with for this project, where items would hover directly in front of the player's phone's camera. This would simulate the feeling of actually holding the item, as if your phone was the item. Clicking on an item button in the player's inventory would toggle the object on and off. You could then swipe and rotate the object to get a closer look at it and figure out how it could be used for puzzles, interact with the object if it had a specific use like the sling shot, or use objects for puzzles like physically bringing your phone up to a lock to unlock it while you're holding a key in the Inspect Area.

Items could be removed from the player's inventory in multiple ways. One time use items like keys would disappear from the inventory after their use is fulfilled, this way player knows that they no longer need that item. Objects can also be removed if the player places the object down on a table or other area. This system was implemented so that players are able to trade items and work together to figure out their use.

Pickup items are the main way players are able to find items and solve puzzles. Picking up an item would create the item and button in the player's inventory, and then delete the item from the target image that the player got it from. We used Photon and RPCs to send functions over the network to allow for multiplayer AR gameplay and real time updates from picking up and putting down items.

Lobby and Class Selector

I set up an online multiplayer lobby menu for this project using Photon, which included things such as player data rows, a room number for players to join with, a class select section, and ready up and start buttons.

When a new player joins the lobby, a new row is added to the main lobby screen and that player's name, currently selected class, their host status, and their ready status is updated for all players to see. I created the PlayerLobbyData.cs script to efficiently store and update this data. We set up an account and friends list system using PlayFab where players can click on player's row to see their profile and add them as a friend. I set it up so that a player can optionally choose not to use an account and have a default guest log in instead.

The class selector was a component used to provide each player with unique tools and abilities in the escape room, so that each player felt like they had an important role to fulfill within their team while solving puzzles. I used Photon to set up the UI so that when one player selected a class, their player lobby data row would be updated to show that across the network, and then the class would be locked on the bottom of the screen so that no two players could select the same class. Players are able to switch and deselect their current class, making it available again for other players.

bottom of page