So, my game, www.SpaceFrigates.com was linked to on Hacker News last night. Which is awesome and I'm getting lots of people trying the game. But I'm really not ready for the load and the experience is poor.
Any advice?
Should I just let it ride? Keep adding servers? Take the site down with some kind of message?
Thanks!
To answer your question, I wouldn't pay for more servers. Either let it be or add some rate limiting. With the rate limiting you can also get a list of potential players, maybe say "Currently servers are at max capacity, please enter your e-mail address to start playing (or receive a notification when capacity has been increased)".
As for the game:
I tried the game a bit but the controls felt very clunky (unplayable from my point of view). I think you should add client prediction and minimize input latency, right now it seems that the networking logic is to player input -> send input to server -> wait for response -> show updated position/rotation, instead it should be player input -> show updated position/rotation AND send input to server -> wait for response -> interpolate to correct position/rotation received.
It might not be an easy change, but improving the networking logic will have a much bigger impact than any increase in server count or server performance.
The rate limiting is an interesting option, I had not thought of that!
Thanks for feedback on the controls. Right now I am using client side prediction with an authoritative server. My biggest issue is that I have never been able to get extrapolation to work correctly which causes lots of issues. I’m just stomping the client side state every time I get updates from the server.
To try to compensate I send updates way too frequently and the game performance degrades quickly under load.
I recently ran across Lance, a JS, real time game engine with the same architecture So I might try porting to that. They seem to have fixed the synching issues that are currently killing me.
You are correct, getting the networking code right is critical to my game really being viable as an MMO, so will have to get on that.
I worked on http://curvefever.pro/ which has some pretty awesome networking, if you have any specific question you can ask me on Twitter @XCSme
I’ll check it out, thank you!
Its a hard question, in general all publicity is good publicity. In your position, I would probably focus on the variables I could control to make the customer experience the best I possibly could.
That makes sense. I’m trying to gauge how much to spend. I’m split between spinning up as many instances as I have to to handle the load, but, without any revenue coming in yet that could start getting painful pretty fast.
If the issue is hosting costs, there are ways to get credits for free with AWS, DO and Google. Typically the credits expire after a year, but that should give you enough runway to generate enough income to pay for them.
Thanks, I was not aware of that. Right now I’m using Digital Ocean.
Do you have any links with more information about the credits?
I was only running one tiny droplet until the HN link.... now I’m running three much beefier droplets.
DO has some limitations, you don't have autoscaling, so if you ever get a bunch of unexpected traffic like in the case of HN your site is likely to crash unless you have those droplets set up in advance. Once you commit too deeply to a host, its really hard to migrate to another one unless your code is specifically designed to make it easy to migrate.
These among other reasons is why I chose AWS - I got my credits ($3000 expires in 1 year) through YC Startup School as a part of the winter cohort - to join this is free. There are many places you could get credits from however (University, Incubator programs, coworking places, innovation programs), by doing a reddit/google search I'm sure anyone can find one.
Thank you so much, I never even considered those options. I'll start researching those programs!
Also, my deployments are Docker based so should be pretty simple to move. I also need to move from a VM based deployment to K8S so I can more easy autoscale. I was planning to do that anyway just didn't expect to have any scaling issues so soon. Good problem to have right? :-)