Changelog
All notable changes to Rewind are documented here.
[1.2.1] - Documentation & API Fixes 📚
Fixes
- Fixed
ClockSync.WaitForSync()- now properly implemented - Added
ClockSync.GetTime()alias forClientNow() - Fixed documentation to use correct
ValidationModevalues ("Ray","Sphere","Capsule","Cone","Fan") - Fixed all documentation examples to use
result.hitinstead ofresult.accepted - Fixed documentation to use
clientTimeinstead oftimestampin params - Removed non-existent
Rewind.Servermodule references from docs - Updated
RejectReasonenum values in documentation - Complete documentation audit for accuracy
[1.0.0] - 2025-18-12
🎉 Initial Release
First public release of Rewind - a server-authoritative lag compensation framework for Roblox.
Features
Core
- Server-side hit validation with configurable rewind window
- Clock synchronization using rolling median filter
- Snapshot ring buffer for efficient memory usage
Validation Modes
- Ray - Instant hitscan validation
- Sphere - Area of effect / explosion validation
- Capsule - Thick bullet sweep validation
- Cone / Fan - Melee attack validation
Rig Support
- Automatic rig detection (R6/R15)
- Built-in hitbox profiles for both rig types
- Scaled avatar support with automatic hitbox adjustment
Anti-Abuse
- Duplicate hit detection (weapon-mode aware)
- Distance sanity checks for origin validation
- Timestamp validation (past/future bounds)
- Rate limiting utilities
Debug Tools
- Iris debug panel with real-time stats
- Visual hitbox rendering
- Shot trace visualization
- Graceful degradation if Iris unavailable
API
- High-level
Validate()dispatcher - Per-weapon profiles with custom parameters
CreateParamsFromWeapon()helper- Comprehensive type definitions
[1.1.0] - Physics Replication (Major Update) 🚀
New Features
- Interpolated snapshots - Smooth rewind sampling with hermite interpolation
- Configurable Hit Priority - Per body part priority and damage multipliers
- Custom Character Replication - Replace Roblox's default physics replication
- Entity Registry - Register players/NPCs for custom replication
- Server Replicator - Broadcasts positions at configurable tick rate
- Client Interpolator - Smooth interpolation between network updates
- State Buffer - Unified history for interpolation AND hit validation
- Bandwidth Optimization - Delta compression, proximity-based updates
- Network Ownership - Client-authoritative movement with server reconciliation
- NPC Support - Full replication support for AI entities
- Configurable Tick Rate - Control network update frequency (default 20 Hz)
API Additions
Rewind.Replication- New replication moduleRewind.StartReplication(config)- Start server-side replicationRewind.StartReplicationClient(config)- Start client interpolationRewind.RegisterPlayerForReplication(player)- Register player for custom replicationRewind.RegisterNPCForReplication(model)- Register NPC for custom replicationHitboxProfile.GetHitPriority(profileId, partName)- Get hit priority for body partHitboxProfile.CompareByPriority(profileId, partA, partB)- Compare parts by priority
New Remotes
StateUpdate(UnreliableRemoteEvent) - Server broadcasts entity statesStateCorrection(RemoteEvent) - Server sends authoritative correctionsClientState(UnreliableRemoteEvent) - Client sends own stateEntityAdded/EntityRemoved- Entity lifecycle events
[1.2.0] - Anti-Cheat & Vehicles 🛡️🚗
New Features
- Vehicle & Mount Support - Register vehicles with custom hitboxes, damage multipliers, and weak spots
- Armor System - Multiple hitbox layers with damage reduction, regeneration, and armor breaking
- DataStore Abuse Tracking - Persistent abuse tracking with automatic kick/ban enforcement
- Movement Anomaly Detection - Speed hack, teleport, fly hack, and noclip detection
Vehicle System
- Register vehicles and mounts for hit validation
- Custom hitboxes with damage multipliers and weak spots
- Passenger protection and targeting
- Mount rider registration
- Vehicle damage and destruction events
Armor System
- Define armor layers for hitbox parts
- Configurable damage reduction (0-1 scale)
- Armor regeneration over time
- Layer breaking with minimum health thresholds
- Armor penetration support in weapon profiles
- Repair armor programmatically
Abuse Tracker
- Automatic DataStore persistence
- Track abuse reasons: speed_hack, teleport, aimbot, damage_exploit, clip, fly_hack, packet_manipulation
- Configurable thresholds for warn/kick/ban
- Auto-kick and auto-ban enforcement
OnAbuseDetectedandOnThresholdReachedevents- Ban/unban players programmatically
Movement Validator
- Speed hack detection with tolerance
- Teleport detection with configurable distance threshold
- Fly hack detection based on air time
- Noclip detection through obstructed parts
- Speed multiplier support for abilities
- Violation tracking per player
OnAnomalyDetectedevent
API Additions
Vehicle API:
Rewind.RegisterVehicle(model, config)- Register vehicle with custom hitboxesRewind.UnregisterVehicle(model)- Remove vehicle from registryRewind.RegisterMount(model, config)- Register mount (single rider)Rewind.AddPassengerToVehicle(vehicle, player, seat?)- Add passengerRewind.RemovePassengerFromVehicle(vehicle, player)- Remove passengerRewind.SetMountRider(mount, player?)- Set or clear mount riderRewind.GetPlayerVehicle(player)- Get player's current vehicle/mount
Armor API:
Rewind.DefineArmor(entity, config)- Define armor layers for entityRewind.RemoveArmor(entity)- Remove armor from entityRewind.GetArmor(entity)- Get current armor stateRewind.ApplyDamageWithArmor(entity, partName, damage, armorPenetration?)- Apply damage through armorRewind.RepairArmor(entity, partName?, amount?)- Repair armor layers
Abuse Tracker API:
Rewind.StartAbuseTracking(config?)- Start abuse tracking with DataStoreRewind.RecordAbuse(player, reason, details?)- Record abuse incidentRewind.GetAbuseHistory(player)- Get player's abuse historyRewind.IsPlayerBanned(player)- Check if player is bannedRewind.BanPlayer(player, reason, duration?)- Ban playerRewind.UnbanPlayer(userId)- Unban player by UserIdRewind.OnAbuseDetected- Signal fired on abuse detectionRewind.OnAbuseThresholdReached- Signal fired when threshold reached
Movement Validator API:
Rewind.ConfigureMovementValidation(config)- Configure movement validationRewind.StartMovementMonitoring(player)- Start monitoring playerRewind.StopMovementMonitoring(player)- Stop monitoring playerRewind.ValidateMovement(player, position, velocity?)- Validate movementRewind.SetPlayerSpeedMultiplier(player, multiplier, duration?)- Set speed multiplierRewind.GetMovementViolations(player)- Get violation countRewind.ClearMovementViolations(player)- Clear violationsRewind.OnMovementAnomaly- Signal fired on anomaly detection
Type Additions
VehicleHitbox,VehicleConfig,MountConfig,VehicleInfo,MountInfoArmorLayer,ArmorConfig,ArmorState,DamageResultAbuseReason,AbuseRecord,PlayerAbuseHistory,AbuseConfigAnomalyType,MovementValidationResult,MovementConfig,PlayerMovementState- Updated
EntityTypeto include "Vehicle" | "Mount" - Updated
RejectReasonto include "vehicle_blocked" | "armor_absorbed" - Updated
HitResultwith vehicle and armor information - Updated
WeaponProfilewitharmorPenetrationfield
Planned Features
v1.3.0
- Projectile simulation and validation
- Area-of-effect (AoE) hit validation
Migration Guide
From Custom Lag Compensation
If you're migrating from a custom solution:
- Replace clock sync with
Rewind.ClockSync - Move validation to server with
Rewind.Validate() - Update hit remotes to send timestamps
- Configure weapon profiles for your weapons
From No Lag Compensation
If you're adding lag compensation for the first time:
- Follow the Quick Start guide
- Start with default config
- Test with simulated lag
- Tune tolerances for your game feel
Version History
| Version | Date | Highlights |
|---|---|---|
| 1.0.0 | 2025-18-12 | Initial release |
| 1.1.0 | 2025-20-12 | Physics Replication (Major Update) |
| 1.2.0 | 2025-21-12 | Anti-Cheat & Vehicles |
Contributing
Found a bug? Have a feature request?