Protected
The AntiCheat system is built on four pillars: Protection, Monitoring, Detection and Punishment.
- Protection: To protect against cheaters and hackers, encrypt or obfuscate your data so that it is protected against attacks. Countermeasures are taken to protect the integrity of the data and trap attackers, for example through honey pots.
- Monitoring: Observe and track the state of the game or device and the behavior of players to detect potential cheating or unusual behavior.
- Detection: Monitoring itself does not report cheating activity, but only tracks the state of the game or device and monitors deviations. These deviations are recorded by a detector. The detector itself checks the monitored deviations and informs the 'AntiCheat-Monitor' about possible cases of tampering or cheating.
- Punishment: React to detected cheating attempts with punishers when a calculated threat level is reached and can impose various penalties.
Protection
AntiCheat allows you to secure various types of data in your games, such as memory, player prefs, game time and device time.
Memory
Important data such as positions or health status are usually stored in the runtime memory, which can be vulnerable to manipulation by cheat tools or data sniffers. Encryption or obfuscation are essential to protect against unauthorised reading or modification.
# | Free | Pro |
---|---|---|
Primitives | + | + |
Collections | + | |
DataChain | + | |
BlockChain | + |
A brief overview over the available protected data types:
Primitives: AntiCheat provides protected data type for all primitives. Primitives are fundamental data type. This includes default value types like int, float, string, ... and all Unity value types like Vector, Quaternion, ...
Collections: Important information can be not only within basic data types such as integer or float, but also within collections. AntiCheat provides protected alternatives for commonly used collections such as List, Queue and Stack, allowing you to monitor changes and check their integrity.
DataChain: A data chain is similar to a linked list consisting of a sequence of elements arranged in a specific order. It is used to maintain the order of these elements while preserving their integrity. Data chain can be useful in scenarios where you want to manage e.g. "Digital Assets", "Achievements", "Virtual Currencies" etc.
BlockChain: A blockchain can be compared to a datachain that connects blocks in a continuous sequence. Each block within this chain records transactions, containing the actual data. And this is where it differs from a datachain. The datachain is used as a local in memory data store. But the blockchain can synchronize its transactions with a remote source to retrieve and upload data while maintaining the integrity of the blockchain.
Player Prefs
Unity's PlayerPrefs serve as a convenient means of saving user settings and data. However, they lack protection or encryption, which makes them vulnerable to easy modification. The AntiCheat Protected PlayerPrefs provide a solution to this security problem.
# | Free | Pro |
---|---|---|
ProtectedPlayerPrefs | + | + |
ProtectedFileBasedPlayerPrefs | + | + |
A brief overview over the available protected player prefs:
ProtectedPlayerPrefs: This option replaces the default Unity PlayerPrefs features while introducing additional features. The protected prefs are stored in the known default location.
ProtectedFileBasedPlayerPrefs: This is a customised implementation of Unity PlayerPrefs that enables the storage of protected player preferences under a specific file path (default: Application.persistentDataPath). To use a custom file path, set ProtectedFileBasedPlayerPrefs.FilePath. Then use ProtectedFileBasedPlayerPrefs in the same way as the standard Unity PlayerPrefs.
Time
All aspects of Unity, whether scripting, animation, or physics updates, depend on passed time between frames, typically referenced through deltaTime or fixedDeltaTime. This is a common target for cheaters, who often attempt to manipulate Unity's time or even the device's date and time to gain an advantage. AntiCheat provides multiple methods to safeguard against these manipulations, ensuring you have reliable time data.
# | Free | Pro |
---|---|---|
Game Time | + | |
Device Time | + |
Game Time: In Unity, frame-based calculations rely heavily on UnityEngine.Time.deltaTime. Unfortunately, this time calculation is vulnerable to manipulation by cheat or hacking tools that allow unauthorised acceleration, deceleration or interruption of your application. To minimise such risks, the implementation of AntiCheat introduces the ProtectedTime. Protect your deltaTime, fixedDeltaTime, and everything Unitys Time class includes.
Device Time: Using the current date and time is essential for many applications. However, relying on the clock of the user's device creates trust issues as users can manipulate it for various purposes, such as extending trial periods or gaining advantages in games. AntiCheat introduces a protected Coordinated Universal Time (UTC) DateTime, which calculates the current DateTime based on a reference value. This can either be the local time of the computer or a time from the Internet.