Making an FPS Multiplayer Game is HARD!

My Final Video on making a FPS multiplayer game in the Godot Game Engine. Knowing how is only a tenth of what’s required in this marathon of a task.

So I’ve been on a bit of a journey the last few months. It all started out with me putting together an FPS prototype and I was having fun making some content along the way. And I thought to myself. I could make a basic FPS with a Basic story and just put that out. You know something achievable. But You know, this is not hard enough, I need to elevate and challenge myself. I need to make an FPS multiplayer .

I was wrong.

Take me back to easy mode please. It’s game dev on steriods. It’s way more work than making a simple game. Depending on the tools you use the implementation can be easy but the sheer amount of different aspects you need to make it “online” are huge.

If fact I would argue the set up of a online game isn’t particularly difficult. Because it is such a massive part of the video game landscape there are a lot of different solutions even for an engine like Godot. There’s maybe 2 or 3 new functions you need to learn and a little bit of maths. But learning this is not the hard part. It’s the set up.

So you can connect two clients through a server. Fine. But what do you do with it once you have that. It’s hello world all over again. You’re starting from scratch because it’s not just a matter of getting the connection registered. It’s what you do with it after that’s hard. How do you get two players interacting, how do you handle objects in both clients. What about the animations and the lag. There’s so much. So my one take away from when I started back in November is that You can’t take a game and make it online. If you’re going to make an online game you’re probably better off starting from basics and building from there. Because everything needs to built for an online use case. Your base game is going to be pretty much entirely rewritten, except for player movement… probably.

I learned a lot

I might be a full time linux user but it’s mostly because I like the overall simplicity and to tinker, not because I’m some sys admin guy or developer who uses it every day at work. So I knew nothing about how networking actually works when I started this. I didn’t even know what “ssh” was or how to do it.

Starting out with FPS multiplayer in Godot there are a few main options for a server based FPS multiplayer game. Your first option is Godot itself. It has it’s own high level FPS multiplayer API and you can make a game using Godot as the server for your godot game. This makes performing certain actions a total breeze as Godot obviously understands scene structure and of course you can code everything in Gdscript which is convenient for me, since it’s the programming language that I’m most familiar with.

There a number of other options out there for Godot Users like Nakama by heroic labs. You might have seen there logo on the loading screne in Godot. I hear it’s good but I’ve got no idea how it works compared to doing it entirely in Godot.

From what I’ve read you can really do it with any tool, you would just need to write the code to implement it, if it hasn’t been done before. But I’m not an expert of these kinds of things.

I watched a stack of tutorials

Got everything hooked up for the client server and tested a deployment on a free Oracle server. In hindsight, it’s not hard to deploy a server but never having done it before, I wanted to understand that early so I could get that base knowledge under my belt waaaay before I ever tried to deploy an actual game.

This might seem counter intuitive, to start at the end and work backwards. But I had a lot of anxiety around building an entire and not being able to deploy it because of something dumb that I had forgotten to consider. I wanted to prove that I could get something deployed before I had anything to deploy.

So I had no idea about ports and ip addresses or even what a headless application was. So it was a massive learning curve getting that out of the way. In the end I was able to actually use a tutorial on how to set up a private CSGO server in order figure out how to configure my server and allow connections from my client. Then I was able to use a tutorial from community news guy Coding Kaiju to learn how to use SSH and actually transfer my files over to the server. I was able to properly set up a server that can be accessed from anywhere in the world.

After that it was on to learning how to actually make an online game. This is where fellow youtuber Game Development Centre came in. He has an amazing tutorial on how to set up a pure godot server. I went through that and with what I learned there I was able to get this going. Which is pretty much the bare bones of an online FPS multiplayer. I haven’t fully configured the shooting yet but it really shouldn’t be too much more to set up.

This is maybe 25% of What I wanted to Achieve…

And To be honest I’m having my doubts if I want to continue. As far as personal growth is concern this has been incredibly beneficial. I’ve learnt more about networking than ever and I’ve gain a new appreciation for this proffession. I’ve gained pretty much all the knowledge I need to make the rest of this happen. I just need to do it. But as far as a channel growth and actual progression is concerned. This has been a bit of a thorn in my side. Since I don’t want to make tutorials on multiplayer, so I’ve essentially avoided making any videos about the multiplayer. I had originally started this project primarily because I thought it would make for interesting content. But That hasn’t really materilized and I don’t have any real drive to make a online FPS game.

And without any real momentum on my channel I don’t think a multiplayer game would be a very viable thing to release. My other concern is security. I’m not an expert, in fact I’m quite the opposite when it comes to security and I don’t think I would be able to put something out and guarrantee that it not have some kind of vunerability. And I would hat to put out something that puts people at risk.

I hate quiting things but the reality was I was never going to try and make a full game, it was always just an experiment. And it’s cost outweighs the benefits, so it’s time to cut it off.

Watch On YouTube!

Download the FPS Template


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *