Massive multiplayer, what should i use?

0 favourites
From the Asset Store
The official Scirra Multiplayer Signalling Server for helping peers find and connect to each other
  • 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.

    It doesn't mean it's not doable (I'm sure DuckfaceNinja has some clever tricks to share ), 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.

  • 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.

  • skelooth,

    Yeah, sorry what duckfaceninja said.

    [quote:23r90xgg]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...

    [quote:23r90xgg]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.

  • 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.

  • 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.

  • 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)

  • 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)

  • 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...

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • This is exactly what i need, but i don't want someone else work

  • scirra.com/forum/viewtopic.php

    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.

    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?

  • 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

  • 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?

    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.

  • [quote:3rxtlxru]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

  • [quote:1ejnci41]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?

    [quote:1ejnci41]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.

  • [quote:1hahhyx0]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.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)