3rd person (follow cam)
Unreal Engine 4
Upsurge is a free-for-all online multiplayer game, based in a city floating in the stratosphere, where players use a selection of weapons to destroy each other. The players can collect power cores which overcharge their ship, granting additional weapons as well as an increase in their shield's power.
My Game Designer / Scripter / Project Lead responsibilties:
As a game designer & scripter, I spent a lot of my time on combat gameplay design as well as the overall design of the game. I spent a lot of time on the weapon systems, from which weapons the player has, to how the player uses them, what projectiles they fire and what damage they do, as well as implementing these systems. The lessons learnt from Trajectory were invaluable for this project.
As it was highly related, I also designed and implemented a lot of the game mode and the level-up system of the ship. As the game was a multiplayer game, I had a lot of interaction with the networking. I also implemented the UI for the spawn menu/weapon selection and the in-game HUD.
As the project lead, I worked a lot with scrum and managing the product backlog. I was also in charge of creating weekly reports for acting investors to update them on our progress and future plan.
There are 5 unique weapons in Upsurge, but they all have common attributes. I applied polymorphism by creating a parent weapon that holds the majority of the scripts and variables that are used by the children.
Player Controller: Shoot Primary Weapon
If the player presses the left mouse button, it will trigger an event in the Player Controller that will tell the primary weapons to shoot. The player controller does not hold any information about the weapon except their references. This is exactly the same for the secondary weapons, but is triggered by the right mouse button instead.
Weapon Parent: Shoot
The weapon parent is in complete control regarding how it fires. Once the event is triggered, it will open the gate and run all of the scripts that end in the projectile being fired.
I wrote the weapon scripts with flexbility in mind as we were designing the weapons in parallel to the construction of the scripts. In the end, the parent weapon scripts could be used for all of our 5 weapons by just changing a few variables in the child weapons.
Weapon Parent: Spawn Projectiles
None of the projectiles in Upsurge are replicated, instead the server tells all of the clients to fire a projectile with the same information as the instigating client. Visually, and mechanically, the projectiles behave exactly the same - without the necessity of extra network traffic to send all of the projectile simulation data from the server to all of the clients.
If the server calls the 'Fire' event, it will call a multicast event, which will tell all of the clients (and its own client) to create the projectile.
If a client calls the 'Fire' event, it will instead tell the server, and the server will call the same multicast event.
The ships in Upsurge are able to swap and upgrade their weapons throughout the game. It was my job to create a system that we could add/remove & swap weapons on the fly so we had complete control for the future.
There are multiple situations where the player will want to spawn or respawn their weapons: When the player spawns into the game for the first time, after the player has died and wishes to change weapons, and when the ship levels up - granting the ship additional weapons. I also added the ability to remove weapons if the player has too many which allowed us to test the level-up mechanc very efficiently.