Developer Fabien Sanglard has written a code review for id Software's iPhone port of Doom. It's an interesting look into how the original 1993 game (which he also reviewed to understand its rendering process) was adapted to a modern platform.
"Just like Wolfenstein 3D, Doom was rendering a screenframe pixel per pixel. The only way to do this on iPhone with an acceptable framerate would be to use CoreSurface/CoreSurface.h framework. But it is unfortunately restricted and using it would prevent distribution on the AppStore. The only solution is to use OpenGL, but this comes with a few challenges: Doom was faking 3D with a 2D map. OpenGL needs real 3D vertices. More than 3D vertices, OpenGL needs data to be sent as triangles (among other things because they are easy to rasterize). But Doom sectors were made of arbitrary forms. Doom 1993's perspective was also faked, it was actually closer to an orthogonal projection than a perspective projection. Doom was using VGA palette indexing to perform special effect (red for damage, silver for invulnerable...)."
This discussion has been archived.
No new comments can be posted.
glDrawPixels is not supported under OpenGL ES which is what the iPhone uses. An in-memory buffer used as a texture is about the only way for fullscreen images (vertex arrays drawn using GL_POINTS is another solution but would not be fast enough).
I remember playing Doom in the mid-90's on my friend's Gateway 2000 Pentium 100Mhz. I still play it to this day from time to time (openGL port on Linux). It's mindless, self-indulging, gory, non-challenging (now, not then!), and it's becoming one of timeless those FPS games that won't die because it's story line is simple and not drug out, you're thrown right into the mix and you can keep your objective as simple as you want: Make it to the end of the map.
It's mindless, self-indulging, gory, non-challenging (now, not then!), and it's becoming one of timeless those FPS games that won't die because it's story line is simple and not drug out,
In my opinion, DOOM was a good game but it wasn't ground breaking in the same way that Quake was a few years later. It was the first FPS to do real 3D, and gave birth to real FPS competitive play, based on the groundwork that DOOM did with FPS LAN play. Aside from that, the Quake engine led to all sorts of interesting gamemodes and mods that live with us still (Team Fortress was originally a Quake mod), and the physics of Quake 1 still has a legacy today (rocket jumping, bunny hopping).
I think the insurgence of DOOM ports to phones is because the pseudo 3D interface of DOOM lends itself more to the controls of mobile devices. It'd be nice to see more Quake and Duke3D ports.
DOOM was a good game but it wasn't ground breaking in the same way that Quake was a few years later. It was the first FPS to do real 3D, and gave birth to real FPS competitive play, based on the groundwork that DOOM did with FPS LAN play. Aside from that, the Quake engine led to all sorts of interesting gamemodes and mods that live with us still (Team Fortress was originally a Quake mod), and the physics of Quake 1 still has a legacy today (rocket jumping, bunny hopping).
You sir, have a career in video game blogging! Let me sign you up for a 3000 word "Top 10 Groundbreaking games of the 1990s" blog entry.
It added a whole new kind of depth to the gameplay. Suddenly, the game wasn't just about how well you could aim, and how well you knew the maps and where the pickups where, it also mattered how good you were at moving. It was so influencial and loved, that future quake engines made it a point to allow alternative movement styles, the pro mods (CPMA stands out in particular) enhanced and added movement tricks, and entire mods were created around completely around the concept (DeFragged). The quakes were r
This is also in a game where you can get hit by a rocket and live if you have enough health. And take a few hundred bullets from a simple 'machine gun'. And jumping from a ledge 6 times your height? No problem.
The groundbreaking REAL 3d game was Ultima Underworld. Amazing story, great music and paced to the action (due to midi synthesis) and total 3d immersion.
Take a look at Marathon. It's what Bungie did on the Mac while id released Doom for the IBM. Essentially Doom with fewer weapons, alt-fire and funny monologues. Durandal still ranks high in my list of the best insane AIs. The story is more complex than that of Doom but fairly simple to follow. Well, until you get to the third - pardon - infinitieth part, which is a time travel bonanza full of alternate pasts you never get to see.
The engine used for Marathon 2 and Infinity is available as Aleph One; the fi
The terminals saved the game for me. The gameplay isn't the most inspiring but the writing is great. Still didn't pull me all the way through Marathon 2, though.
I thought it was "Code Review of Doom" for the iPhone not "Code Review" of "Doom for the iPhone". I've seen some "code reviews of doom". I was looking forward to some juicy ApplePain. Oh well.
by Anonymous Coward writes:
on Thursday February 04, @07:33AM (#31020956)
Doom 1993's perspective was also faked, it was actually closer to an orthogonal projection than a perspective projection
Not remotely true; DOOM's perspective is/was perfectly correct (apart from the monsters being billboards, of course - but they were perspective-correct billboards).
The method for achieving perspective is rather unconventional, but the maths works out the same.
Matching up floor and ceiling in an animated view with fake perspective is basically impossible.
[I did a port of DOOM before it was open-source, so I know a thing or two about this.]
by Anonymous Coward writes:
on Thursday February 04, @08:08AM (#31021164)
You are correct. What TFA probably means is that walls, floors and ceilings are drawn in strips, and that for every strip all the texels are looked up according to a straight line. But that doesn't mean at all that hence Doom just uses an orthogonal projection, since it actually let's things diminish in the distance properly. A lot of real three dimensional games actually linearised texel lookup, but that says nothing at all about the overall projection a game uses. If you want to know what an orthogonal projection looks like, go play Age of Empires. As an added comparison, take a look at Mode 7 tricks on the SNES. You can actually perspectively correctly display a flat surface on it. How is this done? By setting a different orthogonal projection for each (in this case horizontal) line. That does not mean however that games using this therefore use an orthogonal projection, because the parameters are different for each scanline and the overall projection is perspective.
<pedant>
This isn't a "code review" -- it's a short monograph (with Quicktime movies!) that talks about how Id got DOOM working well on the iPhone. A "code review" is, well, a critique of code, and the style, correctness, and efficiency, thereof.
</pedant>
The only way to do this on iPhone with an acceptable framerate would be to use CoreSurface/CoreSurface.h framework. But it is unfortunately restricted and using it would prevent distribution on the AppStore.
Now this is what really annoys me. Here are tools. Appropriate tools. But you aren't allowed to use the tools, because what you're going to use them for offends The Gods.
Disallowing the use of private APIs ensures that your software will continue to function with new versions of the iPhone OS. The private APIs might change, but the public ones will not.
The real questions is whether or not there should be a public API for CoreSurface.
The Sony Ericson P800 and the Motorola A920 had Doom ports that were very true to the Doom experience... in 2003.
As an unlocked A920 user, there is very little on the iPhone that I didn't see on that device. Apple's real accomplishment has been wrestling control away from the carriers who {locked down/disabled/walled gardened/made crappy} all of the devices that they sold.
I am happy for what Apple has done. It has allowed me to buy a Motorola Droid from Verizon without all of the restrictions it would other
by Anonymous Coward writes:
on Thursday February 04, @12:55PM (#31024582)
A long time ago, I ported Quake 3 to windows mobile. Tedious, but it worked reasonably at around 30fps (and deathmatch worked) with OpenGLES acceleration on the Dell Axim x50v enabled with the intel 2700g coprocessor. The code is still out there, but frankly, it wouldn't be kosher for me to push a copy of Quake 3 to the iphone store since i dont have copyright access to the 'assets' of the game and i dont need to get sued or something.
it's a bit useless to gpl your game and not the assets. If iD software wants to use the code for a quake 3 for iphone, they can do so at http://code.google.com/p/q3ce/source/checkout. Should save them some time. Open invite, go right ahead, i can't do anything with it these days anyway.
(and yes, i converted the whole thing from floating point to fixed point using some fun c++ templates, poke around the code to see how it works, it's kinda neat.)
I'm not sure what rendering API it used, but I had Doom on my Nokia 7650 running just fine around 2002 as well. I think it's been ported most places in many different ways.
iPhone doom is a port from an existing GL port of doom (namely prboom) back to idsoftware and onto the iphone. So yes, someone has done it years ago, and yes, id leveraged that.
My guess is that we open the link in another tab or window, read the first paragraph, and when many of us realize TFS is the same as that paragraph, we already have the relevant information.
That or the bizzaro edition of this site.\ reads the articles, resulting in it not being available, but they have hardly anything to say about it.
The point is that somebody already did the work involved with the 3D vertices, if I'm getting it right. Yes, OpenGL ES is somewhat different, but if I'm understanding it's not really that different and the biggest architectural changes had to already be made anyways.
Pushing pixels (Score:5, Interesting)
Re: (Score:2, Funny)
Re: (Score:3, Interesting)
Re:Pushing pixels (Score:5, Interesting)
Parent
Re: (Score:2)
Classics never die (Score:5, Insightful)
Re:Classics never die (Score:4, Interesting)
It's mindless, self-indulging, gory, non-challenging (now, not then!), and it's becoming one of timeless those FPS games that won't die because it's story line is simple and not drug out,
In my opinion, DOOM was a good game but it wasn't ground breaking in the same way that Quake was a few years later. It was the first FPS to do real 3D, and gave birth to real FPS competitive play, based on the groundwork that DOOM did with FPS LAN play. Aside from that, the Quake engine led to all sorts of interesting gamemodes and mods that live with us still (Team Fortress was originally a Quake mod), and the physics of Quake 1 still has a legacy today (rocket jumping, bunny hopping).
I think the insurgence of DOOM ports to phones is because the pseudo 3D interface of DOOM lends itself more to the controls of mobile devices. It'd be nice to see more Quake and Duke3D ports.
Parent
Re:Classics never die (Score:5, Funny)
You sir, have a career in video game blogging! Let me sign you up for a 3000 word "Top 10 Groundbreaking games of the 1990s" blog entry.
Parent
Re: (Score:3, Interesting)
Aside from that, the Quake engine led to all sorts of interesting gamemodes and mods that live with us still
I forgot to say: Action Quake was another Quake 1 mod, which eventually became Counter Strike.
Re: (Score:2, Interesting)
It was S.E.A.L. Quake not Action Quake
Although my favorite quake mod was malice.
Re: (Score:2)
the physics of Quake 1 still has a legacy today (rocket jumping, bunny hopping).
And how is that a good thing exactly?
Re: (Score:3, Insightful)
It added a whole new kind of depth to the gameplay. Suddenly, the game wasn't just about how well you could aim, and how well you knew the maps and where the pickups where, it also mattered how good you were at moving. It was so influencial and loved, that future quake engines made it a point to allow alternative movement styles, the pro mods (CPMA stands out in particular) enhanced and added movement tricks, and entire mods were created around completely around the concept (DeFragged). The quakes were r
Re:Classics never die (Score:4, Insightful)
This is also in a game where you can get hit by a rocket and live if you have enough health. And take a few hundred bullets from a simple 'machine gun'. And jumping from a ledge 6 times your height? No problem.
If it was realistic, you'd be dead from the first
Parent
Re:Classics never die (Score:5, Insightful)
The groundbreaking REAL 3d game was Ultima Underworld. Amazing story, great music and paced to the action (due to midi synthesis) and total 3d immersion.
Pay your respects to Looking Glass.
Parent
Re: (Score:2)
Re: (Score:3, Funny)
it's story line is simple and not drug out
Unlike, say, Pacman in which the main character spends the entire game eating pills.
I think the word you're looking for is 'dragged'.
Re: (Score:2)
The engine used for Marathon 2 and Infinity is available as Aleph One; the fi
Re: (Score:2)
Mind you I think Wolf3D and Quake SP is boring too so my gaming taste isn't exactly mainstream.
Re: (Score:2)
Bloody Hell (Score:2, Funny)
I thought it was "Code Review of Doom" for the iPhone not "Code Review" of "Doom for the iPhone".
I've seen some "code reviews of doom". I was looking forward to some juicy ApplePain.
Oh well.
He's wrong though (Score:5, Interesting)
Doom 1993's perspective was also faked, it was actually closer to an orthogonal projection than a perspective projection
Not remotely true; DOOM's perspective is/was perfectly correct (apart from the monsters being billboards, of course - but they were perspective-correct billboards).
The method for achieving perspective is rather unconventional, but the maths works out the same.
Matching up floor and ceiling in an animated view with fake perspective is basically impossible.
[I did a port of DOOM before it was open-source, so I know a thing or two about this.]
Re:He's wrong though (Score:5, Informative)
You are correct. What TFA probably means is that walls, floors and ceilings are drawn in strips, and that for every strip all the texels are looked up according to a straight line. But that doesn't mean at all that hence Doom just uses an orthogonal projection, since it actually let's things diminish in the distance properly. A lot of real three dimensional games actually linearised texel lookup, but that says nothing at all about the overall projection a game uses. If you want to know what an orthogonal projection looks like, go play Age of Empires. As an added comparison, take a look at Mode 7 tricks on the SNES. You can actually perspectively correctly display a flat surface on it. How is this done? By setting a different orthogonal projection for each (in this case horizontal) line. That does not mean however that games using this therefore use an orthogonal projection, because the parameters are different for each scanline and the overall projection is perspective.
Parent
I'd like to read this article (Score:4, Funny)
But it won't fit on a 800 pixel wide screen. WTF? I thought it was a code review, not a flash game.
Re: (Score:2)
I'd like to read this article (Score:1)
1) This is Slashdot
Please read and at least attempt to understand comment before replying, kthxbye.
2) See point 1.
Re:I'd like to read this article (Score:5, Informative)
You need the Readability bookmarklet [arc90.com].
Parent
These are implementation notes, not a code review (Score:4, Insightful)
This isn't a "code review" -- it's a short monograph (with Quicktime movies!) that talks about how Id got DOOM working well on the iPhone. A "code review" is, well, a critique of code, and the style, correctness, and efficiency, thereof.
</pedant>
What's with this CoreSurface licensing restriction (Score:5, Insightful)
Now this is what really annoys me. Here are tools. Appropriate tools. But you aren't allowed to use the tools, because what you're going to use them for offends The Gods.
What was that RMS was saying again?
Re:What's with this CoreSurface licensing restrict (Score:5, Insightful)
What was that RMS was saying again?
Don't bring attention to RMS's pragmatism. It confuses those who prefer to think of him as a hippy.
Parent
Re:What's with this CoreSurface licensing restrict (Score:5, Interesting)
Parent
Doom is still incredible (Score:2, Interesting)
Heh, I remember playing Doom in my uncle's computer back in 94 as as 9 year old boy, and loved it, adored it.
16 years later, now an employed programmer, I still think it is made of black sorcery and an ingenious amount of coding. That's awesome!
Does Carmack /id Soft have a donation paypal-esque account? I'd love to give them what is due for all those early years of pure fun.
Re: (Score:2)
Does Carmack /id Soft have a donation paypal-esque account? I'd love to give them what is due for all those early years of pure fun.
How about just buying one of their more recent games?
Re: (Score:2)
Just buy their games. Go buy some copies of doom, quake or Doom 3 or wait for RAGE and buy a bunch of those.
Re: (Score:3, Informative)
You can still buy id classics on e.g. Steam.
Doom via phone, like most iPhone stuff, is not new (Score:2)
The Sony Ericson P800 and the Motorola A920 had Doom ports that were very true to the Doom experience... in 2003.
As an unlocked A920 user, there is very little on the iPhone that I didn't see on that device. Apple's real accomplishment has been wrestling control away from the carriers who {locked down/disabled/walled gardened/made crappy} all of the devices that they sold.
I am happy for what Apple has done. It has allowed me to buy a Motorola Droid from Verizon without all of the restrictions it would other
Code Review of DOOM (Score:4, Funny)
Quake 3 code is mostly ready for iPhone now. (Score:3, Interesting)
A long time ago, I ported Quake 3 to windows mobile. Tedious, but it worked reasonably at around 30fps (and deathmatch worked) with OpenGLES acceleration on the Dell Axim x50v enabled with the intel 2700g coprocessor. The code is still out there, but frankly, it wouldn't be kosher for me to push a copy of Quake 3 to the iphone store since i dont have copyright access to the 'assets' of the game and i dont need to get sued or something.
it's a bit useless to gpl your game and not the assets. If iD software wants to use the code for a quake 3 for iphone, they can do so at http://code.google.com/p/q3ce/source/checkout. Should save them some time. Open invite, go right ahead, i can't do anything with it these days anyway.
(and yes, i converted the whole thing from floating point to fixed point using some fun c++ templates, poke around the code to see how it works, it's kinda neat.)
Re: (Score:2)
I'm not sure what rendering API it used, but I had Doom on my Nokia 7650 running just fine around 2002 as well. I think it's been ported most places in many different ways.
Re: (Score:2)
iPhone doom is a port from an existing GL port of doom (namely prboom) back to idsoftware and onto the iphone. So yes, someone has done it years ago, and yes, id leveraged that.
Re: (Score:2, Funny)
When in slashdot, nerds dont RTFA.
Re:Already done (Score:5, Funny)
did you even read the article?
You must be new here...
Parent
Re: (Score:3, Funny)
What makes articles slashdotted anyway?...
Or is that some mystery not approachable "even" by 6-digiters?
Re: (Score:3, Funny)
Re: (Score:2)
Oh, they'd click the link perhaps. But take the time to actually READ it?
Re: (Score:2)
My guess is that we open the link in another tab or window, read the first paragraph, and when many of us realize TFS is the same as that paragraph, we already have the relevant information.
That or the bizzaro edition of this site .\ reads the articles, resulting in it not being available, but they have hardly anything to say about it.
Re: (Score:2, Funny)
Re: (Score:3, Insightful)
There are those who read (and create the /. effect) and those who post. The intersection of those groups is vanishingly small.
Re: (Score:2)
Re: (Score:2)
idspispopd
Re: (Score:2)
idspispopd
Somehow I don't see that being easy to enter on an iphone while playing doom...
Although the important one was really IDKFA
Re: (Score:2)
When Google release the Nexus outside of the USA? Oh, sorry, not *THAT* kind of Counterstrike...
By the way, I'm not normally finnicky but since you're an Apple user, I'm allowed to be - the Valve game is called "Counter-Strike", note the hyphen.