Nova - Virtual Reality Exploration

Project Nova. What exactly is it? At the Entertainment Technology Center (ETC), based in Carnegie Mellon University (CMU), students spend an entire semester working on a single project for external clients. Nova was a 6 person project with Viacom Labs as our clients. What we were attempting to do was to explore the field of virtual reality (VR); uncovering new types of experiences and mechanisms made possible via VR and utilizing them to their full potential. To that end, we developed 2 main VR demos using the HTC Vive for Viacom Labs to showcase in their demo room to visitors.

I was the producer of this project, and also one of the programmers on the team. This was a very exploratory project where we spent many weeks prototyping and researching VR mechanics before finally moving foward into the development stage to make 2 main demos. You can go into our project site at the link below to view extensive details about our project, our development blog and learn more about our findings in VR, the prototypes we made and also who the members of the team were.

Nova Web Site

We also have a promo video to explain our project to the public. You can view it here

Nova Robotics
Build your very own robot and control it to destroy cities!
  • Overview

    This experience is a robot construction toybox. The player is given a large amount of freedom to build his own robot, using the many different weapons and body parts we provide them. They then are able to deploy their robot into a city, where their objective is to destroy as much of the city as they can within a time limit. Construction in a toybox environment shows off a lot of what makes VR, and the HTC Vive in particular, great. Room-scale movement, combined with the ability to pick up, move around and build objects in a 3D setting helps to immerse the player in ways that a non-VR game just wouldn’t be able to.

    Learn more here : Nova Robotics Project Page

  • My Role

    I acted as both a designer and programmer on this project. I helped develop the part connection system, as well as being able to pick up items with the Vive controllers. I programmed in all the UI for the game as well. I helped to develop the gameflow control system and also the movement of the robot.

  • Videos
Lightscape
Find your way out of the darkness...
  • Overview

    This experience was born out of our desire to provide new perspectives to a player in VR. We also wanted to make full use of the Vive’s ability to track room-scale movement and have the player be able navigation around the entire space. We place the player blind into a completely dark world. The only way they can see is by shaking their controllers, which then releases sound waves that help to reveal outlines of the environment around them as they collide. It then becomes a blind escape the room experience. The basic concept is simple. Avoid red and follow blue. We take the player through dynamically loaded levels that make the experience feel like one continuous maze, while slowly adding in more puzzle elements to force them to run around corners, to duck and even crawl on the ground.

    Learn more here : Lightscape Project Page

  • My Role

    I was one of the programmers and level designers of this game. We went through many iterations for this demo. Programming wise, the hardest parts were the dynamic level loading involved in this demo. We had the players moving about in the same space and scene but as soon as they reached certain checkpoints, the previous level would unload and the new level would load dynamically. This helped give a sense of the players being in a larger space than they actually were. We also achieved a particle effect where we could release the particles with the controllers and have them stick onto collidable gameobjects. Level design was the biggest challenge though. We needed to immerse players in this demo but it was a hard one to follow. We had to slowly and incrementally guide the player through the game, making it harder one step at a time. In the beginning, all they had to do was navigate their way out of the room. Then, we tell them to follow the blue. After they are used to walking around, we bring in red objects for them to avoid. And slowly, we increase the difficulty of avoidance and get our players to duck down, crouch and walk sideways all in order to escape.

  • Videos

Global Game Jam 2016 - Junk Food Pilgrimage

I participated in the game jam held in Pittsburgh, with a team of 5 others, and we ended up making a game we fondly coined Junk Food Pilgrimage. It is a mobile game that is also available on the Google Play store to all Android users. It is primariliy an endless runner games where players can play as either a cookie or a chocolate bar. The gameplay differs for each character as well. For the cookie, it continually wobbles so the player has to keep tapping to keep it balanced and straight. As for the chocolate bar, it continually hops up and down and the player needs to tap rhythmically in order to have it jump higher and higher and not fall to the ground.

We originally developed the game for the game jam and decided to keep working on it in order to upload it to the app store. The team consisted of 1 sound designer, 2 3D and 2D artists, 1 UI designer, and 2 programmers, of whom I was one. The original listing for the game jam can be found here at the jam page. You can also download the game from the play store at this link.


Building Virtual Worlds

Building Virtual Worlds is a course every first year at the entertainment technology center (ETC) takes. There are 5 rounds and each lasts 2-3 weeks. Each round, students are sorted into different teams, making sure they get to work with new people every round. Students are also assigned a main role to perform during the course - Artist, Programmer or Sound Designer. I was assigned the role of Sound Designer, but I also acted as a programmer for my teams. I worked with a variety of different platforms such as the Oculus Rift, Ps Move, Kinect, Google Tango, and Phidgets during the span of this course. Showcased below are the games I made from each of the rounds.

In the last week of the course, we also have an event know as BVW Festival. This is basically a showcase of carefully selected games by a panel of ETC personal and industry professionals. These games are each given a specific location in the ETC building to host their game and theme the location around that world. Attendees include many industry veterans and family and friends of ETC students and faculty. Both my round 2 world and my round 5 worlds were selected to be showcased in the festival. I will shortly put up more detailed info about the changes we made to both games for the festival and how we themed our rooms around the world to make them more immersive.

Deep Sea Blitz
Help Robot 117 protect his maker's submarine from deep sea ceatures!
  • Overview

    This is a VR 3D first-person view action game. This is a VR 3D first-person view action game. Using the Oculus Rift and Ps Move, guests will experience the feeling of being underwater, and under attack from various sea creatures. They play as a robot who is able to use physical zap attacks and a charged attack to kill the fishes and protect a submarine from attack. They have to surive till the scientist is able to repair the submarine and escape. The controls of the game works such that you move around by simulating a normal swimming motion with your arms and use the PS Move buttons to attack the fish.

  • My Role

    I was the sound designer and the main AI and environment programmer on this project. I was in charge of making and integrating all sound effects, background music and dialogue for the game. For programming, my first responsiblity was making the underwater scene look good. To that end, I programmed in underwater animated caustics lights that move around the ocean bed to add to the realism, which added a nice touch. I was also in charge of programming the AI for the attacking fishes, and the sea monster.

  • Video

    Here is a link to a video of the gameplay, on Dropbox.

Reminiscenes
Recall you memories by painting them to life
  • Overview

    You play as a famous artist with failing eyesight, who tries to remember his memories by painting them to life. Using the Kinect, guests are able to use their paintbrush and palette in order to paint away the darkness and reveal objects in the world. By interacting with various objects, they learn more about the life of the character they are playing as and travel through different rooms. The memories start from the most recent memories up till the painter's childhood memories.

  • My Role

    I was the sound designer and lead writer for the game. I wrote the dialogue and storyboarded out the main story of the game. I was in charge of making and integrating all sound effects, background music and dialogue for the game. All the music in this game are my own original compositions as well, composed using a synthesizer. I was also in charge of audio programming in that I had to code in the audio triggers for each sound file into the game. I was in charge of making sure that each sound, music and dialogue only played once certain actions in the game were carried out.

  • Video

    Here is a link to a video of the gameplay, on Youtube

Temple Of Balls
Dodge all of the traps to survive till you find a way to escape!
  • Overview

    Guests use the Google Tango and find themselves trapped inside the temple. There are 3 levels, and each level has an escalation of difficulty in the traps that the guest has to dodge. The main trap that is a mainstay in all 3 are gargayoles shooting fiery balls at you that you need to avoid. These gargayoles will shoot at you from each of the walls and you need to constantly be on the lookout to avoid them. Later levels have different traps to have a progression of difficulty, with a break in between to give guests a chance to rest. There are 4 rounds in total, and the last round is the round which enables the guest to escape and win. We make use of the Tango's motion tracking feature to have the guest move around in real life to add a level of physical engagement to the game, which makes the action of dodging that much more fun.

  • My Role

    I was one of the core gameplay programmers and the sound designer on this game. My main programming responsiblities were setting up the Google Tango environment in unity and integrating the motion tracking features of the Tango into our game. In addition, I was in charge of programming the mechanics of the traps that the player needed to dodge. I also made all the sound effects, and background music for our game and was in charge of doing the audio programming for the game.

  • Video

    Here is a link to a video of the gameplay, on Dropbox.

Moments
What choice will you make?
  • Overview

    You play the role of a photojournalist who is trying to capture moments of struggle in a war-torn region filled with refugees. The game uses the Oculus Rift and Ps Move. The goal of the story is to provide the players with specific choices throughout the game where they can only take a photo or lose the chance to take a photo by helping people instead. There is not right or wrong choice and the game is meant to make the player really think about their choices and the consequences of either one.

  • My Role

    On this project, I was in charge of environment art, sound design, story, and the audio programming. Our other 2 artists had their hands full with the animations and character design, so I took up the role of 3D environmental artist and designed the refugee camp in the game using Maya 2016. The models I did were the watch towers, the tents, the sandbags, barrels, fences, and barricades. I also created all the sound effects, background music and dialogue for our game. I wrote out the story for the game as well, and did a lot of audio programming to insert the dialogue into the game, as because this was a game with multiple endings, there were a lot more audio triggers in the game. I also had to ensure that the dialogue would play with the right timings and had to use coroutines a lot to achieve this effect.

  • Video

    Here is a link to a video of the gameplay, on Dropbox. However, this video does not have the ending scenes inside. An updated video will be uploaded soon.

Regetta
2 V 2 sailing and racing game
  • Overview

    This game is a 2 v 2 racing game with sailing boats. The game uses actual physical props in order to race. We made 2 rudders, and 2 masts with sails on them for the purpose of steering and accelerating/decelerating in the game. We used rotation sensors with phidgets hooked up to the computer as controls. The players basically control the rudder and sails similar to how they would in an actual sail boat and traverse through our virtual race course on the screen. They have to navigate through various obstacles and work together efficiently in order to beat their competitors.

  • My Role

    On this project, I was the lead programmer. I was in charge of setting up the environment, level design of the race course and programming the actual sailing mechanics together with the phidgets. I also set up the UI of the game, to get visual feedback for steering, acceleration and wind direction. The main difficulty of this was to iterate through playtesting to get the right mechanics and feel for the game to make it fun.

  • Video

    Here is a link to a video of the gameplay, on Dropbox. This is a video with the old race course however, we are designing a new one for the BVW festival.


Game Design, Protyping and Production

Game Design, Prototyping and Production is another course that is offered by the ETC. In this course, students are assigned a random team of 5 people, with whom they work for the whole semester on 4 different games. Below are the games that I developed during this course. My main role in this course was as a programmer.

Granny Versus The Gods
Help Abuela teach the gods a lesson!
  • Overview

    This is a 2D Hack N' Slash game. It only has 1 level thus far, where the player controls an old lady whose cable television has been destroyed by two bored gods. As a result, they make her angry and she goes on a rampage against their servents. The player has to fight against angels and minions coming at them and eventually get to a boss fight.

  • Try The Game

    Here is a link to the game jam site page, where the game's info is displayed.

    This is a link to an online version of the game for people to play and try out! You will need to install the Unity web player plugin though.

  • My Role

    I was the lead programmer and game designer on this project. In 2 days, I coded in all of the gameplay mechancis, most of the UI, and integrated the sound and art effects. Programming in the parallax effect of the scrolling background, the controls of the player character, the behavior and spawning of the enemy minions and the boss, the boredom meter of the gods, and the consequences when the meter became empty or full were my main responsibilities.

Sudoku In Pieces
Solve the Jigsaw and the Sudoku!
  • Overview

    This is a variant of the famous Sudoku puzzle game. In this version, the sudoku board already has all the numbers filled in. The board is then broken up into jigsaw pieces, which must be placed back on the board, such that the original constraints of sudoku still hold. There are various difficulty modes, and a leveling system, where leveling up unlocks harder difficulties and different backgrounds!

  • Try The Game

    Below is a downloadable rar file for windows users. Simply unzip the contents into a folder of your choice, and run the .exe file.The second link is for mac users, and is an .app file.

    Also, here is a link to the github project page (the name is different as we changed it midway).

  • My Role

    I was the lead programmer and game designer on this project. I designed the initial rules of gameplay for the game, and also decided to add in a difficulty and leveling system, similar to modern sudoku mobile apps as they add a new level of interactivity to the experience. My main responsibility in programming was implementing the algorithms to generate the jigsaw pieces. I did this by first generating a random sudoku 9 by 9 grid with all the numbers already filled in. I then devised an algorithm that goes through the grid, and splits it up into jigsaw pieces of varying sizes, depending on the difficulty level that the player selected. Harder difficulties had smaller pieces and easier ones had larger pieces. I also made sure to leave several pieces on the grid as hints, although the number of hints varied with the difficulty. I also implemented the scoring and leveling up system and UI for the game. Every time you solved a puzzle, you would obtain a score based on your time taken and you would gain experience points to level up. Leveling up would unlock higher difficulty levels and different backgrounds. The changing of the backgrounds and the UI for the game, as well as the validation of the jigsaw pieces once you placed them on the board were implemented by me as well.

Tick Tock Planet
Help Kit Save Her Planet!
  • Overview

    This is a platformer game. You play as a robot, Kat, who has to save her clock world from destruction. She travels to the inner core of the world. Each level, she travels further in, where new obstacles and enemies await to stop her from her mission. She has to collect 4 keys on each level in order to unlock the path to the next level. The interesting thing about this game is that it is a rhythm-based game in which the player's jump and dash motions have to be synced with the beat of the music. The player can only jump or dash if he presses those buttons at approximately the same time as the beat, else the player does nothing. Also, there are background objects that help to signify the beat as they move in tune with the beat as well.

  • Try The Game

    Below is a downloadable rar file for windows users. Simply unzip the contents into a folder of your choice, and run the .exe file.

    Also, here is a link to the github project page (the name is different as we changed it midway).

  • My Role

    I was the main gameplay programmer on this game. My main role here was to implement the rhythem based controls for our character. I did this by implementing having a different Beats Per Minute (BPM) for each level, and checking if the user pressed a key input at approximately the same time as a beat, with a small offset to account for human reaction time. This worked really well and the game felt intuitive but at the same time, difficult enough to make it fun. I also helped with level design for levels 2,3 and 5 where I implemented various new mechanics and obstacles in order to add a progression of difficulty and to keep the player engaged throughout. I also programmed the background items to move in beat with the BPM so as to provide clues to the player as to the BPM of the current level.

This Little Piggy Went to The Toolshed
Help the pig build a house to hide from the wolves!
  • Overview

    This game is a 3D survival-adventure game where the player controls one of the 3 little pigs. He has to collect resources in the form of straw, logs or bricks during the day. When he has enough resources, he can build a straw, log or brick house and rest inside to recover his stamina. At night, wolves come out and chase the player if he is not in the house. If he is inside the house, the wolves attack the house and eventually destroy it, chasing the player around after that till daytime comes again. At that point, the wolves dissappear and reappear during the next night again. The game is a 3-day cycle. During the 3rd night, normal wolves don't spawn and instead, a big bad wolf spawns. If the player has built a brick house and is inside it, the player wins once the big bad wolf reachs the brick house.

  • Try The Game

    This game still has several bugs to fix and isn't ready for showcase yet. Here are a few screenshots of the game in its current state though.

    01 02 03 04 05

    Also, here is a link to the github project page.

  • My Role

    I was the main AI programmer for this game. My main role here was to program the wolf AI for the game, using the A*Star algorithm to follow the player at night. I spawned varying number of wolves every night, at different points, and would have them chase the pig at night and attack the pig or the house if the pig was in it. But at the third night, there would only be a big bad wolf which would chase the wolf. I also implemented the wolf attacking the pig and the house and killing/destroying either of them. I also worked on the art assets for this game. All of the 3D houses that could be built by the player were modelled by me in Autodesk Maya.


Solo Works

This section showcases several games that I worked on by myself, either for a class or as a personal project.

Dubloon Disaster Remake
Help the young pirate regain his gold!
  • Overview

    In my first programming class at CMU, 15-112: Fundamentals to Programming, I created a fully functional replica of the online Neopets game, Dubloon Disaster, in Python using the PyGame library. The main features of the gameplay includes moving around the map trying to collect dubloons while avoiding the many mines that are following you around trying to blow you up.

    I added in a new feature of powerups in order to make the game easier, and also had has many features that I could from the original game coded into here, such as the whirlpools and the speedup of the mines as they get closer to you. I also used the original artwork from the original version, by taking screenshots of the game as I was playing it, and editing the screenshots in photoshop to get my game backgrounds and sprites. As such, artwise, my remake looks very close to the original, other than the whirlpool sprites. The main aspects that I did not implement from the original are the ripple effects on the water background as the sprites move and a high score table. The music is from Pirates of The Carribean!

  • Video

    Below is a gameplay video of the remake that I made:

    If you wish to play the original game for comparisons, you can use the link below.

  • Documentation

    Here is a pdf file of the documentation I wrote for this project, clearly explaining the various components of th game and the algorithms I used:

Raven's Reflections
Escape the Ice Cave!
  • Overview

    This was originally my final project for 15-466: Computer Game Programming at CMU. This game is designed to be a 2D puzzle game that has its roots based on Angry Birds. It uses a similar shooting mechanism to launch 'orbs' at a certain angle with varying power values to shoot across the map in order to hit a goal. However, the difference is that this is a vertical rather than horizontal map, without the effect of gravity. Instead, there are various obstacles that the orb has to avoid or rebound off in order to reach the goal at the end. I coded several of the physics in the game such as the shooting mechanism, the damping of the orbs as they go across the map and part of the physics involved in rebounds. I coded this entire game using the Unity game engine, with several artwork and models from the Unity Asset Store. I also generated several user interfaces for this game, and created 10 basic levels to start with, with harder obstacles for each successive level. I also designed a multiplayer mode where two player's try to be the first one to beat the puzzle using unity networking.

  • Video

    Below is a video showcasing the gameplay of this game, both in single player and multiplayer mode.

  • Documentation

    Here is a pdf file of the documentation I wrote for this project, explaining the various features of the game:

Chess
Play the classic game of Chess against the Computer or a Friend!
  • Overview

    This was a project for 15-466: Computer Game Programming, at CMU. I basically created a chess game that can be run both in single player mode, versus a form of chess AI, and in multiplayer mode over the same network with another player using the built-in Unity networking features. This game has all the basic features of chess gameplay implemented except for castling and pawn promotion. However, the various pieces have the correct restricted movements, the game checks for a check and checkmate, and only 1 player can move at a time. The chess AI works by using a game tree to keep track of the various states of the chess game at any point, and then uses the minimax search algorithm with alpha-beta pruning in order to find the best move for the AI at any point in the game. The search has a maximum depth of 5 and runs fairly fast.

  • Video

    Below is a video showcasing the gameplay of this game, both in single player and multiplayer mode.

  • Documentation

    Here is a pdf file of the documentation I wrote for this project, clearly explaining the various features I implemented for this game, as well an explanation of the algorithms I used: