Xtreme Capture The Flag
You have been captured by an alien species that seeks pleasure in other people’s pain. You are Markus, an unsuspecting Earth civilian who finds himself in an intergalactic battlefield forced to play capture the flag in order to stay alive. Your new alien overlords are broadcasting you on a game show for their own entertainment – make them happy or suffer the consequences!
Fend off and dodge the robots, which are being controlled by the alien audience. Use your gun and special space boots to jump from planet to planet, and maneuver yourself around the planet’s gravities.
Your goal is to return the transmitter from the audience controlled robots to your home base so that you can return back to your home planet.
Level Design: When the player enters the game, they start at a tutorial level where they get their bearings and learn the main mechanics of the game. Then, they move onto the main level which features multiple worlds the player can travel across. There are moons that orbit planets that the player can use to slingshot himself through space, as well as platforms where the player can regain his footing.
Character and Environment Design: Our main character, Markus, wears a red jumpsuit representative of the red team he is a part of in the game. Our team decided to make him a low polygon character, who resembles a toy character to fit in with the low polygon planets. There are a multitude of different planets featured in this game, including a lava planet, ice planet, a lush planet, and a desert planet, as well as a few moons. There are also robots throughout the level which took inspiration from BB-8 in Star Wars.
Putting It Into Code:
Physics and Player Controller: We used a third person pawn as the player controller. To make the player walk around the different planets and also be able to switch its gravity based on the orientation of different platforms, we used a directional gravity plugin.
Enemy AI: We used blueprints to create the different enemy AI within the game. There are three different enemy behaviors within the game. One robot simply follows you around and takes away your health if you get hit by him, another robot acts as a turret and shoots bullets at you from a fixed location, and the last robot moves from a series of three different target points and shoots bullets at you.
Environment: The levels were created so that the player could travel seamlessly from planet to planet in search of the flag. There are also signs that tell the player where to go in the game which serve a functional purpose within the environment.
Animation: We used mixamo.com for the shooting animations of the character and also a few animations were taken from a skydiving/parachuting plugin.
This game was made using Epic Game’s Unreal game engine.
Go more into depth on the GitHub repository.
Development Process For The Second Prototype:
There is a multiplayer and single-player game mode in this iteration that has lots of miniature planets and asteroids to roam. You must jump from planet to planet to use their gravity to reorient yourself. During our production timeline, we were able to create a multiplayer match using Steam and were able to use a physics system to simulate gravity around the planets. However, the final version does not have multiplayer capabilities because during the debugging process we found that we would need a vast amount of experimentation to make the physics replicate across multiplayer servers. Understanding our timeline, we made a decision to cut multiplayer as the gravity simulation was fundamental to the concept of our game. We were able to publish an adjusted game where you combat AI enemies to capture a flag and bring it back to your base. This second version (and the final version) use Unreal Engine instead of Unity.
Development Process For The First Prototype:
Initial Concept: The aim of this project is to create a more complex version of Capture the Flag, where you can run around planets with spherical gravity, similar to Super Mario Galaxy. Some other add-ons I will have are weapons, powerups, and multiple planets to explore. Unity was used for this prototype version of the game. This version of the game was created solely by me in Unity; the other two iterations of the project involved other people.
Level Design: The world is procedurally generated, every time you reload the level or start a new game the terrain changes to create a unique experience every time. The planet is based off of a low polygon Earth.
Character and Environment Design: I wanted to make the characters look like they were made out of clay, because I think it goes well with the simple environment. I am trying to go for a whimsical look for the environment, which can be seen through the large and mysterious mushrooms or giant oak trees.
Putting It Into Code:
Physics and Player Controller: I used rigidbody components and colliders in Unity for the physics. The controls of the player were also based off of the rigidbody system, and by using faux gravity.
Enemy and Teammates AI: I have different movement scripts for different AIs in the game, for example some enemies follow the player while others just guard the jail or wander. If someone on the opposing team tags you you are teleported to the jail, and this was done using trigger events and tags in Unity.
Environment: The trees and mushrooms are randomly spawned every time you reload the level using Unity’s Random.onUnitSphere method.
Animation: I made animation state machines to control the player’s animation as well as animations for the enemies.
Camera: To get the small navigation maps at the bottom of the screen I set up multiple cameras and told Unity to render everything to the HUD.