A downloadable game for Windows

Categorization Genre: 

Our game is an FPS (First person shooter) multiplayer game, where one player controls movement, and one player controls the aim/shooting. 

Target Audience:

 Our target audience is anyone who likes shooter-games and wants to try a game where they can work together with a friend or a stranger. There’s not really any specific age rating for this game, since there’s no violence or blood and gore being displayed. All that’s required is being able to use the controls. 

Number of Players: 

Since each character will need two people to control it, there will be a total of 4 characters max, meaning the max number of players will be 8. The number of players can therefore range from a minimum of 4 (2 teams), to a maximum of 8 players (4 teams). 

Gameplay Style:

 Our game is a first-person shooter, with a heavy focus on cooperation between players. We want to emulate the experience of the childhood game “three-legged race”, where the players have to rework how they move together to collaborate on finishing a race. 

Worldbuilding Story: 

This game takes place in a digital world’s battlefield, where the player has to operate a two-person tank with the help of another player. The players have to coordinate well to be able to move around and shoot to destroy the other team(s)’ tanks before they destroy theirs. The battlefield is a tough and unforgiving place, and there is no time for mistakes! If the player wants to escape the digital world, they have to win the battle. Work together to destroy all enemies or die trying! Luckily the player can pick up power-ups to help along the way! 

Level Design: 

The level was made by Austin, using the terrain tool in unity. Using the tool, he added in some dips and mountains into the level, making the environment varied. The sky was made using a galaxy-texture (skybox) from unity. Models and textures were made by Pia and Austin. The theme is a digital world, so all things are made and textured in that style. 

Theme and Colours: 

The theme of our game is a tank-battle in a digital world. The environment contains green-lined and pink-lined tiles for the ground, giving it a pixelated look. The landscape is molded into dips and peaks, giving it a mountainous look. The sky is a ethereal, galactic-space texture from the unity-store. The environment contains rocks, stalagmites and palmtrees textured in a digital look, with transparent and emissive parts of different colours; yellows, orange, pink, blues, purples, reds, and black. The tanks themselves have 4 different colour-combos (for the maximum 4 teams that can be playing the game at once; 8 players, 2 per tank); purple, pink, blue and green.

Gameplay
 Summary: 

In this game, the player must cooperate with another player to control a tank. One player controls the tank movement, and the other controls the tank aim and shooting. They have to work together to be able to move around, shoot their enemy players and survive the battle

Gameplay Loop: 

The gameplay loop of this game is pretty simple, seeing as it’s made in a very short amount of time. The player has to collaborate with the other player on their team, shoot other tanks, avoid taking damage from the other teams and survive the battle.

Win and lose condition: 

The win condition in this game is to collaborate well with the team-player, coordinate moving and shooting with the tank, shooting and destroying the other team(s)’ tanks before they manage to destroy yours. 

The loss condition in this game is if the other team(s) destroy the players tank before the player destroys theirs. 

Modifiers: 

Modifiers (mods) are coin-shaped floating things you can pick up as they spawn around the level. There will be three different mods; speed, shield and swap. They all give the player an advantage in the gameplay. Only the player controlling the tank movement can use the power-ups. Power-ups are activated by pressing the key “F”.

Shield: 

Driving over/picking up this modifier will give the player a shield, which will take the damage of one hit from another tank’s gun before dissolving. This essentially gives the player “another life”, by allowing their tank to withstand one shot without dying. When the shield goes away, the player will be back to one hit = death. These modifiers are rare, only having up to 3 spawning on the map per round. 

Speed: 

Driving over/picking up this modifier will give the player increased movement-speed for a set amount of time. When the time runs out, the player will move at standard speed again. These are the most common modifiers.

Swap: 

Driving over/picking up this modifier will swap the controls of the closest enemy for a set amount of time. This means the closest enemy team will suddenly have their driver controlling the gun, and the gunner controlling the movement. This can confuse the enemy tank, and give the player an advantage. When the time runs out, the controls will swap back. These are relatively rare, having up to 5 of them spawn on the map per round.

Mechanics Game modes and screens: 

The only game mode in our game is “Team Deathmatch" mode, since this is what our game is built upon. Our game has a lobby screen and gameplay screen. Not much else is needed, but we will work more on UI later in the game development towards the exam. Due to the large size of the map, a “Battle Royale” mode was considered, as the gameplay is currently a bit too slow paced, but that idea was turned down due to time constraints and architectural complexity. 

Player controllers/movement: 

The player controls the tank with the keyboard and mouse. The “W” and “S” keys on the keyboard move the tank backwards and forwards, keys “A” and “D” rotate the tank in either direction. Moving the mouse will rotate the tank's cannon from side to side, and clicking the left mouse-button will fire the cannon. The player controlling the tank’s movement will be able to click “F” to use any available modifiers. 

Multiplayer architecture 

How does the multiplayer work? 

The game is written using Unity’s “Netcode for GameObjects” (NGO). It’s targeting a server authoritative structure, which means that most actions have to go through the server in order to be verified. This structure allows us to have better control over clients, and author their positions if needed. 

Software involved and different actors: 


We used Unity and Netcode to make this game. Blender and Adobe Substance Painter was used to create and texture models respectively. 

Explain the different technical features/requirements like the server authoritative or latency compensation 


Some optimizations used include the usage of websockets, client side prediction (pending) and various checks to reduce the number of requests. An implementation of tick-rate is also in the works. To minimise network requests, shooting has also been implemented with raycasts, meaning that the server won’t have to keep track of the position of bullets, and the clients won’t have to predict their movement.


Technical Design 

Command Line Arguments 

This project makes use of command line arguments to configure certain variables. This has greatly sped up the production and testing times, and also allows for easy server deployment. 

Controllers 

Our game consists of two different player controllers, a client sided controller, and the tank controller. Whenever a NetworkPlayer (client-side controller) joins a team, they are assigned a movement type, either getting control over the steering wheel or the tank cannon. Once two players have joined a team, and the game starts, both players’ NetworkPlayer components will be bound to the tank controller, allowing them to send movement data to that tank through RPC calls. Our game utilises websockets provided by UnityTransport, so sending a constant stream of data is a viable solution. The following chart shows how two players connect to the same TankController. 

Published 2 days ago
StatusReleased
PlatformsWindows
AuthorsBakkeboi, PiaRam
GenreShooter
TagsCo-op, Multiplayer, Tanks, Team-Based
Average sessionA few minutes

Download

Download
Windows.zip 70 MB

Leave a comment

Log in with itch.io to leave a comment.