Massive multiplayer, what should i use?

Discussion and feedback on Construct 2

Post » Tue Oct 14, 2014 8:03 pm

So my pet project is an MMO game so I've gone through these questions, again multi-part answer

1) what is your game type... is it evony/Sparta/ogame/domination type thing where the updates are periodic and can be done per second or on demand? ... or is it a league of legends/WOW type game where you need updates on the order of 10-15 times per second.. a huge difference in the bandwidth requirements

2) I've gone for a server-client architecture with the server being developed in perl (just because I know it) and MySQL. The client is being developed in C2


So in an event-driven game, a basic server and hosting facility, I've estimated I can handle 1000 concurrent users in a persistent universe. the biggest bottleneck will be bandwidth but probably not where you were expecting.. I've optimised updates so they are small... but if a 1000 users download a 5 MB file every time they play.. I would be hitting 5GB/day which is beginning to get expensive.

i'd hate to imagine the bandwidth requirements for a realtime mutli-object synced system, but I think the biggest issue would be ensuring that your host has sufficient uplink capacity... if you are using ADSL (A=assymetric) the uplink connection is a poor relation to the downlink and depending on your ISP's policies, it can suffer from laggy behaviour and pausing. this is the reason why most home links can't support decent server performance.

so C2 can be usefully used, but you'll have to pick your game type correctly.

3)
B
7
S
3
G
1
Posts: 184
Reputation: 1,352

Post » Tue Oct 14, 2014 8:32 pm

after a quick reading:
1) you don't need to push all state to clients, only the part of it they're viewing on a big map and possibly for the neighbouring parts of the map (and/or using prediction of where the player is heading to)
2) you can use dead-reckoning to estimate motion of items controlled by other players when you have no data (yet) coming about their actions (e.g. if you have adaptive quantity of data that you pass to the client based on the bandwidth of their connection to your server)
B
14
S
2
Posts: 26
Reputation: 933

Post » Wed Oct 15, 2014 2:07 pm

I have two options,

The first one, is to make it using C2 plugins, making rooms of 1,4,10 people, and when they are sailing (i'm doing a pirate game), it'll get them to a new layout with the sea and stuff, it'll take only the people on the ships and they can fight together.

The second one is to make the same as i wanted at the start, by doing an outside "console" ect...
B
6
S
2
Posts: 46
Reputation: 769

Post » Wed Oct 15, 2014 2:38 pm

viewtopic.php?t=113663

This is exactly what i need, but i don't want someone else work
B
6
S
2
Posts: 46
Reputation: 769

Post » Wed Oct 15, 2014 10:16 pm

Trakan wrote:https://www.scirra.com/forum/viewtopic.php?t=113663

This is exactly what i need, but i don't want someone else work

What he's done is too bloated with 3rd party plugin, might be wiser to hire him to do what you want rather than buy what he's done unless you're willing to take the dependency risk with all the 3rd party plugin support.
Trakan wrote:The first one, is to make it using C2 plugins, making rooms of 1,4,10 people, and when they are sailing (i'm doing a pirate game), it'll get them to a new layout with the sea and stuff, it'll take only the people on the ships and they can fight together.

I don't get the "rooms of 1,4,10 people" part, any reason you need it in such a way?
B
28
S
8
G
4
Posts: 553
Reputation: 4,924

Post » Thu Oct 16, 2014 5:57 am

The number of player in each room depends on the host connection

What do you mean? Multiplayer actions in his multiplayer are related to Q3D?
I don't plan on hiring him nor buy his product
B
6
S
2
Posts: 46
Reputation: 769

Post » Thu Oct 16, 2014 6:17 am

Trakan wrote:The number of player in each room depends on the host connection

Multiplayer room or the ship room? If you're talking about multiplayer room, I don't see how are you going to achieve that, do you have any sort of plan? I'm assuming a game session must have 15 players at a time, am I right? Or it could be just 1 or 4 or 10 in a session?
Trakan wrote:What do you mean? Multiplayer actions in his multiplayer are related to Q3D?

There's no issue with Q3D AFAIK, Q3D is commercially supported, what I meant is, he made his own plugin, a bit too many that he shot his own knee a few times and having problems finding bugged out plugin.
B
28
S
8
G
4
Posts: 553
Reputation: 4,924

Post » Thu Oct 16, 2014 9:06 am

The number of player in each room depends on the host connection


Sorry, I must be missing something - I am probably just confused but I thought from previous discussions you didn't want a player to be the host ("I don't want to use a player as the host"). So why would it depend on anything else than the infrastructure and bandwidth you provide :-?
Image
Game Producer & Independent Developer - http://raphaelgervaise.com
B
24
S
9
Posts: 237
Reputation: 2,232

Post » Thu Oct 16, 2014 9:35 am

Refeuh wrote:
The number of player in each room depends on the host connection


Sorry, I must be missing something - I am probably just confused but I thought from previous discussions you didn't want a player to be the host ("I don't want to use a player as the host"). So why would it depend on anything else than the infrastructure and bandwidth you provide :-?


Server is host, player(s) are peers, but server can handle 100+ peers connected. BUT, peers can only handle 15 other peers connected because host collects info from peers and broadcasts to peers and peers broadcast to peers via host...

Just as example for simplicity.
if peer is running a 1mb/s line his upload is 100kb/s and download is 1mb/s
He has to send data to host and recieve data from host and peers how much data can he send/receive?

How many players can join the same game?
The limit on how many players can join a game is likely to be the upload bandwidth on the host. The engine itself imposes no limit, but there is definite practical limit that will be encoutnered.

The problem is the host has to send a message with data for N players, to each of the N players. For example, if the host needs to send 16 bytes of data for each player, then each message will have a size around N * 16, and then that message will have to be sent N times. This creates an N-squared bandwidth requirement. For example:

10 players = 16 x 10 x 10 = 1600 bytes per update
20 players = 16 x 20 x 20 = 6400 bytes per update
30 players = 16 x 30 x 30 = 14400 bytes per update
...
100 players = 16 x 100 x 100 = 160000 bytes per update

Even though the player count increases linearly, the bandwidth requirement increases proportional to the square. This means even with a significantly more powerful server or less data needed per-player, it won't get you many extra players.

By default updates are sent 30 times a second, so the last example with 100 players would actually require an upload rate of about 5 megabytes/sec (or 40 megabit/sec). This is pretty high for a home connection, but not necessarily a dedicated server.

On top of that the host needs to be able to run the game for a large number of players as well, performing tasks like lag-compensated collision tests, which can be CPU-intensive. Then it may need to be rendering the game for the host if they are a participant as well. Generally the overall amount of work increases quickly with the number of players, and although it depends on the specific game and connection, it's rare to get close to 100 players in one game.


Note: updates sent 30 times per second.
So 100 players would require an upload rate of 5mb/s when a 1mb/s line only has upload of 100kb/s. OOPS!

Sorry I got posted over....

But host(server) can host multiple game sessions with 15 peers in each lobby. Because the bottleneck won't be the host, it will be the peers restrictions.
Last edited by DUTOIT on Thu Oct 16, 2014 9:43 am, edited 2 times in total.
You think you can do these things, but you can't, Nemo!
Just keep reading.
Just keep learning.
B
65
S
16
G
9
Posts: 1,429
Reputation: 12,718

Post » Thu Oct 16, 2014 9:37 am

Refeuh wrote:
The number of player in each room depends on the host connection


Sorry, I must be missing something - I am probably just confused but I thought from previous discussions you didn't want a player to be the host ("I don't want to use a player as the host"). So why would it depend on anything else than the infrastructure and bandwidth you provide :-?

Lol I'm just as confused as you are. I can't quite relate the situation with the 1,4,10 room thing.
B
28
S
8
G
4
Posts: 553
Reputation: 4,924

PreviousNext

Return to Construct 2 General

Who is online

Users browsing this forum: Animmaniac and 8 guests