Maphack Detection System
GenTool introduces the Maphack Detection System, MDS, to check a running replay for
lock under fog and
stealth hack scenarios. It will highlight any possible move that could be the result of cheating, popup a dialog message with information, pause the game and jump to the suspected unit of the selected player.
MDS is disabled by default and can be enabled in GenTool menu with
Replay Observer set to
MDS. If enabled and running, MDS will decrease the overall replay playback performance.
MDS will start its initialization and check routine as soon as some player is selected from the control bar. If no player is selected, then no checks are running. Checks are only performed for the selected player, not others. If you want to check all actions from all players in a replay, you must restart it and select a new player from the control bar each time.
Fast Forward
If you use Zero Hour you can make use of fast forward (key F) to check a replay even faster. MDS fully supports fast forward.
Once a player is selected, MDS requires an initialization phase of 64 frames (around 2 seconds of gaming). When ready, MDS note in HUD will turn green to show it is actively checking for maphack actions. You can freely switch from one player to another, but MDS will always require to reinitialize.
MDS will detect invalid actions by players, but in some special situations it does
not automatically mean 100% maphack. If so, the popup will display a warning message and inform the user about it. One special circumstance is the influence of network lag in some cases and another is a lock-on from planes before take-off on airfield.
Latency
It appears that a new unit target can be given now but processed a few frames later since it must be communicated with other players first. This corresponds to what we call "laggy" matches. If this happens, then lock-ons on border-line units must be judged with caution, because the targeting command might have been given before the unit moved into the fog. Latency (lag) cannot be reviewed in replay playback.
To solve this issue, MDS takes advantage of a user definable lag tolerance subcheck. It rechecks all invalid actions against the last 64 frames. This makes sure that
a) a detection is only submitted if the tolerance of x-1 frames failed
b) the info popup presents a message about possible network lag influences. The lag tolerance has a default of 30 frames and can be adjusted to 10 till 64 frames. Pressing key
L will adjust that tolerance. Under ideal conditions, 30 frames are equivalent to 1 second in real time. 64 frames are the maximum the game sets for network latency.
Lock-on during plane take-off
Unfortunately the game engine gives attack orders after plane take-off only. This means it is not possible to check what target a plane has when it stands on an airfield. MDS will notice this behaviour and warn the user if the attack command was given while the plane was on ground. Apart from that MDS will not assist any further to solve this case. A manual check by yourself or GameReplays Staff will be necessary.
Reviewing with Info Popup + Key actions
When MDS detected an invalid action, it will popup a notification in the center of the screen. It gives a quick insight of what happened, which players are involved, how many units are used and what the names of the units are. Additionally there is a set of keys that can be used in conjuction with a detection:
- Key U toggles between the view of the attacker and the victim
- Key I expands, removes or shows the popup
- Key L changes the lag tolerance value
- Key P continues the replay playback
- Key O steps one frame forward and exits the check as well
MDS Profiler
A MDS Profile output can be enabled by setting
Replay Observer to
MDS+ in GenTool menu. This will run the normal MDS plus additional debug text of current MDS tasks. It shows the unit/building actions from the selected player and his busy units attacking (red) or capturing (green) other units/buildings. The camera can be toggled onto listed units by pressing
U or
I. For the best usability it is recommended to pause the replay playback when doing so.
Legend:
- id = unique action number
- fr = frame
- [x] = unique object number
- st = AI State (guard, attack, idle, etc)
- fl = flags (sets some object parameters)
- fg = fog status
- hasSt = has the ability to stealth
- notStDet = is not stealth detected
- notRend = is not rendered
Sample Screenshots