New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Scaling for steam influx (7000 players in one hour) #122
Comments
imo CONNECTUSER is your friend (+ some lightweight mode which basicly is only auth and a few status messages) |
Yeah but i think its possible to tweak protocol to retain most functions (chat, list of users in battles etc). If not and you think its best to go connectuser etc .. such stuff can also be done outside of uberserver.. |
I agree with Licho on this. This should be done on the server. My proposal is that supporting the lightweight mode should filter out the following commands:
I'd also remove the client "CHANNELS" command or add mandatory paging to it. All this can be simplified further to just completely filter CLIENTS and JOINED for all channels, although personally I'd only do it for large ones like #main, #zk and similar. Once implemented (and I don't think it would take more than a week to do so) I'd give everyone 3-6 months and then make this flag mandatory (would still have to be supplied, but would be considered mandatory). |
@Licho1 and yeah, light mode makes sense, but its a lot of work and very few people contribute. :-| |
Im going to fork server and try to implement it.. |
We would like to design a way to scale up for steam players influx. Logs from EvoRTS show that 7000 players downloaded the game in first hour.
Suggest protocol change is to only update state of objects that user interact most with. That means no global "adduser" and status changes. Post those only to people in same channel and same battle. Players from steam would not join any channel by default so this would reduce load significantly. If there are too many battles, it could be fixed by providing "filter" - user sends filter definition to uberserver and it only updates battles matching filter for the client.
It would also be great if metadata could be kept on uberserver and transmitted by it instead of relying on nightwatch extension.
In simplest implementation metadata would be a dictionary set on user and battle room objects. Client would specify what keys it wants to listen to and bots with admins would be able to set those metadata.
The text was updated successfully, but these errors were encountered: