Ted's RPG Rant

A place to rant about RPG games, particularly the Temple of Elemental Evil. Co8 members get a free cookie for stopping by. Thats ONE cookie each, no seconds.

Sunday, June 15, 2008

So lazy!

I recently got this in an email, but I am so lazy I couldn't be bothered hitting 'forward' and finding addresses. Not that its worth it. And it lets me kill two birds with one stone (also a very lazy thing to do) since I can just post it as a blog - many folks do that sort of thing. In fact I believe they tag folks to get involved and call them 'memes' or something. Meh. Just do this, or not, as the mood takes you. I found it surprisingly challenging, which is why I am posting it here. 'Yvy' will find it impossible. Someone whose first name starts with 's' will find it a breeze.

The rules? Use the first letter of your first name to answer all the following questions.

WHAT IS YOUR NAME? Edward

4 LETTER WORD: Easy

VEHICLE: Equipe (variety of Holden car)

TV SHOW: Everybody Loves Raymond

CITY: Edinburgh

BOY NAME: Edmund

GIRL NAME: Edwina

OCCUPATION: Electrician

SOMETHING YOU WEAR: Earrings

FOOD: Enchilada

SOMETHING FOUND IN A BATHROOM: Exhaust fan

REASON FOR BEING LATE: Everybody else was coming late?

SOMETHING YOU SHOUT: Eeeeeek!

Thursday, June 12, 2008

Adding New Meshes

This is a blog I have been meaning to write for a long time, not because I have anything to add to this subject - I generally leave these things up to the artists, and the groundbreaking stuff has been written about and explained previously by the folks who discovered it such as Cujo, Cuchulainn and Allyx - but because I often get tied up in knots myself and forget some important element, so I thought I would do a step-by-step idiot-proof guide for myself and other folks who are interested in this area of modding could then get into it easily.

Today I am going to add some new meshes to KotB: new boots, armour etc made by Half Knight. He has done the hard yards changing the graphics and I am going to put them into the game and record how that is done. I won't attempt to explain model-making, bones, skeletons, alpha-channels or any of the other weird stuff that the folks who make new things talk about: apart from technical nous, that sort of thing also requires artistic talent, something I don't have. What I will explain is simple techniques for making new meshes and the various files that have to be altered to see them in the game.

What is a mesh? By that, I mean the texture files that you see on screen on the various models - NPCs, weapons, clothes etc: the .jpgs or .tgas that wrap over the top of the models. Today we will specifically be looking at clothes. Different sorts of clothes can be made from one model by using different meshes: thus there is one model for female 'mystic garb' - the saucy little number worn by Elisteria in DH - but it can come in different colours, by putting different meshes on the models. The game currently has 'blue' (which is greenish) and 'red' (which is pink). Fabulous. Half Knight has already made some new ones: blue and red that are just that, and black and white as well. Lets start by adding the new prototypes for them as a base, and as we fill in each column, we can have a look at where each file goes and how they interact with each other.

In KotB, we'll put the new stuff at 6340 onwards, since there are some new robes there. So we add the following lines:

{6340}{Red Mystic Garb}
{6341}{Blue Mystic Garb}
{6342}{White Mystic Garb}
{6343}{Black Mystic Garb}

We also alter 6211 and 6213 to 'Cyan' and 'Pink' to better reflect the reality of their colours.

Then we back up protos.tab and add 4 new lines at 6340-6343. I'll assume you can do the basics like adding the obj type in column 1, the Id# in col 23, size_medium in 24 etc. If you aren't sure, just go back up to 6211 and copy those sorts of things (weight, cost etc too).

Material is an interesting one: its mat_cloth. No surprises there, but the more knowledgable or observant will have noticed that in data/rules, next to the protos.tab file that you just backed up before adding stuff to it, there is a file called 'materials.mes'. The materials column does NOT refer to this file, but we WILL be playing with this file in making our new meshes. Later.

Category is '1', same as 6211. The first column of real interest is col 34, 'model'. This is very important, it tells the prototype exactly where to find the model to display the item on screen. The 5 digit number (usually in the 12000s) that you see in the other armour and clothing prototypes (this section, the 6000s, includes pretty much everything wearable, such as boots, belts, goggles, shields, amulets and headbands, as well as armour and clothes), well this 'model' number refers to meshes.mes. Thats way down in the innards of the art folder, so lets go there:

data\art\MESHES\meshes.mes

Open it up and you will see thousands of entries - thats every damn model and mesh in the game, right there! Ducking back to prototype 6211 we see that the original blue (now Cyan) mystic garb refers to line 12131, which in turn says

{12131}{armor\sorcerer\sorcerer_blue_ground}

This, obviously, refers to a file or folder location. Going back to the meshes folder, we find an armor folder, and opening that we find... well, lots of stuff, including folders named marauder, gladiator, leather_scale and other stuff made by Co8ers (Cujo and Maggit in those cases). We don't find a sorcerer folder, though, since no-one has ever made new mystic garb for the game prior to this (or at least they have never posted it). To see the original, we have to go to the dats, so going to ToEE1.dat we find

ToEE1\art\meshes\Armor\Sorcerer

and popping that open, we find a huge number of files. Before we start dissecting those, lets put our new entries in meshes.mes: since both Half Knight and Cuchulainn are currently making all sorts of stuff, I will pick some obscure numbers that shouldn't get in anyone’s way and stick this particular bunch of new stuff at 12299, working backwards. Since they will all be going in the sorcerer folder we can copy that bit from 6211, but we have to rename the destination file since the game already recognises sorcerer_blue_ground, sorcerer_red_ground and sorcerer_green_ground. We'll call ours sorcerer_nblue_ground (for 'new blue'), sorcerer_nred_ground ('new red'), sorcerer_black_ground and sorcerer_white_ground. There is actually a logic to this, which I will reveal in a minute. In any case, the following lines will now appear in meshes.mes:

{12296}{armor\sorcerer\sorcerer_nred_ground}
{12297}{armor\sorcerer\sorcerer_nblue_ground}
{12298}{armor\sorcerer\sorcerer_white_ground}
{12299}{armor\sorcerer\sorcerer_black_ground}

Quickly going back to protos,tab, then, in column 34, 'model' we now put 12296, 12297, 12298 and 12299.

Ok, so now when we hit 'give 6340' in the console, the game knows to display this prototype it has to create an item from model #12296, and by going to meshes.mes and looking at line 12296 it knows the relevant files for that model are found at data\art\meshes\Armor\Sorcerer in something called sorcerer_nred_ground. Sweet! But what are those files?

Before we create file sorcerer_nred_ground and friends, lets look at an existing one in the dat: specifically sorcerer_blue_ground. Lets open it up. Eek, there's two of him! sorcerer_blue_ground.ska and sorcerer_blue_ground.skm. One is 1kb and the other is 15kb. We'll have a quick look inside the bigger one. Opening it with HexEdit, it looks like this:

Ugh, what a mess! Obviously this is not meant to be viewed as a text file. What .skm means, afaik, is 'skeletal model' - this is the actual bones of the animated 3d models we see in the game. We are not going to make anything sensible out of it without looking at it with a model viewer, but we're modders - that won't stop us hacking it and hacking it good!

One thing in all that mess was intelligible - the bit that says

art\meshes\Armor\Sorcerer\sorceress_blue_ground.mdf

Hmmm... note it says 'sorceress'. Keep in mind, the male and female versions of this model are radically different: we have to create male and female files. Ok, what does the .mdf file look like? Opening it we see it says:

Ok, thats legible! It is pointing to the actual tga graphic that is the texture that gets wrapped around the model - thats the one we are going to change to produce our new clothes. So now we can see how the files interact:

protos.tab gets the model from meshes.mes

meshes.mes gives the location of the files

.skm gives the model, and looks to .mdf for the mesh

.mdf gives the name of the mesh graphic file

Easy! If you are wondering what .ska does, as .skm means 'skeletal model' I think .ska means 'skeletal animation' - it handles the model animations (how the mystic skirt flaps as the player runs, etc). They don't change from one type of mystic garb to the next so we just have to copy that.

Thats our next job, we are going to copy all these files for our new stuff. We already decided what to call them: prototype 6340 will look for model sorcerer_nred_ground. So we have to have some .ska, .skm and .mdf files named accordingly (not to mention the tga files we see onscreen, which is the point of it all!)

So: we are going to take the sorcerer_blue_ground files we have been looking at and copy them and rename them sorcerer_nred_ground. Note we are using the BLUE ones - we are NOT using sorcerer_red_ground or sorcerer_green_ground. ONLY USE BLUE. The reason why will become very clear in a minute.

When I say 'copy', we have no 'sorcerer' folder in our KotB art/meshes folder, so the first thing we do is make a new folder in there called 'sorcerer' being VERY careful to name it correctly. As you can now tell, all the files are looking for very specifically named things, and a single typo will bring an instant CTD in the game when you try to display the model, so be thorough. I am simply going to copy the whole sorcerer folder over from ToEE1.dat then rename and cull everything as necessary to prevent typo issues.

Egad, there is a lot of them...

Note a few things: each new .tga has its own mdf file that points to it, and each race has its own .tga (well, not joke races like half-elves and halflings, proper races). Furthermore, while the elf model is the same as the human one (just with paler skin and thus its own .tgas) the half-orcs and dwarves (that should be dwarfs, thankyou Mr Tolkien) have their own models, thus their own .skms. We have a LOT of files to hack...

Lets start by renaming them. I go through now and rename every blue one 'nred' at the relevant bit (keeping in mind the game still gets the relevant blue ones, for the original cyan-coloured garment, from the .dats). This takes a few minutes. I don't rename the .tgas - they will be replaced by the ones Half Knight has done for us, and I rename those appropriately.

Here's the new human red male next to the old pinkish one:

Not a lot of difference; its mainly in the female ones.

Where are they? Looking around, I don't see any new red ones: H_K did say he hadn't done both sexes yet, so lets do that one ourselves (this way you will see how to make basic meshes, not just how to add them, for all those of you out there reading this who don't have a graphic designer like Half Knight sending you stuff ;-) )

Popping the 4 female ones (sorcerer_nred_F_human.tga, sorcerer_nred_F_halforc.tga, sorcerer_nred_F_elf.tga and sorcerer_nred_F_dwarf.tga) we see they look like this:

while the old pinkish ones look like this:

Ewwww... and they call that red. Lets fix it. As well as the 4 tgas, there is a 5th one simply called sorcerer_nred_ground and a matching .mdf file: we'll modify that too. Mine pop in Photoshop.

The next bit can only really be described, rather than shown. Look at the pic above, we see that there are predominantly cyan bits, with some blue highlights. I am going to change them to bright red with gold highlights. First, I select the nred_ground.tga and select all the greeny-cyan bits with magic wand. Some fiddling with the tolerance and I finally set it at 15: still a lot of clicking, but it doesn't try to grab the stencil-blue parts as well. (Anyone remember stencils? Anyone?) Holding shift, for those who don't use magic wand, allows me to select new sections while keeping the old ones selected too. Eventually I have done a basic job selecting the greenish stuff. It looks like this:

I then go Enhance / Adjust Colour / Colour Variations and I press the 'increase red' button SEVEN times. Thats important, because I have to do this with 5 different .tgas and want to remember what I did with each one.

That gives me something like this:

Well thats something, isn't it? I mean, its red, not pink 8^P

Next I select the blue highlight parts, and do much the same, only in the enhancing bit I change them to 'decrease blue', which makes them glow yellow. Nice :-)

Next, I labouriously do the other 4 .tgas for the 4 racial models. And thats the basic artwork done. We now have male and female versions.

Time to see them in game? Not quite. We may have renamed the new files with variations on 'nred', but internally they are still pointing at the old ones, so we have to crack open the .skm and .mdf files and hack them. I will use Notepad++ this time for the .mdf file, since it makes it that little bit easier (I will still use the hex one for the .skm since either way you get a screen full of gibberish and a few intellible words here and there). Here's what we see in sorcerer_nred_F_human.mdf:

So we change the bit saying

art/meshes/armor/sorcerer/sorcerer_blue_F_human.tga

to

art/meshes/armor/sorcerer/sorcerer_nred_F_human.tga

Now, listen carefully, this is the most important thing I can tell you. The rest of it is just renaming files and using common sense - here is where hours of frustrated hacking by previous modders comes into its own.

One of the reasons I opened these files in a Hex Editor is so you can remember the game is handling files in hex format, not text like a .mes file. So you can't just remove a byte or add one - that shifts everything one byte to the right or left and bang, the whole thing is ruined. You have to copy byte by byte.

Therefore, if we are going to point a file to a new file called sorcerer_nred_F_human.tga, we have to use an existing file that can be altered to say that IN EXACTLY THE SAME NUMBER OF BYTES. In this case, that means the same number of letters. Hence we have NOT copied all the files called sorcerer_red_F_human and simply introduced an 'n' - that would be adding a byte. Rather, we have changed the ones called sorcerer_blue_F_human (and variations) to sorcerer_nred_F_human.

If that doesn't make any sense, think about it very carefully then open an Hex editor and try it. As you type over the letters, watch how the numbers in the other windows change. We want all the other numbers to stay the same! I mean they will, but to get our new file reference to work we have to change all the numbers in the relevant part of the old one, and there is no room to add new ones, so we can't 'introduce' an 'n' to 'nred' but we can type 'n-r-e-d' over the top of 'b-l-u-e'.

I hope thats clear. If not, I'm afraid you'll be going for a walk in CTD land.

Ok, so I go through and use the Notepad++ to rename all the male and female .mdf files, and then I use my Hex Editor to do sorcerer_blue_ground.skm: these model files sometimes take some searching through to find the relevant bits but you have to do it. If you later run the game and the object you have made looks wrong, or looks like a mish-mash of something you made and something else, or just plain looks like the original file you were modding instead of the new file you made, then chances are this is the problem: you forgot something in the .skm. This is more of a problem with monster meshes, though, and in this particular case, the mystic garb, there is only one entry in the skm to change.

So now our new files look at each other in their innards as well as their outtards: can we run it now and have a look? Absolutely not! We have only done half the prototype!

Going back to protos.tab, just keep moving along. Do the weight, cost and inventory icon the same as 6211, and the flags too (cols 50 and 61). Also go over to col 79, “Max Dexterity”, and set that to 100 (the basic setting for any item of clothing or wearable item that shouldn’t affect the Dexterity bonus). We now have one more column to do: 62, ‘colour’ in ProtoEd. I am not sure what ToEEWB calls it, but I can tell you now, it refers to our aforementioned materials.mes. 6211 has an entry of 9000, so go to data/rules and open materials.mes (in Notepad).

Entry 9000 onwards looks something like this:

// Sorcerer Outblue Fit blue

// 9000-9099 sorcerer outblue_Fit blue
{9000}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_human.mdf}
{9001}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_human.mdf}
{9002}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_elf.mdf}
{9003}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_elf.mdf}
{9004}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_halforc.mdf}
{9005}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_halforc.mdf}
{9006}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_dwarf.mdf}
{9007}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_dwarf.mdf}
{9008}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_dwarf.mdf}
{9009}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_dwarf.mdf}
{9010}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_human.mdf}
{9011}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_human.mdf}
{9012}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_M_human.mdf}
{9013}{CHEST:art\meshes\armor\sorcerer\sorcerer_blue_F_human.mdf}

This does two things: it tells the game where to apply these new meshes – to the chest of the PC / NPC model where it replaces the existing one (we’ll prove that in a moment) – and it also formally tells the game which of the many .tgas (which are individually named in the .mdf files, remember) to apply for the male and female of each race. You might think, “well that’s obvious, ‘blue_F_Dwarf” is for the female dwarf model!” but remember, we could name them anything at all (as long as it was the right number of bytes, and we cross-referenced it the same way internally). Its like naming a new weapon “Longsword +3” – you have to still put the +3 bonus and the weapon type in protos.tab to make it what it sounds like, you can’t just call it that in description.mes and leave it at that.

Take a look at the size of that materials.mes file, btw – if someone (probably Cujo) ever did add a new race like Drow or Snervfleblin, then someone else (probably me or Gaear ;-) would have to go through and add an extra male and female line to EVERY damn entry here. Even if it just said blue_M_human / blue_F_human all over again, as it does here for many of them (since the Halfling, Half-Elf and Gnome races are just human models somewhat shrunken). If you want a whole new model, then that’s all new meshes and mdfs for EVERY garment. Who wants to do that? Any takers?

Enough of that. We have to now make a new bunch of entries for all the variations. I am putting them at 12900, since there are big gaps among the temple Robe entries for some reasons (they should be differentiated in the hundreds but among the robes they do it in the thousands, leaving 9 hundreds to play with if you take my meaning). Once I have renamed the blue entries to ‘nred’ it looks like this:

// remeshed and new mystic garb

// 12900-12999 sorcerer proper red
{12900}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_human.mdf}
{12901}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_human.mdf}
{12902}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_elf.mdf}
{12903}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_elf.mdf}
{12904}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_halforc.mdf}
{12905}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_halforc.mdf}
{12906}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_dwarf.mdf}
{12907}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_dwarf.mdf}
{12908}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_dwarf.mdf}
{12909}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_dwarf.mdf}
{12910}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_human.mdf}
{12911}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_human.mdf}
{12912}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_M_human.mdf}
{12913}{CHEST:art\meshes\armor\sorcerer\sorcerer_nred_F_human.mdf}

Easy, and didn’t take long thanks to copy-paste. We then place the entry 12900 back in col 61 of protos.tab.

One last thing: we now open another file in the Rules folder: addmesh.mes. It has identical numbering to materials.mes, so looking again at 9000 (where the original blue mystic garb, proto #6211, kept its racial mesh information in materials.mes) we see the following:

// 9000-9099 sorcerer blue oufit blue

{9000}{}
{9001}{art\meshes\armor\sorcerer\sorcerer_blue_F_human_addm.SKM}
{9002}{}
{9003}{art\meshes\armor\sorcerer\sorcerer_blue_F_human_addm.SKM}
{9004}{}
{9005}{art\meshes\armor\sorcerer\sorcerer_blue_F_Halforc_addm.SKM}
{9006}{}
{9007}{art\meshes\armor\sorcerer\sorcerer_blue_F_dwarf_addm.SKM}
{9008}{}
{9009}{art\meshes\armor\sorcerer\sorcerer_blue_F_human_addm.SKM}
{9010}{}
{9011}{art\meshes\armor\sorcerer\sorcerer_blue_F_human_addm.SKM}
{9012}{}
{9013}{art\meshes\armor\sorcerer\sorcerer_blue_F_human_addm.SKM}

Its easier to see what addmesh does than explain it, so for now we’ll just rename these to match our newly named files, and also put it at 12900:

// 12900-12999 sorcerer proper red

{12900}{}
{12901}{art\meshes\armor\sorcerer\sorcerer_nred_F_human_addm.SKM}
{12902}{}
{12903}{art\meshes\armor\sorcerer\sorcerer_nred_F_human_addm.SKM}
{12904}{}
{12905}{art\meshes\armor\sorcerer\sorcerer_nred_F_Halforc_addm.SKM}
{12906}{}
{12907}{art\meshes\armor\sorcerer\sorcerer_nred_F_dwarf_addm.SKM}
{12908}{}
{12909}{art\meshes\armor\sorcerer\sorcerer_nred_F_human_addm.SKM}
{12910}{}
{12911}{art\meshes\armor\sorcerer\sorcerer_nred_F_human_addm.SKM}
{12912}{}
{12913}{art\meshes\armor\sorcerer\sorcerer_nred_F_human_addm.SKM}

Ok, lets power it up! I run the game, clear the map cache (to be sure), it loads – good – then I load a save and ‘give 6340’ to my female human rogue. It doesn’t CTD – woohooo!! I then click on it to get her to wear it, and see this:

Ooops! There’s the red-and-gold outfit, but the dangly bit and the shoulder-pads are blue-green!

Those are the addmesh right there: I may have altered their names and pointed the addmesh.mes at them, but I didn’t do the addmesh.skm file and they are still pointing at the old files.

I left this error in not only because I actually made it, but because it nicely demonstrates what an addmesh is. We saw in materials.mes that the mesh that our new mesh replaces is the chest mesh on the PC / NPC model: and it does replace it, not just cover it, because it includes the skin element and if you leave it out, or alpha channel it into transparency, you won’t see something underneath (this is an ongoing problem with trying to make things that allow other things to show, such as tabards).

An addmesh, on the other hand, does not simply provide a new mesh for a part of the existing model, but adds a new little modelled bit on top. Hence while the existing chest mesh can essentially be replaced with a new body-hugging garb, there are no shoulder-pads on the human model to re-mesh, these have to be provided afresh by an added mesh (hence Addmesh. But you figured that out 6 paragraphs back, I dare say).

Anyways, addmeshes go in addmesh.mes at the same place as the remeshing in materials.mes. Some things have both, some have only one or the other: for instance, male mystic garb has no addmesh, its just repainted trousers and tattoos (all for the chest) while helmets are all addmesh and nothing else, so in materials.mes we see this for the helmets bit:

// 4000-4007 AsianHat

// 4100-4199 Barbarian Helmet

// 4200-4299 Chain Coif

// 4300-4399 CircletNice

// 4400-4499 CircletSimple

// 4500-4599 Generic Helm

// 4600-4699 Great Helm

// 4700-4799 Plumed Helm

// 4800-4899 Sorceror Helm

// 4900-4999 Wizard hat

// 5000-5099 Leather Cap

While we see something similar for addmesh.mes at the areas for gloves and boots

// 5700-5799 Hedrack Full boots

// 5800-5899 Hedrack Full gloves

// 7900-7999 Fullplate2 Gloves

// 8000-8099 Fullplate2 Boots

They’re just placeholder remarks, so you don’t make your brand new pride and joy – a multicoloured helmet with glowing horns - hack it into materials.mes at what looks like a free spot, then go mad wondering why it comes out with a skirt because there was an addmesh already at that spot that you knew nothing about and hadn’t checked for. Make use of those remarks. Here are some more:

//21100-21199 Cuchulainn

//21200-21299 Cuchulainn

//21300-21399 Cuchulainn

//21400-21499 Cuchulainn

//21500-21599 Cuchulainn

//21600-21699 Cuchulainn

//21700-21799 Cuchulainn

//21800-21899 Cuchulainn

//21900-21999 Cuchulainn

That’ll save name-calling and blood-letting later!

Lets fix our addmesh. Its sorceress_addm_red.mdf: open that, hack it as before to point at the nred file. Thats it. And now, lets run the game again and se if it works.

And there’s our finished product! Simple, eh? No? Contrary to what it looks like, it really is just copying files, making a few changes here and there to match them all up, and having a nice tga to introduce something worth doing it all for. Not hard, just tedious, and once you have done a few, not even that.

To be thorough I will introduce one more thing that Half Knight has done for these new garments: new icons. Probably most people who read this will already know how to add new icons but since I don’t think I have ever mentioned it in a tutorial, I will say something now.

Icons, as we saw in protos.tab earlier, is at col 53, which is called Inventory Icon in ProtoEd: spot on. We put in the number 242 based on 6211: lets give them all individual icons. 242 is not just an unfulfilled UN resolution, its also a number in inventory.mes (don’t you love how easy these files are to remember? At least they don’t call it something weird or in latin or something – graphica_minor.mes) which is found in data\art\interface\inventory, not tooo far from the meshes folder. Also in the folder, as well as the .mes file, are all the inventory .tgas: too easy. Lets look inside the .mes file:

{00239} {mandolin_icon.tga}
{00240} {bone_helm_icon.tga}
{00241} {bone_armor_icon.tga}
{00242} {sorcerer_outfit_blue.tga}
{00243} {sorcerer_outfit_green.tga}
{00244} {sorcerer_outfit_red.tga}
{00245} {Familiar_Bat.tga}
{00246} {Familiar_Cat.tga}
{00247} {Familiar_Frog.tga}

There it is! Heading further down, we see there is a gap at 573-579 where some clothes will fit nicely, but I have to add a bunch of hats and a helmet and there are already hats and helmets in that bit (568-70 and 580-85) so I will put those in there and move this stuff back to before 455 (which has the worn and grubby boots – I am adding some new boots Half Knight made too, so I will put the mystic garb and boots there). So lets just put it at 444 onwards:

{00444} {sorcerer_outfit_nred.tga}
{00445} {sorcerer_outfit_nblue.tga}
{00446} {sorcerer_outfit_white.tga}
{00447} {sorcerer_outfit_black.tga}

Looking again, Half Knight has only done the later two (black and white) since he intended blue and red to be replacements for the current pink and cyan ones, not new ones: I had other ideas ;-) So I go back into ToEE1.dat, find the blue icon, 5 shots of enhance / colour variations, and I have a nice red icon. Lets see it all together:

Well I have no idea where that damn left-click led us - something bizarre in longdescription.mes: some left over from ToEE, perhaps. But here you can see the icon, the new garb and its stats in protos.tab (such as it is - very little stat-wise for simple clothing) all in one pic. Finished!

If you'll excuse me, I have a blue, black and white garb to add. Plus new boots, helmets, a breastplate and a bunch of hats ;-)

Thursday, June 05, 2008

What Makes a Good PC Game part Deux

Or is it part 3? I forget.

Some time back I wrote about the issue of what, imho, makes for a good game. I will recap it in some detail since I want to draw on some of the same themes. I gave as an example of a good game my perennial favourite Ultima 5, since among other strong points, the plot affected the game play - solving quests actually opened up the game, gave you more options, and advanced the plot. As an example of a 'bad' game (in this sense) I mentioned Starcraft, a game which I twice started and simply could not get through, despite enjoying RTS games and having spent many long hours on various incarnations of C&C, Age of Empires and even the Warlords: BattleCry Demo (and its predeccessor, but that was turn-based). The reason was I couldn't get through Starcraft was simple: it was too repetetive. Every level was either a) build a base, defend it til you could build a force to wipe out the enemy, or b) wipe out the enemy with a finite force and no base. Level after level was strategically identical, and the plot made no impact on that, it was all just irrelevant window dressing.

I bring this up because I have been playing a bunch of my old games lately, now I have a nice new computer to enjoy them on. I started with BF 1942, got that out of my system (didn't play a campaign or anything, just a bunch of maps, mainly 'Battle of Britain' - love to fly!) then moved on to Jedi Outcast (played it through - killed Desann with a bowcaster by bouncing the bolts into his back so he couldn't block them with his sabre. Cheesy bastard, serves him right). Last night I finished the sequel, Jedi Academy, and today I installed MoHAA and am already well into the Bocage (love that game. Some of the levels are endlessly replayable.) Anyways, thats what I want to talk about - Jedi Outcast.

Generally speaking, I never pay top dollar for a game - partly because I can't afford it, partly because I rarely if ever have any hardware that can run the latest game, partly because I rarely see any game where-in I think "I've GOT to have that!" If I do buy games I get them in the bargain bin (thats how I got ToEE - serendipity, eh?) or I play mods and demos. Well I used to before I started modding - nowdays I make things rather than play them, usually, but thats a seperate issue. Jedi Acadmey I got for the unbelieveable price of $9 just a few months after it came out - I just stared, thought "That can't be right?", then quickly grabbed it. Jedi Knight, the original (well, Dark Forces was the original, but I never played that through because it was so inferior to Jedi Knight, which I already had, that I didn't bother - a shame since DF was ground-breaking, but what can you do?) I originally played the Jedi Knight Demo many years ago - played it to death, I might add, over and over - so I actually went out and bought the game, one of the first games I ever bought. Heh - Demos work. I even bought the sequel, Mysteries of the Sith, after it had gone out of print by ordering it online, having it sent to a friend in the US (because LucasArts wouldn't ship international) and she sent it on to me. Legend of a woman :-) Married an Irish guy last I heard... but I digress again.

The thing about Jedi Knight is, prior to it, I didn't play FPS games at all - I never saw the point, I remember a friend of mine showing me Doom years ago, wandering around in the dark killing monsters with various weapons, and I played it for about 3 seconds and thought, "whats the point? So what?" I much prefered the challenge of an RTS and stuck to them.

However, when I played JK it was completely different. Apart from being of a very high quality for its time, whacking Storm Troopers with a light sabre made sense to someone who grew up watching Star Wars, in a way that other games didn't (even Half Life, when I played it, did not hold my attention, even though I loved both CounterStrike and Day of Defeat). I was almost imediately hooked by both the game play and the puzzles of the JK Demo (lvl 9, the Fuel Station, probably the best level in the game and VERY long for a Demo) and was soon completely hooked on shooting stormies, hacking them up with my sabre and using the Force on them. From there I moved on to LANs, playing Rogue Spear and CounterStrike against my friends, and then to BF 1942 and Call of Duty: I was hooked on FPSes as long as there was some compelling reason, like driving a tank or fighting classic WW2 battles (abstract monster killing or overpowered weapons still do nothing for me - Unreal Tournament, Quake and Half Life all leave me cold).

Now, here's the kicker: the level design of Jedi Knight, like StarCraft, is very repetitive. Just as StarCraft's maps fall into 2 categories, so too (imho) the overwhelming majority of JK's levels fall into 2 camps - what I call 'up the tower / down the tower', and 'along the canyon'. In fact, its really only 1 category, it just comes in either a horizontal or vertical mode: the player gets railroaded along a path, and has to solve various little puzzles to advance (the Baron's Head town map, and the first 'back home on Sulon' map, are the only really open ones that come to mind - otherwise, you're getting railroaded along, often for no other reason than Kyle says in a cutscene, "Jan, I've got to get to the top of that tower!")

And yet... something about the game is damn good: the level design, or the monster placement, or the challenge, or whatever, that you don't mind this. In fact, I have played many of those maps over and over again ad nauseum, because they are just so much fun to play.

Weird, huh?

And a very fine line, I might add. The sequel / add-on, Mysteries of the Sith, was considerably less replayable: people speak about the poor level design (in some cases the rooms were literally undistinguished boxes, such that you could practically see the words "add monster here" on spots on the floor) but it was something more than that. There was many new elements - new monsters, new weapons, new force powers, cooperative combat (Rebel troopers who fought alongside you) and some levels that had a lot of thought and effort put into them (and were quite good in their way), but the replayability wasn't there, not by a long way.

Which brings us to Jedi Outcast, the one and only game of my life that I bought on the day it was released, glady paying full price for it (no regrets, neither). It was a massive leap forward (I actually started to write 'quantum leap', but 'quantam' means tiny. For instance, quantum physics is the study of the tiny particles of the atom: electron clouds etc. Bizarre misnomer, eh?) Jedi Outcast used the Quake 2 engine (same as MoHAA albeit a completely different gaming experience) to create a world with an extremely rich capacity to use the Force, absolutely mind-boggling sabre-fighting against many Dark Jedi foes (with an interesting plotline to explain where all these psuedo-Sithlings suddenly came from), sensible enemy reactions and some beautifully detailed levels.

And yet: again, the replayability is not there for me.

One reason is the particle-collision system. Its utterly unforgiving: you can literally see your shots go under the storm-trooper's arms, or between their legs, and hitting a moving target can be very difficult indeed. Add in the fact that every weapons in the game, except your pistol and the disruptor rifle, is one degree or another of inaccurate (usually 'extremely'), and the end result is really quite like a Star Wars movie - people shooting in all directions, no-one getting hit.

But thats not much fun, and the early level's before you get your sabre and force powers are practically a write-off: you are just passing time til you get your magical glow-stick and can start carving things up, or choking them, pushing them off bridges, yanking the weapons out of their hands and watching them run in panic etc. After that I almost never touch any other weapon, as opposed to JK where I had a tendency to use a wide variety of weapons and force-powers as well as my sabre at close quarters. And in JK the initial levels on Nar Shaddaa - also, sans sabre - are as much fun as anything after you get it.

The sabre is far and away the redeeming feature of Jedi Outcast: looks spectacular and genuinely fun to use, plus you can use the console to switch on 'dismemberment' so you can fillet enemies (default is just the standard "arm comes off" that you see in every Star Wars movie, but it can be cranked up to the point you can totally dismember a corpse. No blood, of course). Jedi Academy takes it all to the next level, allowing you to use two sabres or a light-staff (Darth Maul style). It overhauls the force powers and the collision system (afaik), so it is still very challenging but not absurdly so. (Absurd in the sense of "empty your Stormtrooper rifle at point-blank range at a Stormtrooper's chest and miss" - yes, JO is that bad at times). It also adds the Concussion Rifle, a favourite from Jedi Knight missing in Jedi Outcast, and allows you to choose your weapons for each mission - sabre and pistol, then 2 additional weapons and a choice of explosive from grenade, trip-mine or det-pack.

And yet... Jedi Academy (as you can probably tell from being in the bargain bin within months) barely caused a stir, despite getting good reviews (generally 80% or better - GameRankings.com says it averaged 81% over 54 reviews). Quite bug-free, too - I just played an unpatched version and only encountered one thing that I thought "hmm, must be a bug". But having played it through just the other day for the first time in many long months, I have no desire to go back and play any level again just now.

Were they repetitive? No. The exact oppposite: Jedi Academy, rather than having a linear plotline, instead consists of a series of missions that can be played in any order, with plot-critical adventures kicking in when you finish the each 'wave' of 5 missions (three of those, representing the 3 rankings of force powers from JO, so you get progressively stronger as you go). And the designers have gone to extraordinary lengths to make each mission different: there is one where you are captured the moment you arrive, have everything confiscated (including, particularly, your sabre) and have to escape. One on a runaway monorail-style train high above a city, where certain death is just a step away. One where you ride swoop bikes, a la the forest moon of Endor (& a certain level of Shadows of the Empire). At least one where you can use an ATST. One takes place on Hoth in blinding snow, and you can ride a tauntaun. One takes place in Mos Eisley, with Chewbacca for company, while another is out in the canyons of Tattoine, cleaving Tuskens' gaddaffi sticks with your sabre (remember, kill them all, even the women and children! ;-)) and negotiating the insides of a Jawa sandcrawler. One is an endless jumping puzzle in an underground canyon (the Demo level, again one of the best in the game). One on a lava planet, another on a planet drenched in acid rain where you have to run from one shelter to the next and get to take out Tie Bombers from a gun emplacement. One involving assassin droids on Coruscant, very similar to Attack of the Clones. One involving a normal Rancor (unkillable) and one involving an humungous Mutant Rancor (killable but not with weapons). One on an Imperial Dreadnaught where you have to man the guns against incoming Tie Fighters (not well implemented). One where you take on Boba Fett (damn flying sod who uses his flamethrower to fry you if you close to use your sabre - just like in Shadows of the Empire, which is good because he should be a very tough foe). One against Noghri who fire an icky green crap at you that makes you ill and kills you very quickly. Several in Imperial facilities, of course. And one involving a Dune-like worm where you have to navigate a crash site, and any movement onto the sands could see you swallowed whole.

An enormous amount of variety. And yet - looking back at that list of the levels, I can't see a single one which I feel compelled to go back and play again any time soon. Compare that to MoHAA, where I am barely half-way through and I am already thinking "gotta go back and try the bunker again, only using the Colt" or "gotta do the tank park, but sneak my way through this time".

And there, I think, lies the essence of replayability: not diversity of content, necessarily, but diversity of how a set piece can be played. Frontal assault? Sneak around? Sniping? Use the environment against your enemies? Go the suggested route to bypass the waiting army, or head straight in guns blazing?

It occurs to me, the two levels of JO / JA that I did want to go back and play afterwards both involved vehicles. In JO it was a level on Yavin where you go through a canyon in an ATST blatting stormies and enemy vehicles - in JA, it was the swoop bike level. In both cases I played through then thought, "what if I don't use the vehicle? What if I try to play it through on foot?" The latter was very hard and only worth doing once - the former revealed many secret areas in the canyons, including some Reborn (Dark Jedi baddies) who are always more satisfying to kill than to avoid.

I also think this explains the replayability of JK, but not JO / JA: JK was far more balanced in terms of weapons / sabre and force, as I said before. You had the option of blasting with the heavy weapons (rail gun and concussion rifle) - though that generally made things too easy, and there were non-combatants like droids and ugnaughts where-in you lost force power, 'mana', for killing them, and got pushed toward the dark side, so you tended not to just nuke whole areas too often - or blazing away with the repeater or stormie rifle, or carefully pinging with the pistol or bowcaster (including bouncing trick-shots), or using the grenades, or just hitting "Force Speed" and charging in with your sabre and taking care of business. The shocking inaccuracy of the weapons in JO / JA, combined with the unforgiving collision system, meant you never used the stormie rifle after you got the sabre, the repeater was just ridiculous, the pistol was only effective against stationary targets or those running directly at you, and the flechette was just a silly novelty weapon (albeit fun to use against Dark Jedi, because its spread of fire could not be blocked with a light sabre. Annoying to face though). Hence, every battle involved pinging a few foes with the disruptor rifle, if you had one, and then charging in with the sabre - or just charging in. The various explosives added a little variety, but only in specific circumstances: you end up playing the levels the same way each time (except for the sabre-on-sabre fights) and that gets old very quick.

So the lesson for today? Quests in KotB have to not only have variety - they have to have a variety of ways to complete. There was some of that in ToEE - consider the Jinnerth quest, where-in you could intimidate Renton into accepting Jinnerth, bluff him, negotiate if you had Elmo in your party, or just flat-out bribe him. But thats very minor: I mean more elaborate quests should be able to support very different approaches. I think that is already part of the ongoing appeal of ToEE that its devoted fan-base already have: the massive amount of variety present in the combat system. You can Fireball the Bastards (TM) or go the direct tank-with-a-big-axe route, or mow down your enemies with missile fire, or TWF-sneak-attacks, or battlefield control spells, or summonings, or have a balanced party, or a themed party, or a party of NPCs, or just go it alone. A huge variety of ways to play through, even if its the same encounters again and again (and we all do).

In KotB I have to confess, I concentrated more on the 'variety of quests' rather than 'variety of means': sneak quests like the prison cell, or the corporal 'seduction' quest, or the Billy 'suddenly find yourself in the middle of it' quest, as well as the usual fedex quests, social skills quests, go-kill-stuff and occasional puzzles. I tried to include different ways to finish quests, more to suit the different alignments than to promote replayability. I do believe I shall try harder :-)

The other thing to mention, with respect to MoHAA, is that you could attempt the 'sneak' route because it was an extremely consistent engine. If you pop a guard with a silencer or pistol-whip him, you get away with it - if you stupidly shoot a spot-light or a guard sees you and grabs an alarm, you pay the penalty. The game is VERY consistent in that sense, such that when you reach the point in such levels where you can no longer sneak - where you automatically set off an alarm by passing a certain point, no matter how you play the game - you really feel quite cheated. But you have a lot of fun getting to those points, and if you want to just go in guns blazing and damn the consequences, you might have to take on a whole army, but you can still do it, albeit it is tough.

ToEE did not have that: no matter how quietly you might carry out an assassination, you would still get the "Butcher of Hommlet" rep no matter whether you were seen or not, and we all know the Temple troops did NOT react as well as the original module wanted them to, or even consistently from the point of view of the game (having Romag go KOS just because an NPC comes near him is a classic example). A challenge for KotB, which I have not attempted to implement yet (since I think it should be an all or nothing thing, not piece-meal) is to fix this. Sneaking should be possible, but certain actions should make the guards more alert. NPCs should not react to things of which they have no knowledge, but they should also not ignore the free-for-all going on in the next room. There should be consistency.

Back to modding, then :-)