by roycewicz on May 7th, 2011
A simple boolean filter for SAM fire control radars to enhance tracking of human players. Air players in World in Conflict are used to "air-to-air" tactical aid strikes. Because of a2a strikes, they tend to be dynamic and unpredictable at times, making it difficult for MW Mod radars to track in order to establish a reliable intercept vector.
To counter their moves, radars now use a simple boolean filter to classify whether the target is cooperating or not cooperating. Non-cooperative means, the target is being evasive and unpredictable, making him difficult to kill. Cooperative means, the target is being predictable and making our job easier to kill him.
def NCTR_TrackInitiate( self, anECLTrack, aRadarAlt ):
NCTR_TrackInitiate( self, anECLTrack, aRadarAlt )
Non-Cooperative Target Recognition (NCTR)
Computerized process of blahdy's air-to-air strikes against non-cooperative air players.
Track initiation process for detecting non-cooperative targets (NCTs) to help in tracking unpredictable air players. This is to prevent needless wasting of SAM rounds b/c of trying to engage air players that do not have favorable intercept vectors.
A simple track initiation scheme is used and minimum of +10 HITs must be recorded in order to declare a track "PRESENT." Each time air player is visible in LOS and is validated by radar's MTI vector, we increment the HIT. Each time the target is not visible, we decrement the counter with a MISS. A simple boolean filter requires minimum of 10 hits within 3 second time span.
See "Understanding Radar Systems" by Simon Kingsley, ISBN 1-891121-05-7
This track initiation scheme should only be used to track TACAIR targets, as we simply do not have enough reaction time to tinker around with track declarations against fast-moving missile targets (CM/TBM/PGM) fired against us in a small WiC map. Moreover, enemy missiles tend to be cooperative targets, thus NCTR detection is not necessary on such tracks.
qid = ecl[anECLTrack].ReturnUID()
if ecl[anECLTrack].TrackInit_Return_Time() is not 0:
if ( wic.common.GetCurrentTime() - ecl[anECLTrack].TrackInit_Return_Time() ) > 3:
checktrack = PATRIOT.TWS_InterceptVector_Correlate( ecl[anECLTrack].ReturnCurrentPos() )
if qid in checktrack:
ecl[anECLTrack].TrackInit_Set_Time( wic.common.GetCurrentTime() )
Notify_Player = 0
if ecl[anECLTrack].TrackInit_Rtn_Counter() < 10 and ecl[anECLTrack].TrackInit_Rtn_Declare() is 1:
Notify_Player = 1
# Declare Non-cooperative Target.
elif ecl[anECLTrack].TrackInit_Rtn_Counter() >= 10 and ecl[anECLTrack].TrackInit_Rtn_Declare() is 0:
# Target is now cooperating.
self.Evaluate_TACAIR( anECLTrack, aRadarAlt )
if Notify_Player is 1:
if anECLTrack not in nctr_tracks:
if drop_messaging_time is 0 or (wic.common.GetCurrentTime() - drop_messaging_time) > 2:
if len(nctr_tracks) > 1:
pdFCS.com.exp.teamchat_2("Patriot TWS <#f60>NCTR</> <#ffc>Non-Cooperative Target on Track </><#ff0>%s.</> Compensating.." % nctr_tracks, 1 )
nctr_tracks = 
drop_messaging_time = wic.common.GetCurrentTime()