Do cinematic video games need judder?

Just a thought. I’ve been learning a lot about television technology lately, and one of the tricky things about it is the difference between video and film. It’s generally well known that movies and film are at 24 fps, supposedly because that’s the frame rate at which we can’t distinguish it from real motion. (That’s bullshit by the way, and has nearly nothing to do with why film is at 24 fps.) Video, on the other hand, is run at 25/50 fps (PAL interlaced or progressive) or 30/60 fps (NTSC interlaced or progressive). This means that video has a very distinctly different look from film, and film never ends up looking quite right on normal televisions. The introduction of 120hz LCD TVs on the market is partly intended to combat this problem, and show film sources at their true frame rate.

However, as far as I can tell (and I haven’t looked very hard), no one in video games has thought to apply this in reverse. Film people have, and movies like Avatar have film grain and film judder (non-smooth motion) applied in post production. We’ve been using film grain post filters in video games for a little while now; Mass Effect and WET come to mind. I’m pretty sure they’re still running at 30/60 fps though, which isn’t right if you want to look like a movie. It’s half-hearted.

Now even though the consoles can configure their hardware to output 1080p/24 (1080 vertical progressive scan lines at 24 fps), I don’t know if it’s available (or permissible!) to run at that setting. So the thing to do if we want video games to look like movies is to render internally at 24 fps, and perform 2:3 pulldown telecine live. The altered cadence will provide the proper film feel. (Ironically, most higher end televisions now have dedicated hardware to counteract this effect and restore the stream that we started with.) That will let us approximate the desired 24 fps, while still running at 60 fps.

Those of you who are paying attention will have realized that this involves repeating frames at an uneven rate that is not interpolated to the current physics state. Won’t it introduce jerkiness when things are moving around? Why yes, yes it will. That’s the whole point.


Free Software is not Free

I’m looking right now at a library called FFTW (link deliberately omitted), used for computing fast Fourier transforms on various types of data. I’m sure it’s a very good piece of work at a technical level, but the reality is it’s a load of crap.

FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications.

This seems reasonable until you realize that FFTW is not free software. It’s an example of the abomination known as Free Software, GPL license and all. Now they are free to choose whatever license they want for their work, but I feel equally free to call them out for it. Especially when their homepage manages to be so pompous despite having so little text.

If nothing else, I’m proud that SlimDX and SlimTune don’t attempt to force an abusive ideology on the world. They are free in the truest sense of the world. They don’t pretend to espouse freedom while obsessively restricting it. At least proprietary software vendors (usually) have the spine to say what they mean. Myself, I’ll keep things closed or open them for real. I’m not interested in the GPL protection ring.

UPDATE: May as well point out:

The non-free licenses are for companies that wish to use FFTW in their products but are unwilling to release their software under the GPL (which would require them to release source code and allow free redistribution). Such users can purchase an unlimited-use license from MIT. Contact us for more details.
We could instead have released FFTW under the LGPL, or even disallowed non-Free usage. Suffice it to say, however, that MIT owns the copyright to FFTW and they only let us GPL it because we convinced them that it would neither affect their licensing revenue nor irritate existing licensees.

This is a rather reasonable set of terms, and I personally think they should mention that right on the homepage.

IE Integration in Windows 7 Sucks

I’m not sure who thought this was a good idea or why. I’m also wondering who on the QA team passed this feature, because it’s catastrophically broken even from a technical standpoint.

Basically, under Windows 7, IE8 makes each of its tabs a separate “window” as far as the taskbar goes. It then benefits from the normal grouping stuff in Win7, with live previews etc. The problem is that this is an idiotic idea — and one I can’t figure out how to turn off. It means that every time I switch between windows using the taskbar, I can’t just go back to the tab I was using. I have to find the entry for the tab I want, out of anywhere between six and twenty options, and then click it. The only thing this has accomplished is to slow me down immensely. It’s ineffective at the best of times, and on a laptop with a touchpad it makes the taskbar unusable.

Worse still, the feature DOES NOT WORK. In a variety of situations, especially ones surrounding sleep and hibernate modes, the taskbar simply forgets some of your tabs exist. I have ten tabs open right now, but only seven show up in taskbar. And that’s a pretty good record, I’ve found that sometimes I’ll have a dozen open and only two available from taskbar — and the one I want is inevitably not there. So instead I click on some unrelated tab and then have to find the desired one again.

I’m generally favorable to MS and their products, but the level of incompetence surrounding IE is staggering. That Google can simply walk into the market with a better browser is a testament to that. There’s a huge number of good reasons Microsoft is being pushed out of the browser market. It doesn’t sound like they’re going to get back on a competitive track anytime soon, either.

My Favorite SVN Tool: SmartSVN

SmartSVN is my go-to tool for Subversion work. I believe that most people use either the command line ‘svn’ tool, or TortoiseSVN. Now I like command line from time to time too, and for that I use SlikSVN under Windows. I don’t like command line for the majority of the work though, so I stick to SmartSVN.

I’ve used Tortoise a lot, as well as the VS plugins AnkhSVN and VisualSVN. I’m not going to criticize them from a technical standpoint, but what it comes down to is this — integration sucks. Visual Studio integration is pointless when half your files aren’t in VS anyway, and Explorer was never designed to be Subversion. I went looking for a stand-alone SVN client and tried a couple (RapidSVN comes to mind) before settling on SmartSVN.

Why is a stand-alone client better? I can see a lot more information about the repository at once for starters, like the revision history, working copy status (with all kinds of sort options), my recent transactions, etc. The menu structure is also a lot nicer to work with than one giant embedded shell menu. I also like SmartSVN’s project management, so that I don’t have to go hunting through the filesystem to pull up projects. And as a simple practical matter, it keeps my Subversion windows separate from my Explorer windows in the taskbar.

Is this an advertisement? Yeah, a bit. The people at Syntevo were nice enough to kick a pro license my way, which adds a bunch of features — I’m looking forward to Perforce style change sets. And I won’t lie, at $70 USD the pro license is a bit steep. But I’ve been using the free version for a couple years now and I’m not planning on going back to Tortoise any time soon. (And yes, Smart has shell integration if you still want it.)

And there’s my pitch. I seem to have gotten into a routine of highlighting the tools I develop with, so I’ll continue that trend for a while.

My Top Song Covers

Just cause I feel like it. These are not in any particular order though.

“Eighty Percent” Projects

Chances are that if you’ve ever done a semester long project, especially a game, you have an “eighty percent” project sitting around. Maybe more than once. I believe I have at least three, maybe more. I regret leaving them as eighty percent projects, and I would like to go back and spend the effort to fix them up properly next year.

So what is an eighty percent project? Factually, it’s a project that basically works, does all the things it’s supposed to, but is clearly a rough draft at best. Maybe those menus didn’t quite make it in, or the font rendering isn’t quite crisp, or only two game levels ever got built and one makes no sense. Expressed more personally, an eighty percent project is one that has progressed just enough to be disappointing. It’s not really disappointing when a project is a half baked pile of junk. You really always knew, when it comes down to it, that the project was utterly worthless (as an object in its own right) and always would be. Maybe the core game idea just wasn’t good. Maybe you never came up with one at all. You probably learned a lot along the way, but the goal was never really to finish.

An eighty percent project is not like that. An eighty percent project had that spark and basic potential, enough that the result seems like it could have really been a solid piece of work. Something you would send to an employer, or publish to the internet. Except it isn’t that good. There’s just too many small (and occasionally not so small) things to fix. Levels 3-8 never got off the drawing board. The semester was just two weeks too short for that final cool feature to go in. And every time you consider finishing it, the to-do list seems to get mind bogglingly long (typical 80/20 rule).

I think my real personal goal for next year is to create a few 100% projects out of eighty percent ones. SlimTune is definitely the big one, but there are others too. I’ve been involved in several game projects that no one really knows about because they all stalled at eighty percent. I’d like people to actually see those and not laugh, myself.