Allegro.cc - Online Community

Allegro.cc Forums » Off-Topic Ordeals » Any interest in a 'ray casting' competition?

This thread is locked; no one can reply to it. rss feed Print
Any interest in a 'ray casting' competition?
Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

I was thinking overwhelmingly of engines that use vertical slithers but in contrast to the Wolfenstein category offer height variations and/or non-orthogonal walls. I'll add some guidance as to the intended meaning but as with any other competition rule it means exactly as much or as little as the judges decide.

Then I guess using 3D models is OK for "Doom" category, right? Chasm may be good example of raycaster that used this approach. :)

Thomas Harte
Member #33
April 2000
avatar

Quote:

Then I guess using 3D models is OK for "Doom" category, right?

Unless they end up occupying "the overwhelming portion of the display" as described in the rules (i.e. "the section of the screen in which the user is particularly interested, taken as an overview of the entry as a whole"). So 3d models for enemies is probably fine, but displaying a doom base level and then drawing staircases and platforms and so over it so that the ray casted element begins to take a backseat is not.

Of course all this is subject to the proviso that whatever the judges accept is valid.

I've added some brief guidance to the Wikipedia entry but only to the extent that:

  • A 'Wolfenstein' style game is considered to be one where the base map is a sequence of filled or empty squares

  • A 'Doom' style game is one that builds a scene through the casting of rays to locate vertical slithers of the display but includes angled walls and/or height variations in its map

So, ROTT is a Wolfenstein style game. Chasm is a Doom style game because of its angled walls (which I think it had) but a good example of why height variations shouldn't be imposed on that category!

Billybob
Member #3,136
January 2003

You do realize that Doom was 3D, right? It wasn't a raycaster, it actually drew the polygons. :o Shocking!

Just sayin'! You could do it as a raycaster just fine, but just sayin' the original Doom wasn't a raycaster.

HoHo
Member #4,534
April 2004
avatar

It wasn't fully 3d either. It was more like 2.5d or something

Actually, what do you think made doom a 3d engine?

__________
In theory, there is no difference between theory and practice. But, in practice, there is - Jan L.A. van de Snepscheut
MMORPG's...Many Men Online Role Playing Girls - Radagar
"Is Java REALLY slower? Does STL really bloat your exes? Find out with your friendly host, HoHo, and his benchmarking machine!" - Jakub Wasilewski

Thomas Harte
Member #33
April 2000
avatar

Quote:

You do realize that Doom was 3D, right? It wasn't a raycaster, it actually drew the polygons. :o Shocking!

Just sayin'! You could do it as a raycaster just fine, but just sayin' the original Doom wasn't a raycaster.

You're partly correct and partly incorrect! From my understanding, drawing is overwhelmingly a front to back BSP draw but that individual wall polygons are drawn (where visible) using a trigonometric method derived from ray casting. Ditto for the placing of textures onto floors which are converted into horizontal scans, their depth computed using a ray casting method.

Conversely, I'm under the belief that Duke Nukem is a fully ray cast engine although there appears to be some controversy about that and it may be a portal/polygon derivative which draws in a Doom style.

Quote:

Actually, what do you think made doom a 3d engine?

The locations of non-static objects can only be fully specified by three scalars. Think of, e.g. running off a ledge at different speeds.

HoHo
Member #4,534
April 2004
avatar

Quote:

The locations of non-static objects can only be fully specified by three scalars.

In Ufo2000 (and probably in original XCom) flying +projectiles are also specified by three coordinates. That fact only doesn't make it a 3d engine.

It's practically impossible to come up with a good definition for a specific engine type.

__________
In theory, there is no difference between theory and practice. But, in practice, there is - Jan L.A. van de Snepscheut
MMORPG's...Many Men Online Role Playing Girls - Radagar
"Is Java REALLY slower? Does STL really bloat your exes? Find out with your friendly host, HoHo, and his benchmarking machine!" - Jakub Wasilewski

Thomas Harte
Member #33
April 2000
avatar

Quote:

In Ufo2000 (and probably in original XCom) flying +projectiles are also specified by three coordinates. That fact only doesn't make it a 3d engine.

Your question wasn't "what makes a 3d engine?" it was "what do you think made doom a 3d engine?". That is what I believe makes Doom a 3d engine for most people.

Erkle
Member #3,493
May 2003
avatar

I can safely say that Duke Nukem 3D is a "true" raycaster. Rays are cast per screen column and intersected with the sector that the eye is currently inside. When a ray hits a portal-wall it is passed on to the sector on the other side of the portal. By passing a top and bottom limit for each column the engine can achieve zero-overdraw, something that few modern engines can achieve.

In conclusion;) the Duke engine is far easier to understand and implement than Dooms over complicated engine and consequently is faster and has more features. Now I just have to figure out why anybody would bother cloning Doom when Duke is easier, faster and better looking.

EDIT: Duke Nukem 3D supports Room-over-room as long as you can't see both at once.

EDIT2: Duke plays 3D while in doom you can't jump, duck or look up/down.

EDIT3: If you haven't guessed yet I'm a Duke-fanboy and I'm just biding my time until Duke Nukem Forever is released in June of 2048.:-[

If the writing above has offended you, you've read it wrong.....fool.
And if you read that wrong it means 'All of the above is opinion and is only to be treated as such.'

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

By passing a top and bottom limit for each column the engine can achieve zero-overdraw, something that few modern engines can achieve.

You can do first rendering pass rendering to Z-buffer only (which can't be counted as 'drawing' ;)) and do actual drawing in second pass with zero overdraw. Z-buffer operations are heavily optimized on GPUs, so this can make things work faster. :)

Quote:

the Duke engine is far easier to understand and implement than Dooms over complicated engine and consequently is faster and has more features.

You have to render floors and ceilings in rows instead of columns (and Build engine was of course doing this). Well, you can render them in columns, which makes things easier, but also really slows everything.

Quote:

Duke Nukem 3D supports Room-over-room as long as you can't see both at once.

I've implemented raycaster in which you can see them at once (ray is split, one part is rendered and the second one remembered to be rendered later). ;)

Quote:

Duke plays 3D while in doom you can't jump, duck or look up/down.

In Doom, no, but in later games running on Doom engine (Heretic, Hexen, etc.) I think it was possible. ;) And even in Duke you can't really look in any direction I'd call 'up' or 'down'. ;)

Mika Halttunen
Member #760
November 2000
avatar

Quote:

In Doom, no, but in later games running on Doom engine (Heretic, Hexen, etc.) I think it was possible. ;) And even in Duke you can't really look in any direction I'd call 'up' or 'down'. ;)

Does Duke3d use the same faked up/down looking (moving the horizon line up/down) like Heretic, Hexen and ROTT did?

---------------------------------------------
.:MHGames | @mhgames_ :.

Thomas Harte
Member #33
April 2000
avatar

Quote:

I can safely say that Duke Nukem 3D is a "true" raycaster...

That's good because my entry is likely to be based on a similar thing at the very root and it is nice to know that the same sort of algorithm has been proved to be suitably efficient when correctly implemented.

Quote:

the engine can achieve zero-overdraw, something that few modern engines can achieve.

But it is something that Descent achieved with full 6DOF levels!

Quote:

You have to render floors and ceilings in rows instead of columns (and Build engine was of course doing this). Well, you can render them in columns, which makes things easier, but also really slows everything.

I'm always amazed at quite how many tutorials advocate drawing in columns, although I suppose it is substantially easier.

Quote:

I've implemented raycaster in which you can see [multiple levels] at once (ray is split, one part is rendered and the second one remembered to be rendered later).

This was implemented into later Build engine developments by various different developers. It was definitely in Blood, which also had voxel sprites for enemies.

Quote:

Does Duke3d use the same faked up/down looking (moving the horizon line up/down) like Heretic, Hexen and ROTT did?

Yep. And I think Duke3d invented that. There's certainly a bitchy comment somewhere on Ken Silverman's website about how he implemented that then two days after he showed it off the same thing had mysteriously turned up in ROTT. It's a shame nobody ever showed the ROTT people a fun game, or they might have put some of that in too!

deps
Member #3,858
September 2003
avatar

Quote:

This was implemented into later Build engine developments by various different developers. It was definitely in Blood, which also had voxel sprites for enemies.

It had voxel sprites for objects, not enemies.

---
Layers are good, all good things have layers, like onions. Good things also stink. - Trezker
I now have a page and a blog!

Erkle
Member #3,493
May 2003
avatar

Quote:

But it is something that Descent achieved with full 6DOF levels!

Descent achieved this with a similar(but 3D) algorigthm. I think it was near zero not actually zero.

Quote:

It had voxel sprites for objects, not enemies.

I second that.

If the writing above has offended you, you've read it wrong.....fool.
And if you read that wrong it means 'All of the above is opinion and is only to be treated as such.'

Krzysztof Kluczek
Member #4,191
January 2004
avatar

Quote:

Descent achieved this with a similar(but 3D) algorigthm. I think it was near zero not actually zero.

You can achieve zero overdraw using scanline buffers - remember where every scanline starts and where it ends and draw only visible part of every scanline. I'm not sure if Descent did this, but you can force Allegro's polygon3d() to do this. :)

Erkle
Member #3,493
May 2003
avatar

Here's an idea for somebody. Make a Duke Nukem 3D engine but turn it on its side so the walls become the floor and do a first-person Sonic the Hedgehog game. I've tested this and gained %150 extra framerate due to improved cache usage from rendering horizontal lines.

If the writing above has offended you, you've read it wrong.....fool.
And if you read that wrong it means 'All of the above is opinion and is only to be treated as such.'

aybabtu
Member #2,891
November 2002

Heh, that's a neat idea, Erkle...

Anyway, I'm pretty sure I'm for sure in on this comp...won't win, but I can enter. My raycaster currently supports any resolution, so I can develop in 320x240, but anybody can put it into higher resolutions (I tested up to 1024x768...slooow! on my computer.), via a *.ini file.

I've been studying Wolfenstein 3d...and I think I'm capable of everything in there (pathfinding in that game is very uncomplicated)...and then some.

CGamesPlay
Member #2,559
July 2002
avatar

Since this seems to be the main thread on the topic... I haven't had time to read it, but I've read the wiki page. Anyways, are there any expected limitations of source package size? I have an interesting idea, but I don't know how small I can make the php source package get :)

Oh, and what about a "Most original" award for best abuse of the rules? :)

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>



Go to: