|View All||Search||View Statistics|
|Laurie Cheers - Programmer, Creator of Spirit of Half-Life|
Interview by muddasheep, December 15th 2015, 18:44:34
|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.
* 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 have two kids, a boy and a girl.
* I'm interested in languages and language design - for example, I made a programming language called Swym: http://cheersgames.com/swym/wi(...)
* 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.
* I tend to get obsessed with assorted things - I have a very eclectic blog: http://ponderingwhatimponderin(...)
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.
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.
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.
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.
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.)
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!
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.)
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.
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.
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...
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).
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.
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.
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.
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:
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.
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.
Laurie: They like Wordsmith. I don't think they really understand what Spirit is. :-)
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.
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.
Laurie: Doesn't Valve basically give away Half-Life 1 for free nowadays?
Note by MS: Pretty much.
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.
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.
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.
Laurie: Thank you! It was fun.
|How readers rate this Interview: 10/10 (3 votes)|
|If you want to add your comment you must login or register first.|
|View All||Search||View Statistics|