ID:152115
 
I was wondering if byond is inherently limited in the amount of players it can support on one server at once. Because I could have the simplest game with like 5 graphics and all you can do is walk around, and if 100+ players get on there it would lag like hell even if the person hosting has a strong computer and a fast connection. Is this some limitation of byond itself? It seems like when you exceed 80-85 players you hit sort of threshold in an otherwise fast and efficient game. And if it is some limit why doesnt the byond programmers somehow extent its capabilities? Because modern online games can support hundreds of hundreds of players at the minimum so why cant byond also? My game commonly has 120+ players which is why I'm particularly interested in this topic.

I just want some more info on this thanks.
It's not that BYOND is limited, it's that it is highly unlikely any personal computer can handle that much at once.
Besides, lag is a two way street - it isn't just how fast your computer can send and receive, but also how fast your player's computer can send and receive.
Because your game is being hosted on a personal computer with a low-bandwidth connection while MMOs are hosted on server banks with fiber-optic connections.

And, of course, the netcode is inefficient because it's generalized. Would you like to write your own?
In response to Jamesburrow (#1)
Jamesburrow wrote:
It's not that BYOND is limited, it's that it is highly unlikely any personal computer can handle that much at once.
Besides, lag is a two way street - it isn't just how fast your computer can send and receive, but also how fast your player's computer can send and receive.

I agree with just about everything except the first sentence. Byond itself has limits on how much data it can hold (limits on the amount of objects) and how fast it can run IIRC.

George Gough
Tenshaku wrote:
I was wondering if byond is inherently limited in the amount of players it can support on one server at once. Because I could have the simplest game with like 5 graphics and all you can do is walk around, and if 100+ players get on there it would lag like hell even if the person hosting has a strong computer and a fast connection. Is this some limitation of byond itself? It seems like when you exceed 80-85 players you hit sort of threshold in an otherwise fast and efficient game. And if it is some limit why doesnt the byond programmers somehow extent its capabilities? Because modern online games can support hundreds of hundreds of players at the minimum so why cant byond also? My game commonly has 120+ players which is why I'm particularly interested in this topic.

As Garthor said, MMOGs are usually hosted on server farms -- stacks and stacks of servers that can fill your bedroom from floor to ceiling. Each "server" is actually a collection of servers, distributing the load of the game on a load-by-demand basis. What this means is that individual sections of the game are hosted on different computers within a given "server", and the client automatically connects to different sections as appropiate. I would wager there are usually at most about 1000 clients on every individual computer in a given stack, with a given "server" comprising upwards of 10,000 players at a time.

It might surprise you to learn that BYOND can also do this, although the number is reduced from 1000 to 100 or so because BYOND is an interpreted language and not a machine-code language. The only reason no one has done such a thing is for three reasons:

1) BYOND doesn't handle inter-server packets in a very simple fashion: to send data to another server, it's first required to build a savefile and then transmit that savefile to the other server. The default action is to wait until that packet is sent and the "received" signal is transmitted back, too, so BYOND will freeze for a few hundred milliseconds while making the transmission. [Update - April 8th, 2008: BYOND now supports persistent world connections as of version 415.980, so this is not as significant an issue.]

2) No one has made a popular-enough game to need or support that many players.

3) No one here is rich enough to afford a server farm!


Regarding limits, BYOND does have them:
* 65,535 string instances
* 65,535 characters per string
* 65,535 list instances
* 65,535 elements per list
* 65,535 mob instances
* 65,535 obj instances
* 65,535 unique area instances
* 16,777,215 unique turf instances
* 16,777,215 "datums"
* 65,535 unique type paths
* 65,535 unique icons
* 65,535 clients (although 100 is a realistic soft limit)
* possibly others I'm forgetting or unaware of

Current design standards on BYOND believe that if you ever come anywhere near to a limit in one of these categories while hosting your game, your design is inherently flawed and you should reduce your project scope or otherwise find a way to make your system more efficient.
At one point Majins and Mystics Remastered had about 190 players at once and the lag wasn't too bad.
In response to Jtgibson (#4)
Jtgibson wrote:
2) No one has made a popular-enough game to need or support that many players.

So basically, when my games out even with a powerful server the maximum amount of players able to login at once will be reduced to around 1000?
In response to Hulio-G (#6)
Your game will not be that popular.
In response to Garthor (#7)
Garthor wrote:
Your game will not be that popular.

Actually over the past 2 years, I've assembled the ultimate team


Hey, come on Garthor, don't pick on me. It's not 03, I thought I was a "big" newb now. ;(

On a serious note...You're right all the time so I'll look like the fool now but I'll take pride in bumping this post later in the year. (Thereby stripping your title of guru).
In response to KodeNerd (#3)
Oh yes, I know, but any properly designed game should not come close to reaching those limits, and as for the client limit, a standard personal computer would fry out and your ISP would freak out on you WAY before you got to that limit.
In response to Jtgibson (#4)
Jtgibson wrote:
<font color="blue">> 1) BYOND doesn't handle inter-server packets in a very simple fashion: to send data to another server, it's first required to build a savefile and then transmit that savefile to the other server. The default action is to wait until that packet is sent and the "received" signal is transmitted back, too, so BYOND will freeze for a few hundred milliseconds while making the transmission.</font>

Connecting between MySQL databases should speed that up a bit. Although I ain't seeing anyone in the fan-game crowd making the paradigm shift to using databases anytime soon. That would require them to develop on Linux servers for hosting.