30k concurrent players on a (private) MMO server...is this possible ?

Started by
25 comments, last by Butabee 9 years, 3 months ago
Agreed... 30k players could have been 30k test players running around in circles.
Advertisement

That Ragnarok Online looks like similar to what's in my mind ( isometric , sprites ) , then maybe I can handle more than 16-32 players per "room" unlike I planned?

mostates by moson?e | Embrace your burden

In Ragnarök Online ground, walls, houses, trees and such are actually made of 3D. There are many hills (which are a good reason to prefer 3D), its relatively low-poly and you can sometimes find cracks revealing it.
Just the camera is rather restrictively fixed and you can only be rotated around your character, zoom a bit and change its angle slightly (that is one of the many things I heared some cheaters have hex-edited away). This is to hide that the server only sends data for characters and skill effects inside a square for about 14 tiles distance from your character (which can be seen when tilting the camera and looking downhill or having a widescreen monitor).
Monster, NPC, Characters and their accessories are 2D sprites though.
I've seen fights of 2-3 allys of 2-4 guilds per ally of 30-56 people each guild, all squeezed into 2 or 3 screens of space. Problems start when all are spamming skills up to 4 times a second (they made the mistake of including a 2 minute area spell reducing cast times and skill delays for everyone inside), which are often area spells that get send per tile. Then the server is struggling, its discarding skill effects revealing holes, discarding skill commands, queuing move clicks for too long and ultimately disconnecting everyone lagged more than a minute, sometimes silently making the client hang, all while the monsters whack away at the player characters.
Additionally, rumours are going around the server is not optimized well.

Therefore more than 16-32 people per map should certainly be possible for your game if done carefully enough.

In Ragnarök Online ground, walls, houses, trees and such are actually made of 3D. There are many hills (which are a good reason to prefer 3D), its relatively low-poly and you can sometimes find cracks revealing it.
Just the camera is rather restrictively fixed and you can only be rotated around your character, zoom a bit and change its angle slightly (that is one of the many things I heared some cheaters have hex-edited away). This is to hide that the server only sends data for characters and skill effects inside a square for about 14 tiles distance from your character (which can be seen when tilting the camera and looking downhill or having a widescreen monitor).
Monster, NPC, Characters and their accessories are 2D sprites though.
I've seen fights of 2-3 allys of 2-4 guilds per ally of 30-56 people each guild, all squeezed into 2 or 3 screens of space. Problems start when all are spamming skills up to 4 times a second (they made the mistake of including a 2 minute area spell reducing cast times and skill delays for everyone inside), which are often area spells that get send per tile. Then the server is struggling, its discarding skill effects revealing holes, discarding skill commands, queuing move clicks for too long and ultimately disconnecting everyone lagged more than a minute, sometimes silently making the client hang, all while the monsters whack away at the player characters.
Additionally, rumours are going around the server is not optimized well.

Therefore more than 16-32 people per map should certainly be possible for your game if done carefully enough.

First, thanks for reply.

And well , had chance to take closer look at RO and it is partly similar, its not isometric and have 3D elements as you mentioned. What's in my mind is something between

3989.jpg and 384969-infiltrator-commodore-64-screensh , therefore an isometric TPS

My initial plan was to use a smallish ( 50X50 ? ) maps for each 16-32 people or so, but wondering if I can manage a unified map (500x500 ? 1000x1000?) with a good implementation.

PS : As will be web based , have to use TCP and JSON which is not bandwidth friendly.

mostates by moson?e | Embrace your burden

In Ragnarök Online ground, walls, houses, trees and such are actually made of 3D. There are many hills (which are a good reason to prefer 3D), its relatively low-poly and you can sometimes find cracks revealing it.
That is, however, secondary as long as the game is tile-based. The world may be rendered in 3D, but the game is still only 2D from the server's point of view (both for logic/physics and network updates that it needs to send).

Hit and collision checks are of a "is inside same cell" nature, not of a "does ray in 3D intersect" nature or such.

The size of the map almost doesn't matter (as long as you can reasonably fit it in RAM for clients and servers.)
If the amount of data needed per tile is average of 32 bytes, then a 1000x1000 map would only take 32 MB.
enum Bool { True, False, FileNotFound };

The size of the map almost doesn't matter (as long as you can reasonably fit it in RAM for clients and servers.)
If the amount of data needed per tile is average of 32 bytes, then a 1000x1000 map would only take 32 MB.

Sorry for late reply,

Assuming your reply was directed at me, seems I didn't explain situation clearly. In addition to making map size from 50X50 to 1000X1000 , will also increase number of players. So what I wonder is if 100-200 (maybe 500) players are manageable in a 1000x1000 room? (considering prehistoricish graphics)

Btw, just wondered why IMVU doesn't increase cap for a room if you don't mind? Historical reasons or based on experience?

mostates by moson?e | Embrace your burden

My initial plan was to use a smallish ( 50X50 ? ) maps for each 16-32 people or so, but wondering if I can manage a unified map (500x500 ? 1000x1000?) with a good implementation.

I used to be part of a hobbyist team for a small ORPG where we had >10 people on a map at a time (maps being 21x21), all spamming text as fast as possible as part of minigames. I wasn't the programmer, but I'd guess the code wasn't very optimized as we had more pressing priorities. And the server was at times even running off of a weak laptop over WiFi on a home internet connection. ('course we lagged like crazy when the lead developer and host of the game would be streaming live football games at the same time as hosting the server laugh.png)

This was 9 years ago. With better and more modern hardware, and intentional and calculated optimizations, I wouldn't be surprised if you could get 50+ players in a single screen without lag.

increase the number of players


As long as the server bucketizes the players so they only see approximately the closest X players, you will scale roughly linearly in the number of players. The limitation to your scale then becomes how expensive/complicated your server-side simulation is. If all players want to be in the same town square, you will end up with n-squared in the number of players -- this is the worst case for any online game.

why IMVU doesn't increase cap for a room if you don't mind?


There is no "hard" limit, only a "soft" limit -- when you search for a chat room, rooms with 10+ users are shown as "full."
However, if someone invites you to the room, and you accept, you can still join.

The reason we consider rooms "full" at 10 is two-fold:
1) When chatting, more than 10 users is very hard to keep track of! (There are use cases, like virtual theater plays, where this is not a problem)
2) The typical end-user machine can't reasonably show more than 10 user-generated avatars with good frame rate

Thus, this is a client-driven limitation, not a server-driven limitation, and one of the problems is that our avatars are made of user-generated content, and our users are not trained 3D artists who spend days squeezing every last pixel out of a texture sheet or every last vertex out of a morphed mesh, like you'd typically see for high-end games production.

Intel Integrated -- the world's most popular graphics chip -- is not going away. In fact, ALL the MacBooks (except for the very biggest and highest-end model) now ship with Intel Integrated, rather than a discrete graphics chip.
enum Bool { True, False, FileNotFound };
Ragnarok is split up into quite a bit of zones, and even more sub zones if you count only players visible within your screen. A server probably could handle 30k users, but no way in hell are all those players all updating each other at one time. Even 1 byte a second would by 900MB upload. I think your friend exaggerated quite a bit with the "very small number of areas."

This topic is closed to new replies.

Advertisement