Back in the day, creating maps and mods for Half-Life used to be so dire. If you wanted a button that was physically inside an elevator, you'd have to use a bunch of tricks to get that done; and even then it probably was an optical illusion to trick the player into believing that there was a button. When Spirit of Half-Life came along, it added features such as "move_with", and thus buttons were no longer doomed to dance alone.

I proudly present the man who added an extra layer of fun to Half-Life modding, making Halfquake Sunrise possible: Laurie Cheers.

Tell us a little bit about yourself - give us the Laurie Cheers elevator pitch!

Laurie:

* I've been a professional game programmer for about 12 years, working at places such as Rare Limited, Relic Entertainment. At Stainless Games, my current employer, I'm an AI programmer working on Magic Duels.

* I'm on the rules team for Magic the Gathering. We write FAQs, and when new cards with weird abilities get added to the game, we figure out how they should interact with all the other weird stuff in the game.

Laurie: I've loved games and wanted to make them since I was very small. I got "The Usborne Book of BASIC" for my birthday when I was about 8 or 9, and basically never looked back.

What did you work on before and leading up to Spirit of Half-Life (SoHL)?

Laurie: At high school I played around making mods for Quake, including an unfinished adventure game called Lunatec (which used to be up on reocities... I can't find it now). When Half-Life came out, I played around with it for a while but didn't get very far.

What made you decide to create SoHL?

Laurie: Spirit of Half-Life was actually born in 2000 while I was doing a university placement year at IBM - I was incredibly bored at work and started modding Half-Life as a way to occupy myself in the evenings.

Initially the concept I was working on was a game called Zombie Master, with the idea that headcrab zombies would fight for you (kind of like the antlions in HL2). So I was making a bunch of scripted sequences, and adding engine changes in service of that concept. I believe the first thing I added was a func_tank with laser sights.

Pretty soon it became clear to me that I wasn't interested in making a story campaign, but I was having a ton of fun adding new engine features.

As far as I know, there are several version out there, up to 1.8. When did your involvement stop, and what do you think about your project having a life of its own?

Laurie: I don't remember exactly when I stopped updating Spirit. I do remember I was getting a little bored of it by 2003, because that's when I joined the Dark Truths mod team for a change of pace. The team fell apart soon afterwards (though I don't think that was my fault) :-) and I merged the new code back into Spirit. In particular, that's where Spirit's particle system code came from.
I believe my last real version was in 2004 or 2005 - after Half-Life 2 came out and the community started to fracture.

Did SoHL turn into a collaboration with other people, or did you work on your own version primarily alone?

Laurie: The Spirit codebase was almost exclusively my code. Day of Defeat used an early version of it, but they never merged their changes back in.
The one exception would be fmod integration to let it play ogg files - someone else made that (sorry, don't remember who... maybe read the source comments?) and I incorporated it into the main line.

Oh, and IIRC there was a russian team making their own unofficial versions of Spirit (which might be what 1.8 is? I don't remember making a version 1.8.)

Back when you started it, did you envision it would inspire that many people?

Laurie: Not remotely! I was just fixing stuff I found annoying so that I could make cool levels. Eventually it got to a point where I thought "maybe other people would find this useful", so I whipped up a very basic webpage and submitted a link to a forum... and yup, turned out people were interested!

Are there any features that you never got around to implement?

Laurie: I spent a bunch of time trying to get compound rotations to work (e.g. a door moving with a rotating train), but it never quite looked right.
(There's a reason why modern engines no longer use Quake's pitch/yaw/roll angle system.)

What was the biggest hurdle / bug to overcome while working with Half-Life? Any interesting quirks of the GoldSrc engine that you discovered?

Laurie: Getting movewith to work as well as it does was a major challenge. It turns out, objects in the GoldSrc engine (like the Quake engine) get updated in a fixed order every frame, determined by the order they're created in the level editor.

For example, suppose a door moves with a train, and the train starts moving. If the train's update happens first, it tells the door to move too, and they stay together seamlessly. However if the door's update happens first, when the train tells the door to move, nothing happens... the door won't update now until _next_ frame! So the door ends up lagging 1 frame behind.

Has Valve ever contacted you? Or did you get in touch with them whenever you needed technical engine information?

Laurie: Yeah, back in the day they had a very active involvement with the editing forums. I was friends with their community manager Chris Bokitch, and at least 1 feature came from his direct suggestion.
Valve showed off Spirit at their "Mod Expo" in 2001 and awarded me $1000.

There is a "Spirit of Half-Life 2" out there, but you're apparently not involved. Did you ever think you'd port SoHL to Half-Life 2 yourself? Do you think HL2 lacks features that would warrant a port?

Laurie: From what I've seen the editing tools in HL2 are far better, and solve a lot of the same problems that Spirit does. I haven't used it enough to comment on what's missing...

This is a very specific question - I remember reading the entity guide and stumbling over the Locus system. I think I understood its purpose, but never actually used it. Would you mind explaining and maybe give an example?

Laurie: I think your experience matches a lot of people's. :-) I suck at writing docs, apparently - people didn't really start to use it until I showed one guy (the-middleman) a simple example, and he built a tutorial to explain it to everyone else.

For a start, the locus system is full of poorly named things. It's basically a simple programming language that understands four types of data: entities (LE), positions (LP), vectors (LV) and numbers (LR).

For example, an env_explosion has a field called "Position [LP]". The [LP] tag indicates that this is a locus position, which means there are three options for what to write there:

1) The name of the entity where the explosion should happen.

2) The name of a calc_position entity that will calculate where the explosion should happen.

3) *locus, meaning "the specified entity". When the explosion gets triggered, whatever triggered it also specifies an entity. For example, if your explosion is being triggered by a trigger_once, the specified entity will be whatever just walked into the trigger_once.

When you trigger something yourself, you can override the specified entity by writing a different one in brackets: e.g. if you have an explosion set to trigger at *locus, then you could trigger it by writing "explosion(victim)" instead of just "explosion". (Where victim is the name of an entity).

Do you sometimes look around and see what people do with SoHL? Got any favourite SoHL mods?

Laurie: Back when the forums were still up, I used to pop in from time to time... I'm afraid I haven't been keeping track of the scene for years now.

What else have you contributed to the Half-Life modding scene? Were you involved directly in other mods based in SoHL?

Laurie: Dark Truths, as I mentioned; but nothing that got released.
I did contribute some code to Merl's Half-Life tools to make it support switchable texlights.

What happened after SoHL?

Laurie: Mostly what happened is that I got married, had two kids and lost 90% of my free time (also, since making games was my day-job, I tended towards doing other things to relax - e.g. building programming languages.)

That's not to say that I didn't play around with any more game ideas. A friend and I released a game called Paradox 3000 for the iPhone in 2008. (It didn't sell well, and hasn't been updated - I don't suppose it still runs on modern iPhones). I have a bunch of other unreleased prototypes too.

How did you get the idea for Quest of the Wordsmith? Is it still under development?

Laurie: Ah, Wordsmith. Yeah, that's probably my most successful personal project of recent times.
I wrote a blog post explaining the genesis of the idea:
http://ponderingwhatimponderin(...)The problem with Wordsmith is that the gameplay as seen in the demo is unsustainable. By the time the demo ends you've already collected 90% of the letters in the alphabet... and when you have them all it stops being fun.
(Making it not-Scribblenauts is one of my main goals.)

So my active development petered out after a little while, and I've spent the last 4 years, on and off, trying different ideas for extending the game without losing its charm. It's not under active development right now, but to misquote Edison: I haven't failed - I've just found a hundred ideas that don't work. And I've learned a lot about game design in the process.

What's it like working with Unity compared to GoldSrc/Hammer?

Laurie: Unity is an open-ended game engine - compared with Half-Life where a ton of features are baked into the engine and unchangeable. It's a very different experience.

Does your family know about SoHL and your other projects, and if so, what's their opinion?

Laurie: They like Wordsmith. I don't think they really understand what Spirit is. :-)

What would be your dream project to work on?

Laurie: Not sure, to be honest. I'm "between projects" right now. I have a notebook full of ideas, but none of them feels quite ripe.
If you mean professionally, Spiderman 2 is one of my top games of all time - I'd love to work on a remake of it.

What's on the horizon for you personally?

Laurie: Hopefully things will just be stable for a while - I'm pretty happy. Working on Magic Duels has been great - I've only been at Stainless for 9 months or so, and it's been really cool learning the engine and seeing how they've implemented Magic's labyrinthine rules (some of which I designed) in a manageable way.

Xash3D allows people to play Half-Life mods without having Half-Life, what's your take on that?

What, in your opinion, is the current state of gaming in general? Are we experiencing the Rise of the Indies, Death of AAA, that sort of thing? What are the next few years going to look like?

Laurie: Unfortunately we seem to be experiencing the Rise of Psychological Exploitation, which is sucking all the money out of the traditional (non-exploitative) games market.
I agree with Cliffy B that the industry, particularly in the mobile space, has some disturbing trends at the moment and I hope we see some regulation from the government or the app store owners to curb the worst of it.

Is VR the Next Big Thing? Will you be - or are you - developing VR games?

Laurie: I'm not convinced it's any good for home gaming; but Valve seems to have the right idea. IMO the future of VR is that you go to a location, they give you a headset and you physically walk around. I can't wait for someone to make a VR room-escape game.

Lastly, if you were in charge of Half-Life 3, what would it look like?

Laurie: Interesting question. I've always found the storytelling and exploration in Half-Life more fun than the actual shooting, so I would probably push it in that direction.
One of my dreams is a game that lets you truly suspend disbelief - the beginning of Bioshock is the closest I've seen so far. For some reason the sound of my character shivering just made me feel like I really inhabited his body - I _was_ this poor plane-crash victim exploring a lighthouse and just trying to get warm.
And then I was attacked by a splicer, and the game gave me no way to react as I wanted to - no way to reason with him, disarm him, avoid him or spare his life in any way... so I sighed, broke my trance and clubbed him to death with a wrench.