So I’ve been developing Project Number 2 for a few weeks now and thought it would be a good time to write the first development progress update.

Player movement

As I’ve mentioned before the game will be a first-person shooter. So it seemed only logical to start from there – get the player controls working. I used a snippet of code I had written about half a year ago for prototyping purposes. It was a pretty messy chunk of code and needed some refactoring, so it has changed quite a bit.

GIF

I’m going to do my best to use Object Oriented Programming best practices when developing Project Number 2. That means keeping all the code well organized, grouped logically and using a specific style in all scripts. That has lead to longer analyzing and planning. You can’t just throw something together and expect it to withstand all the features you come up with in the future. It would be such a mess. I’ve worked with code that was developed like that and it is a bad time for everyone. Development took way longer than it should, bugs were a common occurrence and the code was not optimized.

Multiplayer

So I got the player to move and look around like I wanted in just one day. I then proceeded to conquer the next big thing for me, which was multiplayer. I had heard horror stories of developing a multiplayer game. A fellow game developer told me that the difficulty of FPS game development will grow exponentially if you add the multiplayer factor to it.

I’m sure he is right, but for now, I was pleasantly surprised by how easy Unity has made the starting process of multiplayer game development. Unity even offers a free server for multiplayer testing where up to 20 people can be online at once.

GIF

What makes multiplayer development so much more difficult is the fact that some things have to happen only on one person’s computer, while some things have to happen on all people’s computers simultaneously. Messing some things up may lead to some pretty funny errors. For example, all players in one match jumping while only Player 1 pressed the spacebar.

Shooting

When I got all players moving around and jumping like I wanted the next big thing was shooting, damaging and killing players. That is where I stumbled even more. Luckily I found a series of tutorials on YouTube by Brackeys. Asbjørn Thirslund, the creator at Brakeys, has made a tutorial series Making a Multiplayer FPS in Unity that covers really well exactly what I need right now.

GIF

I managed to get multiplayer shooting working. That does not mean I have a fancy machine gun that bursts bullets out of a barrel with bone-chilling sounds, leaving it smoking while the second magazine is being loaded. No, there are no sounds, there are no animations and there are no effects that indicate that the player actually pulled the trigger. They will come, I just haven’t gotten to it YET. For now, you just have to settle for the sounds your clicky mouse makes. The cheaper your mouse, the greater the effect!

The dying is also a bit funny for now. When one player shoots, then small blue balls will appear where the bullets hit. If the player gets hit too many times, then it’s movement freezes and the player falls through the world. After a few seconds, the player respawns and can play again.

Trolling

Now, to already add a little character to the game I decided to start implementing one of Project Number 2’s core aspects – the goofiness. That includes player versus player trolling. I discussed this with a friend of mine at the gym and he suggested something I hadn’t thought of before, but really liked. Throwable banana peels!

GIF

Video!

To give all readers a better taste of what the game feels like I put together a simple update video.

I’m thinking about maybe releasing playable updates of the game in the future, but there is one problem with that. Unity only gave me a 20 person server for free for development purposes. Having all those 20 seats taken when I need to test some new multiplayer features would heavily slow down development. I’ll have to look into it further to find out if there is a workaround for that issue.
But until then, I hope you enjoyed this update!