Final Project - Post Mortem

The goal of my final project was to create a modular weapon system that anybody that wants to make an fps could import into their project and have a functioning system in minutes. I do feel that I have achieved this. The system has been exported and can be imported into any project with no problems and minimal setup. All of the features that I wanted to implement have now been implemented and while I was late on some milestones after the winter break, I was able to get back up to date later, giving me a lot of time, in the end, to fix bugs and add some stretch goals.

What went well

I thought that all of the visual weapon handling that I created at the beginning of the project immediately made the system feel alive, while there was little interaction other than looking and moving around. It immediately made the system feel immersive, as if the weapons had weight, giving the system some life. 

I'm very proud of the attachment system. Going into the project, I knew what kind of attachment system I wanted to create, but I thought that I was going to run into unforeseen problems while working on it, however, the system turned out exactly how I wanted it. The attachments attach to the weapon in a consistent way, and the modifiers worked almost without issues. I also like the custom inspector that I made for the attachments, it managed to make a very long, and very confusing script seem simple and very much usable.

What didn't go well

The breathing system is something that I do not like, when I created it I thought that it worked perfectly, but I had only tested it at relatively high speeds. If you try to give it a very slow speed, or even no speed, it will not work properly, it can sit still off the centre of the screen, or jump from point to point slowly without any smoothing. 

I was disappointed with the visual stat system, I think that what I have is good, and to the users playing the game, is exactly how I wanted it, however, I have created this system to be as easy to use as possible for the developers, and making them repeat the stats for the system, weapons and attachments is not what I wanted from my system.

What would I do differently

If I was to start this project again, I would go back and first rethink the breathing system. It's something that I think is quite important in shooters, a lot of games utilise this mechanic, and it's a shame that mine isn't as flexible as I had hoped it would be.

I would also change how the recoil system works, I think that it is calculated correctly, I'm proud of how the calculation of the recoil works, it is really flexible and allows the developers to customise it how they like, however, I realised very soon after completing it that I should have created it differently. My recoil system works by getting the next point, then moving the camera and weapon, locked together, to that position. This works nicely for the recoil, however, it does look bad compared to a lot of game today, who have them unlocked from each other, allowing the camera to lag behind, creating a much nicer experience.

If I continued what would I do next

I do plan to continue this system, there is a surprising lack of modular weapon systems with as much detail as mine on the asset store. because of this, I have thought about some things that I will be working on in the near future.

First of all, I do plan to rework the breathing and recoil to be more like what I described above. I feel that these will make a big impact on how the system feels to use.

I will also create more weapon types. Right now I have single, burst and automatic modes, with weapons that only fire single bullets. I plan to add a bolt action firing mode that will allow me to add snipers into the system. I will also add shotgun shells into the game, they will shoot a large number of rays per shot, all of them can then be treated individually to apply damage to a target or just make holes in the walls.

The GitHub for this project is available here:

To ensure that no work is changed after the hand in date for university, I will not be continuing development in this repository.