Copy That

A screen capture taken from the current state of Copy That. The purple soda can is a player controlled object that.

A screen capture taken from the current state of Copy That. The purple soda can is a player controlled object that.

Another screen capturing showing off how a player can control a non-capsule based object using the custom Character class I made.

Another screen capturing showing off how a player can control a non-capsule based object using the custom Character class I made.

 

What it is

Copy That is my current passion project! Without giving too much away as I hope to monetize it when it’s finished, it is essentially a hide-and-seek, objective based game that falls into the “Prop Hunt” category. It is being built with Unreal Engine, Blender, and Substance Painter. The models are being provided by my good friend Matt and those are being painted by my other friend Korena.

Unique Challenges

As Copy That is a multiplayer based game it brings many unique challenges. The first and foremost is player movement. Thankfully Unreal Engine provides the Character class which comes with multiplayer movement built in. However, this movement is tied to a capsule component that cannot be turned off. Normally this is not an issue as humanoid figures are approximately capsoidal in shape. However, players will not be controlling capsule based objects in Copy That (e.g., a table). To resolve this issue, I rewrote the base Character class in C++ to remove the need for capsule component, replacing it instead with a generic static mesh that can be any shape. I then added simple floor check components to the player’s object so that Unreal Engine would know it should apply gravity and when the player can jump. At the cost of a bit more setup complexity, this solution provides the flexibility we needed to have players move no matter what shape they are while also still providing a smooth network experience for all parties involved.

The other unique challenge that I am still in the process of solving in the synchronization of physic objects. In Copy That we want the player to be able to bump into and realistically move objects around. The easiest way to do this from a single player perspective is to add physics to all objects. However, due to Unreal Engine using nondeterministic physics and network delays between clients, objects are currently not traveling very smoothly or realistically (lots of correction teleporting, stuttering, etc.). While I don’t currently have a working solution for this, I do have ideas to try, such as turning off physics all together and faking everything by precalculating the end position of the object after an impact, sending that data to all users, and then having the local players interpolate from point A to point B on their own with a timestamp and rewind system to ensure mid interpolation collisions occur properly as well.


Overview

This is a snippet for the Overview short film that shows off the nDisplay technology we used. You can see the camera tracking changing the position of earth to properly align it in the "cockpit window" of Aaron.

 

What it is

Overview is a short film that I was invited to help out on due to my experience with the Unreal Engine. It tells the story of Aaron, an astronaut on a quest to find a new Earth for humanity and begs the question, what if Earth is all we have? It uses nDisplay, which is the reason my Unreal Engine experience was requested, to display visual elements (planets, extraterrestrial environments, etc.) onto an LED TV in the cockpit of Aaron’s spaceship. Overview is yet to be released.

Unique Challenges

Besides the amazing story telling, nDisplay was the most unique aspect of this short film and the reason I was brought on in the first place. However, at the time of filming, nDisplay was still in its beta stage. This unfortunately meant that documentation and other help sources were lacking in quality and quantity. Even with these obstacles in place, we were able to figure out how to get nDisplay working by attaching a Valve Index controller to the camera and then using that tracking data to manipulate the virtual camera in Unreal Engine, which then in real-time displayed the virtual scene Matt had created onto the LED TV in the cockpit. This allowed us to illuminate our scenes better than just a green screen could and gave our actor something to act against.

Also, as this was my first time working on a film set, it brought many challenges for me that I had yet to previously encounter, such as live debugging. When things went wrong on set with nDisplay or something just needed to be changed inside of it, such as changing a virtual object, it was up to me to do so. This meant I constantly needed to communicate with the director and DP with accurate time estimates so they could manage the set and ensure we didn’t fall behind. Creating these time estimates on the fly helped me get better at evaluating my own skill level and estimating project time in general.


Quarrelsome Coral

A trailer for the local multiplayer collaborative video game I help make.

You can play this game yourself here, download the game files here, or view the game design document here.

 

What it is

Quarrelsome Coral is a 4-Player cooperative exploratory adventure game made in Unity where players are confined in a submarine. Inside the submarine players must cooperate and communicate with each other, prioritizing different stations depending on the crew’s current needs. This game was made for the Independent Study - Game Design class I took along with Adriana (another programmer) and Noreen (the artist). The game took about 5 weeks to create.

Unique Challenges

Some of the main challenges this game posed was ensuring players could properly move and stay inside a vehicle (submarine) that was also moving. Once I had this was working, the next difficult challenge was ensuring the submarine’s shield properly followed the exterior of the submarine. This involved using ellipsoidal equations and actually breaking the shield down into individual pieces offset from each other. With these two challenging mechanics out of the way, other mechanics such as ship repair and weapon firing came easy.

From an AI perspective the most challenging part, which surprised me when I was making this game, was ensuring they weren’t too hard. It was often easier from a programming side to make the enemies too difficult than it was to make them fair and balanced, or even too easy. After long hours of play testing, which can never be underestimated for a video game, Quarrelsome Coral finally achieved the Goldilocks zone.

I really enjoyed this making this game and would love to work on another multiplayer game in the future as I believe multiplayer games, cooperative or competitive, have the ability to bring people together.