Room Over Room

This involves drawing the background room first and then drawing the foreground room second, but not drawing where the 'see-through' floor/ceiling is.

This is also how mirrors work in Duke.  Ken had to do some minor modifications to the mirror code to allow ceilings/floors to work the way mirrors work in Duke.  The version of Build was used in both Blood and SW (and Nam and WW2GI).

But what Blood and SW handle differently is the game movement between the two rooms.

Blood allows the rooms to be anywhere on the map and does not move the rooms.   This means that the rooms show up in their mapper-created locations in map mode.

SW actually moves the rooms at load time to be physically (well, in game coordinates) above/below the other room.   This means that the rooms show up on top of each other in map mode.

A little background on Build:

Build provides routines for checking what is in a certain direction (ie, 'looking'). This is called hitscan.

The code calls hitscan with an origin point and an angle and shoots out a vector (a line). It then returns what the line 'hit' (and where). This could be: Wall, floor, ceiling, sprite.

Ok, now back to RoR...

For SW, this means that the player movement between the rooms is easy; no modification is needed as the player 'falls'. Also, looking through the room is easier because the vector is just refracted from the other room at the place it hit...

The hitscan for the top room still stops at the floor of the top room and says 'floor'. but then the SW code goes, OK, try again from the ceiling of the bottom room using 'this' location and angle... (this is the location where the first hitscan 'hit' the floor)

For Blood, the code would have to translate the 'this' location to the bottom room before repeating the hitscan. Actually, this was never done... That's why monsters don't see you when you are in a RoR in Blood...

The point is that the Build engine is the same for both methods; it's just how the game code wants to deal with it...

For EDuke, I will have to implement this entire system over again (since I don't have the SW code).  This is why I have scheduled Room Over Room for later in the EDuke process (Version 2.2 or so..)

Copyright © 2000, Matt Saettler. All Rights Reserved