Advertisement
Urban Terror 4.2 RC on LAN 2k12 in Paris
#141
Posted 20 June 2012 - 03:12 PM
I confess I don't know a great deal about the internals of a demo, but I think I have a general idea that it's essentially a stream of server snaps that are sent to the client to inform the client about the current game status from that client's point of view. Essentially a packet stream.
If this is indeed what it is, it would seem that reversing the stream is all that would be needed to "rewind" to some previous point in the stream. And that's if you wanted visual rewind whereas if you could have a stack that lets you flip back to a previous "game state" as the demo has reported in the stream, then you could flip back some static amount of points in the stream.
If I'm way off, then please clear up my confusion.
If this is indeed what it is, it would seem that reversing the stream is all that would be needed to "rewind" to some previous point in the stream. And that's if you wanted visual rewind whereas if you could have a stack that lets you flip back to a previous "game state" as the demo has reported in the stream, then you could flip back some static amount of points in the stream.
If I'm way off, then please clear up my confusion.
#142
Posted 20 June 2012 - 03:35 PM
A demo is the network stream just dumped into a file, you're right there.
Playing a demo will just "simulate" a remote server by feeding the stream into the client again.
This does NOT work in reverse though; the game is simply not made to do that. (And it's crazy work to implement)
Playing a demo will just "simulate" a remote server by feeding the stream into the client again.
This does NOT work in reverse though; the game is simply not made to do that. (And it's crazy work to implement)
#143
Posted 20 June 2012 - 04:22 PM
If it's true that it's a network stream, why wouldn't feeding the stream in reverse work? Why would the game care if it thought the order it was receiving was the right order?
But even if you don't reverse the stream to give fluid rewind, why couldn't you implement an internal stack for demos so that if you "rewind" to some previous spot, that it couldn't pick up where it was at that moment and continue with the stream? It should be functionally similar to what happens if you have a brief network outage and suddenly you skip ahead a few seconds and suddenly you're dead. The client didn't know or care necessarily what happened in those 5 seconds (for example) and has no way to recover the past. It only knows the present.
But even if you don't reverse the stream to give fluid rewind, why couldn't you implement an internal stack for demos so that if you "rewind" to some previous spot, that it couldn't pick up where it was at that moment and continue with the stream? It should be functionally similar to what happens if you have a brief network outage and suddenly you skip ahead a few seconds and suddenly you're dead. The client didn't know or care necessarily what happened in those 5 seconds (for example) and has no way to recover the past. It only knows the present.
#144
Posted 20 June 2012 - 04:38 PM
id Tech 3 networking is mostly based on events. When someone shoots, the server just sends "client x has fired a shoot" to all clients, nothing else. The clients fire the shot locally based on their known position/rotation of that client. Undoing such an event is not possible unless you save the complete state of the game each and every frame, which will bring every computer to its knees in a matter of seconds (might make it a minute or two if you got enough RAM). Might be possible to only save only changed values.
All the client does is interpret the events, apply position/rotation changes and interpolate everything so it looks smooth.
Telling a client to rewind basically is "I told you to move that box over there but now put it back where it was before; but I forgot where it was".
I'm not saying you can't compress stuff properly to lower the memory usage for saving or that it is impossible to revert state updates, I'm saying it is impossible *right now* and would need a LOT of time - time which is needed for other, more important parts of the game.
If it was easy it would exist already. :)
All the client does is interpret the events, apply position/rotation changes and interpolate everything so it looks smooth.
Telling a client to rewind basically is "I told you to move that box over there but now put it back where it was before; but I forgot where it was".
I'm not saying you can't compress stuff properly to lower the memory usage for saving or that it is impossible to revert state updates, I'm saying it is impossible *right now* and would need a LOT of time - time which is needed for other, more important parts of the game.
If it was easy it would exist already. :)
#145
Posted 20 June 2012 - 04:49 PM
If that's the case, keep a state tracker for certain points in the demo. It shouldn't need to be all inclusive -- just every so often like every "15 seconds" or whatever proper metric one could apply.
If someone wants to rewind, then the internal demo system tells the client to move everything to where it was at that moment and begins the stream back at that point.
If someone wants to rewind, then the internal demo system tells the client to move everything to where it was at that moment and begins the stream back at that point.
Advertisement
#146
Posted 20 June 2012 - 04:55 PM
If necessary, have a pre-parser that will convert a demo into a larger file that supports this which the client could then read. This would assume, of course, that the client wouldn't have to load the entire file in memory at the same time to function.
I'm not suggesting it should be simple, I'm just suggesting that it should be doable and yes -- I know there are other more pressing issues at hand. That's fine. Make it an update for later.
I'm not suggesting it should be simple, I'm just suggesting that it should be doable and yes -- I know there are other more pressing issues at hand. That's fine. Make it an update for later.
This post has been edited by Divinity: 20 June 2012 - 04:56 PM
#147
Posted 20 June 2012 - 08:21 PM
Recording of a demo starts when you tell it to start.
Does it fill some kind of "header" with the current state of the whole map, and then continues with updates?
I guess, that is the case and I guess that is why we cannot go back or start the demo at a different point.
...
There are probably many ways to do it, but one easy implementation would be :
- Enable the DEMO RECORDING while you are watching a DEMO. When analyzing a demo for possible cheats, you can identify time stamps of certain events. Then, you wanna look at them carefully. Ideally, you would look at them 3, 5 or even 10 times. But if the demo is 25 minutes and the events are spread along, at some point, most of us just give up and say, "inconclusive!". If we where able to RECORD while watching a demo, we would be able to extract the "events" and look only at those special moments many times. This would help server and league admins process demos.
Rewind (with or without a flow) would be better, but anything that can help would be appreciated.
(Maybe there should be a separate thread for that.)
A good anti-cheat system should include many different features. Having a good demo reviewing system should be part of it.
Does it fill some kind of "header" with the current state of the whole map, and then continues with updates?
I guess, that is the case and I guess that is why we cannot go back or start the demo at a different point.
...
There are probably many ways to do it, but one easy implementation would be :
- Enable the DEMO RECORDING while you are watching a DEMO. When analyzing a demo for possible cheats, you can identify time stamps of certain events. Then, you wanna look at them carefully. Ideally, you would look at them 3, 5 or even 10 times. But if the demo is 25 minutes and the events are spread along, at some point, most of us just give up and say, "inconclusive!". If we where able to RECORD while watching a demo, we would be able to extract the "events" and look only at those special moments many times. This would help server and league admins process demos.
Rewind (with or without a flow) would be better, but anything that can help would be appreciated.
(Maybe there should be a separate thread for that.)
A good anti-cheat system should include many different features. Having a good demo reviewing system should be part of it.
#148
Posted 27 June 2012 - 09:42 AM
This changelog just looks fantastic. Good job guys!
#150
Posted 27 June 2012 - 03:50 PM
I don't think anyone has asked this, but if you are in fact intending on including auth functionality (presumably the auth system formerly known as passport) are you changing the licensing on this version or are you intending on essentially providing an API such that custom clients and server builds could tap into the auth functionality?
1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users
Advertisement