Skip to main content

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 player
  • mode - "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 model
  • profileId - 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"