Tales of the Rampant Coyote

Adventures in Indie Gaming!

How 3D Racing Games Worked Before 3D

Posted by Rampant Coyote on January 6, 2015

This may be for hard-core code geeks only, but I don’t care. It’s fascinating reading! It’s an article about how titles “faked” 3D race tracks in an era before there really was the hardware or processing power to do real 3D at racing-game speeds. I remember making some games of my own that faked it that *kinda* used these techniques, but nothing as sophisticated (or as tricky) as the things described here:

lotusLou’s Pseudo 3D Page

As a modern-era game developer, is there any reason to use these techniques? Maybe, but I think in a lot of ways it would only be for your own personal enjoyment of re-creating the look & style of a classic old-school racing game.Or if for some reason (it happens!) you are making software for an obsolete platform.

However, as a general thing to put in your thinking cap, it’s worth noting that “faking it” is not restricted to obsolete hardware. We may always run into situations where we are limited by the hardware in some way, and programmers and designers may have to come up with clever work-arounds. Whether it’s doing cool 3D worlds to work on somewhat sluggish mobile hardware, getting a ridiculous number of sprites running in a web-based game, trying to make a large number of AI behave believably inside a medieval town, or what have you… it’s always good to remember that it’s how it looks, feels, and play, not whether or not you did it “right.”

On these old platforms, the games had to be fast. Without the illusion of speed, the game would fail. So it was all about providing that illusion, and making it cool. That’s still what we do in games – create illusions.  We create illusions of a larger world outside the “walls” of the game. We create the illusion of real people inhabiting our worlds, of solidity to our physics, of a natural order and real people where all we really have is an extremely large number of on-off switches. So while these exact techniques may be of extremely limited value except as intellectual exercises, the approach remains valid.

Filed Under: Programming - Comments: 3 Comments to Read

  • McTeddy said,

    Wow, I haven’t thought about this for a long time. When I was young I created a few racing games using some of these methods. I spent weeks playing NES racing games and trying to figure out the implementation.

    Man, having the internet makes all this stuff soooo much easier.

  • Rampant Coyote said,

    No kidding! There’s a lot of smart people out there you can learn from, if you can find them in a sea of ignorance.

    That’s really how I learned – I’d go to the arcade, see what people were playing, play them myself a bit, and then go home and try to replicate them on my computer. I always fell horrendously short, but it was an educational experience.

  • Felix said,

    Oh goodie! You found it too! Here’s another tutorial on the same topic I found two and a half years ago: http://codeincomplete.com/posts/2012/6/22/javascript_racer/ — and you’ll also find tutorials out there on how to do raycasting (think Wolfenstein 3D).

    I second your points, and I would add that pseudo-3D also has two more big advantages: 1) it’s dead simple, unlike 3D programming, so it’s a lot easier to understand, and 2) it’s more portable, since all you need is a dumb 2D drawing surface to make it work. No more worrying about driver versions, OpenGL compatibility and the like.

    But nowadays a lot of game developers are convinced that “3D is easier” for some reason, and so they stubbornly insist on using a jet fighter where a bicycle would suffice…