Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Help break my server!

A topic by Gus-the-dev created 12 days ago Views: 78 Replies: 4
Viewing posts 1 to 3

Link: https://gus-the-dev.itch.io/project-lurk

I'm trying to build a multiplayer game, and I'm not sure how many people the server holds for.
Only tried it with a buddy of mine so far, seemed to work fine for now, but would be interesting to know what happens when more people join, if there is lag for people far away (server is in Germany), if other players appear to move smooth or janky etc.. 
Basically I'm trying to figure out how many people would be optimal per server.

I made a discord (see game page) for coordinating when to play if anyone is interested in helping out to "join all at once" .....?

I would suggest adding a web version. This would allow more people to quickly join the server.

Thanks for the suggestion, have definitely been thinking about it

I won’t be much use to you as a body in the join test, but I’ve shipped a browser multiplayer arena and the capacity question has a shape that might save you organising a crowd 🎮

The coordinated Discord join will tell you something real, just probably not the thing you want. Everyone connecting inside the same few seconds is the most expensive moment your server ever has — handshakes plus a full world-state serialise to N clients at once. So what you will find is your join storm ceiling. Worth knowing, but it says nothing about whether those same people can play for twenty minutes, which is the number you are actually after.

Two things that get you further:

Your ceiling is a bandwidth budget, not a player count. Cost is players x updates per second x bytes per update, and the multiplier that decides everything is whether each player’s state goes to every other player. If it does you are at n squared, so doubling players quadruples outbound and there is no fixed “optimal per server” — there is just the point where your uplink gives out. You can work this out with the two of you and arithmetic, today, without anyone else showing up.

Headless clients beat volunteers. A small script that opens N websocket connections and drives them with synthetic input gives you a repeatable number at any N, any time. That is the difference between finding out once that it broke at 14, and knowing it breaks at 14 and whether this week’s commit moved that. Volunteers are available once, a load script is available after every change.

On the Germany question: “is there lag for distant players” and “do other players move smoothly or janky” are usually the same question, and it is mostly client-side. Someone at 150ms with entity interpolation and a small buffer looks fine, someone at 60ms rendering raw incoming positions looks like a slideshow. If movement is janky now, moving the server will not fix it — and once interpolation is right, server location matters much less than you would expect.

One thing you have not asked about but will meet shortly: most of the time your concurrency is zero, and whoever arrives then concludes the game is dead. Needing a Discord to coordinate a session is an early symptom of that. Worth thinking about what a single arriving player sees, before it becomes the main problem.

When you and your buddy were connected, was the server sending each of you the other’s position as its own message, or one packet containing both? That answer on its own moves your ceiling by roughly an order of magnitude.

Thanks a lot for the detailed information, what you’re saying makes sense, great to hear from someone who done this before