Welcoming the New Guy: A Grayman interview.
The "Summer Vertical Contest" was filled with
surprising missions but one of the most memorable entries was the first
mission made by Grayman. Rather than simply relying on the mission
briefing and read-ables, Grayman got his hands dirty and scripted
in-engine "cut scenes". The addition of this polish gave his mission an
unmistakable air of professionalism. After the contest the mapper forums
were buzzing with questions about the techniques used and there was a
great clamor for a step by step wiki article.
Grayman obliged these requests with an article that is far in excess of
most of the topic specific wiki articles and covered all the
incorporated tangent topics (like NURBS Spline usage).
Seeing that there was a need for assistance with The Dark Mod's SDK coding
efforts due to the departure of many key coders, Grayman submitted his
impressive resume (English and German voices in the RTCW mod
"Degeneration" and the unreleased commercial game: "Suspension" ) and requested to join the Team.
After proving himself with some of the easier bugs, he was quickly granted membership.
(Clarification from Grayman: Actually, I didn't ask to join the team. I
just asked if I could help, so I was made a "Contributor". After I fixed
a couple problems and volunteered to help in any capacity with the 1.03
release itself, I was made a team member.)
Amongst his coding contributions are such improvements as:
Fixing the "Slick" material attribute to allow more realistic ice.
Fixing weird (special case) arrow physics behaviors.
Improving AI drowning behaviors.
Currently he is working on one of most ambitious fixes yet, "Interleaved
Thinking Optimizations". This clever optimization has been helpful for
The Dark Mod up 'till this point but it has also lead to the mysterious
death of AI in missions (when mappers try to use the extreme settings).
Grayman knows how helpful this optimization for improving CPU performance
and has taken on the delicate task of fixing these AI death scenarios (at the extremes)
without making the optimization too heavy (and thus negating it's usefulness).
So you've been coding since the 80's, did you ever
create any (Commodore 64) games or game modifications during that crazy
No. All my work in the 80s was for my job, though there was one stretch
where I was writing graphics code to test new graphics hardware and I opted
to create a sequence where Pac-Man ran around the screen trying to avoid
one of his monster pals. Lots of fun, but awfully awfully crude given
where we are today.
My programming efforts on the C-64 were limited to an attempt to create
music. Limited success, but my son and I mainly used the Commodore to
play games, not create them. I still have the system, though, sadly, it
no longer works.
How did you land the gig for the unreleased game
"Suspension", was it just a good resume and educational background or
was there some special circumstance that lead to that?
Team-TNT was a group of individuals around the world that created the
"Evilution" missions for id's "Final Doom". I got involved with them
after that and contributed in various ways to a number of projects. At
one point, a subset of that group spun off to work on a mod for Quake 2,
and I joined after they'd gotten a pretty basic project going. Lots of
bugs, though, and after a lot of work I became the primary coder after a
year or so. The group eventually disbanded before we released anything,
with one person going to Blizzard, another starting art school, and the
rest of us wandering off in various directions. I think in the end we
simply burned out.
When did you first become interested in The Dark Mod?
I remember seeing some concept art online many years ago, and thinking
how great it looked, but I hadn't played Thief, so I didn't pay much
attention. When the 2009 Christmas Contest maps came out, I thought I'd
give them a try. By then I'd played and loved all the Thief versions
(yes, I did like TDS!), so rediscovering TDM was a blessing.
After playing the released missions, I opened Dark Radiant and tried my
hand at map-making. It was fun, and one thing led to another and I
started designing my first serious mission. When the 2010 Summer
Vertical Contest came along, I set my mission aside and spent two months
making Somewhere Above the City. The ending cinematic came about
because I didn't want to use the tried-and-true "go back to a specific
location" ending that many missions end with. So I decided to end it
with a cuts-scene that wrapped things up in what I thought was a
reasonable and interesting manner.
Were you hoping to join the team before you
submitted your vertical contest mission entry? Was the mission meant to
be part of your resume?
Not at all. In fact, the mission that was interrupted by the Vertical
Contest was--from the start--going to be my one and only mission. After
that, I'd play what others published, but I have many other projects on
my plate. That mission isn't complete yet; I'll finish it sometime next
year, I guess.
Throughout the past nine months, I read a lot on the TDM forums that the
folks behind the curtain were thinning out, especially on the
programming side. Since I'd had so much fun working/playing with TDM, I
thought I'd volunteer to help out. The Team opted to have me fix some
bugs, so that's what I've been doing since.
It seems that many of the things that you fix have
relevance to things in your upcoming missions (slippery ice), is this
just a benefit of being a Team Member or is there a certain wisdom to
sticking with problems that are right in front of your eyes?
Actually, I've tried not to focus on things I would like to have.
Slippery ice came about because I'd done that for Suspension and was
familiar with how id applied friction. TDM had id's basic support, but I
added the missing bits so it's more realistic.
As for "What should I do next?" I try to look at things that the forum
threads are focusing on. This has led me into some complex areas of the
code, so I can't say I'm favoring easy problems or fixes.
I also notice that, for AI problems, you often give
your AI names and seem to work out their problems almost like an
anthropologist (eg. "John doesn't remember where Jeff is so such and
such happens..."), have you always used this method to work out coding
Heh, I really don't remember, though I probably have. It's so much
easier to explain something when you can say "When John bumps into Jeff,
John ..." than it is to say, "When the first guard bumps into the
second guard, the first guard ..." or--even worse--"When
atdm_ai_builder_guard_lesser_1 bumps into atdm_ai_builder_priest_1,
atdm_ai_builder_guard_lesser_1 ..." Having spent so many years in
software development, I've learned it's important to explain problems
and situations as clearly as you can, with as much detail as you can
provide w/o losing the reader. Plus, I think it's more fun when things
read like a short scene. "Neville beat the crap out of me with his sword
when I stole his coin purse" is more interesting and descriptive than
"AI are too aware."
As a new member what hazing has gone on thus far,
just some heavy drinking games, "Builder style" ritual self-beatings, or
did they give you that impossible coding problem I conjectured about?
Well, since the Team is spread out around the world, hazing relies
heavily on an individual's ability to "self-haze". In my particular
case, this involved a couple gallons of green Ripple, a ferret, and some
railroad tracks at two in the morning. Needless to say, I found my way
home. I don't remember where the ferret ended up. And now my
forty-year-old stock of green Ripple is depleted, which is sad because
it's no longer produced.
As for hazing via coding problems, this is ongoing ...