Code: Select all
Tue, 5 Dec 2017 18:42:11 -0800
Always glad for an opportunity to rant! :) I don't know how much
background you're going to include or assume the reader already knows,
so if some of the explanations about Doom network code, ZScript, etc.
are redundant feel free to edit them out.
I also don't know how long the answers are supposed to be. Let me know
if I'm going over and I can try trimming some of the fat.
> How did you first come up with the idea of a hyper-realistic Doom
> mod? Obviously Doom isn't known for that kind of gameplay, so what
> inspired it?
Well, first things first, I should qualify that "hyper-realistic"
description! HD is vastly more forgiving - you'll never break a bone
or lose an eye, for instance.
What's packaged as HD now started off as 4 different mini-mods I made
for my own use back in the mid-2000s.
The first was a pinky demon replacement, a proof-of-concept based on
what I'd read on the Inuitor Insultingly Stupid Movie Physics website
review of the 2003 Hulk movie. (The review has been taken off the site
though it might be in the book.) Basically the objection that caught
my eye was that making giant Hulk-ized pit bulls (nevermind the breed
bias) was a terrible idea, because pit bulls were already just the
right size for the sort of attacks they're known for and being bigger
would just slow them down. So I thought about the huge man-sized pinky
demons that basically served the role of Wolfenstein's German
shepherds and wanted to try out a smaller, faster, more agile version
to see how much deadlier they could be.
The second was an attempt to give the zombiemen a 3-round burst
attack. The main FPS I was playing at the time was the Infiltration
mod for the original Unreal Tournament. I remember having some trouble
running it after some updates (it had incredible detail that
*seriously* tested the limits of what the engine and my computer could
handle), and wanted to see if I could replicate some of that gameplay
in another FPS.
The third was an attempt to create an assault rifle with grenade
launcher, when the DECORATE markup language was advanced enough to do
custom weapons.
The fourth was a DECORATE replacement pain elemental that, instead of
shooting lost souls, shot fans of mancubus fireballs and randomly
strafed while chasing the player in the same manner as some of the
Hexen bosses. The idea was to make a more interesting and less
aggravating fight while keeping the overall difficulty the same.
Eventually I combined these things into a single mod.
Sometime around March 2007 I discovered that I could use ACS to change
a player's pitch and angle when they fired, so I added
Infiltration-style muzzle climb to finally justify the three-round
bursts. And then I just kinda started adding stuff from there, and the
pattern continues to this day.
> Is Hideous Destructor a "gag" to you - in the sense that it
> completely subverts everything everyone knows about Doom - or do
> you think that a truly innovative gameplay experience came to light
> when you framed it through a hardcore, tactical FPS lens?
Hideous Destructor is Doom fanfic! Virtually every design decision
comes from asking the question, "Given Doom has ____, but also has (or
doesn't have) ____, how do we harmonize those facts in a way that
makes the setting plausible and the gameplay fit the setting?" (One
possible exception is in the monster attacks most of which were
inspired by various anime and gaming tropes, but consider: "Given Doom
has flashy magical attacks that don't really mesh with known laws of
physics, and also has the BFG,...")
The guys who make Ground Branch have a name for their philosophy:
Natural Order of Realistic Gameplay. The way I understand it, it means
that they don't try to come up with any pre-defined roles or
expectations and try to manipulate damage, accuracy, etc. to match;
instead, they do their best to replicate how a gun (or a bullet or
whatever) works in real life and however good or bad it is, that's
what it is. No distortions or concessions should be made in favour of
"game balance"; the normal tradeoffs described by Isaac Newton and
Adam Smith should be enough. (My own experience working with HD is
that, if you've got 2 guns with real-world counterparts and one is so
clearly better ingame that no rational player would choose the other
one in any context when both are available, either your game is not
sufficiently modelling something - malfunction rate, felt recoil,
maneuverability in tight spaces, convenience of ammunition - or your
game only has situations that the inferior gun was never designed
for.)
What I do with HD kinda sorta skirts around the borders of that, but I
cannot commit to such a philosophy wholesale. As a generic "Doom
improvement" gameplay mod, I try to ensure that every canon weapon is
represented in some way, meaning there are some weapons that I *must*
use like the chainsaw or super shotgun which you wouldn't even think
about adding if you were designing a tactical milsim from the ground
up. This, and the fact that the weapons don't perfectly correspond to
anything in our time and place, gives me both the freedom and the
obligation to come up with reasons for a weapon's continued presence.
I'm guessing, of course, that the folks at Blackfoot never have to
consider much more speculative things like "Why would this
zillion-dollar corporation hoard all these barrels of glowing green
goo?" or "if I were Satan what would motivate me to strike the Earth
with a visible, physically vulnerable army, giving up my most powerful
weapons of disbelief and complacence, and what would I be exploiting
to give me the power to do so (and why wouldn't I just use the
old-fashioned featherless bipeds and bring up another Bolshevik
revolution or ISIS or Moral Majority or whatever)?" when developing
Ground Branch.
In between typing bits of my answer I was given a link to a short
story in Uncanny Magazine, "Between Liminal Spaces" by Hiromi Goto.
https://uncannymagazine.com/article/notes-liminal-spaces/ It's
surprisingly resonant of some (not all, and not all of it is resonant)
of the thought processes that go on when I decide what to add or not
add in HD.
> It seems like a lot of work to add in, like, head-bob and manual
> medpacks to a source code that didn't calculate for those things
> before. How difficult was Hideous Destructor to make? What were the
> hardest things to implement?
First I need to correct two possible misconceptions. I'm not doing
anything to the Doom source code at all - everything is done within
the confines of GZDoom's scripting systems and can be run by GZDoom
unaltered. Head bobbing is already in Doom - it's just that at the
reduced speeds the default amount becomes much more pronounced. (Only
this past year was it possible for the mod to reduce the amount
further so at the lowest speed it didn't look like the player was
going on tippy-toes in the middle of each step.) There's nothing in HD
that you wouldn't be able to find in another GZDoom mod; it's the way
they're all put together that makes it what it is.
With that out of the way: I think you've caught me at one of the more
interesting times for me to answer such a question. Late in 2016 Graf
Zahl et al. released the first implementation of ZScript, an ongoing
attempt to unify as much of (G)ZDoom's functions as feasible into a
single comprehensive runtime-compile scripting language.
This meant that years of work with crazy workarounds in DECORATE and
ACS [Action Code Script, first introduced in the original Hexen for
running certain events in a map] was deprecated or obsolete.
To be clear, I was (and am) very happy to bin all that old work and
replace it with more sensible, maintainable coding. But it does mean
I've spent the past year having to substantially rethink almost all of
HD's pre-existing code, and the new stuff has introduced a lot of new
bugs to deal with. Just in terms of sheer amount of time spent,
though, this overhaul project itself (which is still ongoing but on
hiatus due to other commitments) is definitely a contender in being
the most difficult "one" thing.
In terms of sheer aggravation, I think I have had the most trouble
with debugging multiplayer desyncs. [For a bit of context for those
who only got into online gaming after Quake: the way a GZDoom
multiplayer game works, each client is running a wholly independent
instance of the game and (more or less) the only things communicated
between the clients are player inputs and diagnostics. This means
that, if I start 2 instances of GZDoom loading the same mods and
entering the same map, *every single thing* in the game world, visible
or invisible, has to be *exactly the same*, or the game will
desynchronize - everyone's version of what is going on will get more
and more different until nothing makes sense anymore.]
Hideous Destructor uses a *lot* of randomly generated numbers. Most of
the time this raises no issue with multiplayer - the numbers are all
clearly selected within the playsim from a pre-generated list and all
clients will be in sync. However, *some* things are not obviously so,
and are treated differently by each client. Sometimes it has turned
out to be a bug with GZDoom; other times it is an undocumented (or
merely non-obvious) distinction in how certain types of things are
treated; a few rare times it's even been a problem with another mod
that was being loaded with HD. It takes a lot of testing and guesswork
to figure out.
On the other hand, a couple things that have continued to bother me
that are hard enough that I still haven't tried to implement them for
any release:
- Decisionmaking for the monsters. I've given up pathfinding, but the
prospect of a monster being able to decide on principled grounds
(instead of just randomly) whether to attack or move is always this
tantalizing that I keep thinking *just a little more work and it just
might work!*, but every attempt has inflated into a huge ball of
unmanageable spaghetti before imploding - with no noticeable
improvement in the overall effectiveness of the monster in question.
(In some ways it makes them even easier to fight, because they become
very easy to predict and exploit.)
- Persistent individualized magazines, batteries and other
partial-consumables in the player's inventory. In Doom, each inventory
item carried on a player is supposed to consist of a single actor for
that inventory type, with an "amount" variable to track how many the
player has; a whole new array would have to be defined to track
individual amounts in each instance of that item. The bookkeeping can
be done, and theoretically nothing is stopping me; but there are so
many edge cases where other things interfering with the player's
inventory can potentially "desync" between the number of units one has
and the number of sub-units in each of those units.
The current compromise, which was practically all but necessary before
ZScript, goes like this: I've got 2 separate inventory items for full
mags and rounds that are not in full mags. If you hit reload, you'll
try to reload one of the full mags, and if you don't have one of
those, you'll reload a random number of the abstracted rounds - always
short of a full mag. Meanwhile, if you sit around doing nothing for
long enough and you have the relevant weapon out (and your full mags
are not already maxed out), you'll start passively converting partials
to fulls. Not very satisfying but at least it conserves the number of
rounds available (unlike some mods that discard the partial entirely)
while discouraging Chronic Reload Syndrome.
> What's the part of Hideous Destructor you're most proud of?
I think HD has ruined me for a lot of weapon mods and FPSes out there
when it comes to being impressed by the performance and *presence* of
a weapon. A lot of thought goes into making sure the weapons are
portrayed as having their own independent existence from the player -
it's more than just you hit this button, your HUD plays this animation
and the projectile spawns to hit the other guy, you've got to deal
with the weight of the thing, it gets snagged in things and it's
annoying - having the biggest gun isn't just a macho wish-fulfilment
anymore when you've got to *work* to lug it around.
On the other hand, I take a lot of pride in trying to come up with
ways to make HD as responsive to the player's input as possible
without a multiplicity of buttons to memorize. I find so much
"realistic" fare unplayable when you've got a key to lean left, lean
right, go prone, crouch, crouch slightly higher or lower, tuck your
elbow in, start breathing voluntarily, etc. etc. etc. - it just starts
to feel like I'm trying to pilot a vaguely man-shaped
remote-controlled robot. With HD I try to throw all that out and stick
as close as I can to the controls normally available in GZDoom -
which, including altfire, reload, zoom, 4 custom user weapon
functions, use-item, jump and crouch, is already more than twice the
total number of buttons you could use in vanilla Doom.
That all said, I really like the mage imp attacks.
> I wanna say you first uploaded Hideous Destructor back in 2007
> (though I could be way off on that,) and over the years the mod has
> certainly picked up a cult following. What does that mean to you?
> To have a niche group of people who are totally in love with your
> insanely difficult Doom contraption?
The earliest recorded writings I have discovered evidencing an HD
release go back to February 2007, so let's go with that. :)
I'm certainly grateful for all the people that care about this mod.
Guys like mumblemumble and Abba Zabba and Silentdarkness12 (just
arbitrarily naming the first 3 I can think of off the top of my head)
have been indispensable in providing feedback and bug reports. Hard
Knox's videos (and SD12's) are always a joy to watch. Without you guys
HD would be... well, maybe not that terribly much *more* of an
unplayable bizarre dog's spaghetti breakfast, but certainly a lot
buggier and less compatible with all the different maps out there!
(My sincerest apologies to those whose names I have neglected for
brevity's sake. I am not known for being even remotely fair.)
> You still do active work on the mod to this day right? What are the
> sort of tweaks you're working on right now?
As I mentioned, I'm still in the process of upgrading everything to
ZScript. I'm maybe 80% done with the weapons, though I may go back and
revisit some of the earlier stuff to optimize it with some of what
I've learned along the way.
I've recently commissioned some new assault rifle HUD sprites from my
graphics artist ( https://art-of-bee.tumblr.com/ ) and I've got to add
them soon for the next release.
I might reach a point where I might expect to start telling myself I'm
finished, but that's turned out to be a lie before. A few times over
the years I've decided that HD was "finished" and decided to update
only for bugfixes and maintenance, but every time I've done that
eventually:
1. GZDoom came out with a new feature that finally let me do something
I'd wanted to do for years; or
2. I learned something that turned something in HD totally upside
down. The biggest example of 2 that comes to mind: HD has become
much, much more forgiving of player mobility (especially while
shooting) in recent years. In earlier versions your entire view would
go way off and you'd suffer all sorts of penalties, and your speed
for anything other than forward sprint was slower generally. Back
when HD got started I had been very active on the Infiltration forums
and training rapier with Academie Duello back when they were still
working out how they would even teach their stuff. Both experiences
put a *huge* emphasis on maintaining ideal static forms in pursuit of
perfect defence and offence. Then after something like an 8-year
hiatus I picked up rapier again with Valkyrie Western Martial Arts
Assembly ( http://boxwrestlefence.com/valkyriewmaa/ ) and it almost
literally added two entire dimensions to how I viewed armed combat -
those perfect static defences were only ever meant for the tiniest
sliver of time in a much more complex process. Going back to HD I
realized that I was grossly overpenalizing and overrestricting
movement where I should not have, and a lot of tweaks around that
time were geared towards letting the player act and maneuver - and
*fight* - more naturally.
Pretty much all I ever post about HD is on the ZDoom forum thread.
It's generally fairly quiet (compared to say the Brutal Doom Facebook
page) and frankly I like it that way - lots of people with lots of
ideas, lots of them really are good proposals (or would be good but
for some limitations imposed by the engine, cliché aversion or my
arbitrary whim) but I've only got so many hours in a day and so many
spoons to throw at things.
> Also if I could get your name, your age, and where you're from,
> that'd be great.
Matt, mid-30s, Richmond, BC.
> Thanks so much!
Thank you for this opportunity!
>> > --
>> >
>> > On 28 November 2017 at 10:34, Luke Winkie <> wrote:
>> > > Hey man! Here you are.Thanks so much for doing this!
>> > >
>> > > - How did you first come up with the idea of a hyper-realistic Doom
>> > > mod? Obviously Doom isn't known for that kind of gameplay, so what
>> > > inspired it?
>> > >
>> > > - Is Hideous Destructor a "gag" to you - in the sense that it
>> > > completely subverts everything everyone knows about Doom - or do
>> > > you think that a truly innovative gameplay experience came to light
>> > > when you framed it through a hardcore, tactical FPS lens?
>> > >
>> > > - It seems like a lot of work to add in, like, head-bob and manual
>> > > medpacks to a source code that didn't calculate for those things
>> > > before. How difficult was Hideous Destructor to make? What were the
>> > > hardest things to implement?
>> > >
>> > > - What's the part of Hideous Destructor you're most proud of?
>> > >
>> > > - I wanna say you first uploaded Hideous Destructor back in 2007
>> > > (though I could be way off on that,) and over the years the mod has
>> > > certainly picked up a cult following. What does that mean to you?
>> > > To have a niche group of people who are totally in love with your
>> > > insanely difficult Doom contraption?
>> > >
>> > > - You still do active work on the mod to this day right? What are
>> > > the sort of tweaks you're working on right now?
>> > >
>> > > - Also if I could get your name, your age, and where you're from,
>> > > that'd be great.
>> > >
>> > > Thanks so much!