Do I need to run specific dedicated server at the start of my game developement?

Hi,

I’m still learning about online game development and I was wondering if I needed to run my game on a dedicated server from the beginning of my game development.

Right now, I’m looking to use Amazon Gamelift and found a lot of tutorials on the matter. All of them use Unreal’s source code to run the game online.

I’ve read that Unreal Engine can simulate a dedicated server locally, would that be the same as using an Amazon server? Would the code written for the local server be the same for the Amazon one? (Do I need to build Unreal myself for the local dedicated server?)

During development, do I need to use an Amazon server from the get-go (and if so, do I need to submit a file to the server everytime I make a change?) or can I just use the Unreal Engine local dedicated server feature ?

Looking forwards to your answers,

Thank you.

No you do not have to have a dedicated server for initial development. The engine provides emulation via Play in Editor (Client Mode).

Through advanced settings you can also emulate connection quality to further test.
Editor Preferences → PLAY

1 Like

“dedicated server” also means different things in different contexts.

Unreal Engine games can run in approximately three modes:

  1. Everything happens in one process. This process is both “client” and “server” at once. If you do split-screen multi-player, it’s still all in this one process. This is perfect for single-player games, and for split-screen-only multiplayer, because it’s the simplest – no RPC or messaging involved; just jam the values you need into the objects that need them!

  2. You have a single process per player, but one of those processes knows to listen on the network and accept other players – it “becomes host” or “becomes server” at that point. This needs all of the multiplayer development setup, with RPC calls, figuring out whether you have authority, and all the rest. However, the “server” is also one of the “players,” so for that player, it looks a lot like case 1 above, but other players are running remotely, and don’t have a local “server/authority.”

  3. Running a dedicated server process. This is a separate process, no player is directly playing within it, typically it won’t even render to the screen. Every player connects to this process, so every player is the same kind of “client” – there’s no “host/server” client/player.

These are all topology from the point of view of the game engine, but not from the point of view of the hardware. The “dedicated server process” above could totally run on the same physical computer as one (or more!) of the client processes.

Separately, a “dedicated server” may also mean “a dedicated server computer.” Typically, that dedicated server computer would run in the cloud, and something like Amazon is a fine provider of those kinds of resources. On that “dedicated server hardware” you will run a “dedicated server process” that other players can connect to, but the word “dedicated server” means something different in each of those cases!

When you develop a networked game, it’s a really good idea to actually test in dedicated server process mode (on your local machine) with some frequency, to make sure you’re not getting anything wrong, and you catch bugs early. However, you don’t need to worry about renting space on dedicated server hardware in the cloud, until it comes time to actually host/sell your game. (Or, slightly before, because you still need to test and debug things that are specific to that setup!)

So, when starting out? You might want to just use single-player, while you’re getting to know the engine and the gameplay. It’s almost never a good idea to make your first game be a networked game, because just “make a game” is hard enough. Once you know what the game should be, you can re-build it for multiplayer, with more experience of what to do.
Note that it’s almost always not a good idea to take a single-player game, and try to “slightly change it” to be multi-player. That almost never actually works out well in the end. Once you know what gameplay should be, and have all of the art assets, re-developing the game in a multiplayer setup is typically the better option.

2 Likes

If you are just starting out I would not recommend using any AWS service other than just a plain EC2 instance using a free tier version instance to launch you dedicated server on. With that being said AWS or an external server provider is NOT necessary to test dedicated server development.

You can do it locally Setting Up Dedicated Servers | Unreal Engine 4.27 Documentation following those instructions. If get confused there are videos that step by step on youtube those steps.

Also I do recommend you know how to do this early on because when you code if you dont, you can run into situations where you think your code is networked properly but its not.

1 Like

Thank you so much for the detailed answer. Everything feels so clear now.

I must say that the game we’re making is designed from the ground up to be a multiplayer experience. We’re not trying to fit a single-player game into a category that may not fit it.

Most of the game core mechanics are already programmed in Unity with no online connectivity implemented yet. As a single-ish player experience (it’s a fighting game). Ever since Unity changed their pricing plan, we decided to move over to Unreal while trying to understand how we should make the game online now.

Needless to say, your answer helped us a lot in that regard.

1 Like

Oh, that’s an interesting situation. New to Unreal and Unreal-Multiplayer, but have the game and the art already.

I would probably start by watching the multiplayer tutorials from Epic on YouTube. They’re for version 4.x but still pretty applicable. They also use blueprint only, which is a good way to get a feel for it without having to dive into the C++ specifics of UPROPERTY and DECLARE_MULTICAST_DELEGATE right away …

There’s also a complete, networked game called Lyra, that uses both C++ and Blueprint; it solves essentially all the challenges you’ll run into with an online game, AND shows how to use most parts of the engine, so I highly recommend downloading that and running it through its paces. You will have to read code, step in the debugger, and refer to documentation (and engine source! I highly recommend downloading engine source!)

Good luck on your conversion!

2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.