VPF Replay Module

The Greek uppercase letter delta (Δ) is the standard mathematical symbol to represent change in some quantity. In this case, it’s the change in time during each stored frame.


This is amazing. 2-3 years ago I never would have thought this is where Roblox would be at.


Very good work! Is it possible to add replay playback into Workspace instead of Viewport Frame?


You could modify it to do that easily enough, if you know what you’re doing.


I’m getting Call of Duty killcam vibes here.

Edit: I’m going to try and make a COD killcam system and I’ll share the end result here!

1 Like



  • Character auto-detection & handling with clothing support
  • Asynchronous registering
  • Update log and version number in the module’s top comment section

As requested by @TAYFUN7, the module now automatically detects and handles Characters (any model with a Humanoid inside) so that all clothing (Shirts, Pants, and Tees) are all rendered in the VPF.

It detects Characters even as children of the original register object, so doing :Register(workspace) will find and render all characters properly. (Although that’s awful practice and you should hook .CharacterAdded to the Register function instead)

The humanoid in the VPF is stateless, so it shouldn’t have any significant impact on performance. It only exists as a way to wrap the clothing textures to the character.

Additionally, the :Register() and :RegisterStatic() functions are now run asynchronously using coroutines, because the character handling can yield.

This update should hopefully make this module far more useful to many people who felt that clothing was vital.


I been watching you for a while now and all your work is AMAZING. Really, really good, I don’t know how you learned to do this things, but thanks god you give us something like this on open-source! Really, really good.

Keep the hard work, totally I’ll take it a look for it to learn something! :smiley:


I made a fork of this that replays in the workspace for people who don’t want the barebones lighting inside ViewportFrames. You’ll have to handle moving the players away and doing the camera work.


Note: This version doesn’t have a :RegisterStatic() function, because those static objects are still in the workspace so why bother adding them into the replay.


How about an option to save the replay (in a datastore or such) so you can pull it anytime you want , example as for anti cheats we could use it to record the users and make it save to a database so we can look back at the replay at anytime to check what happened.

1 Like

I’ve already thought about it, but sadly it’s not possible.

DataStores cannot save Instances, so it would have to be serialized. MeshParts cannot be written to at runtime, so it cannot be deserialized.


@VitroxVox this isn’t entirely impossible but very difficult to achieve with current data store limits.

  • You can only have 250k characters of strings
  • Serialize into valid JSON format

it’s possible but very complex and difficult to achieve with current limitations.

the problem with MeshParts are that they have to be in game with the exact same name.


Serializing isn’t the part that makes it impossible, it’s the fact that you cannot turn that data back into parts when you want to load the replay since you cannot set MeshParts. Serializing is relatively simple, but the deserializing stage is made impossible by Roblox permission levels.


@boatbomber, I am aware. That is what makes things very difficult and complex.

I’d like to argue that it is indeed possible to achieve this by using SpecialMesh instead.

However it will not have near perfect accuracy but still possible with minor compromises.

I’m sure that with some creativity we can do almost anything with Studio.

Here’s a real case:


This game Has achieved this!


The game doesn’t seem to work anymore, nothing replays anymore. Is this a bug issue or am I missing something?


I haven’t touched it in ages, but I guess something broke in a Roblox update? I’ll look at this when I have a chance


Alright, thank you very much. I hope to use this in a upcoming game I’m making! Hope to hear from you soon about this.

1 Like

I know right, kill cams in old roblox would literally just follow a player’s camera. Now look where we!

1 Like

This is especially cool for like death effects or a battle royale game to rewatch old games.

1 Like

It’s because TAYFUN7 is registered in the replay demo, if you go into Studio and remove :Register(workspace.TAYFUN7), it should work again.


Oops! I was helping TAYFUN get it working in his game and added that for testing purposes :sweat_smile: