The demonstration recording function of MMF2 can record only the developer's play.
I want the extension that can be reproduced by recording the user's play.
Printable View
The demonstration recording function of MMF2 can record only the developer's play.
I want the extension that can be reproduced by recording the user's play.
Second to that. I know that it's possible to 'save user movements and then replay them' but it never was working as it should.
By "replay" do you refer to just the "movement" of the objects on the screen?
Mokhtar but still to make that movement working - it have to detect collisions, creation of objects all the effects and so on, because it can have influence on that movement.
That wouldn't affect how it moved. If it moves on the screen in exactly the same way as it did before (as if you just video-captured it), then collisions wouldn't really matter.
What about randomness in the bouncing ball?
I also like this idea, the 'Demo' feature seems too... limited?
That's exactly my point. If you are replaying you want the ball to move in the same way it went when you 'recorded' it.Quote:
Originally Posted by RickyRombo
Oh, I think both Fano and I thought you might be saying it can already be done?
Maybe it can. But that's not what I meant, I was just giving a way this could be done.
It can be done, heck even sounds can be recorded as well if you wanted to.
Just ask PixelThief, he made an entire engine in lua that does this, and allows the player to travel forwards and backwards in time.
Although if an extension was made to do this it might be a bit more efficient.
sorry mokhtar I just understand you as recording what players see. But yea it's something like recording video and making possibility to rewinding it and that always it will look the same way.
So there won't be situation that ball which has got random movement at each replay comes out of playfield at different angle.
My point would be something like it is in starcraft. That it records whole playfield and you can see only player A only computer, both of them or whole map. but still yes It would be only recording but recording ogole whole playfield...
What's wrong with a 3D array with X as time, Y as objects and Z as all the information like position, anim frame, andim direction, anim that is playing, ect?
the amount of memory it would requireQuote:
Originally Posted by LB
you'd probably want to come up with a data structure better suited to this kind of information
I think LB has a point. If we build an extension to do this, that is basically what we will be doing. It will only be slightly faster and more efficient, but the core idea is that it will have to store everything it needs on the fly so it's not really the "amount of memory" that will benefit here.
LB is right, this is how pretty much all replays work. All you need is an array which takes a new input each time an object moves or updates and then you simply recreate that by reading back the values as needed. An extension for this would be pointless imo.
well it depends on whether the game is deterministic or notQuote:
Originally Posted by bigredron
if it's not (which is probably the common case since it's easier to program a game this way), then yes, you will need to store state information frequently if you want the replay to be accurate. however this can start shooting into the megabytes before you even realize it (states recorded per second * length in seconds * number of recorded objects * size of recorded object properties)
if it is, then you can get away with storing just the initial state since everything else is entirely predictable and will play out exactly the same way every time; player input, random seeds, and maybe a few other uncontrollable events would still need to be recorded often but that's far less data to deal with. of course this comes at the price of being a lot harder to code since you have to prevent any non-deterministic sources from influencing the engine (such as events relying on a sound to complete)
The best way would be do the same what idSoftware did for Doom and Quake - store events, which happened and allow engine later on to play them.
Thanks to that they were always in highest quality (rendered in real time) and were small files (cause it was only events not proper recorded movie).
I doubt this approach would be technically feasible for an object. You never know kind of other extensions you have in the frame.
You can do this in a game because you have full control over what's happening.
array and save to it constantly. There is no other way if the new path or movement will be different. Making an extension would work but it'd be literally the same (adding an object to the extension where the extension then records everything). It'd probably be a bit more of a memory choke than if you did it yourself since the extension wouldn't know which properties are vital and which not. And I personally wouldn't want an extension that would be eating memory by just idling.
there could probably be a "push state" action that writes a state that includes the currently selected objects (along with a condition/action to select all objects beforehand)
similarly there would be a "restore state" which would immediately modify all objects with data saved in that state; it could also take a state offset number which would allow you to do things like jump to a specific "frame" in the replay or even run the replay in reverse
this method would work for both deterministic and non-deterministic engines; for the former, you just push the state at the beginning (or at any time you want a place to jump to). for the latter, you could just do something like RecordingEnabled = 1 -> Push State
xyzzy I like your idea but woudn't there be problems with extensions and other things that the replay extension wouldn't know about
probably
though extension support is probably an issue no matter how the replay system is implemented. it could be a problem to even store object types/references especially if you wanted the ability to load/save replays
It could be always extension working as unification of array saving and debugger - that we are selecting which objects and which values are saved.
or you could just make it yourself using a 3d array. Then you have full control over what you want to store...
How to do that?Quote:
Originally Posted by uprize
Using an array and events. You would need to program it yourself using MMF events, store the data you want of which objects you want, when you want.Quote:
Originally Posted by ASD
An extension would not give you the flexibility coding it custom can.
That's what I said and that's what they shot down. http://www.clickteam.com/epicenter/images/icons/default/tongue.gif