Escape From The Body Snatchers


Trailer

Hi, I was one of the programmers who worked on Escape from the Body Snatchers as a submission into the Montreal Ubisoft Game Lab Competion. This is the trailer for the final product, Enjoy!


About the Game

In a secret military bunker similar to Area 51, a science experiment has escaped from containment and is now hunting the scientists in the facility. One player plays as this monstrous experiment on the hunt and the rest play as the surviving scientists, trying to wait out the clock for the emergency systems to reactivate. Escape From The Bodysnatcher is an asymmetric isometric multiplayer action game in which players play as humans avoiding the monster, controlled by a random player at the start of the game. As the monster eats players, the consumed take partial control over the monster’s movements. Players must work together to avoid getting eaten or work together to consume the rest. The game is designed to be played by anybody, so controls are minimal, sticking to using only the joystick or WASD to move around.


Start of the Project

Despite neither me or my other programmer having experience in Unreal Engine, we decided that it was what we wanted to use in order to get some experience in Unreal and improve our skills as programmers. The theme was together/apart for the competition, this meant it required multiplayer and voice chat. This was something that neither me nor my other programmer, Chris Foster, was prepared for. So we hit the ground running and began doing research.

We Ended up Settling on using Vivox as our voice chat plugin. Vivox is something that is commonly used in industry and is easily integratable into Unreal Engine 4. Using it however still had its fair share of problems. We had players not connecting properly, some players not joining voice chat at all and some players in the wrong voice chat. But after plenty of trail and error we were able to get something we were happy with.

When it came to networking our game, we originally tried peer to peer. This however was inconsistant at best and some of our people were working much farther away meaning an increase in latancy. We ended up going with a server route. So for the first time, I spun up a server using one of our mentors to help. We set up the connection permissions, set up the firewall and installed the server build of the game.

The meme we made when we got it working.

People could connect, it was an amazing feeling. The two weeks we put into researching and preparing ourselves started to come together. While not perfect, we had the multiplayer. It was something I had never done but through research and pushing my skills I was able to get it working.


Implementing the Game

With multiplayer set up, everyone on Unreal Engine Source or a rocket build of it, we could begin work on the game. This however, was not an easy task. We kept running into replication errors, Things not getting set to the server and errors in general. So it was not gonna be easy to get the game working. So after reading throught Unreal’s Network Compendium multiple times, as well as refering to our mentors for help. We got monster movement working. We did this by allowing multiple players to possess the same object, then using the controllers inputs to create an adative value that then determines where the monster should move. While this was going on, I was mostly focused on making the monster gloop effect. I was not super experienced with fluid simulation, and looking back that is what it should have been done with, but I felt more comfortable trying to fake it.

Blob Shader Used for the Monster.

This was not full blob, but after trying a few different approaches ranging from raymarching, to just a regular old vfx. Nothing quite worked like the shader we ended up with. So after having the artist tweek it and change it around, we were able to get a cool looking blob monster going. Then after doing this, we were able to get in a game loop and while not perfect, things were starting to come together! We continued to network our game, work on adding objectives in such has having to move the batteries around, getting the timer up and running. All of this was stuff that should have been simple but replication always made things more complicated, batteries were not being picked up for some clients, the server did detect them being used. But after many tireless nights of bug fixing, we were able to get it up and running.


Polishing the Game

With the game loop in, we were able to focus on getting in art, updating levels, implementing UI, adding sounds, player feedback and game objectives. We had a lot of small stuff to do, this didn’t stop our groove we had going. We keep updating features, polishing features we liked and just overall making the game the best experience we can. Then after about a month and a half of polish, we were in the last stretch. After many late nights working on the game. After many heated aurguments about the game, we were just bug fixing and messing around. We added a little party room into the game, that has all of ours names. We made sure everything looked good and worked well.

Then we reached the turn in date. Despite having a few hickups, we turned in a game we were all super proud of. We even got nominated for best Game Design. While there was many hickups, nothing ever stopped us from moving foward and making a game that we all were proud of(despite being a little burned out at the end). You can check out our github for the project here at https://github.com/iXiphos/UbisoftCompetition