This is the introduction video for Arbor, my capstone project at the Guildhall. I was lead programmer on a team of 13 developers and did most of the gameplay coding for the game, especially code specific to the player. I also created a complex and useful checkpoint and camera system. This allowed the level designers a high degree of control over the flow of gameplay, and I believe the result makes Arbor a much more “player-friendly” game.
Arbor is a sidescrolling puzzle-platformer with a dark theme. It was created using the June 2011 build of UDK. In the game you play as Votive, an animated clay figurine capable of inserting three different types of magical leaves in the empty socket where its arm once was. Using the powers gained from these leaves, Votive must navigate the now tainted Temple of the Arbor Goddess, planting a number of Sacred Bulbs in specific locations along the way.
This video shows off some of the things I worked on. One thing you might notice is the camera. It has a “default” behavior that “leads” the player from a fixed distance and angle. In addition to that, I created a special volume our level designers could use to create unique camera behavior while Votive is inside. These were essential in helping the player figure out where to go as well as giving the game a more “3D” feel. Another thing I worked on was the doors. When Votive walks in front of one, it lights up. After a slight delay, its corresponding door lights up as well (both are accompanied by sound and slight force feedback). I just decided to do this on a whim one day and I believe it really added to the game.
I also spent a lot of time working on Votive, the game’s main character. Our artists and animators created an amazing asset for Votive, and I spent many long hours making sure he looked and felt just right in game. To do so, I had to create an AnimTree from scratch (something I had to figure out completely on my own) and integrate it with the gameplay code. The biggest challenge in this area was the objects Votive can pick up. These are normally represented as KActors in UDK, but when Votive reaches to pick one up, the KActor is destroyed and a mesh is made visible, connected to a socket on Votive’s skeleton. It took quite a bit of coordination to get this working right.
Another area I spent time working on was “meta-game” features. For instance, Arbor saves your progress when you quit and lets you resume your game later. I also implemented a pretty solid options menu where you can change the resolution, graphics settings, etc. This information is also saved between playthroughs. One last thing I did was force feedback. UDK does not support this natively, so I had to build a DLL plugin that used Windows API to control it. Most games at the Guildhall do not receive this level of polish.