Multiplayer Tank Game

Proposal

I want to make an online game for my minor project, I want to be able to connect to a server and play with other people that are on different computers. The type of game will be a tank pvp where players have to fight each other, It will have health and ammo. I am not too worried about the mechanics of the game as I have worked on them before however the biggest struggle I think will come from the multiplayer aspect as I have never done that before.

I will include in my references any material I used to help make my project.

Multiplayer

The first thing I did was set up the multiplayer system. I didn’t want to leave this for later on as I have found from multiplayer sources that when creating a multiplayer game, you must start with that in mind, or it will create problems later on.

I created my multiplayer system in c++ unreal. This wasn’t as hard as I thought it would be there was a large amount of material online to help me through this stage to have my multiplayer server working.

Unreal does support multiplayer out of the box but only locally, in order to get it to work online or over LAN you must create some C++ classes get it to join the online system.

Text

Description automatically generated

This is what my C++ code looked like.

Adding in UI

Graphical user interface, application

Description automatically generated
Graphical user interface, application, Teams

Description automatically generated

Adding in Tanks

The next step after creating a multiplayer system was create a usable character for the player so that they could move around 

This was a prototype I used as a placeholder while I worked on the mechanics.Graphical user interface

Description automatically generated

Mechanics

The mechanics I wanted to implement are very simple.(In theory)

Movement

The movement mechanic was the one I struggled the most with as it was the first one I was working in a multiplayer game so I was unfamiliar with the practices and how to do it correctly. I went through multiple iterations with different techniques in order to get it to work. The problem I was having was that the tank was not being replicated on the server this meant that other clients could not see the clients moving around which meant the game wouldn’t work. After some research I found that the replication system didn’t work with skeletal meshes so I changed my approach and went with the unreal chaos char system which I then used to fake the hovering effect.

Aiming

Aiming similar to moving was difficult due to it not being replicated on all other clients which meant that the server wasn’t showing them moving properly and this also led the bullets not working and shooting in the right direction. The cause of this problem ended up being that you had to first send the position of the turret to the server and then multicast it from the server to all the clients, this meant that all the clients could see the aiming of all the other turrets. The second thing I learnt was that I also had to send the vectors over to the server in order for it to work.

A screenshot of a video game

Description automatically generated

Shooting

Adding in shooting wasn’t that hard it didn’t take as long to get it working. As long as I was replicating the component it was being passed onto to the server and could see the bullet moving.

Power ups

The power up system was difficult at first like the movement system due to the power up not disappearing on the clients screens it caused it to stay visible to everyone even after being picked up.

A screenshot of a video game

Description automatically generated

The same solution was used for the pick up, I run the event on the server and it worked.

Die and Respawn

The respawn system wasn’t that hard to implement because using what I had learnt I was able to implement it in as long I was bearing in mind that the clients had to go through the server. Once I had this working, I could implement the next step which was the score system.

However, the problem with the current respawn system is that the player will spawn at designated locations and if a player is already there, they will spawn on top of them. This mid game is unlikely though as players will be moving around.

Another issue is with unreal, if a player spawns in but clips any object it will fail to spawn this can be fixed by placing the player above the ground but does not look right when you are playing.

Score System

The score system works by first giving the players a unique ID such as a name once this was assigned to all the players when a player died, I was able to take the player who hit them last and add a score onto their name which was on a scoreboard so that everyone could see.

Graphical user interface

Description automatically generated

There are still some issues with the score system such as not everyone’s name comes on the score board straight away, they must first gain some points before their name becomes visible.

Another issue is that if the game starts without all the players being loaded in they won’t be assigned a name which can cause problems for the score board

Animations

I wanted to use physics-based animations to give the hover tank a real look however I could not get them to work. I ended up using premade animations to fake it, this wasn’t a perfect fix however with the time constraints I was not able to get it working and had to stick with the premade animations.

VFX

Initially I set out wanting to put some more effort into my VFX as they has been lacking in my past projects but since I had under estimated the complexity of this project I wasn’t left with a lot of time to get them all working. The first VFX I did was the thruster fire at the bottom.

A picture containing light

Description automatically generated

The second VFX I did was make a bullet hit VFX which were like sparks when it hit an object. They start at a point and spread out.

A firework in the sky

Description automatically generated with medium confidence

Muzzle flash VFX

A picture containing nature, light, dark

Description automatically generated

If I have some time I will attempt to get some more VFX made as for me it can be the difference between a game looking finished and unfinished. It provides a level of polish to game final product.

The next thing that I will be attempting to create is a new map as I have spent most my time working in the test level.