Rewind
The main entry point for the Rewind framework.
local Rewind = require(ReplicatedStorage.Packages.Rewind)
Properties
Version
Rewind.Version: string -- e.g., "1.2.0"
The current version of Rewind.
VersionName
Rewind.VersionName: string -- e.g., "Anti-Cheat & Vehicles"
The name of the current version.
ClockSync
Rewind.ClockSync: ClockSyncModule
Clock synchronization module. See ClockSync API.
Types
Rewind.Types: TypeDefinitions
Type definitions and enums. See Types.
Config
Rewind.Config: ConfigTable
Configuration values. See Config.
RigAdapter
Rewind.RigAdapter: RigAdapterModule
Character rig utilities. See RigAdapter API.
HitboxProfile
Rewind.HitboxProfile: HitboxProfileModule
Hitbox profile management. See HitboxProfile.
Replication
Rewind.Replication: ReplicationModule
Custom character replication system. See Replication.
VehicleAdapter
Rewind.VehicleAdapter: VehicleAdapterModule
Vehicle and mount registration. See Vehicles.
ArmorSystem (Server Only)
Rewind.ArmorSystem: ArmorSystemModule?
Armor layer system. Only available on server. See Armor.
AbuseTracker (Server Only)
Rewind.AbuseTracker: AbuseTrackerModule?
Abuse tracking with DataStore. Only available on server. See Abuse Tracker.
MovementValidator (Server Only)
Rewind.MovementValidator: MovementValidatorModule?
Movement anomaly detection. Only available on server. See Movement Validator.
Core Functions
Start
Rewind.Start(opts: Options?): ()
Initialize the Rewind server. Call this once on server startup.
Parameters:
opts- Optional configuration overrides
Example:
Rewind.Start({
snapshotHz = 30, -- Snapshots per second
windowMs = 1000, -- Snapshot window in ms
maxRewindMs = 500, -- Max rewind allowed
maxRayDistance = 1000,
friendlyFire = false,
teamCheck = true,
})
Stop
Rewind.Stop(): ()
Stop the Rewind server.
GetOptions
Rewind.GetOptions(): Options
Get the current configuration options.
Configure
Rewind.Configure(opts: Options): ()
Update configuration options at runtime.
ServerNow
Rewind.ServerNow(): number
Get the current server time.
Validation Functions
Validate
Rewind.Validate(
player: Player,
mode: ValidationMode,
params: ValidateParams
): HitResult
High-level validation dispatcher.
Parameters:
player- The attacking playermode-"Ray","Sphere","Capsule","Cone", or"Fan"params- Validation parameters (varies by mode)
Returns: HitResult
Example:
local result = Rewind.Validate(player, "Ray", {
origin = firePosition,
direction = fireDirection,
clientTime = timestamp,
weaponId = "Rifle",
})
if result.hit then
result.humanoid:TakeDamage(25)
end
ValidateRay
Rewind.ValidateRay(player: Player, params: ValidateRayParams): HitResult
Validate a raycast (hitscan) attack.
Parameters:
type ValidateRayParams = {
origin: Vector3,
direction: Vector3,
clientTime: number?,
clientShotId: string?,
weaponId: string?,
ignore: { Instance }?,
}
Example:
local result = Rewind.ValidateRay(player, {
origin = gun.Muzzle.Position,
direction = lookVector * 1000,
clientTime = timestamp,
weaponId = "Rifle",
})
ValidateSphere
Rewind.ValidateSphere(player: Player, params: ValidateSphereParams): HitResult
Validate a sphere overlap (explosions, AoE).
Parameters:
type ValidateSphereParams = {
center: Vector3,
radius: number,
clientTime: number?,
clientShotId: string?,
weaponId: string?,
ignore: { Instance }?,
}
Example:
local result = Rewind.ValidateSphere(player, {
center = explosionPosition,
radius = 15,
clientTime = timestamp,
})
ValidateCapsule
Rewind.ValidateCapsule(player: Player, params: ValidateCapsuleParams): HitResult
Validate a capsule sweep (thick bullets, projectile paths).
Parameters:
type ValidateCapsuleParams = {
a: Vector3, -- Start point
b: Vector3, -- End point
radius: number,
steps: number?, -- Interpolation steps
clientTime: number?,
clientShotId: string?,
weaponId: string?,
ignore: { Instance }?,
}
Example:
local result = Rewind.ValidateCapsule(player, {
a = startPosition,
b = endPosition,
radius = 0.5,
steps = 10,
clientTime = timestamp,
})
ValidateMeleeArc / ValidateCone
Rewind.ValidateMeleeArc(player: Player, params: ValidateMeleeArcParams): HitResult
Rewind.ValidateCone(player: Player, params: ValidateMeleeArcParams): HitResult
Validate a melee arc/cone attack.
Parameters:
type ValidateMeleeArcParams = {
origin: CFrame,
range: number,
angleDeg: number,
clientTime: number?,
clientShotId: string?,
weaponId: string?,
}
Example:
local result = Rewind.ValidateMeleeArc(player, {
origin = character.HumanoidRootPart.CFrame,
range = 6,
angleDeg = 90,
clientTime = timestamp,
weaponId = "Sword",
})
ValidateMeleeFan / ValidateFan
Rewind.ValidateMeleeFan(player: Player, params: ValidateMeleeFanParams): HitResult
Rewind.ValidateFan(player: Player, params: ValidateMeleeFanParams): HitResult
Validate a melee fan attack (multiple rays in a cone).
Parameters:
type ValidateMeleeFanParams = {
origin: CFrame,
range: number,
angleDeg: number,
rays: number, -- Number of rays in the fan
clientTime: number?,
clientShotId: string?,
weaponId: string?,
}
Character Registration
RegisterCharacter
Rewind.RegisterCharacter(character: Model, profileId: string?): ()
Register a character for hit validation.
Parameters:
character- The character modelprofileId- Optional hitbox profile ID (auto-detects R6/R15 if nil)
UnregisterCharacter
Rewind.UnregisterCharacter(character: Model): ()
Unregister a character.
RegisterNPC
Rewind.RegisterNPC(model: Model, profileId: string?): ()
Register an NPC for hit validation.
Weapon Profiles
DefineWeapon
Rewind.DefineWeapon(profile: WeaponProfile): ()
Define a weapon profile.
Example:
Rewind.DefineWeapon({
id = "Rifle",
maxDistance = 500,
maxRewindMs = 200,
capsuleRadius = 0.3,
})
GetWeapon
Rewind.GetWeapon(id: string): WeaponProfile?
Get a weapon profile by ID.
DefineHitboxProfile
Rewind.DefineHitboxProfile(id: string, def: Profile): ()
Define a custom hitbox profile.
Example:
Rewind.DefineHitboxProfile("CustomRig", {
parts = { "Head", "Core", "LeftWing", "RightWing" },
hitPriority = {
Head = { priority = 10, damageMultiplier = 2.0 },
Core = { priority = 5, damageMultiplier = 1.0 },
},
})
CreateParamsFromWeapon
Rewind.CreateParamsFromWeapon(weaponId: string, baseParams: table): table
Create validation params from a weapon profile.
Replication Functions
StartReplication
Rewind.StartReplication(config: ReplicationConfig?): ()
Start the server-side replication system.
StartReplicationClient
Rewind.StartReplicationClient(config: ReplicationConfig?): ()
Start the client-side interpolation system.
RegisterPlayerForReplication
Rewind.RegisterPlayerForReplication(player: Player, priority: number?): ()
Register a player for custom replication.
RegisterNPCForReplication
Rewind.RegisterNPCForReplication(model: Model, priority: number?): ()
Register an NPC for custom replication.
UnregisterFromReplication
Rewind.UnregisterFromReplication(modelOrPlayer: Model | Player): ()
Unregister from custom replication.
Vehicle Functions
See Vehicles API for full documentation.
Rewind.RegisterVehicle(model, config)
Rewind.UnregisterVehicle(model)
Rewind.RegisterMount(model, config)
Rewind.AddPassengerToVehicle(player, vehicle)
Rewind.RemovePassengerFromVehicle(player)
Rewind.SetMountRider(player, mount)
Rewind.GetPlayerVehicle(player)
Armor Functions
See Armor API for full documentation.
Rewind.DefineArmor(model, config, entityId?)
Rewind.RemoveArmor(model)
Rewind.GetArmor(model)
Rewind.ApplyDamageWithArmor(model, partName, rawDamage)
Rewind.RepairArmor(model, layerName?, amount?)
Abuse Tracker Functions
See Abuse Tracker API for full documentation.
Rewind.StartAbuseTracking(config?)
Rewind.RecordAbuse(player, reason, metadata?)
Rewind.GetAbuseHistory(player)
Rewind.IsPlayerBanned(userId)
Rewind.BanPlayer(userId, reason?)
Rewind.UnbanPlayer(userId)
-- Events
Rewind.OnAbuseDetected -- Signal<Player, AbuseReason, metadata>
Rewind.OnAbuseThresholdReached -- Signal<Player, threshold, count>
Movement Validator Functions
See Movement Validator API for full documentation.
Rewind.ConfigureMovementValidation(config?)
Rewind.StartMovementMonitoring()
Rewind.StopMovementMonitoring()
Rewind.ValidateMovement(player, fromPos, toPos, deltaTime)
Rewind.SetPlayerSpeedMultiplier(player, multiplier)
Rewind.GetMovementViolations(player)
Rewind.ClearMovementViolations(player)
-- Events
Rewind.OnMovementAnomaly -- Signal<Player, AnomalyType, details>
Type Definitions
HitResult
type HitResult = {
hit: boolean,
character: Model?,
humanoid: Humanoid?,
player: Player?,
part: BasePart?,
partName: string?,
hitPosition: Vector3?,
hitNormal: Vector3?,
serverNow: number,
rewindTo: number,
usedRewindMs: number,
isHeadshot: boolean?,
reason: RejectReason,
vehicle: Model?,
vehicleInfo: VehicleInfo?,
armorResult: DamageResult?,
}
RejectReason
type RejectReason =
| "rate_limited"
| "duplicate_shot"
| "no_hit"
| "no_humanoid"
| "friendly_fire"
| "not_server"
| "out_of_range"
| "invalid_params"
| "vehicle_blocked"
| "armor_absorbed"
| nil -- nil = success/hit
ValidationMode
type ValidationMode = "Ray" | "Sphere" | "Capsule" | "Cone" | "Fan"