GTA:SA:PC: Strangeness

By Shamus
on Aug 26, 2008
Filed under:
Projects

I’ve said before that if game developers would back off from the bleeding edge, they could do more with less, and GTA is the perfect example of this in action. If you’ve been reading this site for any length of time you’ve heard this rant before. My big plan over the weekend was to do a video review / commentary thing for Grand Theft Auto: San Andreas on the PC, to illustrate what I’m talking about.

It didn’t work out. I’m still not sure why.

250
To the right I have a series of images from a test movie. These are taken from a 5 second sequence where I exit a vehicle after a crash. I’m sure you’ll notice that in two of the four frames, about half the stuff in the scene is missing.

A very simplified explanation of current rendering technology is this: The software has two “buffers”, which can hold a bunch of pixels. The game will draw the scene into one of the buffers, adding a sky, a volcano, some space marines, a girl in a titanium bikini, some explosions, TIE fighters, dinosaurs, or whatever this particular game calls for. Once it’s done drawing, it then presents you with its latest masterpiece by showing you the buffer. This means the other buffer is now free. You’re no longer looking at it, and so the game starts drawing into that one. It repeats this process for every frame – usually at least twenty times a second. You can think of this like a painter with two canvases: While you’re looking at one painting, he paints on the other, and the moment he’s finished he trades you, so that you’re always looking at a finished painting and you never see the work in progress.

For video capture, I’m using Cam Studio, an open source all-purpose desktop capture program. It’s what I’ve used in the past to make my Half-Life 2 movie. I’ve tried a lot of video capture programs, and Cam Studio has been the most sensible and reliable so far. But for whatever reason it can’t capture San Andreas. It’s almost as if it’s filming the back buffer (where the drawing takes place) instead of the completed image. Now, when I’m playing the game, everything is fine. The game looks right and runs smooth. But if I film the game in action, the movie ends up with the images you see: A bunch of half-drawn crap with parts of the scene missing.

I don’t even know if I should blame GTA or Cam Studio. Cam Studio is, in theory, just grabbing the raw pixels off my desktop – which clearly isn’t the case, since what I was seeing is different from what the movie contains. But maybe GTA, being a console port, is doing something goofy in the background that’s messing Cam Studio up. I just don’t know.

I don’t even know how this is possible. If you asked me to film what was going on in the back buffer of another application I’d give you a deer-in-the-headlights look while I pondered how in the hell something like that could be attempted. I would then make every effort to unload the project onto someone I hated.

What’s even more inexplicable is how it only happens sometimes. I’d sort of understand if half the frames were messed up, but that’s not what I’m seeing. As I step through the movie, I’ll have ten normal frames, and then one of these half-drawn frames, then another string of fully-drawn frames, then a couple of unfinished ones. It really is baffling.

More to the point, I sunk most of my post-writing time into this failure this weekend, and this is all I have to show for it.

So, uh… enjoy!

Enjoyed this post? Please share!



201434 comments. Hurry up and add yours before it becomes passé.

From the Archives:

  1. Kel'Thuzad says:

    How strange.
    Hope you find out what’s wrong.

  2. Kel'Thuzad says:

    For some reason, it won’t let me edit my first post.
    More to the point: When did you get GTA: SA? Was it on your wishlist?

  3. Ian B. says:

    If you plan to do this sort of thing again (hopefully with a greater level of success next time :() it might be best to just save up for FRAPS. I’ve never once had it fail me. It’s one of the few programs I’ve seen that can actually capture music games without lagging them to the point of pointlessness.

    I haven’t personally tried to capture San Andreas with it but I’ve seen videos of it that were captured with FRAPS and it seems to work fine.

  4. Ozy says:

    Well, we know that what you see does exist in the cable between your video card and the screen, so there’s always splitting the signal into your monitor and a video-capture card.

  5. Viktor says:

    Probably what’s happening is the game is only drawing part of the image for each frame to save time. Your capture is seeing the raw frames instead of the completed image that your eye processes. I know nothing, but that was my first thought.

  6. Factoid says:

    Just a question regarding the first paragraph of your post: Are you putting forth GTA:SA as a good example of the stepback/bleeding edge principle or a bad one?

    I don’t recall GTA:SA being particularly bleeding edge when it came out, rather they just improved on the GTA3 engine, made little effort to upgrade the graphics and instead focused on creating a larger gameworld. It wasn’t as good as Vice City, but it was at least as good as GTAIV in my opinion.

  7. Binks says:

    “The game will draw the scene into one of the buffers, adding a sky, a volcano, some space marines, a girl in a titanium bikini, some explosions, TIE fighters, dinosaurs”

    Oh great…now I’ve just got to find/make a mod/game that incorporates all of this just for the sheer awesome image it would have.

    Also I think Victor might be on to something. The Human Eye is notoriously bad at distinguishing fast changing images from motion (the entire premise behind video) so it wouldn’t be impossible to render half the scene in one frame, and the other half in the next, and have the users eye see it as a completed frame. It would probably give a lot of people headaches, but work decently well and give you better FPS (which, in turn, would lower the eye strain). One of the new 3D technologies out there is based on a similar idea, display the image you’d see from your left eye in one frame (when the glasses right frame is closed) then the right eye in the next (when the left frame is closed) and let the brain combine it not only into video, but 3D video.

  8. gahaz says:

    Binks:

    In a game like this it would be difficult to blame his problem on this.

    The game stutters and stops frequently and if it were doing this you would have a lot of what he is talking about while playing. I have fraped this game several times and editing them frame by frame I have no “phantom” frames missing content.

    Odd pop-in in the distance yes, missing content from frame to frame no.

  9. Kevin says:

    Hey, what a great blog! This would have made no sense if the capture program had worked correctly.

  10. Shamus says:

    Ian B.: Just tried FRAPS over lunch. It worked. Sold. Thanks.

    Factoid: Yes, I’d call GTA: SA a good example of backing off on the graphics and working on streamlining the process. Now, in the case of this game it was done because it was targeted at the now-ancient PS2. The idea is that the world is so big and seamless and has so many game modes because they weren’t pushing. They couldn’t build up, so they built out, as it were.

    But the comparison is a little apples-to-oranges vs. other games, since the budget for GTA is enormous.

    I do know that it runs very, very smoothly, with only the slightest loads at startup and no load times thereafter. Like the Millennium Falcon, it doesn’t look like much, but it’s got it where it counts.

    The point I wanted to make is that a smooth and seamless experience can more than make up for lack of visuals.

  11. Kel'Thuzad says:

    But… why remove it if it’s going to be re-installed once he installs Kotor?
    So many games have SucuRom these days…

  12. gahaz says:

    SecuRom is the parsley of the PC game world. It tastes terrible, serves no real point, and only the Chef thinks it adds its own merit. Since we are hungry and paying we just glance over it at our tuna fillet.

  13. wildweasel says:

    Shamus, given that you’re so sick of games pushing the latest technology and ignoring the little guy, I thought you might be interested in an article series that my brother and I are going to be doing:

    http://weaselsblaugh.blogspot.com/2008/08/requirements-not-met-medal-of-honor.html

    Basically what we’re trying to do is create a polar opposite to those impossibly-nice-looking screenshots that developers put out, by taking screenshots of games using the lowest possible detail levels. And a little bit of snarky commentary as well.

  14. Shamus says:

    Yes, keeping SecuROM off your machine is essentially pointless if you install / play as many games as I do.

    I don’t sweat it too much, though. The big security hole left by secuROM is to negate the safety of running as a non-administrator. I run as admin anyway, so I personally don’t have to worry about it.

    This is not to say that SR isn’t vile and reprehensible, and I certainly don’t blame people for boycotting / torrenting hacks to get around it.

  15. Smileyfax says:

    I don’t recall SecuROM being notably vile until recently, with the Bioshock debacle. I always recall Starforce being the Big Bad of DRM.

  16. wildweasel says:

    Yeah, old incarnations of SecuROM essentially just boiled down to it just not working on older CD-ROM drives due to the weird way they pressed the discs, much like what SafeDisc did (and probably still does). Only recently have they taken to the horrible online activation part of things.

  17. potemkin.hr says:

    Interesting rendering method. Is it possible that the second-frame rendering is happening only when there’s heavy graphic effects? This method could get the max out of the hardware without stuttering using the fact the human eye can’t register such fast changes as separate pictures but melts them together into a single one (the same thing is the bird in cage illusion > http://loukregel.blogspot.com/2007/10/bird-in-cage-optical-illusion.html)?

  18. Oleyo says:

    ‘ “The game will draw the scene into one of the buffers, adding a sky, a volcano, some space marines, a girl in a titanium bikini, some explosions, TIE fighters, dinosaurs”

    Oh great…now I’ve just got to find/make a mod/game that incorporates all of this just for the sheer awesome image it would have. ‘

    HA, the same thought came to my mind. Well played, sir :)

  19. Factoid says:

    Re: GTA budgets. Rumor has it that when it was made, San Andreas had a budget of something like 55 million dollars, making it the most expensive game ever made. Rumor has it that GTAIV had a budget of something like 150 million.

    Not sure what SA’s sales were like, but GTAIV grossed in excess of 500 million dollars in its first WEEK of sales. I’m sure it will gross over a billion dollars worldwide over it’s lifetime.

    Also I would expect that Rockstar will do with GTAIV what they did with GTA3…make new games using this engine that simply incorporate new gameplay features, a new story and new locations. Underlying architecture will remain the same another couple of games allowing the “out instead of up” growth you mentioned.

    PS3 owners might get left in the dust on this one, though….as Microsoft secured exclusive rights to expansions for the 360. When asked what an expansion pack would look like for GTAIV, rockstar said “Think of Vice City as an expansion for GTA3”.

  20. Ian B. says:

    Not a problem, Shamus. Glad it worked for you. :)

  21. gahaz says:

    Factoid:

    Actually the content Has now been revealed and the total is 15 hours worth of “Episodes” that take place “…away from the main story enough to not affect the story any other players have received”.

    Which kind of says a side quest that won’t be to monumental story wise to me. There are no new areas or cities, just a side story to play through.

  22. NobleBear says:

    You doing a video review would be awesome.

    I heartily endorse this product or service.

  23. NobleBear says:

    Eric (24)

    Not gonna happen. Nolan has made a point of hiring younger actors for his rolls. Cher won’t be in it unless she can turn back time. ;)

  24. Eric says:

    LMAO.

    I don’t know if I should be ashamed for getting that joke.

  25. Miral says:

    @gahaz (#13):

    Hey, don’t take it out on parsley. I love parsley ;)

  26. NobleBear says:

    Eric (26)

    No worries, you’re in good company, man. :D

  27. ClearWater says:

    It’s simple: whenever the game is too busy doing stuff to update the screen it instead sends what you’re supposed to see directly to your brain, thus bypassing the relative slowness of the video card. Cam Studio obviously was not built to detect these direct feeds and thus shows an empty scene.

    I know, it sounds crazy, but it’s the only possible explanation.

  28. NobleBear says:

    Clear Water (29)

    Wouldn’t that be PS9 technology getting ahead of itself? ;)

  29. Teamdest says:

    first, glad to hear fraps is working well, I happen to like that program for what it does. That said, two things:

    1. did you play around with the graphics options, there might have been something in there? I dunno, vsync or something stupid.

    2. if you capture a lot of movies from games, consider hitting up somethingawful.com’s forums. there’s a subforum there, Lets Play, that has a LOT of information about such things in the first few posts. you may get some good advice about capturing, editing, etc.

  30. Davesnot says:

    I just downloaded CamStudio.. got the same deal you did for NWN1..

  31. James Haight says:

    Very likely it’s some kind of compatibility issue with whatever version or configuration of DirectX GTA is using. It’s not almost, but rather exactly what you’d expect to see if the capture software were reading the back buffer instead of the display. As for how it’s happening exactly, I wouldn’t know; but DirectDraw does dark evil voodoo magic involving all kinds of display hardware and buffers, and I wouldn’t be surprised if it repurposed what is the front buffer in normal circumstances to some other, more nefarious end, or messed with the buffer swap flags and semaphores for whatever reason.

    As for roughly half the frames showing up “properly” – a lot depends on exactly what technique CamStudio uses to sample the display buffers, how GTA’s logic is laid out, how your machine is set up, and a whole bunch of thorny timing issues, but a back buffer frame can spend an appreciable amount of time in a “fully drawn” state as well. Could be the exact moment of sampling drifts slightly, and you luckily get some fully-drawn frames in a row one time, then a string of misses the next.

  32. blah blah blah says:

    I’m guessing (yes: guessing) it’s some sort of graphics-card wizardry, where they cache polygonal constructs from one buffer and reuse them without copying them. At least, that’s how I’d do it if there were some things on screen that were expensive to render but didn’t move every frame. When the game is displaying, it displays correctly because of the wizardry, but when your prog reads the buffers, it gets incomplete data.

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *

*
*

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>