ACE3 icon indicating copy to clipboard operation
ACE3 copied to clipboard

Hunter Killer (Commander Override)

Open PabstMirror opened this issue 4 years ago • 12 comments

Allows commander to override gunner and slew the turret to the direction his view is facing.

https://www.youtube.com/watch?v=p5yoC9p35GQ

How it works:

  • Stick directionStabilized = 1; on the puppet turret
  • Normally you then manually turn it off _vehicle enableDirectionStabilization [false, _puppetTurret];
  • When commander override is triggered then enable it and then do _vehicle lockCameraTo [_lookPoint, _puppetTurret];

Design Issues:

  • Aim accuracy The demo is setup with both low and high accuracy modes, but we should just pick one mode and stick with it

  • Normal Precision Uses eyeDirection/turretDirection on a non-local turret which is only roughly synced in mp. e.g. at 1000m it will aim at the right building but not the right window. As the commander tracks over it will kind of jump from rough point to point, not continously.

  • High precision We sync our local lookDir via setVar and it should perfectly match I think this is fine, we just need to do a little work to make sure we don't overload network traffic

  • Commander Firing I tried action//manualFire and it was weird, it didn't seem to fire in the direction either turret was looking. I suspect both FCS were conflicting. Could try the other fire commands, but I'm ok leaving this feature to just slew and then handoff to gunner.

  • Config hell (turret and optics inheritance is always a mess)

PabstMirror avatar Oct 10 '21 00:10 PabstMirror

Can this system be expanded for A) Automatic turret turning for a 'Shtora-1'-alike system (turns the turret to an incoming rocket/laser when enabled) and/or automatic target tracking for Radar guns (i.e. ZSU)?

LorenLuke avatar Oct 13 '21 18:10 LorenLuke

ll - yeah, we can probably use this same code to do slew-to-cue

2.08 will add 3rd arg, and won't require any directionStabilized = 1; configs e.g. (vehicle player) lockCameraTo [w, [0], true] seems to have some smoothing to it that different from the other way that hard snaps, it also seems to works on AI

PabstMirror avatar Oct 16 '21 04:10 PabstMirror

I think this is fine, we just need to do a little work to make sure we don't overload network traffic

~~My idea would be, do normal mode first so you get the movement started.~~ ~~Send a remoteExec to the commander to request his position, commander will send answer back.~~ ~~Once answer with exact position has arrived, re-adjust to that one.~~ ~~That process will usually not take longer than ~100ms to get the exact position.~~ ~~And if you already start movement early the player probably won't notice~~

~~That reduces the network traffic to zero while not using this.~~

^ Actually the above was because I thought this worked like below.

I also think instead of only commander override, there should also be a button for the gunner to move his own view to where the commander currently is.

So the commander can tell the gunner to look at his position without having to force him.

dedmen avatar Oct 24 '21 14:10 dedmen

Posting the summarization of the discussion about "missing featrures" from slack, before it gets lost in time.

  • an option to disable that feature for yourself, so your view cannot be slaved

  • gunner has the same keybinds and can do the same thing.

  • Not all tanks allow it, so a config entry on the turrets makes sense to me. ace_hunterKiller = 0; With

0 - no hunter killer system (or -1)
1 - can be controlled
2 - can control
3 - both

diwako avatar Mar 16 '22 22:03 diwako

  • Not all tanks allow it, so a config entry on the turrets makes sense to me. ace_hunterKiller = 0; With
0 - no hunter killer system (or -1)
1 - can be controlled
2 - can control
3 - both

I'd actually like to update my config entry suggestion and move the entry to the vehicle instead of the turret.

Have it be an array of arrays, with subarrays having the format [TURRET_INDEX, VALUE]

ace_hunterKiller = {
    {{0}, 1},
    {{1}, 2}}
};

This will make adding it to compats a lot easier since it will avoid complicated turret inheritance issues, and it's a single config lookup instead of getting from each turret.

Drofseh avatar Mar 16 '22 22:03 Drofseh

Add to all 2035 tanks

RHS AFRF Compat would be nice to have too.

severgun avatar Jun 01 '22 06:06 severgun

Add to all 2035 tanks

RHS AFRF Compat would be nice to have too.

Pretty sure they are implementing their own version of it, check the RHSDEV mods.

fire-391 avatar Jun 01 '22 23:06 fire-391

would be nice to have some manual override/fnc/cba setting to enable (or disable) this for a non-supported tank quickly without the need for a compat mod

edit: nvm diwako told me its already in :D

nomisum avatar Jun 22 '22 07:06 nomisum

Just played around with this tonight and it seems to work fairly well.

JonBons avatar Jul 09 '22 03:07 JonBons

My unit has been playing with this a few missions, we however extended the functionality to the 2035 ifvs and apcs. Imo that should be the standard as well, as these systems most likely have this.

class APC_Tracked_01_base_F: Tank_F {
    ADDON = 1;
};
class APC_Tracked_02_base_F: Tank_F {
    ADDON = 1;
};
class APC_Tracked_03_base_F: Tank_F {
    ADDON = 1;
};
class Wheeled_APC_F;
class AFV_Wheeled_01_base_F: Wheeled_APC_F {
    ADDON = 1;
};
class APC_Wheeled_01_base_F: Wheeled_APC_F {
    ADDON = 1;
};
class APC_Wheeled_02_base_F: Wheeled_APC_F {
    ADDON = 1;
};
class APC_Wheeled_03_base_F: Wheeled_APC_F {
    ADDON = 1;
};

diwako avatar Jul 09 '22 22:07 diwako

As an FYI, this will enable hunter killer (from a config basis) on the following common mod vehicles after adding the APC base classes. Unsure if the intent is to base this feature off of realism (or what makes sense) or just to allow it on anything that has a gunner/commander turret team role.

BMP-1 (CUP_I_BMP1_TK_GUE)
BMP-1 (CUP_O_BMP1_CSAT_T)
BMP-1 (CUP_O_BMP1_CSAT)
BMP-1 (CUP_O_BMP1_TKA)
BMP-1P (CUP_O_BMP1P_CSAT_T)
BMP-1P (CUP_O_BMP1P_CSAT)
BMP-1P (CUP_O_BMP1P_TKA)
BMP-2 (CUP_B_BMP2_CDF)
BMP-2 (CUP_I_BMP2_NAPA)
BMP-2 (CUP_I_BMP2_UN)
BMP-2 (CUP_O_BMP2_CHDKZ)
BMP-2 (CUP_O_BMP2_CSAT_T)
BMP-2 (CUP_O_BMP2_CSAT)
BMP-2 (CUP_O_BMP2_RU)
BMP-2 (CUP_O_BMP2_SLA)
BMP-2 (CUP_O_BMP2_TKA)
BMP-2 Ambulance (CUP_B_BMP2_AMB_CDF)
BMP-2 Ambulance (CUP_I_BMP2_AMB_NAPA)
BMP-2 Ambulance (CUP_I_BMP2_AMB_UN)
BMP-2 Ambulance (CUP_O_BMP2_AMB_CHDKZ)
BMP-2 Ambulance (CUP_O_BMP2_AMB_CSAT_T)
BMP-2 Ambulance (CUP_O_BMP2_AMB_CSAT)
BMP-2 Ambulance (CUP_O_BMP2_AMB_RU)
BMP-2 Ambulance (CUP_O_BMP2_AMB_sla)
BMP-2 Ambulance (CUP_O_BMP2_AMB_TKA)
BMP-2 ZU-23 (CUP_O_BMP2_ZU_CSAT_T)
BMP-2 ZU-23 (CUP_O_BMP2_ZU_CSAT)
BMP-2 ZU-23 (CUP_O_BMP2_ZU_TKA)
BMP-2K (CUP_B_BMP_HQ_CDF)
BMP-2K (CUP_I_BMP_HQ_NAPA)
BMP-2K (CUP_I_BMP_HQ_UN)
BMP-2K (CUP_O_BMP_HQ_CHDKZ)
BMP-2K (CUP_O_BMP_HQ_CSAT_T)
BMP-2K (CUP_O_BMP_HQ_CSAT)
BMP-2K (CUP_O_BMP_HQ_RU)
BMP-2K (CUP_O_BMP_HQ_sla)
BMP-2K (CUP_O_BMP_HQ_TKA)
BVP-2 (CUP_B_BMP2_CZ_Des)
BVP-2 (CUP_B_BMP2_CZ)
BVP-2 (HQ) (CUP_B_BMP_HQ_CZ_Des)
BVP-2 (HQ) (CUP_B_BMP_HQ_CZ)
BVP-2 Ambulance (CUP_B_BMP2_AMB_CZ_Des)
BVP-2 Ambulance (CUP_B_BMP2_AMB_CZ)
M113A3 (Ammo) (rhsusf_m113_usarmy_supply)
M113A3 (Ammo) (rhsusf_m113d_usarmy_supply)
M113A3 (M2) (rhsgref_hidf_m113a3_m2)
M113A3 (M2) (rhsusf_m113_usarmy)
M113A3 (M2) (rhsusf_m113d_usarmy)
M113A3 (M2/Early) (rhsusf_m113_usarmy_M2_90)
M113A3 (M240) (rhsusf_m113_usarmy_M240)
M113A3 (M240) (rhsusf_m113d_usarmy_M240)
M113A3 (MEV) (rhsusf_m113_usarmy_medical)
M113A3 (MEV) (rhsusf_m113d_usarmy_medical)
M113A3 (Mk19) (rhsusf_m113_usarmy_MK19)
M113A3 (Mk19) (rhsusf_m113d_usarmy_MK19)
M113A3 (Mk19/Early) (rhsgref_hidf_m113a3_mk19)
M113A3 (Mk19/Early) (rhsusf_m113_usarmy_MK19_90)
M113A3 (Unarmed) (rhsgref_hidf_m113a3_unarmed)
M113A3 (Unarmed) (rhsusf_m113_usarmy_unarmed)
M113A3 (Unarmed) (rhsusf_m113d_usarmy_unarmed)
M2A2ODS (BUSK I) (RHS_M2A2_BUSKI_WD)
M2A2ODS (BUSK I) (RHS_M2A2_BUSKI)
M2A2ODS (RHS_M2A2_wd)
M2A2ODS (RHS_M2A2)
M2A3 (BUSK I) (RHS_M2A3_BUSKI_wd)
M2A3 (BUSK I) (RHS_M2A3_BUSKI)
M2A3 (BUSK III) (RHS_M2A3_BUSKIII_wd)
M2A3 (BUSK III) (RHS_M2A3_BUSKIII)
M2A3 (RHS_M2A3_wd)
M2A3 (RHS_M2A3)
M6A2 (RHS_M6_wd)
M6A2 (RHS_M6)
PTS-M (rhs_pts_vmf)
PTS-M (rhssaf_army_o_pts)
PTS-M (rhssaf_army_pts)
ZSU-23-4V (rhs_zsu234_aa)
ZSU-23-4V (rhsgref_cdf_b_zsu234)
ZSU-23-4V (rhsgref_cdf_zsu234)
ZSU-23-4V (rhsgref_ins_g_zsu234)
ZSU-23-4V (rhsgref_ins_zsu234)

JonBons avatar Jul 19 '22 00:07 JonBons

or just to allow it on anything that has a gunner/commander turret team role.

pls no

severgun avatar Jul 20 '22 13:07 severgun