Advanced engine needed : GZDoom 2.0 or greater
Primary purpose : Technical demo of 3D moving floors with 3D model
representation instead of textures
Archive maintainer : Place it in /prefabs next to flordmo2
Title : Floor Demo 3
Filename : FLORDMO3.PK3
Release date : July 21, 2015
Author : Ethan Watson aka GooberMan
Email Address : email@example.com
Other Files By Author : Doom - The Arcade Game
Space Station Omega
The previous two floor demos
Misc. Author Info : But Goober!? Why are you making Doom maps again?
Description : Second revision of moving 3D floors. This time, we're
using an MD3 for visual representation.
Additional Credits to : ReX for noticing and wanting the other floor demos
tweaked for his needs.
* Play Information *
Executable needed : GZDoom 2.0
IWAD Needed : DOOM.WAD or DOOM2.WAD
Map # : MAP01
Single Player : Yes
Cooperative 2-4 Player : Yes
Deathmatch 2-4 Player : No, but no reason why not with some starts
Other game styles : No
Difficulty Settings : No
New Graphics : No
New Sounds : No
New Demos : No
DEH Patch : No
* Construction *
Base : FLORDMO2.WAD
Build Time : An hour or two.
Tool(s) used : GZDoom Builder.
Known Bugs : More like known limitations.
Will Not Run With... : Bloodborne. Well, my entire life didn't run with
Bloodborne. Did I mention you should play Bloodborne?
* General info *
Here be the third iteration of the 3D floors that you can ride. I know, right?
ReX noticed a link to FLORDMO2 that I had left in a thread about ridable 3D
floors and eventually asked how he could use it in his upcoming Paranoiac
expansion. It turns out I had to put a bit of extra work in to make it work as
he wanted, so here it is.
The main difference this time is that a 3D model was required as a visual
representation instead of using textures on the polyobject. For the purposes of
this demo, I have left the textures applied to the polyobject so that you can
see what it is doing and how it works in relation to the 3D model.
Speaking of, the idea of a "visual rider" is presented in this example. A
visual rider is simply a thing that is permanately attached to the platform.
This example only has one, but a bit of expansion can make it virtually
unlimited. If you're eagle eyed, you'll notice the rider is actually a frame
behind the floor itself. I don't know where the floor will be a frame in the
future, so the velocity is simply updated from the delta between the previous
and current frames. I assume this won't be an issue for most people.
Also note that because you're using a 3D model in this demo, you can design
your polyobject accordingly. Map out the outline of your 3D mesh and off you
go. I don't have a whacky 3D model to use for this (and I hate modelling) so I
just used a wooden palette I pulled from opengameart.org for Prime Directive.
The map this time is in ZHexen format. I believe ReX still uses WadAuthor for
mapping, and since it has no UDMF support the previous floor demo WADs were
almost useless to him since he had no way of getting in and seeing how they
worked. If you're still on ZHexen, this iteration is proof that the effect is
not reliant on UDMF features.
* Things get screwy if your polyobject goes below the normal floor.
* Rotational friction is not currently supported. There is no GetPolyobjAngle
to compare against.
* I'm disabling view bob when setting the velocity. I quite simply haven't
checked if leaving it enabled will bob your view as the platform moves.
* It is possible to desynchronise the floor by standing still.
* The thing representation lags by a frame. No real way around this.
THE WAY FORWARD FROM HERE
* See if we can't get a flat rendering over that 3D floor. Transfer_Heights
trickery? Non-solid 3D floor trickery?
* Get "Actor hits floor" working on that polyobject. Or compeltely rewrite
my hop on/hop off logic.
* See the TODO in the script? Making the floor logic work for any arbitrary
actor instead of players is really not that complicated a task. Maybe I'll do
it one day and upload a fourth iteration of the floor logic.
* Copyright / Permissions *
The MD3 used in this archive was obtained from opengameart.org and is under
a public domain license. For the source files, point your browser to
All original work in this archive is released under the Creative Commons
Attribution-NonCommercial-ShareAlike 3.0 Unported license. You are free to
reuse any original portion of this archive for non-commercial purposes as long
as you credit me and share any modifications made using the exact same license.
More info can be found at http://creativecommons.org/licenses/by-nc-sa/3.0/