The story behind “Hired” guns

Daniel Millan
6 min readNov 8, 2021

--

Making a game for our portfolio project ended up being both productive and fun. We started making it because we wanted to make a game from a long time ago, but we also wanted to experiment the thrill of making something new from scratch, without much previous knowledge.

“Hired” guns is a cooperative first-person shooter with dreams of rogue-like. We aimed for thins game to be a fun experience with mechanics that makes both players work together in order to have a successful match. It’s oriented for gamers of any age, that are looking for a good shooter with a rogue-like experience.

We were a little shorthanded, since it was only two of us. Tomas Martinez and myself, and we only had 6 weeks to finish this project; the first 3 to think and plan the whole project, two to actually make the game and the last one to make the presentation and the landing page. But even so, we were able to make an MVP that shows both the potential of the game as for our potentials as individuals.

A little backstory about myself and videogames

Player animation

Ever since I was little (5 – 6 years old), I’ve been in contact with the videogame industry, always experimenting with a computer and keeping up to date with the games of the moment.

My uncle bought a PS1 when I was around 5 years old, and my father was already a Counter-Strike fan player. That, together with the people I got mixed up in school/college is what made me decide to give it a try in making a video-game for the portfolio project.

This is something I feel passionate about. It really aligns to what I’m looking to do as a professional and what I enjoy doing, preparing experiences for other people.

Technologies

We decided that developing our own game engine AND also make the game in two weeks was way too unrealistic, so we decided to use a 3rd party game engine in order to make our MVP.

We decided to go with Unity because of the quality of the documentation, the good support of the community (Tutorial videos, blogs, forums, etc…) and that we knew a peer that had already used this engine. We still think that it was the right call.

Now, Unity works as a game engine, but in order to make a online multiplayer game, we needed to make all the networking and build all the connection between hosts. We also agreed that making all this with such a tight deadline was a high bet.

For this we used Photon, an Unity framework that gives tools to make the connection of both hosts easier and simpler. It also had a decent amount of documentation and support of the community as well.

And last but not least, we used blender as our 3D modeling software mainly because it’s free, in difference with the rest 3D modeling suites that are deployed. But we also decided to go with blender because of the support of the community.

Features

This game features are:

A cooperative experience

You can work together with a friend, or how the game likes to call it, co-worker, in order to meet the company’s Laboral expectations. The game can only be played in teams of two, so a partner is required in order to play.

AIs as enemies (or work optimizers, as they are called in the game)

We had different kinds of enemies that made the game fun to play. In order to progress through the levels, you needed to clean all the enemies in the room you were in.

Clear rooms, get credits

In reward of making an excellent job, you’ll get access to our famous Company Credits, which you can use to buy anything you need to avoid a premature decease.

Hardest challenge for our project

When developing an online game, you have to make sure to sync all the necessary information for both players to share the same visuals and experience. In our case, things like enemies, doors, health status, ammunition's, props and more things needed to be sync in order to make the multiplayer part of our game successful.

Now here comes the challenge. When syncing data, you have to take in account the amount of packages you are sending, the delay that may happen between sends, and the time it takes a less powerful computer to make this calculations and send them over. At first we had a lot of information coming and going, and this made all the enemies look buggy and very broken. After a thoughtful research and thinking, we found out that we could optimize it in a way that each client could do the hard calculations that caused the lag, and only syncing the target. This proved to be very efficient and fixed the enemies issue.

Aside from this, the game spawns and makes tons of calculations for enemies that aren’t in the same room that the player is. This makes low spec computers to delay in the processing of this information, and taking more time to send this information to the other client, and this creates a huge delay in the gust client. This got fixed making a room functionality that only spawns the enemies of the room that’s currently being played, which means that only the enemies visible to the players are the ones being calculated.

I learned a lot of things while developing this. Making and developing a project may be complicated, but it’s rewarding. The amount of teachings that I took from only this single project still keeps me awake at night when I think about it. From managing to planning ahead of time and setting deadlines. From looking what it’s needed to make something to the possible challenges and counter measures that you may need to implement. This portfolio project was a great opportunity to evolve as an individual.

Putting aside the managing skills, I also learned a lot of programming and game design skills. The amount of preparation and thinking that a game requires in order to make every part of it cohesively and to follow the same idea. The amount of design and also thinking that takes to make a good structure of classes and functions in order to make an inheritance tree that makes sense and that simplifies things in the long run.

About me

I’m a focused and realistic programmer that has previous experience in graphic and multimedia design because of previous jobs. Always wishing the best, but being prepared for the worst.

It was indeed a rewarding experience, and surely it will not be the last game/project I’ll develop. Thanks for reading this, and thanks a lot to Holberton to give me the chance of experimenting such a wonderful thing.

--

--