This tutorial covers the configuration and tuning of the Revocable Player Trust system. When setting up the service for your game, the long configuration file can be a little daunting. Here, I will break down each section with explanations and practical examples of how to use it.
This allows the Developer to build trust with good players by incrementing a “trust” score based on either the time spent in the game with no cheats detected or manually set by the Developer as they see fit. This allows the player to use a bank of freebie exceptions, separate from any other set by the Developer. During times of lag spikes or false detections, this keeps the player from being punished unfairly or interrupting game play for good players.
Because this feature can be configured for each type of detection, it was best that it had its own tutorial section to avoid creating too much clutter for the individual types of detection tutorials in previous post above.
You’ll find the settings near the bottom of the configuration under the Jump Anti-Cheat section. To enable this feature, simply change the values to this:
--[[
Set this to true if you want to enable Revocable Player Trust Server Wide.
Default = false
--]]
revocablePlayerTrustEnabled = true
With this enabled, any detection modules you have active with debug will have additional debug output to let the developer know what is going on with the new system.
rptCustomPunishmentEnabled
When a player uses a RPT exception, this will also activate the custom punishment module. The activation will also pass the argument “rptActivated” as true to the function so the developer can check if it was activated by the RPT system or not. This can be used to log how often a player is activating RPT exceptions in your game among various other uses.
-
Why would I want to enable this?
If you want to be able to track when a player activates cheat detection by either the RPT Exception or through normal means, this will allow you distinguish the difference. You can use this as a way to monitor how often players are using your RPT exceptions or anything else that may have a useful purpose in your game. -
Why would I want to disable this?
If you have no reason to keep track of RPT exception activation or custom forms of punishment, you can leave this disabled by default.
rptPingMonitoringEnabled
With Ping Monitoring Enabled, you can assign latency ranges to Forgiveness Tiers that will influence how the RPT system builds trust with players. This allows the developers to offer more or less trust based on the real-time latency of the players in-game.
-
Why would I want to enable this?
If soft punishments can produce dire effects for your players due to latency or Roblox service issues, you can enable server wide ping monitoring of every player. These readings will be average out over the last 4 readings to produce a ping average for every player that can be referenced later by the developer set ping tiers. -
Why would I want to disable this?
If soft punishments only help to stop exploiters and don’t really harm your players if they get soft punished by accident, other than an inconvenience, then you probably don’t have a need to setup ping tiers for your players.
rptPingMonitoringMax
If you have RPT Ping Monitoring Enabled, how often will the anti-cheat system ping the players to refresh their current latency measured in milliseconds. This uses very small amounts of bandwidth and client resources to get in-game latency. This is different than the Roblox measured ping because instead of measuring the ping from the device, it measures the response from in-game; which is more accurate. Lower numbers do provide more accurate measurements, but increase the amount of bandwidth and resources that the client needs to respond to these measurements. Any latency measurements exceeding this max will be ignored, to avoid exploitation of this latency measurement system by client exploiters.
-
What values work best?
The default 2 seconds should work fine. Any player with more than 2000 ms of latency in your game is probably not able to play properly anyway. You can set this lower if you want to get a more accurate average ping measurement, such as 1 second, but keep in mind it uses more bandwidth from the client (though, still very little) to ping them twice as much. If bandwidth is really an issue for your game, setting this higher to +3 seconds or more will also work at using less bandwidth.
Ping Forgiveness Tiers:
If you have RPT Ping Monitoring Enabled, you can setup 3 different Forgiveness Tiers that will influence how the RPT awards Trust points to Players. Each Minimum/Maximum number is latency measured in Milliseconds. You can setup the Tiers anyway you wish, but for configuration purposes, the fastest players start at Tier1 and move up as latency increases. You can customize the Trust Bonus for each type of cheat detection. These amounts will be added to the Player Trust Score when it is awarded by the RPT system. Depending on how you setup your Forgiveness Tier, you could allow partial Trust Points to build up to full Trust Points over time, to help curb any potential abuse by exploiters.
You can also use negative numbers to slow down trust building points for players with better pings than their peers, such as using -0.5 so that the low ping players are only awarded 0.5 trust points instead of 1 trust point each time.
[pingForgivenessMinimumTier 1,2,3]
The minimum ping needed to stay in this tier.
[pingForgivenessMaxTier 1,2,3]
The maximum ping allowed to stay in this tier.
[rptForgivenessTrustSpeedTier 1,2,3], [rptForgivenessTrustFlyTier 1,2,3], [rptForgivenessTrustTeleportTier 1,2,3], [rptForgivenessTrustJumpTier 1,2,3]
The amount of trust points added (or subtracted) for each Tier and applied to the Player’s Trust Score.
Example: Default Tier 1 has a minimum ping of 0 ms and a maximum of 100 ms. Players that stay in this tier can then be given a +0.1 Boost when awarded Trust Points, raising them from 0 to 1.1 Trust Points.
[speedRPTDelay], [flyRPTDelay], [teleportRPTDelay], [jumpRPTDelay]
RPT (Revocable Player Trust) Time delay in seconds for every +1 added to the player “trust” score. This is the time window that the player must not trigger any cheat detection to gain an additional trust point. If a cheat is detected, the player will Not be awarded a trust point. This will reset after the delay is finished and start over fresh for the player. If the player performed a cheat in the previous time window but was good in the current time window, they can still be awarded a trust point at the end.
If you do not want to use any timer based awarding of trust points, you can set this to 0 and it will disable the use of the timer on all players. This will allow the developer to manually award or take away trust points as they see fit.
Developers that want to manually modify the trust score, look for these corresponding number attributes on the player object.
Speed: KM_SPEED_TRUST_SCORE
Flying: KM_FLY_TRUST_SCORE
Teleport: KM_TELEPORT_TRUST_SCORE
Jump: KM_JUMP_TRUST_SCORE
You can even disable the trust score on a single player by changing this attribute number to -1 if desired. The player will no longer gain anymore trust points from the timer with this setting.
[speedRPTOneTimeTrust], [flyRPTOneTimeTrust], [teleportRPTOneTimeTrust], [jumpRPTOneTimeTrust]
Setting this to true will enable one-time trust on all players.
The player can only use up all the “trust” they have earned once. Afterwards, the trust score will no longer automatically build back up. It can still be manually modified by the developer if desired. When the player burns through all of their trust points, their trust score basically becomes -1 to signal that no more trust will be given to the player via the delay timer. If a developer wants to turn trust building back on for a player, they can set the trust score value to 0, to signal that trust building is allowed again.
Developers that want to manually modify the trust score, look for these corresponding number attributes on the player object.
Speed: KM_SPEED_TRUST_SCORE
Flying: KM_FLY_TRUST_SCORE
Teleport: KM_TELEPORT_TRUST_SCORE
Jump: KM_JUMP_TRUST_SCORE
[speedRPTMaxTrustScore], [flyRPTMaxTrustScore], [teleportRPTMaxTrustScore], [jumpRPTMaxTrustScore]
The Maximum “trust” score that a player can build up. This is helpful at preventing players from building up too much trust so it can be abused later. This is global for all players and the limit is only enforced by the delay timer. The developer can modify the player “trust” score to exceed this limit if they desire.
Common Questions & Answers:
-
What is the priority of these “trust exceptions” during a game?
Trust exceptions are only used if the developer has not set a regular “exception” to be used on the player. Trust exceptions have no effect on cheat events triggered by the Invisible Fence feature via Teleport Anti-cheat detection. -
What is the best way to trust players with this feature?
It will depend completely on the developer to decide these rules because there is no way to create one default setting that will work for every game genre out there. The developer is encouraged to start out with strict settings to better understand later tuning. This will help players by keeping cheating down to the best possible minimum that won’t affect your good players who experience latency or Roblox service issues. -
Can this feature be abused by players?
Certainly, since its very existence means players could use trial and error to figure out what kind of settings you have in place. I would encourage the developers to use this feature as a trust building tool with your game community and less of a “set it and forget it” type of feature running at just some default settings. - USE AT YOUR OWN RISK