TL;DR video:
Table of contents:
- Abstract
- Simple map with moving camera and camera texture. Download Link.
- Beat 'Em Up (sidescroller) template (PWAD). Download Link.
- Isometric Shooter template (IWAD). Download Link.
- Isometric Mouse-control template (IWAD). Download Link.
- (Coming soon when I get to it) RTS template
All actors (when used as cameras) have had a ViewPos field that could be used to displace the viewpoint from the center. This was separate from the ViewAngles field, and is meant for simulating recoil, screen shakes, tank controls (view direction independent from movement direction), and simulating lag/inertia in mech/vehicle chassis. ViewPosition also provides for a simple way to implement third-person cameras. Internally, the engine would always ensure that the viewpoint wouldn't go out of bounds of the level by displacing it inwards from walls, floors, and ceilings. Now, a couple of flags can be set using SetViewPos that enables (a) orthographic projection, and (b) out-of-bounds viewpoints. These are separate, independent abilities, but are intended to be used together in most cases.
Orthographic projection removes vanishing points from the viewpoint. Meaning all perspective is gone. Things don't change size depending on their distance from the camera, and the only way to tell which is closer is through geometric overlap.
Caveats:
- Pitch cannot be zero. Either look up or look down. Otherwise, flats won't get rendered (sloped flats need a fix that I am PR-ing right now)
- No line portal rendering. The portals work. But rendering is disabled. This might be enabled in the future after I figure out some clipping problems (it looks mostly good).
- No sector portal rendering. The portals work. But rendering is disabled. This one might not happen, because of a fundamental quirk of how it is implemented (it looks bad).
- No reflections in flats. This one might not happen. It reveals a trick used by the engine. You can fake reflections using shaders though.
- Rooms behind rooms will be visible. This can be controlled by setting the console variable r_radarclipper to true. This setting gets stored in the gzdoom.ini file separately for every IWAD, so remember to reset it if just testing. Sectors marked as secret will be dark until entered if the cvar is false.
Caveats:
- No sky rendering. I really couldn't figure out how the engine makes this work.
- The cvar r_dithertransparency now kicks in. false by default, but setting stored in gzdoom.ini separately for every IWAD. This adds a dithering transparency to every piece of level geometry (walls, flats) that obscures the actor stored in the camera actor's tracer field, as well as up to 20 (hardcoded) alive monsters within that actor's line of sight.
Download Link.
This map uses a built-in orthographic camera added by MajorCooke (Use the latest UDB) as an aiming camera set to a camera texture on a wall. There is a second, moving camera that is used for the intro that has orthographic projection and out-of-bounds flags set manually at level load using zscript. You can use this to analyze the effect of the cvar r_radarclipper on the visibility of the rooms in the camera texture. One of the room's sectors is marked secret. Two of the rooms are connected to the central room using line portals.
Credits:
- MajorCooke for the orthographic camera actor and basic idea for the map.
- I don't remember where I took the scrolling scanline texture and monitor-border textures from!
Gameplay Video:
Spoiler:Download Link.
A two-level (really only one level has combat) PWAD for use with Doom2 IWAD. Already some interesting suggestions for improvements have been made, which I'll look into. I used some fatalities from Brutal Doom, and implemented parallax scrolling in multilayered backgrounds using shaders. The primary fist has a slower, alt-fire kick. Mouse does nothing, so remap fire and alt-fire to keyboard keys for best play experience. Fez is now possible in this engine.
Other notable sidescroller projects (that didn't use ortho cameras or out-of-bounds viewpoints):
- The Forestale by Yorzh (Alekv) Aleksey (Steam link)
- Textures and sprites from Lesiakower, tokdmvlad, Scalliano, Das_M, Sergeant Mark IV, Tormentor667, skillsaw, Robert Babor (Fusion), and Devon West
- Doomguy sprites by Mark Quinn, Xenaero, Grimm, Xim, Anthony Cole, CaptainToenail, Toke, MickeYoofers, and me
- Punch, Kick, Jump, and Landing sound effects by EdgyPagaza (Doom Fighters v0.4b)
- Monster Stagger sprites and Glorykill shader by JM (source: Glorykill addon v30e for Project Brutality)

Download Link.
Wiki explanation.
Very simple standalone IWAD template based off of the Nash's old Standalone Template. Very minimalist assets. The two cvars r_radarclipper and r_dithertransparency can be set via menu options. Keyboard has two control schemes: Relative to actor (tank controls) or relative to camera/viewpoint. Strafing is always relative to camera/viewpoint (meaning keys get remapped depending on where you face).
Credits (see file in project for full details):
- Nash Muhandes
- Whoever made the exploded barrel sprite for Origin's Crusader games
Download Link.
Same as above, but with mouse controls. Right-click to interact. Hold shift and left-click to force-shoot from current position, and hold alt and left-click to force-move towards cursor even if a shootable target is under the cursor.
Credits:
- Same as previous section
When it's done. Where did the year go?!