Page 1 of 1

On the subject of time travel

Posted: Thu Oct 04, 2018 2:51 am
by JackGriffin
One of the ideas Bob and I bounced around was the idea of a true time travel element embedded into the map. Implementation was that if you found a particular time travel artifact you could activate it and time would roll backwards 60 seconds. I'm curious about the feasibility of this as a concept.

The rest is scripty engine discussion. If you want to check out, now is a good time.

So a server side demo keeps a running log of actor locations. This 'plays' in order and a demo is rendered. Is it possible to use this process to reverse the flow of time and move actors backwards through the log? You could literally replay the last 60 seconds backwards and get a sort of replay. Since the demo file tracks everything you could reset scoring, everything. Do you see where I'm going with this? Has anyone ever figured out how demos are stored and if they can be harvested for specific data?

Re: On the subject of time travel

Posted: Thu Oct 04, 2018 9:20 am
by Xenwarrior5
Wow.

Kicks my ass.

I've never messed around with server code for ut99, but that sounds crazy awesome. If someone DID find a way to make the rewind artifact, what do you think would happen if you rewound by 60 seconds, when the match has been going on for 59 or less? Would it crash?

Re: On the subject of time travel

Posted: Thu Oct 04, 2018 3:44 pm
by JackGriffin
I can't really answer that. My guess is it just would go to the map start again since there would be no more data to 'rewind'. This is easily avoided by just not spawning the artifact until sufficient time has passed in the game.

I could build this now by simply logging player positions, frag count, ammo, etc. every 30 seconds then when someone used the artifact the game would instantly rewind (with some visual effects). However I really wanted to do this so people could visually watch the game walk backwards and then restart.

This all may just be a silly discussion but time and gravity are the two things no one has really ever messed with successfully. That means I want to do that.

Re: On the subject of time travel

Posted: Thu Oct 04, 2018 5:59 pm
by Terraniux
I like this idea! Yes, keep this a warm fire :D

Re: On the subject of time travel

Posted: Thu Oct 04, 2018 6:43 pm
by Feralidragon
Purely in the realm of possibility, this is possible to do to an extent, as for the most part you only have to record a few key properties from actors over time (once a second for example), so you're able to either change them back or respawn them and set those properties.

However, you cannot do it for 100% of the things, because this would imply to save the entire game state once per second, something which I only imagine to be possible at all at the native level, and even then with quite some work.
And even if you could, it would be highly inefficient, since this would translate to be using almost as much memory for each state as for the entirety of the game for every second (not quite as much of course, but it would be the worst case scenario).

In order for this to be efficient, it would need to be done in a similar way on how demo recording works, or even replication (both of which follow the same rules, apparently), and just record event calls and changed properties over time, and simulate a lot of the stuff like physics (instead of saving each location).
However, this is not very easy to do unless the engine is exceptionally well crafted in this regard, which doesn't seem to be the case even in UE4, given that Fortnite has a replay feature which seems to work in pretty much the same way UT demo recording works in UE1 (just a bit better), and it has quite some problems, especially when you select a random point in time (like the day-night cycle being messed up at times).

In practice, what I actually mean with all of this is that, you have to pick and choose on what exactly you want this feature to work on.
If it's the players only, it's very easy, if it includes things like projectiles, is slightly more complicated especially since projectiles can have very different behaviors and may cause issues if tempered with, unless you create a Projectile class and make the game use your own projectiles for everything.

Furthermore, on the subject of playing with time, I have actually been thinking, for several years already, in implementing "something", like a time bomb, which would slow down time for everyone by you and your teammates.
This could achieved by making the player faster in the same proportion the time got slower, theoretically anyway.

Re: On the subject of time travel

Posted: Thu Oct 04, 2018 11:20 pm
by 'Zac
I once pondered about this idea. The thing is how do you keep track of past locations and such of a player and events? My idea was to look at how the UT demos play out, they capture 'simple' data to be saved into a .demo file that can be played out decently enough to be replayed. Though, i think it could be hard performance wise, especially server side.

Though, I am interested what ya can do!

Re: On the subject of time travel

Posted: Fri Oct 05, 2018 1:15 am
by EvilGrins
Let's say you're about 20 minutes into a game and you activate something that takes you back to the 1st minute... does that mean those you didn't kill back then you now can?

Gonna give the scoreboard a heart attack.

Re: On the subject of time travel

Posted: Fri Oct 05, 2018 3:53 pm
by JackGriffin
That's silly EG. 60 seconds would be a LOT to rewind. My guess is that 30 seconds is closer to what would be interesting. Ten minutes is too much wasted effort on the player's part. I don't want to ruin games.

I posted this on Discord but I'll ask here too. Does anyone have experience with altering the game clock on the fly? Can you add time back to it without creating pandemonium?

Re: On the subject of time travel

Posted: Sat Oct 06, 2018 4:32 am
by PrinceOfFunky
Feralidragon wrote:I have actually been thinking, for several years already, in implementing "something", like a time bomb, which would slow down time for everyone by you and your teammates.
This could achieved by making the player faster in the same proportion the time got slower, theoretically anyway.
That would be difficult for a player to speed up its reflexes too, you could instead divide the velocity for 2 at every tick for every actor except for the player and its teammates, but there would still be the problem of the direct hits of certain weapons like the enforcer, unless you make it use bullets like in the matrix mod.

We are not talking about actual time travelling, nothing would happen if you go back of 10 seconds when the match started since 5 seconds cause the " timeline" has to start from somewhere, it's all programmed.
Other than simulations, you couldn't get to a previous state without saving it first even natively, some functions(math) don't have their inverse(e.g. random function).

This is pretty much what demorec does: https://www.gamedev.net/forums/topic/61 ... me-series/