ID:2407131
 
Lag.

The biggest complained about topic in any byond game, or game in general. So, what is a proffesional company Id consult for real game hosting service. Im talking serious grade triple A. I know about byondpanel, but Im curious whats the Grade A level of hosting out there to use for byond, or unity.

Im sure byond panel could handle something like 80+ players. But I want something that supports a thosand

Byond's Gang$ta
You're not going to support that many players in a single server instance, not even professional AAA games try to do that.

BYOND is also single-threaded and 32-bit, so you'll only be able to use a single processor core and around 3GB of RAM for any given process.

You'd want to design your game to use server clusters from the get-go if you want to support that amount of players and have the option to expand down the road.

Sounds to be like BYOND probably isn't what you're looking for though.
From your experience and observation, how many players could you really put on one server and not have intense lag.

For reference purpose, SoA having 250 players at once. As I remember 140 was fine, but why did it become unplayable at 220
I wouldn't really count on much more than 100-150, if that. Even with the most optimized code you'll reach a point where each user is using enough resources to bog things down, whether it be by amount of stuff happening or sheer player amount, whichever bottlenecks first.
200 in a simple game per node is the apex of what BYOND is gonna be able to handle on reasonable hardware.

But there's no reason you can't have a cluster setup to support a single contiguous world by splitting nodes by map/region, and sharding regions into channels when they become overpopulated.

BYOND already has the tools needed to do all of this.
I keep hearing so much about cluster setup if you want a bigger game youd have to use it.

So is a cluster set up just players jumping from one server to another to spread out usage of processes?
Pretty much, all larger online games do it, sometimes seamlessly, sometimes where you pick which server(s) to join
In response to Rod5
Rod5 wrote:
I keep hearing so much about cluster setup if you want a bigger game youd have to use it.

So is a cluster set up just players jumping from one server to another to spread out usage of processes?

Yep, that's the gist of how it works. Any game, even commercial games that allow thousands of players to interact with one another use a cluster setup of some sort.

World of Warcraft may call their "servers" by that name, but they aren't individual machines. They are a cluster of machines that live on the same node hosting the same dataset and sharing the same global chat.

BYOND does not make this stuff easy, but it doesn't make it impossible either.
So, with BYOND, the only way of really handling a cluster setup is to use world.Export() for outgoing calls and world.Topic() for incoming messages, each of which can only run about as quick as 100ms per call. They need to be used sparingly, but if you're adamant on using these exclusively, wrapping these calls in spawn() blocks can help mitigate some of the lag.

From tests, I believe that world.Export() calls are based on TCP. Another thing about world.Export() is that is needs to wait for a return value, which it gets from the destination server. Depending on network bandwidth and the speed at which the message flows, this call can finish very VERY slowly. Again, using spawn() blocks around each call is necessary for keeping code flow moving and allowing messages to be sent and received in a concurrent 'thread'.

If you're looking to see how you can manage sending and receiving messages using Export/Topic, BYOND comes with an in-house JSON parser. From my understanding, messages generally have a limit of 2048 characters per call (based on HTTP/GET requests). At any rate, serializing your data into compressed JSON should be fine enough for occasional message sending and receiving. If you feel comfortable writing your own packets and using something like base64 compression, have at it. Messages have to be sent in plaintext regardless.

Writing netcode can be pretty complicated if you're not used to it. However, I think the Export/Topic model BYOND uses is a great starting point as it makes it simple for managing network sockets (again, TCP, but BYOND internally keeps track of these connections for you.)

Just my two cents. Cheers.
Still looking over different hosting services. I've been looking around for professional hosting services for my byond servers if I choose to go for cluster servers with enough players

I've been looking over services like Blue Host, Beast Node, etc etc, services that offer dedicated game hosting. What exactly makes these services better than something like Byond panel
So, BYONDPanel is more or less an overlay for a bash shell on Linux, but if you'd prefer to get into the nitty-gritty yourself, it's really not that complicated to get any sort of server up with a linux instance (I use Amazon Lightsail for both hosted services as well as webhosting - running Ubuntu 16.04).