How Much of a Genius-Level Move Was Using Binary Space Partitioning in Doom?
I still remember the first time that I played Wolfenstein 3D. It was on a contemporary hardware, as a minigame in a far more recent Wolfenstein game. My first thought was how rudimentary simple it was; my second was “Holy crap, you could do this on a 286?”.
By modern definitions, I don’t think anyone would be thrilled by the limitations Id’s early engines had for map geometry. But I think for their times, it was a small price to pay given the hardware. And to be fair, as a kid, when I first played DooM ’93 on a Sega 32X^, I certainly didn’t notice. Years later when I would play it on a PC, I didn’t care—because it was still fun. All these years later, I still find DooM ’93 to be a lot of fun. That’s the real success of a video game, I’d say :P.
For the time, even the console ports were pretty impressive games. I mean, most of the games we had looked like this:
Meanwhile if you popped in DooM, this was what you got:
That just didn’t happen, lol.
Many times that I’ve read about porting PC games to the Super Nintendo, and other consoles, they’ve usually been stories that I would describe as “Lossy” or “Brutal” depending on the complexity gap. Such as when an arcade machine was far more powerful than a console, or a PC simply had more oompth than a console.
Id’s games were kind of revolutionary: both in their visual technology, and in their portability. Wolf 3D, DooM, and Quake were pretty widely ported during their era of commercial viability. Post open sourcing of their code, they have come to run on virtually everything, and anything. As technology has advanced, we’ve probably reached the point where it is no longer a surprise if your wrist watch is more powerful than many of the things DooM ’93 was ported to in the ’90s.
Today, I think that DooM’s use of BSP is somewhat novel. You should think of that today, or your hardware is probably so powerful compared to your goal: that you just don’t care. Given a decent computer science education, the concept isn’t the leap into rocket science. Today though, I imagine most people aren’t tasked with solving such a problem, because they live in the world John Carmack helped create: one where we have this thing called a Game Engine.
When Carmack programmed these games, I don’t think it was so obvious a technique. People were still struggling to make PCs do this kind of thing at all. Resources for learning these things have also changed a lot over time. Many of us have the advantage of knowledge built on the minds of geniuses, if we have any education at all—and the code.
Two of my favourite engines to read: are modern source ports of the Quake III: Arena and DooM engines. By releasing the code into the wild, I think it helped all of us learn better how to solve these problems. Both the things you can go off and learn, and the code you can get ahold of have evolved since these games were written. But thanks to games like DooM: it’s easier for us to do that today. Because technology is built upon what came before, by extending the ideas of others in new directions and taking advantage of improved hardware.
Genius isn’t in using a rock to smash something, it is in realizing you can smash things with a rock far better than your thick head.
^ Being around 25 years later, my brain cells are foggy. But DooM was one of my brother’s games, so the first thing we had that played that would probably have been the Sega Genesis, which AFAIK means 32X release. We also had the PlayStation versions of DooM, Final DooM, and Quake II but those were later in our childhood.