Rework larva queue

Surprised nobody’s made this yet

When they nerfed xeno numbers, there were some xeno players ghosting roundstart after not getting a larva at the beginning, and literally spending the whole round as a ghost, unable to spawn for over an hour at times, sometimes even not until hijack.

I think larva queue was made to address this issue, and the intention was good, but ultimately the current system is far more faulty in practice than on paper. I’m all for a queue, I just think it needs to be reworked.

Issues with current queue:

  • The queue moves backwards as often as it goes forwards. Xeno players keep getting pushed back every time somebody new joins the round, or dies and ghosts.

  • Good players are punished by it; players that run high-risk high-reward strategies can no longer play; even if they singlehandedly get 10 caps, they don’t ever get to reap the rewards of all their work once they die. Playing as a runner for instance is just not possible, you die to one PB and you’re out for the round.

  • Good spawn not guaranteed. You can spend 30 mins waiting, just to spawn as a chestburst from a marine on the front. You get gunned down instantly, and then you lose your spot in the queue and have to wait another 2 hours.

  • If you join roundstart and disconnect, you can join an hour later and still be first in the queue. Not sure if that was an intended mechanic, but it’s the same principle as the first point. People who just joined are overriding people who have been waiting for a long time

Suggestions to improve it:

  • Make it an actual queue, first-come first serve. No budging. Just base it on longest death time, or whoever has been waiting the longest. Don’t override people who have been waiting for an hour every time somebody new joins the game.

  • Only put people in line when they click the join as xeno button. Honestly just steal the queue system from TG, it works fine.

-give us our old numbers backHAHLikethat’severgonnahappen*bookslam.gif

  • Not sure how to fix the punishment towards good players, I think that’s just a combination of various things, nerfs to numbers, etc. xeno is just in a bad state presently. But the queue is at least one factor affecting this that could have the potential to be fixed/changed.
    Trying to implement a system of boosting people through queue based on how many caps they get would be difficult and probably unfair; often caps are a team effort, and some might get a cap just for another xeno to ferry it to the hive and nest it.

Maybe if there was a way to implement a mechanic that highlighted certain individuals after they’ve nested a substantial number of caps? For example a runner might get preference after nesting 3 caps or something. But again determining if that runner actually got the caps is difficult. Maybe if the human didn’t have contact (get tackled or anything) by other xenos between the time they were capped and nested? Idk just spitballing but again that’s probably hard to implement mechanically.

4 Likes

I have been very transparent about the fact that the ordering is just based on time of death and there is no penalty for going afk, playing as a face hugger, or playing on an admin z-level. Players that haven’t played the round yet have a time of death of 0. The majority of “cuts” in line will be these players that have only so far observed the game, so I had the message indicate how many players have yet to play.

But the same goes for if you go afk or disconnect. When you reconnect you have the same time of death. If its say 1000, then you are ahead of everyone with a death time of 1001 or more; but behind everyone that has a death time of 999 or less (for same number its just who got there first).

So say for example there are three observers in the server. Player 1: has yet to play (0 ToD) and has xeno candidacy set true. Player 2: died early on (500 ToD) but does not have xeno candidacy set true. Player 3: that died later (1000 ToD) and has xeno candidacy true.

Player 1 will see they are 1st in queue with 0 new players ahead of them.
Player 2 isn’t in queue.
Player 3 will see they are 2nd in queue with 1 new players ahead of them.

Lets say a larva bursts, and player 2 now set xeno candidacy true.

Player 1 is in the game.
Player 2 will see they are 1st in queue with 0 new players ahead of them.
Player 3 will see they are 2nd in queue with 0 new players ahead of them.

Then don’t die. If they helped the hive cap a bunch, then the queue will be moving quickly. If they didn’t help the hive cap, then the queue will be moving slowly.

Someone needs to take over that larva for it to have any chance of surviving. That larva permakilled a marine it spawned in and its the marines fault for allowing the larva to burst. If you really hate the potential of this scenario then disable xeno candidacy.

Intended. Ordering is based on time of death. The primary goal is give priority to people who have not played the round at all or have been out of round the longest.

I agree on that maybe we should nerf new players a bit, but overall I think queue works fine. The problem is amount of larvae and therefore respawns, but there is nothing queue can do about it.

What you can do is to play hugger. Not only it won’t affect your place in queue, but if you hug someone you’ll have some priority in getting larva from them. And it’s fun and you can really help your hive.

2 Likes

How does it work when it says you are awaiting placement in the queue? I find that whenever I’m in the queue and decide to play as hugger after I die as hugger it will just say I’m awaiting placement and that message doesn’t seem to change even after waiting a while, not sure if that means it’s kicked me out of the queue or what.

Also to ihatethisengine (I don’t think forum allows replying to 2 people at once), I’m pretty certain hugging someone as xeno doesn’t give you priority larva. I think it did initially during test merge but it was fixed. Although dev can correct me if I’m wrong. Either way whenever I hug people I still get the same issue of “You are awaiting placement” or whatever the exact wording is.

You can mark text and press quote to add it to your message. Like I did.

1 Like

So the join as xeno button just tries to spit out the last message you’ve received regarding the queue. If there is no message yet for you, it makes a queue assessment for everyone, and updates everyone’s cached messages. If you still don’t have a cached message at this point, that means that you aren’t currently eligible and it’ll spit out the message explaining how the queue works and that you’re awaiting placement.

You won’t have a placement in queue if you’re job banned as xeno, you have a previous human that hasn’t perma’d yet, your time of death is under 5 minutes ago, you’ve been inactive for more than 5 minutes, or you aren’t a ghost.

Dieing as a hugger means you can’t join for 5 minutes, but your time of death as far as queue sorting is either 1 or whatever your old time of death was as a non-facehugger xeno or marine on either the ground map or ship map (not an admin level).

So if that was confusing: Dieing as anything makes you wait 5 minutes. But how you are sorted in the queue is based on non-hugger xeno or marine death time on a regular z-level.

They’re referring to this PR I also did: Player huggers now get second dibs if they hug a player by Drulikar · Pull Request #3706 · cmss13-devs/cmss13 · GitHub
If the hugged marine is still a ghost and they have xeno candidacy set true, they are the larva. Otherwise if a player-hugger hugged them, and that player is currently in the larva queue, then they are the larva. Otherwise just the first person in the larva queue is now the larva.

1 Like

Ah I see that makes sense now. Dying as hugger is actually more punishing now since it locks you out of respawns for 5 minutes instead of 2.5 like it used to.

Oh that’s cool, I completely forgot about that PR. So I suppose hugging someone and then waiting for them to burst (while praying that they don’t take the larva) is a viable strategy

Playing as a face hugger again after death is still a 3 minute restriction; its just larva (even before the larva queue) has been a 5 minute restriction.

That’s not true. It used to be 2.5 minutes before you could respawn from pool/core as buried larva. 5 minute timer was only if you were taking over a ghosted body. It was always weird that it took longer to respawn as hugger than it did as larva
Edit: Now that I think about it’s possible that it was always 5 minute timer for the auto join and it was only 2.5 minutes for manually joining and I just never realised it

2.5 minutes only applies to taking over afk/ssd xenos. It was introduced here 2 years ago: Halved death timer · cmss13-devs/cmss13@61324e8 · GitHub

Using a stored larva has been 5 minutes. It was introduced here 5 years ago: Larva fixes · cmss13-devs/cmss13@0770256 · GitHub (3000 deciseconds is 300 seconds which is 5 minutes)

It’s the other way around

Taking over a ghosted xeno requires 5 minutes, spawning as pooled needs 2.5

1 Like

The code is open source, and relevant commits were just linked to you. Use blame on latest versions of those files to progressively go back in time.

I’m not saying you haven’t explained it well, I get how it works but presently it’s just not playing out very well practically.
If I just connect to a 2 hour round, I have “yet to play the round” technically but I still override someone who’s been there waiting for an hour and a half. I just don’t think it’s very fair, or efficient. If it was just made to be first come first serve, or prioritized solely the death timer, it might be more balanced. If it just let the person who’s been ghosting the longest spawn first, regardless of whether they’ve played yet or not I just feel that makes more sense.

Tell that to players like Grug

Sure the queue will move faster, but the player that solo fragged to make it possible will never be at the front of it, that is the issue. Saying “don’t die” is literally the equivalent of “skill issue”, it literally means nothing. you get 10 caps, that now only gives 10 larva, and in the time it takes them to burst 10 people could easily join the server or die and ghost, and then get in front of you and you never get to play again.

true, but when you burst in a 3x3 cadebox with NO chance of surviving, it’s not really fair that it costs you your queue position and then you’re still out for the rest of the round.

I agree with the latter half. Just give priority to people who’ve been out the longest, not those who haven’t played.

I’m sorry but I’m too boomer to figure out how to sift through code

I’m literally just telling you as of…idk like 14 mins ago

If I try to spawn as burrowed, it says “you must be dead for 2.5 mins.”
Then I try to spawn as a ghosted mature larva, and it says “you must be dead for 5 mins”

That’s literally what’s happening right now in game, idk anything about the stuff codeside

Ultimately the queue is prioritized entirely on the death timer. Everything about players who haven’t played yet is explaining the effect that a player who hasn’t played yet has a time of death of 0 and thus are at the front. What is an exception is that on an admin-z level or as a facehugger will set your time of death to either 1 or your time of death when you died as a xeno or marine.

I can guarantee you 100% it’s been 2.5 minutes to respawn as buried/pooled larva for a long time. And 5 minutes to enter a ghosted xenos body. Any xeno player can tell you this.
Looking at that commit you just linked (the halved death timer one) it looks like the 2.5 minutes also applied to getting automatically spawned as a bursting larva. So the 5 minute wait time that the larva queue currently has is a new change, it used to be 2.5 minutes.
Edit: Actually might be misreading that commit, still not sure if it applies to auto joining. But 2.5 minutes to manually join as pooled/buried was 100% the case for a long time
Ok looking at it more I’m pretty sure it was 5 minutes to be a candidate to automatically respawn as xeno but 2.5 minutes to manual join. I never knew that.

Ohh I see

But is there a way to bypass that then, so people who just connected aren’t bypassing people who’ve been waiting for 2 hours?

Using the join as xeno button is not the queue, and the queue will use up larva as soon as one becomes available if it hasn’t recently spawned a larva. So yes if you die, no one is in queue, and you press the join as xeno button, then the restriction is only 2.5 minutes.

Oh yea I know that, I’m just saying if queue is empty and you try to join as a xeno by taking over a ghosted xeno instead of pooled larva, you have to wait for 5 mins instead of 2.5