top of page

Vendetta

Project Description

A final year student lead team project for Falmouth University, made by 13 students in total

Playthrough

Bounty System

I'm fully responsible for implementing the bounty system as well as all the checkpoints implemented using the system. The bounty system is what you normally would call a mission system, except in our game you play as a bounty hunter so at the end of every mission you're expected to eliminate your bounty target. 

​

From the players perspective it's pretty simple, you have objectives to complete which are outlined at the top of your screen, and further assisted through the form of a waypoint which points to the exact location in the world of your objective, if necessary. The waypoint is always visible, even if you are fully looking away from your objective. These objectives are linear, meaning they can only be completed in consecutive order and always lead to the same outcome no matter how the player approaches the objective.

​

The system is implemented in C++ and is mostly responsible for tracking these objectives  (called checkpoints in code), and implementing them with the save system I setup too, so that if the player wants to quit mid way through a bounty they can do so and come back another time at the same place. The actual checkpoints are mostly in blueprints for multiple simple reasons. Firstly, it allows for quick prototyping of missions, for example, the whole open world segment of objectives in our vertical slice was made in 8 hours in one day. This ability to quickly prototype allowed us to see what we liked and disliked and iterate on the gameplay where needed. Secondly, most of the checkpoints logic is pretty simple and short, for example just player overlaps when the player needs to stand somewhere, or interaction calls if the player needs to interact with something. So for this reason, the advantage of C++ to blueprints isn't as glaring when looking at it from the optimisation perspective. However, this isn't to say you can't implement checkpoints in C++, some specific checkpoints already are made in C++, and if the project was to be continued at a larger scale I would look into converting all existing checkpoints into C++ for that little boost in performance. 

​

Through playtesting and iterating, some aspects of the bounty system which have been previously implemented, have been scrapped for the final version. In the initial concept of this game, we had an idea that it will contain 3 main bounties (the stuff outlined above), 3 side bounties which are smaller in scale but reward the player in a unique currency of favours, a favour system which would allow the player to exchange favours in order to change how they play through the main bounties, and hits( random little encounters with a few enemies in the open world). In reality, we got one main bounty, and its because it was unrealistic for our artists to make another two unique playable areas for the bounties and we wanted to limit the use of asset packs as much as possible, so we scoped the game down to one main bounty but decided to make it more dense in gameplay. We also removed the side bounties completely for a few reasons; firstly, we had an open world blocked out as well as the side bounty system complete by the end of pre production, however, when play testing the players seemed a little too bored travelling between side bounties and some weren't even aware despite our best efforts to try and highlight this feature. Secondly, our primary objective with this vertical slice is to get good marks at university, and markers are only expected to play around 15 minutes so we needed to make the game shorter and remove unnecessary downtime in-between action to allow our game to be as fun as possible within that 15 minute time frame, so we decided to shrink the open world to just a chunk, with it remove the hover bike I made since the player won't need it for travelling anymore, also remove side bounties in favour of just extending part of the main bounty away from its separate level and into our shrunk open world to help make the gameplay feel more dense/limit downtime in between action, and with the removal of side bounties also remove the favour system as the player has no way to earn favours anymore.. Though we kept the players ability to approach the main bounty in different ways, but just without the favour currency. And hits weren't even implemented by the end of pre-production, and so with the smaller playable area and denser gameplay objectives, there just wasn't enough room for us to place hits anywhere so we didn't go ahead with implementing them

​

Mission Objectives in Action

Bounty System Code

Gadget System

I was also fully responsible for implementing the gadget system along side all the gadgets. In a traditional sense, gadgets are just abilities, similar in purpose to games like Valorant or Overwatch 2. In Endless Vendetta the player has access to two types of gadgets, recon and combat. Recon gadgets help the player spot enemies, whilst combat gadgets help the player take enemies out. 

 

In our vertical slice we decided to stick to one of each as the game is short (about 15 minutes of playtime) so the player won't have much time to experiment and get comfortable with multiple different gadgets. That isn't to say that more haven't been implemented, in total I've made 5 gadgets and we settled on the best 2 gadgets that fit the fast pace flow of the game. 

​

The gadget system is implemented in C++ and is mostly responsible for swapping in and out gadgets held based on if they're being actively used or not ( affects the scrapped gadgets more as some had hacking animations which couldn't be cancelled once started), as well as handling input for these gadgets. The Gadget base class was then responsible for handling cooldowns, in use timers as well as having an empty activate function which can be inherited by the gadgets to implement the actual gadgets behaviour inside.

​

Gadgets in Action

Gadget System Code

Release Trailer

You can also play our game on itch :)

Source Code

Our universities Github Enterprise Server is private, so here's a mirrored version of the repository hosted on my friends Gitea server

bottom of page