Jump to content

Gamestage Calculation (Multiplayer)???


Recommended Posts

Hi everyone-


I recently got all of my friends to start playing multiplayer with me. This has brought with it a lot of fun, as well we new challenges that I've never run into before as a single player veteran. Namely.... Gamestages. Our first Horde night together (which there were about 6 of us) was VERY disappointing. After reading up on how Gamestages work I finally realized that the game took pity on us since 4 of the 6 players died about 10 times each before day 7, which drastically reduced the difficulty.


That said, I can't wrap my head around how the game calculates Gamestage for a "Group" of players on a Day 7 Bloodmoon Horde.



gameStage = 0;

weight = startingWeight;

foreach (player in partySortedByPlayerLevel) {

gameStage += (player.level*(1+(player.daysAliveDifficultyBonus*0.1)+GlobalGameDifficultyBonus)*weight;

weight -= diminishingReturns;

if (weight <= 0f) {




On the 4th line I see where the formula begins, I think. But is that calculated per player and then divided by the total amount of players as an average? Or does it calculate individually and just take the sum of the group as the gamestage? I don't understand the context of the brackets or how it's factoring in diminishing returns into the "weight" value either.


In any case, if someone could be kind enough to explain/break this down for me, and or give an example of how to calculate gamestage for a group of players, I would be very appreciative!!!

Link to comment
Share on other sites

Hi Yamamoto!


In a short imprecise fashion, the game calculates gamestage for each player, based on that player's level, that player's daysalive, multiplying by the daysalivedifficultybonus for the server, and the game's difficulty bonus. Each players daysalive is modified by the substraction in daysAliveChangeWhenKilled config. So if the player has been around 100 days, but died 20 times, and that property is 2 (default), it'll count the player as being alive 60 days (100-20*2) ...


So let's say 4 players, each has a GS of 1000. It applies a diminishing return of 20 %, meaning P1 has 1000. P2 has 800. P3 has 600. P4 has 400, which it then sums up together into 2800.


This final value of 2800 is then applied to the WHOLE group, and it'll spawn the appropriate hordes based on that, for the whole group.


In your particular case, with 4 of the 6 players dying so much each, they had a very low gamestage. But even without that, usually Day 7, Day 14 and possible Day 21 hordes tend to be very overwhelming.


What I recommend doing, if the gamestage is way too low is:


1) daysAliveDifficultyBonus="0.1" .. change it to 0.2 or 0.3 .. that'll double/tripple gamestage at once.


2) daysAliveChangeWhenKilled ="2" .. set to 0. So deaths will not impact gamestage.


3) diminishingReturns ="0.2" .. set to 0 ... so there's no "discount" on groups. For the 4 player calculation above, instead of 2800 GS it would be 4000 GS, much better :)


Hope this helps!


/V - BUILD Treehouse Horde Base

Link to comment
Share on other sites

Hi Vedui!


Thank you so much for your help! I have made several edits to the XML files to ramp up Gamestages for everyone on the sever.


So according to your explanation the gamestage is the sum of gamestages of all players within the group, minus the diminishing returns (when applicable)? What confuses me then is that looking at the command console when a spawner pulled an event triggering a gamestage related spawn of a horde, my Gamestage was calculated at 23 and my friend next to me at 13 (according to the console) which resulted in a calculated group gamestage of 33, not 36. I would blame diminishing returns for this, but the value was edited to 0 beforehand, as was the dayAliveChangeWhenKilled to prevent any decrease.


Is this what you meant by "short imprecise...calculation"? Or are there other factors that I may be missing?


Thank you again for your help btw! I'm continuing to monitor calculated group gamestages as time goes on to make sure things don't get too out of hand lol.

Link to comment
Share on other sites

Well, I meant in that my explanation was imprecise and not 100 % accurate into every detail :)


I've never been able to get exact gamestage to be 100 % accurate. This could be different things, such as how they calculate days alive. It's likely to be a time value of player online and how many days this corresponds to. Ie, 1.2 days and not just 1 then 2 ... 3 .. etc. :)


It's also possible there is some rounding occurring, or the internal function calculating isn't exactly as described in the gamestage file.


But as a general rough guide I think it's quite good. Also daysalivechangewhen killed might or might not be retroactive. I haven't gone to that level of detail, as normally never needed!


Maybe keep playing, and periodically check it out and see how it matches up, and keeps to the formula as described :D

Link to comment
Share on other sites

@Vedui and Gup


Thank you guys for the feedback! I really do appreciate it. With your guys' help I've been able to make some much needed adjustments to my Gamestage files and make the server more fun for everyone.


That said, I hope others will find the information just as helpful as I did! :)



Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...