How to make a multiplayer game?

G

Guest User

Guest
Hi, I'm pretty new to Game Maker, and am making a basic top down shooter game. I'd love to make it like a typical multiplayer, so players join a server and battle each other. However, I am getting stuck on where to start.

I've watched a few networking tutorials and read through some of the networking documentation, but it's not really sinking in.

I understanding networking is pretty advanced, so maybe I'm not there yet, but I was wondering if anyone knew of a good place to start? Is there a multiplayer engine for Game Maker Studio 2? (thats what I'm using). Or is the best way just to crack on with the tutorials and keep going?

Any advice/help in the right direction would be great.

Thanks!
 
Last edited by a moderator:

FrostyCat

Member
Start by learning data structures and buffers, building a basic ping and chat server, and reading up on how correspondence chess works.

The last one is important, because that's the ideological barrier most rookies these days get stuck on. I've been watching people trying to learn networked game development for a whole decade (and I've been one myself in that timeframe), and here's my observation:
  • People who treat multiplayer game development like correspondence chess always know what their next move is.
  • People who treat multiplayer game development like in-person chess are too misguided to do anything worthwhile.
  • People who are too lazy or stupid to think about what the relationship is are a waste of time to teach.
Though multiplayer development has a lot of moving pieces and can be hard to master, compared to many other skills in game development it is relatively easy to pick up. How many other skills in game development hinge on clicking just a single idea into place?
 
G

Guest User

Guest
Thanks. Is there any good material that you would recommend for learning this?
 

Binsk

Member
Really? I think you are falling into the "lazy" category.

You were just given the essential concepts to start learning. Go out and research them.
 

Misty

Member
The best thing of multiplayer dev you need is dudes to rely on. Without the dudes, youre like a tank stuck in water.
 

samspade

Member
Hi, I'm pretty new to Game Maker, and am making a basic top down shooter game. I'd love to make it like a typical multiplayer, so players join a server and battle each other. However, I am getting stuck on where to start.

I've watched a few networking tutorials and read through some of the networking documentation, but it's not really sinking in.

I understanding networking is pretty advanced, so maybe I'm not there yet, but I was wondering if anyone knew of a good place to start? Is there a multiplayer engine for Game Maker Studio 2? (thats what I'm using). Or is the best way just to crack on with the tutorials and keep going?

Any advice/help in the right direction would be great.

Thanks!
There's a reason most indie games and games from small studies don't include online multiplayer. Networking is complicated, and there aren't a lot of good GML specific tutorials. I admit that I tried after a year of programming and progress was so slow I gave up as development was just stalling out. But there are some resources. Gloomy Toad Studios as a number of videos on it, but they aren't very cohesive. However, he probably has the most stuff available for free on YouTube. I know there's one on Udemy but I haven't tried it. There are several free marketplace assets the deal with networking. You could also look outside of GML where there are more resources. This would ultimately require you to translate it back into GML. These are the things I looked into before deciding the time commitment to learn it was greater than my interest in making a multiplayer game :)
 

Pfap

Member
Start by learning data structures and buffers, building a basic ping and chat server, and reading up on how correspondence chess works.

The last one is important, because that's the ideological barrier most rookies these days get stuck on. I've been watching people trying to learn networked game development for a whole decade (and I've been one myself in that timeframe), and here's my observation:
  • People who treat multiplayer game development like correspondence chess always know what their next move is.
  • People who treat multiplayer game development like in-person chess are too misguided to do anything worthwhile.
  • People who are too lazy or stupid to think about what the relationship is are a waste of time to teach.
Though multiplayer development has a lot of moving pieces and can be hard to master, compared to many other skills in game development it is relatively easy to pick up. How many other skills in game development hinge on clicking just a single idea into place?

Just saw this comparison for the first time today and I have to say I really like it! The more I learn about networking the more I seem to discover that "real time" is a myth and you have to use time and math and all sorts of other variables to compensate for things that could prevent a game from being truly synchronous.

The book "Multiplayer Game Programming" by Joshua Glazer and Sanjay Madhav is pretty in depth I think it may be more of a college text book, but it really covers the complexity you could expect to encounter when developing a real time multiplayer game.

Having said that I would personally recommend you try setting up an apache web server on a raspberry pi, ubuntu or some other Linux system. Digital Ocean has great tutorials and then play around with http and gamemaker. https://www.digitalocean.com/commun...install-the-apache-web-server-on-ubuntu-16-04


EDIT:
To run scripts on an apache server you would probably need to use some Php, but I've found that if you are good with Gml it's not too difficult. Also, Php's documentation is pretty good.
 
G

Guest User

Guest
There's a reason most indie games and games from small studies don't include online multiplayer. Networking is complicated, and there aren't a lot of good GML specific tutorials. I admit that I tried after a year of programming and progress was so slow I gave up as development was just stalling out. But there are some resources. Gloomy Toad Studios as a number of videos on it, but they aren't very cohesive. However, he probably has the most stuff available for free on YouTube. I know there's one on Udemy but I haven't tried it. There are several free marketplace assets the deal with networking. You could also look outside of GML where there are more resources. This would ultimately require you to translate it back into GML. These are the things I looked into before deciding the time commitment to learn it was greater than my interest in making a multiplayer game :)
Thanks for the reply. That’s helpful. Will look into that
 
G

Guest User

Guest
Just saw this comparison for the first time today and I have to say I really like it! The more I learn about networking the more I seem to discover that "real time" is a myth and you have to use time and math and all sorts of other variables to compensate for things that could prevent a game from being truly synchronous.

The book "Multiplayer Game Programming" by Joshua Glazer and Sanjay Madhav is pretty in depth I think it may be more of a college text book, but it really covers the complexity you could expect to encounter when developing a real time multiplayer game.

Having said that I would personally recommend you try setting up an apache web server on a raspberry pi, ubuntu or some other Linux system. Digital Ocean has great tutorials and then play around with http and gamemaker. https://www.digitalocean.com/commun...install-the-apache-web-server-on-ubuntu-16-04


EDIT:
To run scripts on an apache server you would probably need to use some Php, but I've found that if you are good with Gml it's not too difficult. Also, Php's documentation is pretty good.
Cheers, will take a look into this as well. Thanks for your help
 

The-any-Key

Member
There is a lot to learn when it comes to multiplayer. You can break it down into how to solve different problems like:
  1. Problems before a multiplayer game (Firewalls, antivirus...)
  2. Problems to connect each player (peer to peer, HTTP, server/client, dedicated Linux server, UDP, TCP...)
  3. Problems to sync data between players (bundle, single send, id system, key send...)
  4. Problems with lag (server consolidation, paradox fix...)
Coding a multiplayer game is like solving a mix and mach game. Each solution for each problem is a part of the whole picture. If you skip one part you will have a head-less multiplayer game (yes, that was a server joke). Depending on what solutions you come up with, it will reveal the picture and what the game will be capable to do. Even if you want a big bad robot that can do MMO in any network configuration. Your final picture can't look like a small kitten with tiny arms and no legs. Less effort from your part = Less big bad robot. Nothing "just works" in multiplayer games.

If you are about to start making your first multiplayer game, I suggest only do 2 and 3. This will make your game only work in very limited situations. But its ok as a starting point.
Tips is to create a turn based multiplayer game (ex tic-tac-toe). This allow a better learning curve. Because you can often see the problem in a turn based game. In a real-time game you don't always see what happen, making bug-fixing very hard.

 
Top