top | item 40391837

(no title)

ColinDabritz | 1 year ago

There was an example of this in the classic 'Duke Nukem 3d'. It had a level by Richard "Levelord" Gray, 'Lunatic Fringe'.

https://dukenukem.fandom.com/wiki/Lunatic_Fringe

This level had a circular hallway ring around the outside that had two full rotations around without intersecting, using the 'build' engine's ability to separate areas by their room connections that also drove the 'room over room' technology which was groundbreaking at the time.

It made for fun multiplayer, and the illusion held well there. The central chamber has 4 entrances/exits if I recall, and you would only encounter two of them in each loop around the outside.

I recall building a toy level while experimenting with the engine that "solves" the "3 houses with 3 utilities without crossing" puzzle using this trick as well.

discuss

order

lucianbr|1 year ago

In what sense is the Duke Nukem thing "an example of this"? The duke thing is an internally consistent programmed behaviour, this is... just random errors caused by a random change in the source code. Duke is maybe non-euclidean geometry, or something. This doom pi thing is... nothing to do with geometry. More an example of "garbage in, garbage out" maybe.

ColinDabritz|1 year ago

It's an example of "non-euclidean" space, and yes, it is a bit different than the article.

snthpy|1 year ago

The DN example would be an instance of non-Euclidean topology whereas the other one is presumably non-Euclidean geometry.

whoopdedo|1 year ago

> the 'room over room' technology which was groundbreaking at the time.

Bungie's Marathon from 1994 could also do this and demonstrated it in the deathmatch map 5-D Space[1]. It was really only Doom that bugged out on overlapping sectors.

[1] https://www.lhowon.org/level/marathon/30

immibis|1 year ago

I wrote a little engine with this capability a long time ago. I didn't know about the Build engine at the time. I divided the world into convex sectors and allowed arbitrary links (portals) instead of following a BSP tree. Rendering is front-to-back and clips at the portal boundary.

If you can rasterize the inside of a convex shape, you can rasterize a sector-portal-world by marking certain faces as portals, and when rendering one, setting the clipping region (or stencil buffer) to where the face would be, then rendering the sector behind it with an appropriate transformation (which is part of the portal's data, alongside the ID of the other sector).

Collisions through portals are much harder than rendering through portals.

dfox|1 year ago

Room over room (as done in later build games) usually does not require the sectors to overlap in this manner as it is a different thing (it is extension of how swimable water works, where the engine renders the other sector instead of floor/ceiling).

While Lunatic Fringe is pretty in-your-face example of impossible geometry in build, the duke3d maps contain many more cases of intersecting geometry. Obviously such things are impossible in Doom because there is no way to build BSP tree out of that and because doom only tracks X/Y coordinates of player(s)/monsters.

somat|1 year ago

Sure you can do this in doom, or at least it can be done in modern source ports.

https://www.youtube.com/watch?v=Iq1-TZXz9xo (myhouse.wad)

There is nothing about the data structures ID choose to use in doom that prevent portal shenanigans. ID(John Carmack) just did not implement them.

formerly_proven|1 year ago

No mention of the real Prey (2006) in a discussion of weird geometry in games?

wizzwizz4|1 year ago

Is there no way of building a BSP out of it? I don't see why it has to be Euclidean to be partitioned, and loops are also possible (e.g. Deimos Lab). (The coordinates are definitely a blocker, so this question is academic.)

justsomehnguy|1 year ago

> only tracks X/Y coordinates of player(s)/monsters.

It does, otherwise Lost Souls and Cacodemons wouldn't able to fly.

ant6n|1 year ago

Portals allow weird stuff (non linear geometry) in a BSP level. I thought Doom had petals.

Andrew_nenakhov|1 year ago

There is an interesting VR game called "Tea For God" that puts you in your play area, and cleverly creates new corridors and rooms as you make it around the corner or lift so there is an illusion that you are in a very vast place, despite never leaving the same room, all without using the joystick or teleporting.

jandrese|1 year ago

I remember a Descent PVP level that was a big room with a corridor that came off of one end and went to the other by looping back through the main room but was not visible inside of the main room. Was a bit of a mindbender in a game that already stretched the players spatial awareness.

thaumasiotes|1 year ago

> the "3 houses with 3 utilities without crossing" puzzle

In graph theory's terminology, this is "K3,3", one of two irreducible nonplanar graphs. The other one is K5.

You can also make all the connections without crossing any edges if you embed the graph in a torus, which is equivalent to building a bridge over some set of edges that other edges are allowed to take.

eek2121|1 year ago

I spent so much time back in the day working with build. In many ways it was super easy (and fun!) to use.

Thanks for the throwback!

SJC_Hacker|1 year ago

> also drove the 'room over room' technology which was groundbreaking at the time.

Descent did this in 1994.

ChrisClark|1 year ago

Descent was a polygonal game though, Duke3D was a raycasting engine. It was the first four a raycasting engine, and quite impressive.