Dirigible Development Diary

Supported by hot air

Stuck Valve

Not so much a blog update, as an open letter to Valve. It’s pretty wordy, so you can skip to the bottom to see some pictures if you like.

Dear Valve,

I’ve been working with your tools/SDK since they were first released (and, in the case of Hammer/Worldcraft, since….forever). I’m used to how they work. I can practically use Hammer in my sleep. I’ve even built up an actual workflow for modelling and texturing. And that’s where the problem lies.
Courtesy of RoboBlitz, I recently had the chance to sample the delights of Unreal Engine 3 - or more specifically, the tools. The first thing that struck me is how…integrated it all is. There’s an in-built browser for all the assets. The map editor is there. The script editor is there. The texture tools are there. It’s all there, in one package. It also uses non-obscure file formats. Want to import a mesh? Export it to ASE from your modelling package, then import it straight into UnrealEd. Textures? Import them straight in - even PSDs.
Now here’s where UnrealEd really starts to shine. Let’s take an example of importing a model to be used as a static mesh, importing the texture, then placing it in-game.


1) Export model to Valve’s SMD format (3 times - reference mesh, idle animation and separate collision mesh)
2) Write .qc file to define the model. Here’s a simple example:

// Output .MDL
$modelname ship1/hangar_column.mdl


$scale 1.0

// whole body
$body “Body” “hangar_column_ref”

$cdmaterials “models/ship1/”
$surfaceprop “metal”

// sequences: all sequences are in $cd
$sequence idle “hangar_column_idle” loop fps 15

//$keyvalues { “prop_data” { “base” “metal.medium” } }

$collisionmodel “hangar_column_phys.smd” {
// Mass in kilograms
$Mass 200

3) Compile model

4) Export texture to Valve’s VTF format (thanks to a third-party plugin for Photoshop. Otherwise, export to TGA and convert to VTF)
5) Write a .vmt file to define the material that the model is using (of which the texture is just a part). Example:


“$basetexture” “models/ship1/hangar_column_1″
“$selfiilum” 1
// “$bumpmap” “models/ship1/hangar_column_1_normal”
“$envmap” “env_cubemap”
“$envmaptint” “[ .2 .2 .2 ]”
// “$model” 1

I feel that I should point out here that I have got used to this way of doing things. These VTF, VMT and QC files have a relationship that can be extremely confusing at first. Having an incorrect reference in just one of the files, or having them in the wrong directory, will lead to the dreaded Purple Checkerboard Texture Of Death (i.e. the engine can’t find the texture to apply to the model)
6) Open Hammer, find model in browser, place in map and save.

7) Compile map
8) Wait for map to compile (Not strictly a step in its own right, but anyone that’s used to Hammer knows what I mean)
9) Load game, load map.
10) Admire work.

Easy, isn’t it? Now let’s try it with UE3.

1) Export model to ASE format
2) Export texture to TGA format (for argument’s sake)
3) Open UnrealEd, open browser
4) Import mesh, import texture (which can be done simultaneously)
5) Create material using visual material editor:

6) Apply material to model

7) Place model in map
8) Play map in editor.

Only two less steps in total, but several orders of magnitude less work. Even taking into account the fact that you’re more likely to copy and paste your QC and VMT files around, changing the relevant details, the Source tools are decidedly…clunky.

The learning curve on your tools, Valve, is atrocious. The lack of integration is appalling, and you won’t win any awards for ease-of-use (command-line tools? What year is this again?).
Now don’t get me wrong - I love Source, and I think you’re doing fantastic things with the engine. But you are neglecting the tools. We had a major SDK update this year that fixed a lot of problems with Hammer, and added some new features. You even added an in-editor lighting preview (briefly) and a visual logic editor (again, briefly). I just wish that you’d look at UnrealEd and see what I’m talking about. I’m certain that your in-house productivity would go up. It would absolutely benefit the modding community.
Being realistic, I doubt that map compiles are going to go away any time soon. But there are things that are quite possible, such as integrating the texture/modelling tools into Hammer, and that would be fantastic.

Anyway, enough ranting. Here’s what I’ve done over the past 48 hours in UE3. It’s basically a recreation of the Hangar map that I’ve shown in a previous post. It actually doesn’t look as good as the Source version because I simply haven’t had enough time to play around with the editor. The way that UE3 handles maps is a total paradigm shift from Source, and it was a struggle just to get the map to this level in the time that I gave myself.
Also, the black robot silhouette is from RoboBlitz - spectator mode wasn’t working.

Models first:



And now, the map:

Just for reference, here’s the original source version again:

9 Comments so far

  1. Tom Edwards November 15th, 2006 2:27 pm

    I’m sure that the Source pipeline makes more sense in the context of Valve’s internal structure. But for other developers and modders, it’s certainly a bit of a nightmare at first. Just about all of the SRCSDK tools have clunky interfaces.

  2. Andy November 15th, 2006 10:48 pm

    I’ll agree with that - The first modding experience that I had was with Quake, luckily I discovered a tool named “QuArK”, which had everything all in one - compiler, map editor, material editor, model editor. Then I moved on to modding Unreal Tournament using UnrealEd - Again, pretty much everything all in one - compiler, map editor…

    With Source (and I suppose most of the Quake style engines - Q1,2,3, D3, HL, HL2) it all seems to have taken a step backwards.

    Although I have no doubt that the Unreal guys don’t use UnrealEd for production work, it would be nice to see something produced by Valve that lets you mod with the ease that UnrealEd provides.

    I guess garry’s mod goes a fair bit of the way for coding, since all your code is scripted in Lua and doesn’t need to be compiled, it really speeds up development time.

  3. Kurt November 16th, 2006 2:33 am

    The only reason I use Unreal is because of the editor.

    If Valve’s tools were similar to UnrealEd’s, with simple File > Import’s, then I’d switch in a heartbeat, since HL2’s lighting is far superior with GI and the like. Vertex-lit models also tend to look nicer in their engine.

  4. gaggle November 16th, 2006 4:52 am

    UnrealEd does sounds interesting. Too bad it’s ugly too, but I guess that’s one of those feelings you should be able to push away. Curse my demands for slick interfaces!

    Does the .ase format support animation though? And how flexible is that support? Your need for static meshes is nice and sweet, but sometimes ya’ just need more. Way back since HL1 Valve has managed to make their tools pretty sophisticated in terms of what they’ll accept and still spit out as a proper working model. I loved how you could add a bunch of wacky expression-driven bones to a biped and it’d just work ingame.

    But yeah, the general workflow for getting stuff into the engine is atrocious. Discounting the technical problems it really should be easy as importing a file that works in XSI and have it just.. work. No resources not found, no corrupted animations, no crashings of the engine and no frustrated attempts to remove that godforsakenmother^%^#$## purple checker.

    Baby also needs a new pair of lighting tools what with all the inconsistencies between mesh- and brushlighting. By the Gods I never want to have to debug a map’s lighting again :\.

    Lets naivly hope next time they do a thorough update of the engine we’ll get eeeeeverything we’ve ever wanted.

  5. Neale November 16th, 2006 8:06 am

    Regarding animation, I honestly don’t know. There’s scant documentation for UE3 yet, and that’s why I went with a static mesh for the example.

    I’m hoping that Epic will open up the UE3 section of their Unreal Developer Network a bit now.

  6. chris December 25th, 2006 8:52 pm

    Hello, great instructions but… it sed nothing about downloading and where to download the model and texture editor from.. please write back on where to find the software

  7. Neale December 26th, 2006 10:15 am

    I’m afraid you have to provide those yourself :)

  8. ChaosTheory February 12th, 2007 4:26 pm

    as a long time mapper for halflife and unreal2k4, I must say, when HL2 came out, The tools made me afraid to mess with them.

    One apparent “pro” with the source engine is that you can’t open .bsp files directly, and therefore get someone’s map source to mess with. this is a pro because I hate it when someone takes a map I made and takes a sound out and calles it DM-MAPNAME-SP or some other random acronym. or worse, they add clan crap to it.

    I liked how in Half Life 1, it was more or less impossible to modify maps.

    However I defineatly see where you are coming from on the tools being clunky. I would much rather use Unreal ED than Hammer. I mean… separate buttons for camera movement and texture placement. please.

  9. LiquidGravity April 4th, 2007 10:52 pm

    While I agree that the command line tools and importing need to be fixed, I do not think that the tools should all be integrated into one uber tool.

    I too tried the UnrealEd . I have Postal 2 and was going to make some maps on there only I found the tools overwhelming. I didn’t even know where to start. I tired fiddling with it and acomplished nothing.

    Before that I started with the original HL mapping tool (World Craft I think). Much to my astonishment I could use it like a paint program. So much easier to start with a few commands looking back at you. The same is true with the current Hammer Editor. Once I got better I found more commands hiding behind keys and in menus. I like having the commands I use all the time right in the front with out being cluttered by ones I use once in a while.

    In summary: The command line tools and importing need to be fixed/updated. A good compromise might be dual GUIs for the Hammer Editor. One for people like me who like it clean most of the time and one for others that like all the options.

Leave a reply