Hey, so I've been playing GTA4 for PC (second time through the game, first was on 360) and I have to say I absolutely love the playback feature. Not only is it a recording of the last 40 seconds, but its a recording of the last 40 seconds of 3D space. So its not a video.
When I edit this playback, I can move the camera, place camera, edit, cut, etc. etc. etc.
The ability to hit F2 at and awesome moment that I'd like to eventually share with a friend is just so great. I wish all games had this because then I'd feel like friends would never miss an awesome moment.
I also like the fact that it prompts you to hit F2 to save whenever you do something awesome, die, big gun fight, etc. etc. I've already missed a couple of times where I did something cool, was remembering it as I was driving away, then was like "Fuck! I should have hit F2!". It's like my gaming skills (er, what?) need to be returned to remember this feature.
I checked out my PC and each save is 35-60mb, which isn't bad I suppose so long as I don't go crazy with it. Beyond that, I have no other technical knowledge on this feature.
Has anyone worked with it? I know Bungie records your last 2 FULL matches in Halo 3?
Is this tech expensive? Hard to implement? How does it work?
So many questions
Replies
The record-a-demo feature always seems awesome, and have always enjoyed them (Starcraft, Dawn of War, UT2k4, UT3), but also including tools and features to edit, make camera cuts, manipulate time, so that users can create cool stuff of all the "pocket awesome moments in gaming" makes for really enjoyable features.
Not sure of the technical sides, but skate's performance was never hindered w/ it. You'd have to load going into into the edit mode, but was never long. For the 3d space, i'm sure its just collecting data and playing it back for the 3d space, similar to an auto-key feature in max or maya (im assuming). Looking at Halo3's wild stuff, they no doubt have a lot of data being collected - as they show you where kills were made with what, by whom, etc - which probably is used to manufacture the playbacks.
It's all essentially a glorified "demo" feature that was implemented in Quake (and then Q2, Q3, all id games after that really). It may have also been around before that in other forms. It's only been fairly recently that developers have realised they can expose this data to the player and allow them to edit/review it.
In fact even before this, any sort of "replay" feature (ghost cars in racing games etc) is all the same basic idea, you just record the position and direction of various objects at any given game frame (not every *actual* frame, that'd be much more data than you need), then you can just play it back whenever.
How difficult it is to implement depends on the game and what you want to be able to do in the replay. If you use real-time physics simulation in your game, that makes things a bit more complicated, especially if you want to allow interaction during the replay (which would require you to somehow sync the original physics with the playback physics). Normally you'd forgo physics in the replay since the position of every object has already been recorded from the original physics simulation, but if you want to interact with the objects during the replay, you have to still run physics. You also have to think about sound and animation. It's easy to record a keyframe when a certain sound or animation is triggered, but then you have to take into consideration what the user is doing inside the replay (e.g. if a user pauses the playback immediately after a sound or animation has been triggered, you have to also pause that sound or animation and then be able to resume it from that position, even though that information isn't part of the original data that was recorded).
Other than all of that, another reason not many games include a replay feature is that you have to keep the replay feature in mind for every little thing you design. For example: in first-person shooters, you typically don't render a character for the player since the game is played from the first-person perspective, but if you want to give the player a free-roaming camera in the replay, you have to add a third-person model specifically for the replay, otherwise the user is just going to see a pair of floating hands carrying a gun. That's just one example, there are thousands of little things like that which have to be taken into consideration.
[edit] Something MoP mentioned made me realize another hurdle for recording replay data. He's right about replay data being essentially the same as the data that's broadcast over a network to make multiplayer possible (that's a great way to explain it), but games usually use all sorts of tricks with their netcode. For example, entities/objects that are beyond a certain proximity or out of view are usually ignored to an extent... if you normally track an object's position/orientation/state 10 times a second, you might only track an object's position 2 times a second (and ignore the orientation and state) when it is beyond a certain proximity. This saves on bandwidth overhead, but would cause you problems if you want the player to be able to replay the match and watch the guy that was all the way across the map. It's just another hurdle you have to overcome if you want to implement a replay system for a multiplayer game.
I was hoping Halo 3 would continue to set new standards, like what the first game did to customizable gametypes and regenerating health, and the second game did to online console gaming, only this time in the form of mildly editable levels and the theater mode. Every console game needs a screenshot feature that automatically uploads it to a website that you can check out the next time you're on the computer.
But alas, people weren't as keen on following that trend. I really think it brought the Halo community to a whole new level and a lot more games of a lot more genres would benefit from it...