The skirmish respawn system is bad

Users who are viewing this thread

Gotha

Adimi h.c.
Baron
Hey,

first of all, I know many of you dislike Skirmish itself, but I don't want to rant about it in general, I just really want to clear up the confusion about the respawn system and explain to you how it works.
Right now it's a bad system which could be much better with small adjustments.

Every team ("attacker" and "defender") has always one spawn area (initial spawn) and two respawn areas (area A and B for each team).

If a player dies and is trying to respawn, the following will happen:

The game gets all available respawn areas (area A and B).

Area A has a starting score of 0.0
Area B has a starting score of 0.0

Now the game will check the distance of each player to each respawn area and calculate a score from this.


Respawn rating calculation:

respawn rating = rr (starts with 0.0)


If the player is an enemy the respawn rating will be modified like this:

rr = rr - (1 / (0.0001 + (Distance between this player and the respawn area)) * 1



If the player is an ally the respawn rating will be modified like this:

rr = rr + (1 / (0.0001 + (Distance between this player and the respawn area)) * 1.5


So in the end there will be a score calculated for each respawn area.

The respawn area with the highest rating will be the respawn area to be respawned at.
Remember that only players which are alive are taken into account and flags don't matter at all to your respawn position.

Which means if you team collapses really quick or everyone is dead - you will respawn as far away as possible from the most enemies.

That's the reason you respawn so far away from everyone else in certain situations.
So that also means that respawning far away obviously increases the value of that respawn area and therefore leads to everyone else respawning there aswell.


If you find any mistakes on my side let me know.


Code below, I hope it's not outdated
C#:
private GameEntity GetBestZone(Team team, bool isInitialSpawn)
        {
            if (!this._spawnZonesByTeam[(int)team.Side].Any<GameEntity>())
            {
                return null;
            }
            if (isInitialSpawn)
            {
                return this._spawnZonesByTeam[(int)team.Side].Single((GameEntity sz) => sz.HasTag("starting"));
            }
            List<GameEntity> list = (from sz in this._spawnZonesByTeam[(int)team.Side]
            where !sz.HasTag("starting")
            select sz).ToList<GameEntity>();
            if (!list.Any<GameEntity>())
            {
                return null;
            }
            float[] array = new float[list.Count];
            foreach (NetworkCommunicator networkPeer in GameNetwork.NetworkPeers)
            {
                MissionPeer component = networkPeer.GetComponent<MissionPeer>();
                if (((component != null) ? component.Team : null) != null && component.Team.Side != BattleSideEnum.None && component.ControlledAgent != null && component.ControlledAgent.IsActive())
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        Vec3 globalPosition = list[i].GlobalPosition;
                        if (component.Team != team)
                        {
                            array[i] -= 1f / (0.0001f + component.ControlledAgent.Position.Distance(globalPosition)) * 1f;
                        }
                        else
                        {
                            array[i] += 1f / (0.0001f + component.ControlledAgent.Position.Distance(globalPosition)) * 1.5f;
                        }
                    }
                }
            }
            int num = -1;
            for (int j = 0; j < array.Length; j++)
            {
                if (num < 0 || array[j] > array[num])
                {
                    num = j;
                }
            }
            return list[num];
        }
 
Last edited:
From the start nobody liked it, its bad, like really really bad.
Guess how many adjustments were made to their flagship mode over 2 years ? 0, last map is over a year ago.

They didnt make battle and abandoned skirmish from day 1, thats their strategy.

edit: they are trying to balance it better, gotta give them that.
 
Back
Top Bottom