Ace3: Screeching seagulls give away the presence of spectators when using ACE_Spectator

Created on 19 Aug 2016  路  28Comments  路  Source: acemod/ACE3

Arma 3 Version: 1.62.137494 (stable)
CBA Version: 3.0.0.160713 (stable)
ACE3 Version: 3.6.2.0 (stable)

Mods:

  • @CBA_A3
  • @ace

Description:
As per the default Arma3 spectator functionality, spectators appear as screeching seagulls visible to players. This is quite immersion breaking, especially when using a respawn template which causes players to enter spectator mode when they die; one can immediately tell if a nearby player has died dead from the screeching of the ghost seagull released from their corpse. This means that there's no point in eg. checking the body of the player to see if they're still alive and reviveable with ACE medical, because if they turned into a seagull they're dead for good.

Steps to reproduce:
1) Create a multiplayer mission with 2 or more slots using the following respawn settings in description.ext:

respawn = "GROUP";
respawnOnStart = 0;
respawnTemplates[] = {"GROUP", "ace_spectator"};
respawndelay = 3;

2) Enter the mission with 2 or more players.

3) Kill one of the players.

4) Upon death, the player will spawn as a seagull, visible and audible to the living players.

Where did the issue occur?

  • Multiplayer, both dedicated and P2P hosted

Placed Modules:

  • None

RPT log file:

  • Sorry I don't have one, nor do I feel it's relevant to the issue at hand.
kinbug

All 28 comments

Good report, I actually thought we had code in already to deal with seagulls but I guess I must have revised that or something.

Sweet. In the mean time putting this in onPlayerRespawn.sqf for the mission seems to work for migrating the seagulls away:

{
    if (_x isKindOf "seagull") then
    {
        _x setPos [0, 0, 15000];
    };
} forEach nearestObjects [player, [], 250];

@brndd remove "GROUP" from respawnTemplates[]

The group template should do nothing really, it's an outdated leftover from A2 as far as I can tell.

Confirming that seagulls are still a thing - unfortunately it's kind of a pain to develop with respawn types group and side because without more than one player the mission instantly ends when you die (regardless of the "Mission fail when everyone is dead" - aka EndMission - template being active).

We use the group template in our missions because as far as we can tell it enables JIP during the mission even when AI is disabled. It's possible that things have changed, but IIRC this was still the case in 2014 when I last looked into it in detail. Side has always been broken in my experience.

If there are other ways of enabling JIP to empty slots in the mission without having to put friendly AI units on the map, then yeah group respawn would be useless.

To clarify, I'm talking about the template itself rather than the respawn type.

The template just points to BIS_fnc_respawnGroup which does a whole bunch of nothing. Whereas the respawn type 4/"GROUP" uses these templates:

respawnTemplatesGroup[] = {"SwitchPlayer","EndMission"};

Those templates along with whatever is hardcoded to happen for that respawn type (there's a lot of arbitrarily hardcoded nonsense in arma's respawn system) :stuck_out_tongue_closed_eyes:

We use the group template in our missions because as far as we can tell it enables JIP during the mission even when AI is disabled.

That is not true. If you disable the AI what makes you able to respawn after JIP are these entries:

respawn = 3; 
respawnDelay = 10;

there's a lot of arbitrarily hardcoded nonsense in arma's respawn system

This. So much. The whole system is crap, but what can they do? Changing stuff now would break so many missions.

You should be able to JIP into disabled AI slots with respawn types 2,3,4,5 as far as I know.

That is not true. If you disable the AI what makes you able to respawn are these entries:

Apologies, I confused the respawn type with the respawn template.

Either way, having "GROUP" as the respawn _type_ lets players connect to the server when the mission is still in progress and pick a unit if any are left, however when a unit dies it's dead for good. I think that is the best "respawn" format for the style of missions my group runs.

According to the documentation "SIDE" should also do this, but when we tried it (admittedly two years ago) it didn't.

Edit: here's the full settings that I personally use:

//These let players respawn as a remaining unused unit on their team once they die, and Just Work(tm)
//they also let players to JIP into these slots even when there is no AI occupying them, which requires respawn
respawn = "GROUP";
respawnOnStart = 0;
respawnTemplates[] = {"ace_spectator"}; //change ace_spectator to spectator if not using ACE
respawndelay = 3;
disabledAi = 1;
saving = 0;

Apparently respawn template SwitchPlayer also just points to BIS_fnc_respawnGroup :laughing:

Does the spectator template actually work with group respawn other than the seagulls?

I'm doing some debugging at the moment and it doesn't even seem to fire when you die for good (though maybe also due to some hardcoded logic that stops templates firing when your the last player and you die).

Silent, just start another instance of the game. You should be able to connect with both.

Either way, having "GROUP" as the respawn type lets players connect to the server when the mission is still in progress

Yes. That is what I wrote. Has nothing to do with the templates though. "GROUP" in respawn is just an alias for 4.

Does the spectator template actually work with group respawn other than the seagulls?

Testing it now, I think what fires with "GROUP" respawn is actually the vanilla spectator mode:

Image

Which, I suppose, could make this entire bug report erroneous, as it's possible that ace_respawn already removes the seagulls but just doesn't work with the respawn settings I've been using.

:laughing: Yeah it seems we might just have to drop support for respawn types group and side since they seem to be hardcoded to use vanilla spectator

Seems like they've fixed JIP on missions with no respawn, and the following settings seem to also work for JIP now (at least on my localhosted server, haven't tried on dedicated yet):

respawn = "BIRD";
respawnTemplates[] = {"ace_spectator"};
respawndelay = 3;
disabledAi = 1;

This would make group respawn obsolete for my use case, and maybe every use case, since you can just reload into the mission and select a different slot to respawn as a different unit.

Why don't you use "BASE" and have some units set to "playable"?

Yeah it seems we might just have to drop support for respawn types group and side since they seem to be hardcoded to use vanilla spectator

We should print a warning into the RPT if the current mission uses on of these.

Why don't you use "BASE" and have some units set to "playable"?

Doesn't "BASE" cause units to be magically resurrected? The kind of missions my group likes to run have a predetermined amount of units available, and we want each of those units to have permadeath, but also for players to be able to JIP into units that are yet to be occupied by other players.

To this end the old "GROUP" respawn did exactly what we wanted to, and now (since Eden?) it seems that both not having a description.ext at all, as well as respawn="NONE" or "BIRD", also allow JIP.

However, when using respawn="NONE", the ace_spectator script does not fire even if it is defined in respawnTemplates[]; you'll just lay dead until you abort and pick a different unit. Something similar seems to happen when using no description.ext settings at all and having everything defined through Eden with respawn turned off and respawn template set to "ace_spectator"鈥攚ith these settings, we would get the default spectator UI upon death instead of the ace_spectator one, but it's possible that there was some configuration mistake on our end.

Long story short I think the main issue here is on Bohemia's end, and the best settings for my particular use-case (co-op missions with a limited amount of units and permadeath) seem to be respawn="BIRD" and respawnTemplates[]={"ace_spectator"}.

You could use respawnTickets to limit the amount of respawns.

We should print a warning into the RPT if the current mission uses on of these.

I'm going to investigate support for respawn types beyond 2,3 (which I know definitely work) again with a fresh head. I still haven't tried your multiple game instances tip so maybe it is possible to get group and side fine when there's more than one player.

Also need to take a look at seagull respawn and verify that it works as expected there (might need to make it override BI's spectator template when both are active).

Would also like to try and make it more compatible with the MenuPosition and MenuInventory templates now that they've been changed.

Worst case though our template will only support types 2,3 by default (people could write their own code to call the setSpectator function for more specific use cases).

As I said earlier, it seems that type 1 "BIRD" also works out of the box on the current version of ACE, however none of the other ones work (0 "NONE" doesn't trigger spectator mode, 4 "GROUP" triggers default spectator mode, and 5 "SIDE" triggers default spectator mode and causes JIPs to spawn in as immobile seagulls).

5 is broken in A3 afaik.

Hello @acemod/maintainers. This ticket has been open for over 160 days without any activity.

This is (or should be) fixed in rewrite!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

DieselJC picture DieselJC  路  3Comments

armyinf0703 picture armyinf0703  路  3Comments

mihal190 picture mihal190  路  4Comments

Giorgy32 picture Giorgy32  路  4Comments

Snak3Doc picture Snak3Doc  路  4Comments