how use amazon gamelift
+1 Please have GameLift as the core platform to deploy the main example game, as it dynamically spins up more instances on demand + is currently the standard for many successful UE4 multiplayer games.
We will tackle Steam first. Then we will see about Gamelift. Keep the noise coming if you want to see this.
Great to hear that it’s a possibility. Steam is definitely a great step of the way there- getting friends, leaderboards, inviting into groups working etc.
Gamelift would then be the grand finale, as many games can’t use a P2P connection, especially any expecting playercounts greater than 12, or fair competitive play with no player having an advantage.
If I could outline my suggestion for this course- it has the potential to be THE definitive multiplayer course for Unreal, so if it ticks all the boxes, it could be the go to resource for years to come (similar to your C++ course). I’ve been learning all aspects of Unreal for the last few years, and the one area that is extremely lacking is that void between getting a game which works networked in engine, to basically having it work as a standalone package- e.g. launching the .exe and having a working master server list of all current sessions, a party system to join with a friend and be on the same team, persistent stat and leaderboard data which can’t accept client spoofs (must be verified and sent from the game server after each match) (is that also stored on the master server?), a basic match system which goes from a warm up phase, to a match phase, to an end screen phase when win conditions are met, and then either into a lobby or to a new map with the same players. Basically a barebones working multiplayer game.
I realize all of the above are no trivial things to implement and explain, but they are all things that have little to no current reference material or tutorials to learn the WHY’s from. Sure there is some source code around but without knowing the reasons behind doing things or the order in which steps are taken, it isn’t very helpful.
There are plenty of tutorials and docs regarding actual gameplay systems and getting them networked, but I understand that they need to be a part of the course in order for it to be fully comprehensive.
I’m sure you already have much of this planned, but I’d recommend doing something similar to that of the C++ tutorial- start with a few basic modules which introduce the core gameplay concepts first- replication, RPCs, bandwidth, TCP vs UDP, where and how things should be set up etc.
Then move on to that barebones sample game I mentioned above- a crystal clear example of how to set up a very basic game (can be anything really but perhaps a shooter is nice and easy + a good general example). This could entail a simple deathmatch mode- when a player reaches a certain score, the match is won. The big win and massive learning benefit here would be that anyone looking to get their games networked will be able to follow a start to finish example of a fully networked example game, whereas any existing tutorials tend to stop right after deploying to a dedicated server- what use is that, if there’s no way to scale up from there without more knowledge.
Please don’t stop with just Steam, going the extra mile will really make it not only the only multiplayer course that goes from start to finish, but it’ll really fill in that gap that currently is very lacking in the UE4 learning space. Then, the general C++ and this Multiplayer C++ course will literally boast being able to teach you everything you need to know to code AND make a fully networked game!
Really looking forward to the course, and I hope you’ll consider the ideas here. If you’d like a more clear list of things that I feel are lacking or don’t have plentiful docs/tutorial online, I’d be happy to make it.
This is the roadmap we have planned. How far we get definitely needs to depend on how much uptake the course gets. Sharing it where appropriate will definitely help us get it there.
Great to hear, looking forward to it!
Some possible bonus advanced topic ideas if the demand is there:
Client side hit detection with server validation (snapshots / rewinding, used by many games for fair play (CSGO / Call of Duty), or lag compensation techniques in general.
Extending the character movement component for custom movement or otherwise implementing a custom movement ability.
Storing and tracking simple stats per game (shots fired, accuracy, K/D ratio etc.)
Spectating other players.
Replay system when killed.
Region based matchmaking.
Ping lock to prevent high ping players joining or disrupting games if ping changes during the match.
Most of those ideas are much too complex to cover most likely but in case there are some ideas needed for additional topics, I’d personally love any of those to be covered.
Aye, I think Steam is definitely the way to go as a start. So much to learn at the start, no point in overloading (also, not every game will want dedicated servers or Gamelift… $$$)
So starting off using Unreal’s default Steam OSS integration is smart. ServerClientLobbies then dive into Dedicated Servers and Gamelift.
These two look like they have been taken from my planning doc
When is the course going to be available to people outside of those with the ‘lifetime backers’ status?
Since there is no Intro topic yet, I’ll ask the question here:
How easy or hard is it to do the course and test the networked games with only one computer? (my other, portable, computer turned into a brick…it’s apparently the rechargeable battery but the battery is almost as expensive as this model computer had cost! too bad the engineer who designed it didn’t make a “bypass battery while plugged in” design…)
Ya. I think hosting its own game server is more attractive rather than only hosting on steam.
Could you also teach how to provide multi language selection in game option?
We aren’t assuming you have two. It will be easier but we are trying to organise students to test in pairs.
To keep this thread rolling a bit and not forgotten about, I would also like to see custom dedicated servers or NAT punch through and how to do matchmaking and such using that.
So we are not tied to steam for multiplayer and could release on itch.io for example. Maybe even with a self-made account system etc.
Agreed! Has there been any word on the inclusion of some dedicated server stuff?
For example, this is one of the only guides that exists currently and in general server stuff is fairly undocumented: https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)
Some things that would be relevant / interesting:
- Using a free service such as Amazon EC2 to host the servers (the guide above covers this process, but especially for new users some insight on why certain things are done the way they are and the differences in binaries could be helpful).
- Setting up multiple dedicated server instances on one virtual machine to populate a serverlist in game and join via Steam (Similar to what is done in section 3 for non dedicated sessions).
- Explaining what properties can be changed on the client without having to rebuild new dedicated server binaries (often games can hotfix bugs on the client without having to recompile servers).
- Creating or destroying sessions on dedicated servers and having empty sessions ready to be found / after matches are complete, have the server go back to a lobby state and wait for players to join again. (Spawning or destroying server instances is also something I’d like to know about but likely is a very complex topic)
There are many more things like this that I’d love to know and I’m sure many others would too judging by the lack of good docs on dedicated servers for UE4 in general and constant forum/discord questions on the subject.
I’m just learning about this large topic so excuse my lack of knowledge on how difficult or time consuming these could be to teach. One thing is for sure though, even though dedicated servers cost money, they are the most fair way to host games that involve fast paced gameplay. Peer to peer games where one player is host and his connection dictates the experience of other players is increasingly not good enough in the eyes of many players. It looks like LAN, direct IP connect and Steam P2P lobbies are covered in this course- why not go one step further and cover dedicated servers too?
It would really feel complete with that inclusion as it is a very relevant topic in multiplayer games today (A very large % of fast paced shooters / pvp games use dedicated servers (Overwatch, CSGO, PUBG etc.)- even Call Of Duty which has traditionally been P2P has switched to 100% dedicated servers on PC and consoles). It seems this is the standard that players will expect from competitive multiplayer titles, and rightly so due to the fact that no one player can affect the connection quality of others.
Hi guys! I like to play minecraft and have been playing for about 6 years. It is important for me that the servers I play on are of high quality. Once I watched a youtuber who left a link to the servers in the blog ggservers.com for minecraft. When my friends and me entered there, we were very happy. Ability to host your minecraft servers, friendly community and 24/7 technical support. These are the best servers I’ve ever played on. Come and enjoy the game)
We are only using Steam in this course as Epic hadn’t released there stuff yet.
Many games place quite high demands on the server. When hosting remotely, the latency indicators of the players can vary significantly, creating unequal conditions for gamers and disrupting the competitive balance of the game. A dedicated cheap VPS server can help avoid these issues and provide maximum control over the gaming environment by providing players with full access. This way, players across time zones can compete with each other at any time convenient and enjoy the full spectrum of the game features.
Is it possible to use something else, like except steam?
You may be able to run many game servers on the same server host, depending on the game server you are managing. Running numerous game servers on a single physical server is advised in one of two methods. You may select a certain approach or a combination of both, depending on the situation. I am hosting a Minecraft server on tapleto-host.net, and it’s not that hard actually, on this platform especially, because you get so much support that it became even easier for you to host a multiplayer game.
You can use Epic’s Multiplayer Services (not covered in the course)
While Steam may be the most popular, Epic also offers the same sort of services.
If you’re dealing with Apple, you can use IOS Services for mobile games (Necessary I believe) and Android also has their own as well.
Whether or not steam is better is highly subjective. It is like asking if Unity is better than Unreal Engine. They are both very capable and it is down to how you use it.
It depends on how/where you wish to publish your game - Steam, Epic Games Store or other. That should be the deciding factor for multiplayer gaming.