Projecting server costs
-
So the higher ups want an estimate of how much it's going to cost to run these Unreal servers per month according to connected subscribers.
Many assumptions are being made, such as every subscriber being continually connected to a server for the duration of the month (and thus consuming the resources), and we can have 1000 subscribers connected to a given server simultaneously (probably not true, but of course untested).The current calculations look like this:
Does that look right? I think I missed a multiplication somewhere...
-
@Tsaukpaetra said in Projecting server costs:
we can have 1000 subscribers connected to a given server simultaneously
And what server is that?
I am curious how you control a fleet of dedicated UE servers (hosting games, matching players to them). In-house solution or something existing?
-
@Tsaukpaetra Are you saying I can run unreal servers and have people pay me to do it?
Speaking of which, if you had extra servers and a 1GB connection to the web, how would you monetize it?
-
@Adynathos said in Projecting server costs:
And what server is that?
Azure F1 sized VMs. Like I said, pie in the sky butt-pulls from the Hype managers.
@Adynathos said in Projecting server costs:
I am curious how you control a fleet of dedicated UE servers (hosting games, matching players to them). In-house solution or something existing?
In-house Master Server, which spins up an Azure VM with a custom-built windows (which includes the game server), waits for it to be ready, and commands it to start up game servers as needed via an in-house Master Server Client (original name do not steal).
@dangeRuss said in Projecting server costs:
Speaking of which, if you had extra servers and a 1GB connection to the web, how would you monetize it?
Subscription model at the moment. I guess there's the initial purchase price to be a "tourist level" player, and then you can pay to rent virtual estate.
-
@Tsaukpaetra said in Projecting server costs:
Does that look right?
I think you've got some quantisation issues; the $90 for 1000 users (for a month?) is likely to be something you have to pay in full even if you have just 100 users. Or something like that.
It's in general worth doing some projections based on what the costs look like under different scenarios for changing prices, and different scenarios for what level of provisioning are actually required. It'll make a much larger report, but it'll be fairly simple recalculations so that you're showing that you've accounted for and made explicit various assumptions you've made. When pricing this sort of thing up, that's critical for understanding the level of risk…
-
@dkf said in Projecting server costs:
under different scenarios for changing prices
Yeah, will do. But I'm not so good with the maths at the moment so even though everything in that sheet is a formula it should be adjustable.
I'm just not sure said formulas are even accurate due to how scaling works and the likelihood the load scenarios will actually look like that at all.
-
@Tsaukpaetra In situations like these it can be useful to draw up a few scenarios to see how volatile things are. Like, a fictitious "day in the life of" sort of thing, showing the load over a day and then doing calculations based on that.
Do you have actual current usage data? That would be a good place to start.
-
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
-
@Tsaukpaetra said in Projecting server costs:
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about 20 other people.
-
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about 20 other people.
Yup. And to date I haven't been able to find any info on Azure's bandwidth capacity.
-
@Tsaukpaetra said in Projecting server costs:
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about 20 other people.
Yup. And to date I haven't been able to find any info on Azure's bandwidth capacity.
If it's anything like EC2 or App Engine, they charge you for bandwidth.
-
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about 20 other people.
Yup. And to date I haven't been able to find any info on Azure's bandwidth capacity.
If it's anything like EC2 or App Engine, they charge you for bandwidth.
Yes, there are charts for data transferred (i.e. how many GB of data came out of Azure), but nothing of the speed cap itself (Do I get 100 MBps outbound? 1 GBps?). Knowing how much bits cost doesn't tell me how fast the bits can be moved, which (at the moment) is more important WRT game server latency.
-
@Tsaukpaetra said in Projecting server costs:
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@ben_lubar said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
@boomzilla said in Projecting server costs:
Do you have actual current usage data? That would be a good place to start.
Lol yeah, our few days of running half the servers with no more than 20 employees doing a "stress test".
It's one of the reasons we're (probably) wildly overestimating our server capacity, expecting 100 users on an server, 10 servers per azure VM instance.
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about 20 other people.
Yup. And to date I haven't been able to find any info on Azure's bandwidth capacity.
If it's anything like EC2 or App Engine, they charge you for bandwidth.
Yes, there are charts for data transferred (i.e. how many GB of data came out of Azure), but nothing of the speed cap itself (Do I get 100 MBps outbound? 1 GBps?). Knowing how much bits cost doesn't tell me how fast the bits can be moved, which (at the moment) is more important WRT game server latency.
Latency is probably going to be a factor, but bandwidth per second probably won't be an issue if you're doing video game stuff. Streaming HD video, maybe, but voice chat probably not.
-
@ben_lubar said in Projecting server costs:
voice chat probably not.
Yeah. I'm working on wiring up my bot interface (which runs on the voice server) to play a 30 second audio clip, then spawning in 400 bots on a level (in a relatively compact area) and just seeing what happens. 'course I'd need others in the server (because bots don't talk to bots)...
Lots of planning and pre-planning to do.
-
@Tsaukpaetra said in Projecting server costs:
because bots don't talk to bots
-
@TimeBandit Eh. It's just a custom program on one side driving it.
-
@Tsaukpaetra said in Projecting server costs:
pre-planning
Seriously, I hate that. Planning to prepare to plan?! Just fucking make a plan and stop screwing around.
-
@dkf said in Projecting server costs:
Just fucking make a plan
The issue is we don't want to be out $60k when we expected $2k. I would be totally fine running the requisite servers for a full billing period to find out the actual costs, but other people (the ones that are actually paying the bill) get nervous when the estimate range is that inaccurate.
-
@Tsaukpaetra said in Projecting server costs:
The issue is we don't want to be out $60k when we expected $2k.
Sure, but that's just part of planning. And it's OK. “Pre-planning” () is not.
-
@Tsaukpaetra I think you should just find someone and project the costs onto them.
-
@kt_ said in Projecting server costs:
@Tsaukpaetra I think you should just find someone and project the costs onto them.
several ways I can interpret that, and we're doing three of them or are doing two.
-
@TimeBandit said in Projecting server costs:
@Tsaukpaetra said in Projecting server costs:
because bots don't talk to bots
EDIT: Markdownsyndrome puked on the various <<'whatever' heredocs, changed to a vanilla
<code><pre>yah, code sucks too block.Grammar-based parsing certainly isn't restricted to processing rigidly defined data formats such as diff produces. Here's another example that's about as different as you can get. It's the classic "Who's on first?" routine, as performed by a pair of Parse::RecDescent parsers named $abbott and $costello.
use vars qw( %base %man @try_again ); use Parse::RecDescent; sub Parse::RecDescent::choose { $_[int rand @_]; } $abbott = new Parse::RecDescent <<'EOABBOTT'; Interpretation: ConfirmationRequest | NameRequest | BaseRequest ConfirmationRequest: Preface(s?) Name /[i']s on/ Base { (lc $::man{$item[4]} eq lc $item[2]) ? "Yes" : "No, $::man{$item[4]}\'s on $item[4]" } | Preface(s?) Name /[i']s the (name of the)?/ Man /('s name )?on/ Base { (lc $::man{$item[6]} eq lc $item[2]) ? "Certainly" : "No. \u$item[2] is on " . $::base{lc $item[2]} } BaseRequest: Preface(s?) Name /(is)?/ { "He's on " . $::base{lc $item[2]} } NameRequest: /(What's the name of )?the/i Base "baseman" { $::man{$item[2]} } Preface: ...!Name /\S*/ Name: Name12 | /I Don't Know/i Name12: /Who/i | /What/i Base: 'first' | 'second' | 'third' Man: 'man' | 'guy' | 'fellow' EOABBOTT $costello = new Parse::RecDescent <<'EOCOSTELLO'; Interpretation: Meaning <reject:$item[1] eq $thisparser->{prev}> { $thisparser->{prev} = $item[1] } | { choose(@::try_again) } Meaning: Question | UnclearReferent | NonSequitur Question: Preface Interrogative /[i']s on/ Base { choose ("Yes, what is the name of the guy on $item[4]?", "The $item[4] baseman?", "I'm asking you! $item[2]?", "I don't know!") } | Interrogative { choose ("That's right, $item[1]?", "What?", "I don't know!") } UnclearReferent: "He's on" Base { choose ("Who's on $item[2]?", "Who is?", "So, what is the name of the guy on $item[2]?" ) } NonSequitur: ( "Yes" | 'Certainly' | /that's correct/i ) { choose("$item[1], who?", "What?", @::try_again) } Interrogative: /who/i | /what/i Base: 'first' | 'second' | 'third' Preface: ...!Interrogative /\S*/ EOCOSTELLO %man = ( first => "Who", second => "What", third => "I Don't Know" ); %base = map { lc } reverse %man; @try_again = ( "So, who's on first?", "I want to know who's on first!", "What's the name of the first baseman?", "Let's start again. What's the name of the guy on first?", "Okay, then, who's on second?", "Well then, who's on third?", "What's the name of the fellow on third?", ); $costello->{prev} = $line = "Who's on first?"; while (1) { print " ", $line, "\n" and sleep 1; $line = $abbott->Interpretation($line); print " ", $line, "\n" and sleep 1; $line = $costello->Interpretation($line); }
-
@ben_lubar said in Projecting server costs:
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about
2019 other people.FTFY
-
@masonwheeler said in Projecting server costs:
@ben_lubar said in Projecting server costs:
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about
2019 other people.FTFY
DENIED : the server sends authoritative state to all players
-
@cabrito said in Projecting server costs:
@masonwheeler said in Projecting server costs:
@ben_lubar said in Projecting server costs:
Keep in mind that game server bandwidth is quadratic with the number of players - 20 players means 20 people are each getting data about
2019 other people.FTFY
DENIED : the server sends authoritative state to all players
Actually, no, the chat server doesn't. It just doesn't give you the packets if you're not supposed to get them. The game servers authoritate that part.
-
@Tsaukpaetra ah, chat, that's different...