Egg Locking on High Pop Servers
yehawmcgraw
Join Date: 2012-09-16 Member: 159694Members
<div class="IPBDescription">Analysis and consequences</div>So server populations vary greatly: Professional games are usually 6v6 (correct me if I'm wrong), UWE servers are 8v8, and most of the high-skill pub servers (420, KKG, All-in) are around 12v12. Because server sizes (and the resulting rate-of-deaths) vary greatly and because the Hive and IP's provide a static rate of respawns, keeping up with respawns can be a real problem. And in this case, marines adapt better.
What I'm noticing is that in most high population servers and especially if there is a lot of early-game combat, aliens egg production will not keep up and marines will steadily start to win as a result. Marines will easily build an extra IP or 2 to keep up, but the aliens are not as flexible; they must build a new hive (takes a long time and is harder to do in aforementioned early combat) or have a shift hive and produce high-cost eggs out of a shift.
Demanding shift hive first to be viable does not seem fair, and for the same 15 res the other team would pay for an IP, you would only get 2 eggs (10 shift cost +5 spawn egg cost). Or if say you already have that shift, the 15 would only buy you 6 eggs. Not sustainable.
The only obvious solution I would see is to scale the ip/egg rate with the team population, or to give the hive an ability to buy low-cost eggs. I'm not in love with either solution, are there any suggestions? I suppose this is more of an awareness post. Thoughts?
<b>Further I think this is an overlooked matter of balancing!!!</b> Because of the above, I think aliens are fundamentally better in low-pop servers and worse in high-pop servers. I think this might explain why UWE's posted race win-loss are always more alien-favored when compared to ns2stats.org; UWE measures their small servers (or all?) where as ns2stats.org measures servers with the their plugin, usually much higher-population ones like 420, KKG, and All-in.
---------------------------------------------------------------------------------------------
Edit: Egg spawning is not purely a static rate!!! Here is how it works.
<b>From NS2Utility.Lua:</b>
/*
* Non-linear egg spawning. Eggs spawn slower the more of them you have, but speed up with more players.
* Pass in the number of players currently on your team, and the number of egg that this will be (ie, with
* no eggs, pass in 1 to find out how long it will take for the first egg to spawn in).
*/
function CalcEggSpawnTime(numPlayers, eggNumber, numDeadPlayers)
local clampedEggNumber = Clamp(eggNumber, 1, kAlienEggsPerHive)
local clampedNumPlayers = Clamp(numPlayers, 1, kMaxPlayers/2)
local calcEggScalar = math.sin(((clampedEggNumber - 1)/kAlienEggsPerHive) * (math.pi / 2)) * kAlienEggSinScalar
local calcSpawnTime = kAlienEggMinSpawnTime + (calcEggScalar / clampedNumPlayers) * kAlienEggPlayerScalar
return Clamp(calcSpawnTime, kAlienEggMinSpawnTime, kAlienEggMaxSpawnTime)
end
<b>From Balance.lua:</b>
kAlienEggMinSpawnTime = 7
kAlienEggMaxSpawnTime = 60
kAlienEggPlayerScalar = 10
kAlienEggSinScalar = 14
kAlienEggsPerHive = 9
From above, the resulting graph of egg spawn time per hive if all eggs dead, where x is 6 to 12 players on your team:
<a href="http://www.wolframalpha.com/input/?i=7%2B+%28%28sin%28%28%281-1%29%2F9%29+*%28pi%2F2%29%29*14%29%2Fx%29*10++range+6+to+12" target="_blank">http://www.wolframalpha.com/input/?i=7%2B+...++range+6+to+12</a>
(give time to load!)
It would seem that numDeadPlayers is ignored, and, from this graph (correct me if there is a mistake) the number of players per team does *not effect spawn rate while already at 0 eggs*!!! Eggrate here is always 7 sec.
Here is a graph where x= team size and z= num eggs alive. (Due to code, z=1 means either 0 or 1 eggs remaining):
<a href="http://www.wolframalpha.com/input/?i=7%2B+%28%28sin%28%28%28z-1%29%2F9%29+*%28pi%2F2%29%29*14%29%2Fx%29*10%2C++x%3D6..12%2C+z+%3D1..9&a=*MC.6%21.%21.12-_*NumberMath-" target="_blank">http://www.wolframalpha.com/input/?i=7%2B+...2-_*NumberMath-</a>
Here we can see that the team size does affect egg rate at eggs>1, but is difference appears somewhat negligible except when a team is nearly full of eggs (about >75%).
What I'm noticing is that in most high population servers and especially if there is a lot of early-game combat, aliens egg production will not keep up and marines will steadily start to win as a result. Marines will easily build an extra IP or 2 to keep up, but the aliens are not as flexible; they must build a new hive (takes a long time and is harder to do in aforementioned early combat) or have a shift hive and produce high-cost eggs out of a shift.
Demanding shift hive first to be viable does not seem fair, and for the same 15 res the other team would pay for an IP, you would only get 2 eggs (10 shift cost +5 spawn egg cost). Or if say you already have that shift, the 15 would only buy you 6 eggs. Not sustainable.
The only obvious solution I would see is to scale the ip/egg rate with the team population, or to give the hive an ability to buy low-cost eggs. I'm not in love with either solution, are there any suggestions? I suppose this is more of an awareness post. Thoughts?
<b>Further I think this is an overlooked matter of balancing!!!</b> Because of the above, I think aliens are fundamentally better in low-pop servers and worse in high-pop servers. I think this might explain why UWE's posted race win-loss are always more alien-favored when compared to ns2stats.org; UWE measures their small servers (or all?) where as ns2stats.org measures servers with the their plugin, usually much higher-population ones like 420, KKG, and All-in.
---------------------------------------------------------------------------------------------
Edit: Egg spawning is not purely a static rate!!! Here is how it works.
<b>From NS2Utility.Lua:</b>
/*
* Non-linear egg spawning. Eggs spawn slower the more of them you have, but speed up with more players.
* Pass in the number of players currently on your team, and the number of egg that this will be (ie, with
* no eggs, pass in 1 to find out how long it will take for the first egg to spawn in).
*/
function CalcEggSpawnTime(numPlayers, eggNumber, numDeadPlayers)
local clampedEggNumber = Clamp(eggNumber, 1, kAlienEggsPerHive)
local clampedNumPlayers = Clamp(numPlayers, 1, kMaxPlayers/2)
local calcEggScalar = math.sin(((clampedEggNumber - 1)/kAlienEggsPerHive) * (math.pi / 2)) * kAlienEggSinScalar
local calcSpawnTime = kAlienEggMinSpawnTime + (calcEggScalar / clampedNumPlayers) * kAlienEggPlayerScalar
return Clamp(calcSpawnTime, kAlienEggMinSpawnTime, kAlienEggMaxSpawnTime)
end
<b>From Balance.lua:</b>
kAlienEggMinSpawnTime = 7
kAlienEggMaxSpawnTime = 60
kAlienEggPlayerScalar = 10
kAlienEggSinScalar = 14
kAlienEggsPerHive = 9
From above, the resulting graph of egg spawn time per hive if all eggs dead, where x is 6 to 12 players on your team:
<a href="http://www.wolframalpha.com/input/?i=7%2B+%28%28sin%28%28%281-1%29%2F9%29+*%28pi%2F2%29%29*14%29%2Fx%29*10++range+6+to+12" target="_blank">http://www.wolframalpha.com/input/?i=7%2B+...++range+6+to+12</a>
(give time to load!)
It would seem that numDeadPlayers is ignored, and, from this graph (correct me if there is a mistake) the number of players per team does *not effect spawn rate while already at 0 eggs*!!! Eggrate here is always 7 sec.
Here is a graph where x= team size and z= num eggs alive. (Due to code, z=1 means either 0 or 1 eggs remaining):
<a href="http://www.wolframalpha.com/input/?i=7%2B+%28%28sin%28%28%28z-1%29%2F9%29+*%28pi%2F2%29%29*14%29%2Fx%29*10%2C++x%3D6..12%2C+z+%3D1..9&a=*MC.6%21.%21.12-_*NumberMath-" target="_blank">http://www.wolframalpha.com/input/?i=7%2B+...2-_*NumberMath-</a>
Here we can see that the team size does affect egg rate at eggs>1, but is difference appears somewhat negligible except when a team is nearly full of eggs (about >75%).
Comments
Players who are pushed too close to their teammates will find themselves in danger of becoming redundant. If they don't push forward and do something with their pack, they're just wasting players; nobody needs 3 skulks sitting in Reactor "just in case". Players who are pushed too close to their opponents will, as expected, find themselves in more frequent combat and consequently more frequent deaths.
Or, to put it simply: at a certain point, the only way for new players to contribute to their team will be for them to charge directly into combat with the enemy.
Something that needs to be looked at(again), imo.
This isn't to the detriment of marine play. I think it may not make much difference to the marines, in fact, but it may be a world of difference to aliens. Too often do I hate playing aliens, simply because there is often only one egg available, but over three or more people dead at the same time, all waiting to get back in the fight. This is especially prevalent early game, when it is the most frustrating not to be able to get back to fighting quickly.
However it would probably also require adjustments to the waiting time before a match starts (which should be increased anyways), as otherwise the match starts and bases the starting eggs off of the maybe two or three people who have already joined, but doesn't account for the other six guys still trying to join aliens. And you can't just say "alright, we have twenty people in the waiting room, let's just scale the eggs based on that number", since sometimes players just go afk or leave after the game has begun. Or sometimes people join in after the game has begun.
Something like that. It's more accurate to say that basic RT and base harassment become PvP tasks as the amount of enemies on the map increase, while the basic support/noncom tasks like Gorging available becomes reduced as more people show up to fill the roles.
A hypothetical average of 1 skulk killed per 10 seconds in a 6v6 does not indicate a hypothetical average of 2 skulks killed per 10s in a 12v12. The latter has, on average, more enemy-occupied rooms to deal with, a significantly increased probability of enemy response to attacks, and a much lower Gorge to Skulk ratio than the former.
The Shade nerf was completely silly, since a 3.Tres command option easily highlighted the Shift both on the map, on the HUD with a blue circle, and visually for Marines players while giving the added benefit of marking all nearby Alien targets <i>while negating the shade and camo upgrade</i>. For 3 T.Res, aliens get a 25% attack speed increase or a structure ability, which none of the structure abilities or the attack speed increase are even close to the same level of effectiveness. A smaller radius is ludicrous, as it's simple for even an intermediately skilled Marine to find and kill a shade with one ping from the commander. It was that easy before, it's even easier now. It's pretty much impossible to hold the Marine players hand more than it currently is, so I guess an Alien nerf was the only answer.
Basically, Aliens are now punished <i>even harder</i> for dying than they already were. They already take forever to spawn, and then need to gestate to choose upgrades, but now they are also limited by low egg counts on high population servers. I'm not sure if it was UWE's intent to make the Aliens the less mobile defensive team with fast, high-powered individual Marine units that die with no downside, but that's essentially what's happened.
I don't necessarily know why the Marines have a lower win-rate than the Aliens team, but I do know that as an Alien commander often times my team doesn't need to be told what to do in order to win. They just do it. On Marines, it's not uncommon for players to completely ignore me. I also have noticed that the Marines team is a lot less likely to have a microphone. I don't know why, but usually only one or two marines have voice whereas Aliens usually have four or five people who use voice. This seems to contribute to a win or a loss pretty heavily, and leads me to believe that newer players are, quite honestly, joining the Marines team almost exclusively. This also explains why the statistics on NS2Stats are so variable, while still holding a marginal Aliens lead.
Lets be honest, almost any server I join into has a spot open for Aliens with Marines having a one player advantage yet they still manage to lose. Overall, how about UWE focuses on buffing the Marines versus bringing the Aliens down to a level of derp simplicity without any variation. I mean even after the ARC buff's and the incredible ease of producing ARC's very early on I hardly ever see them, even at the end of a match during a hive siege. Why that is, I simply don't know, as they're incredibly effective with Marine's covering them.
I guess without any viable Alien structures, there's no real reason to use ARC's anymore even with the massive buff they recently recieved. Especially since it's so easy for three or four Marines to clear out a hive without any real support.
TL;DR- Making the Marines better would be a more acceptable solution than pulling every tooth the Aliens had. It wasn't incredibly strategic even before the across-the-board structure Nerfs, but now you're handing the Aliens a victory based on nothing but individual player skill. The Alien commander can do very little to change the outcome of a given game beyond researching abilities, which amounts to pushing one of four buttons with two hives. Make the Marines less dependent on their commander and revert the last three Alien changes and I think you would see a better win-rate.
It turns out that a high-pop alien team size does enjoy a somewhate higher spawn rate when the egg stock is a high number, but the benefit becomes negligible after egg stock drops below 75%. Egg rate is 7 when out of eggs, no matter what teamsize.
This is the math:
Time to spawn an egg depends on teamsize and existing eggs at the hive:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--> 1 2 3 4 5 6 7 8
6 7 11,0 14,98 18,67 22,00 24,87 27,21 28,93
7 7 10,4 13,84 17,00 19,86 22,32 24,32 25,79
8 7 10,0 12,99 15,75 18,25 20,41 22,16 23,44
9 7 9,70 12,32 14,78 17,00 18,92 20,47 21,62
10 7 9,43 11,79 14,00 16,00 17,72 19,12 20,16
11 7 9,21 11,35 13,36 15,18 16,75 18,02 18,96
12 7 9,03 10,99 12,83 14,50 15,94 17,10 17,96
13 7 8,87 10,68 12,38 13,92 15,25 16,33 17,12
14 7 8,74 10,42 12,00 13,43 14,66 15,66 16,40
15 7 8,62 10,19 11,67 13,00 14,15 15,08 15,77
16 7 8,52 9,99 11,38 12,62 13,70 14,58 15,22<!--c2--></div><!--ec2-->
So if you have 0 or 1 egg at the hive, the next egg will spawn in 7 seconds, no matter the teamsize. This is of course the HUGE BIG BUG, because it means that in order for you to have ANY team-size adjustment to egg-spawning time, you must NEVER have less than 2 eggs (and even then, the effect is
minimal).
Seen another way, you may at the start of the game have 1 gorge and 1 commander while the rest of the team goes skulk. How long must a skulk stay alive on average in order to maintain a certain number of spare eggs?
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--> 1 2 3 4 5 6 7 8
6 0,47 1,11 1,50 1,87 2,20 2,49 2,72 2,89
7 0,58 1,29 1,75 2,18 2,57 2,90 3,17 3,37
8 0,93 1,47 2,00 2,49 2,93 3,32 3,63 3,86
9 1,05 1,66 2,25 2,80 3,30 3,73 4,08 4,34
10 1,17 1,84 2,50 3,11 3,67 4,15 4,53 4,82
11 1,28 2,03 2,75 3,42 4,03 4,56 4,99 5,30
12 1,40 2,21 3,00 3,73 4,40 4,97 5,44 5,79
13 1,52 2,39 3,25 4,04 4,77 5,39 5,89 6,27
14 1,63 2,58 3,50 4,36 5,13 5,80 6,35 6,75
15 1,75 2,76 3,75 4,67 5,50 6,22 6,80 7,23
16 1,87 2,95 3,99 4,98 5,87 6,63 7,26 7,71<!--c2--></div><!--ec2-->
From this you can see that in a 16 player game, skulks have to stay alive for about three times as long to avoid egg-lock. As the ACTUAL lifetime of skulks probably goes DOWN due to the increase in intensity in bigger games, this quickly breaks down.
So good luck in trying to avoid egg-lock; 3 minutes average lifetime for skulks in order to have any teamsize advantage ... I don't know, I can't see it ever happening.
Now, you could just tweak the egg-spawning code to be team-sensitive all the way down, and base it on the above table - ie, basically keep the expected lifetime of skulks flat over teamsize. That would involve choosing a time (say, about 1 minute) and then figure out the required algorithm from
that. A minute would mean 15 seconds spawn time for a 6 player team, about 8 seconds for a 9 player team and 4 seconds for a 16 player team, aboutish.
OR you could intentionally keep the free egg spawning lower than required for aliens, and force the commander to regularly pay to spawn extra eggs - basically rewarding a careful alien team by saving up tres, and allowing the alien team go go extremly aggressive by paying lots of tres.
However, as I outlined in the old article I wrote (http://www.unknownworlds.com/ns2/forums/index.php?showtopic=120512), this must be available at ALL HIVES - as it is such a fundemental requirement, it CANNOT be locked into a specific kind of hive.
Now, if you solve the egg-locking problem, then - if the alien commander has the res to pay for it - the aliens will basically never stay dead for more than
15 seconds (though the max number of eggs per hive is 9 - in a 16 player, one hive game, that sets the upper size of the spawn wave).
OTOH, considering that you can expect the alien commander to pay quite a lot of tres for it, maybe that is not as unbalancing as it may sound.
And what is the alternative? The aliens taking a few minutes to respawn all their skulks that died in the first encounter, while the marines 3 or 4 IPs respawn all dead marines inside 30 seconds, and then let the marines dominate the game because all their opponents are dead?
Also, why do so many servers up the playercount to 20 anyway?
Thanks for all the work on this issue. It was mitigated before by the Shift hive first, and made broken by the ability to drop Shifts anywhere. The Shift nerf has made it impossible to self-correct this issue, and it is truly silly as a mechanic to be punished so heavily for dying on a unit that has such low health and armor compared to even the stock Marine.
I don't really care how it's done, but it needs to happen.
Minspawntimer = averagelifetime / playercount
As an example - if average time = 1 minute, or 60 seconds and 6 players
then MST = 60/ 6 = 10 seconds
12 players, average time = 1 minute,
then MST = 60 / 12 = 5 seconds
If you then consider that commander takes up 1 spot and won't die, then the equation is now
Minspawntimer = average time / (player count - 1)
However, I will agree that on high pop servers, being forced to go shift hive first is somewhat annoying, however there are more reasons then just that to go shift hive first (increased speed and adren is not bad to have, the speed especially so early game). I have also seen many games on my 24 man server that go shade first and still do well. Camo early game can also go a long way in preventing deaths just by getting the drop so easily on marines out scouting node/base drops. You CAN do well any way you go, it all comes back to just how well your team is doing. If you don't do well, you sit in respawn alot and want to blame devs and reason out why the system is broken. If you do well, all is well and we make silly posts on the general discussion boards instead.
However, I will agree that on high pop servers, being forced to go shift hive first is somewhat annoying, however there are more reasons then just that to go shift hive first (increased speed and adren is not bad to have, the speed especially so early game). I have also seen many games on my 24 man server that go shade first and still do well. Camo early game can also go a long way in preventing deaths just by getting the drop so easily on marines out scouting node/base drops. You CAN do well any way you go, it all comes back to just how well your team is doing. If you don't do well, you sit in respawn alot and want to blame devs and reason out why the system is broken. If you do well, all is well and we make silly posts on the general discussion boards instead.<!--QuoteEnd--></div><!--QuoteEEnd-->
The fact that you said that shift is currently fine in the same breath that you said shade is a reasonable first hive pretty much made me ignore everything that came afterwards. Especially on a 24 man server. It makes me think that your server is not only green listed, but that all your players are too.
Your team might have a problem if you have to choose between your team spawning, or building a second hive.
I already know how that game ends.
I didn't say you were wrong that anything <i>can</i> win a game. The caveat is that shade first requires the Marines commander to be a complete n00b to win, or for your team to simply outmatch the Marines on every level to have an even shot at victory. It's the trolling path to victory against new players, and I think most knowledgeable players would agree with that assessment.
Kudos to having a server that helps new players, it's a vital community service. But saying that those things work in a server full of new players that don't know anything makes things balanced when clearly they aren't at the level of intermediate play or above is ludicrous.
And also don't make the mistake of thinking my server caters to noobs only either, currently I have 2 out of 24 greenlisted players and earlier I had a UWE tag playing on there ;)
And also don't make the mistake of thinking my server caters to noobs only either, currently I have 2 out of 24 greenlisted players and earlier I had a UWE tag playing on there ;)<!--QuoteEnd--></div><!--QuoteEEnd-->
I'm not going to debate something completely out of line with the OP here as to how much a shift can actually offset egg lock on large servers. I believe the shift is both required and inadequate on large servers of reasonably skilled players, you do not.
<!--quoteo--><div class='quotetop'>QUOTE </div><div class='quotemain'><!--quotec-->However, I will agree that on high pop servers, being forced to go shift hive first is somewhat annoying...<!--QuoteEnd--></div><!--QuoteEEnd-->
You admit it's at least annoying, good enough for me. If you think it's reasonable for each skulk to have a minimum of three minutes per death to avoid egg lock, maybe your aliens players are better than I thought.
You admit it's at least annoying, good enough for me. If you think it's reasonable for each skulk to have a minimum of three minutes per death to avoid egg lock, maybe your aliens players are better than I thought.<!--QuoteEnd--></div><!--QuoteEEnd-->
I believe it's annoying when your team is bad and you're forced to go that way first, yes. I'm talking source, you're talking symptoms. That's pretty much what this entire topic revolves around.
Doesn't sound like you play aliens a whole lot, its the skulk condition to die your a cheap expendable low life you shouldn't be punished for playing aggressively, frankly you have to play aggressively to be a good skulk. If a marines get a phase gate outside your hive your probably going to run out of eggs trying to stop it then lose your hive. Sometimes it feels like the marines are a endless horde rather then the aliens. I think the changes to the shift are down right silly and people that complain about it are equally silly. I've played against good marines and bad marines, bad marines are the ones that got destroyed via the old shift. I cant count the times i had marines killing the eggs on the ground while completely ignoring the shift, I'd chuckle and drop 5 more eggs and they'd proceed to keep killing the eggs instead of killing the shift. Or like on veil i'd drop a shift in double spawn eggs and rines would spend 10 minutes endless running trying to take double while i took over the entire map while they were just getting tunnel vision.
Nerfing aliens to make up for failure of marines is just plain retarded.
I never said it was there job to die, i said it was there condition. Why aren't marines punished for endless flooding through a phase gate and dying in a hive? If there commander is good even if a team is endless flooding they probably wont have much of a delay in spawning. Skulks are far more frail then marines even more so the longer the game lasts.
Shade first is an excellent choice against a green marine commander, and a really sucky choice against a decent marine commander that knows how to counter shades.
Which is a flaw in the game, really. The problem is that shade is basically auto-countered by the normal marine gameplay; most commanders always adds an obs around any forward base ANYHOW, so going shade does not really change the marine gameplay much.
Strategically, the problem with Shade is that it encourages skulks to move around slowly, and encourages marines to stick together even more... which is good for the marines and bad for the aliens.