Massive multiplayer, what should i use?

Discussion and feedback on Construct 2

Post » Tue Oct 14, 2014 3:49 pm

Remember we aren't talking singnalling server...;) this just connects host and peers to each other. The server is the actual host server the one that has a chrome installed and running 24/7 as host.
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 » Tue Oct 14, 2014 3:52 pm

DUTOIT wrote:Depending on the type of game, depends on the strategy. I've seen people break a map up into segments, so only those players in zone A are connected to each other. Those in Zone B, etc this makes because zone B has no interaction with zone A... it also allows the game to appear to have 100's of players on the map, when in fact they aren't actually playing together. The issue comes in(well not an issue, just a matter of brain application) when player moves into another zone, he then has to auto connect to new zone without him knowing it. Its that split second lag, jitter you get when running over some invisible line - lol.


Oh reminds me of the pokemon multiplayer prototype i made using Websockets, it was nice, i could teleport player on another instance.

Speaking of my project, i don't think i'll have alot of problems with zones, i already planned it, there won't be that much zones
B
6
S
2
Posts: 46
Reputation: 769

Post » Tue Oct 14, 2014 3:54 pm

Trakan wrote:Do you think i can make the server outside of the actual game? A different project

Yep, I'm actually doing it.

Trakan wrote:Speaking of my project, i don't think i'll have alot of problems with zones, i already planned it, there won't be that much zones

You might want to consider sharding your host, depends on your game genre. Pokemonesque movement id fine, but for fast pace you'd want to run several zones/host instead.
B
28
S
8
G
4
Posts: 553
Reputation: 4,924

Post » Tue Oct 14, 2014 3:56 pm

DUTOIT wrote:Also...

100+ players connected concurrently... and considering you need to pass info to a database. You are talking 1 hosted server, the actual reality is you will need 10+ dedicated servers just for your database.



This sounds incredibly unrealistic to me. I run web servers that get thousands and thousands of uniques a day, and they hum along fine on a single mid grade server. If you needed 10 dedicated servers for 100+ players MMOs would not be technically or financially feasible. The some of the higher traffic websites in the world typically operate on fewer than a handful of servers.

If you are serious about an MMO you probably do not want to be using construct2, and if you in, in the very least, you need to write your server daemon in something that is not in C2 (C++, maybe Node, Java, Go, etc)
Developing Surolace, the survival role playing space game.

surolace-survival-role-playing-space-game_t116953
B
14
S
4
Posts: 303
Reputation: 1,730

Post » Tue Oct 14, 2014 3:58 pm

Do you think i can make the server outside of the actual game? A different project


The C2 project is where you define the objects to synchronise, what to synchronise, and the format of the data. Then C2 handles it all under the hood for you.

If you don't do that, it means you'll end up fighting the system more than using it.

It doesn't mean it's not doable (I'm sure DuckfaceNinja has some clever tricks to share :D ), it means it'll be counter-productive. You still have the option of web sockets. But when talking "easy" C2 multiplayer, think "Risk of Rain", not "Realm of the Mad God", for example.

As for a standalone "server", if you have the knowledge to analyse the C2 marshalling to write a separate system that will interact with a C2 peer or multiplayer-enabled object, you have the knowledge to write your entire system altogether, which would be easier in the first place as you wouldn't need to fight the existing structure. Though we're talking significant amount of work for a veteran networking programmer.

C2 is designed to fast productivity for simple games. If it's not saving you time, you're not using the right tool.
Image
Game Producer & Independent Developer - http://raphaelgervaise.com
B
24
S
9
Posts: 240
Reputation: 2,238

Post » Tue Oct 14, 2014 4:05 pm

skelooth wrote:This sounds incredibly unrealistic to me. I run web servers that get thousands and thousands of uniques a day, and they hum along fine on a single mid grade server. If you needed 10 dedicated servers for 100+ players MMOs would not be technically or financially feasible. The some of the higher traffic websites in the world typically operate on fewer than a handful of servers.

I think he meant 10 separate session of chrome (10 tabs) as host, if we're discussing in the context of C2 MP plugin.
Changing between rooms took 1-3 seconds from my tests, I think this is somehow acceptable for a player moving from a zone to another zone.
refeuh wrote:It doesn't mean it's not doable (I'm sure DuckfaceNinja has some clever tricks to share :D ), it means it'll be counter-productive. You still have the option of web sockets. But when talking "easy" C2 multiplayer, think "Risk of Rain", not "Realm of the Mad God", for example.

It's not a clever trick at all, but it is exactly as you said, it's counter productive. For me, I make decision to go down on that path simply because I want to reduce as much tools as possible to be able to create a multiplayer game.

Note on, creating a different project for the host, this is a very difficult to do. Imagine this, I'm capable of making a multiplayer bomberman game, fully functioning in just 2 days (with placeholder sprite of course). The amount of time I'm building/tweaking my host project, I started it in mid july, and it still ongoing now, this only involves logic and data management, I haven't even started on any visual on client. That is the direct comparison of the difficulty level, it just that much.
Last edited by DuckfaceNinja on Tue Oct 14, 2014 4:14 pm, edited 1 time in total.
B
28
S
8
G
4
Posts: 553
Reputation: 4,924

Post » Tue Oct 14, 2014 4:07 pm

Ooooh okay that makes LOT more sense.

The only problem with having an external non C2 server is that C2 can't embed system languages like php or C++ so you're options for connecting are limited.

Can websockets interact with conventional berkley sockets?? If so, writing a server wouldn't be trivial but would be entirely doable. Especially if you were to incorporate something like pubnub to help take the strain off broadcasting.
Developing Surolace, the survival role playing space game.

surolace-survival-role-playing-space-game_t116953
B
14
S
4
Posts: 303
Reputation: 1,730

Post » Tue Oct 14, 2014 4:38 pm

@skelooth,

Yeah, sorry what duckfaceninja said.
I think he meant 10 separate session of chrome (10 tabs) as host, if we're discussing in the context of C2 MP plugin.


Was thinking one thing, meaning another... We are talking C2 MP plugin, with Hosted Sessions?

Oh this...
This sounds incredibly unrealistic to me. I run web servers that get thousands and thousands of uniques a day, and they hum along fine on a single mid grade server. If you needed 10 dedicated servers for 100+ players MMOs would not be technically or financially feasible. The some of the higher traffic websites in the world typically operate on fewer than a handful of servers.


I was refering to "Massively" multiplayer which is 100,000's of thousands. Not that OP was thinking that many... but that is what "Massively" Means. Not all connected together in same room together - lol, but running multiple games of 100+ users.

Dayz has 30 people per server to give you an idea and they have tons of issues. H1Z1 are talking 1000, I would very much like to see this. COD has between 15 and 30... etc etc.

I know, I know, don't byte my head off, we talking C2, not some "Massively Multiplayer game" which is what the title said ;)


But I am also talking 2 things at once...
1 self developed option (databases, etc)
2 MP Plugin (multiple hosts)

1) a 1000 people accessing a database is 1 thing (your websites) it is entirely different having data flow bothways similtaniously. Users are not only retrieving data, but also writing data (big chunks of data) - sometimes every tick, 60 times a second. Sorry, but your shared hosting isn't going to cut that sort of load. So it is very realistic.

2) You will need to have multiple hosts (10+ tabs) and not put all peers together... as you will hit bottleneck... ashley actually wrote a bandwith chart....
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

Its just a matter of doing the math, to work out what your requirements will be.
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 » Tue Oct 14, 2014 5:54 pm

In the case of C2 built daemons you may be right. In the case of a server daemon written in a systems language and using an appropriate tech stack the situation is not nearly as dire.

The *only* thing 10 physical servers give you is redundancy and clustering. Its clustered processing power is for the most part equal to or slightly less than a single server of the combined physical specs.

In terms of multiple software servers (ie, multiple database instances), it's common to have a read only master and readwrite slave setup, and again, can be happily implemented on multiple servers or a single server.

"thousands" is not a big number, and I'd be weary of whatever hosting it is you use if it is. I run all of my servers on rented rack space.

And again, depending on technologies used and technologies available, things like broadcasting and caching can be handled by mostly inexpensive third party services.

I understand C2 users are typically not programmers, so there's a lot of misconceptions and hyperbole.

To be absolutely clear, I am refuting the notion that "100s of users" would require "10+ servers" especially when the concept of server is so ambiguous.

Total bandwidth is literally an issue solely of the pipe leading to and from your datacenter and the hardware that handles it.
Developing Surolace, the survival role playing space game.

surolace-survival-role-playing-space-game_t116953
B
14
S
4
Posts: 303
Reputation: 1,730

Post » Tue Oct 14, 2014 6:24 pm

skelooth wrote:In the case of C2 built daemons you may be right. In the case of a server daemon written in a systems language and using an appropriate tech stack the situation is not nearly as dire.

The *only* thing 10 physical servers give you is redundancy and clustering. Its clustered processing power is for the most part equal to or slightly less than a single server of the combined physical specs.

In terms of multiple software servers (ie, multiple database instances), it's common to have a read only master and readwrite slave setup, and again, can be happily implemented on multiple servers or a single server.

"thousands" is not a big number, and I'd be weary of whatever hosting it is you use if it is. I run all of my servers on rented rack space.

And again, depending on technologies used and technologies available, things like broadcasting and caching can be handled by mostly inexpensive third party services.

I understand C2 users are typically not programmers, so there's a lot of misconceptions and hyperbole.

To be absolutely clear, I am refuting the notion that "100s of users" would require "10+ servers" especially when the concept of server is so ambiguous.

Total bandwidth is literally an issue solely of the pipe leading to and from your datacenter and the hardware that handles it.


Yes, I agree... I'm referring to 100's of thousands of connections. 1000's of games playing, each having a 100 users. each user sending updates ever tick. That is what massively multiplayer is.

I am drawing a line: Massively multiplayer is X and Multiplayer is Y

For a few 100 users wanting to play together I agree 100 hundred percent a single server will have no issues.
I am harping on the "Massively" part ;)

MP plugin can't handle massively multiplayer, but it can handle some pretty big little multiplayer games. Of course using duckfaceninja's method/ashley's method, you can scale pretty big.

In the end it is all dependant on what you want to do, and you will use the correct tech that gives best results. The available options for new users/no programmers in tutorial section is php/mysql and some socket, both are not ideal for a massively multiplayer game, smaller scale yes. But large scale no.

There are lots of ways, which will handle it very easily. But will require... actually I don't even think it is an option for C2.... Bottom line C2 isn't made for massively multiplayer.

I love multiplayer plugin, but I am not developing for "massively multiplayer"
I plan to have 2-8 players with about 100+ lobbies. Max 800 concurrent which is still steep, but I am hoping doable with MP plugin... Once I've reached that, I will think about ways to scale.
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

PreviousNext

Return to Construct 2 General

Who is online

Users browsing this forum: No registered users and 4 guests