Recording AGS games

Started by Crimson Wizard, Mon 09/07/2012 21:12:16

Previous topic - Next topic

Crimson Wizard

I always wondered how does this record/replay stuff works, but not strong enough to actually check it out.
Now I see the recording functionality in the engine code and getting curious.

First of all, there are few commands registered internally, but they are not exposed to the editor. This functionality isn't mentioned in Manual - at all. I searched forums and found only few threads:
This circa 2003
http://www.adventuregamestudio.co.uk/yabb/index.php?topic=10275
Quote from: Scorpiorus on Fri 12/12/2003 14:43:06
Yeah, recording the actions. Use Alt-R to start recording.
EDIT: press again to stop recording. Then you can play the recorded file via specifying it in the AGS setup menu.
The feature is unofficial though.
Quote from: Pumaman on Sun 14/12/2003 15:03:47
Yep - it's unofficial because it is still buggy and the playback can get out of sync after a while (it tended to work for about 5-10 minutes then mess up).
It was originally designed to allow live walkthroughs of games, but in its current state it's only really good for demonstrating bugs or recording short pieces of your gameplay.

Also later one, circa 2007:
http://www.adventuregamestudio.co.uk/yabb/index.php?topic=32910
Quote from: Pumaman on Sun 25/11/2007 11:53:07
In fact, all that the replay feature does is record any user input (mouse moves, key presses) on each game frame. This works on the principal that the game logic is deterministic, so the only way to affect the game flow is if the user does something.
The replay feature does almost work, but there is a bug that can throw it out of sync in certain situations and I've never spent the time to track it down and fix it.

So. Basically this is in the engine for years now, but not working correctly.
Should it be fixed later? Is it needed to anyone?

EDIT: Heh, I was a bit wrong when I mentioned that "registered commands". There's only one command, and that's what it does:
Code: cpp

void scStartRecording (int keyToStop) {
    quit("!StartRecording: not et suppotreD");
}

not et suppotreD, sorry :grin:

monkey0506

The ability for the engine to record and play back user input actually would be very interesting to keep around. Granted, it's not something likely to be used by most games, but if it could be integrated into live gameplay, it would make features like Braid's time controls readily accessible.

I haven't actually looked at the code for this, so I'm not sure how much work that would be to implement, but it could be an intriguing feature for the engine. If we implemented run-time list types then it could probably be worked around within the game logic itself, so if it's too much work to maintain then I wouldn't object to canning it.

SMF spam blocked by CleanTalk