Recording GamePlay / Replay storage

Is there any-way to make a replay system that can record and store player gameplay (hotbar,inv,firstperson,thirdperson) etc etc, and than store the gameplay for later use?

Yes. You can save important game info such as player positions and replay them later. However, all your systems listed need to understand how to replay, which means the more features you want to be saved the harder it will be. You can save the information at a very low rate if its possible to interpolate it later, such as look directions. Call of duty famously saves the players look direction for killcams at such a slow rate that it sometimes looks like they are shooting through walls.

2 Likes

Ah is that why it looks like that ?
Interesting.

Im planning on making a VAC-Ban (Steam GameBan) system and want a way for admins/staff to be-able to review game footage.

In that case you don’t need a full replay system, just player positions and the direction they are looking. It is potentially very easy to manually catch teleporting and esp this way.

1 Like

Agreed, would I just save info to a DataStore for later use?

You could do that or you could also use HTTP to send it to your own server.

1 Like

Still trying to figure out the best way to do something like this,
grabbing look-pos requires the client which could be deleted.

Yeah, I might do that.
()()()()

You could make the client send position and look reports a few times a second and refuse to act on any of their remote calls if they haven’t done that in the last second or so.

Sounds complex, also this could be spoofed by just hooking the script and taking over the request.
I.E

- Server : GetInfo

RequestINF:FireAllClients()
- Client : SendInfo

RequestINF...()
     return ...
end

There are ways to make it work but you are correct that it’s more complex and you might not need it.

1 Like

:thinking: I feel as if im trying to send replay data to a API-Endpoint such as HotBar,Health,LookAngle,Posistion I need a viable way of sending information without it being or getting distrubed by exploiters.

You could always create a ServerCopy and a ClientCopy, and check manually if they both are matching close enough.

1 Like

What exactly do you mean,
I have to have this in some-type of replicate-able method so I can load the replay in a whole other game if needed.

I mean, if you’re going with your replay-method do the following.
For each “loop” note down the details both on the server, and whatever the client sends back of info.
The more “out of sync” the data is, the more alerting the visual representation of the data should be. Just using this MicroProfiler as a example. Look at where the line is very high, that would be one of the points where the data is really out of sync. This can be due to client lag, delay ect. or due to them cheating. So it’s at these points you manually could check the replay. It’s hard to get something bulletproof though.
image
For example if server told that they were at vector 0,100,30 but client said 0,0,0

You should also take into account, how fast they should be able to move, versus how much the client or server tells us they moved.

Getting Vector from server?!?
Is this possible?
If so screw client-localscript crap

Yea?
Just get their character (if any), check the PrimaryPart.Position - That is the Vector position at the current moment.

My bad, i mean Look Vector.

  • s

:thinking:
See I wan’t other players to be able to report a user and the replay to be sent back to the server for later review by game-admins

Yea you can also do that from the server.

Character.PrimaryPart.CFrame.LookVector
1 Like