This effect can be either extremely complicated or extremely simple, depending on how realistic you want it to look. I must say that it does look beautiful when it's done properly. It truly creates the illusion of a mirror. However, because of the way this effect works, you will not be able to see 'active' sprites in the reflection (weapons, health, enemies, Duke, etc).
Actually, this can hardly be considered an "effect". It's really more of a design trick. To make a reflective floor, you need to create a room which is vertically symmetrical. Anything in the top half of the room must also be in the bottom half in a mirrored position (flip sprites with F
to make them look mirrored). When you create the room, make it twice as high as you want the finished room to be, because you will be creating a sprite floor in the middle of the room afterwards. Most wall textures will not look mirrored, so you'll have to create a thin 'border' sector within the reflective room. You can lower the ceiling and raise the floor of the thin border sector to meet halfway. That will allow you to use the 2
key to make the walls 'separately editable', then flip both halves of the wall and make them look mirrored. Once you have a vertically symmetrical room, you can construct a floor from transparent sprites.
Notes:
- Once again, I should mention that the reflective floor will not display 'active' sprites, and 'active' sprites wouldn't maintain a mirrored position anyway. Your reflective room should be in an area which enemies will never find. Just remember, this is like a manual mirror. You have to control what is reflected manually.
- Many people forget to reflect passages entering and exiting the reflective room. Everything that you can see from inside the reflective room should be visible in the reflective floor. I usually construct the entrance and exit hallways as if they were part of the reflective room, then I cover them up with opaque floor sprites afterwards.
- I made the reflected door in
TUTORIAL.MAP
just to show that it is possible. To make a reflected Ceiling Door, you'll have to use a Split Door. The Split Door meets in the middle of the room when it's closed, which is perfect because it looks exactly like a Ceiling Door being reflected in the floor. The only problem is that the door leaves a gap in the floor when it opens. If you try to cover it up by placing a sprite in the door sector, the sprite will just move up and down with the door. The only workaround is to place the sprite just outside of the door sector, then expand it so it goes through the door sector and covers the gap. This way, the sprite remains motionless while the door is opened and closed. There is a slight graphical error with this method (the sprite shows through the closed door). This is a bit ugly, but you can get away with it. I've never tried using any other doors, but a lot of them should work. - As with most effects that deal with sprite constructions, sprites have a tendency to show through other objects and/or become invisible at certain angles, etc. It really just depends on how you've designed the room and whether or not your sprites are all sized properly. Sprite problems are always expected, just do whatever you can get away with.
- By inversing the same methods, you could make a reflective ceiling instead. I don't think it would be very different from a reflective floor, except the player area would be under the transparent sprites. Keep in mind that a Split Door would then become a Floor Door from the player's point of view.