Heretic II Modeling Tutorial

by Jon Zuk, Lead Designer on Heretic II

So you want to build a statue to the Raven gods? If you’re heavily into modifying games once you get them, this is for you. This tutorial will explain to you how to export models from Max to our game format. What you do with them from there is your business. You’ll need a copy of Heretic II and a copy of 3DS Max 2 or later, plus our plugin for exporting models. Obviously, this leaves many people out as Max 2 isn’t cheap. But, if you’re a diehard or have access to it, it can be worthwhile.

Here’s Raven’s 3DS Max2 plugin for exporting models (vmdexp.dle – 10.3KB, ZIPped). Now, before we get into the explanation, let me clarify a few things. Corvus and all the monsters were created and animated in Softimage. Therefore, you won’t be able to do anything with them in Max 2. We used Max 2 only for building static, or simply animated objects for the game. Almost everything in the editor with “obj_” before it was built in Max. So, how do we make a model and get it into the game? Before you open Max, copy the vmdexp.dlo plugin into your Max plugins directory. This is the actual exporter. Now, you have to build the model. Keep the poly count very low as this will be an issue in the game. I’m not going to explain how to build a model as you should have working knowledge of Max to do this. But Jeff Lampo was nice enough to provide some explanation here.

  1. Make your model (lets say you make a toolbox).
  2. After the model is made, go to the “Modify Stack”, and select “Edit Mesh”.
  3. Break apart your object by selecting faces and detaching them. You have to basically flatten your object, so think ahead on how you want it laid out. Don’t move anything, just detach the faces you want to work with. This is a tedious, but necessary step for the base page later.
  4. After you detach everything, now take the objects and re-attach them back together.
  5. When finished, save your max file as toolbox.
  6. Export as poly.htr.

(This is also where you would save your animations if you had any)

Thanks, Jeff. As he said, after the model is done, save it, then export it as a .htr file. Name the file poly.htr. We set up a directory structure where each model was in its own directory. Every model was named poly.htr but in a unique directory. Create a directory in your Heretic II base called models. For example: c:\programfiles\hereticii\base\models. Within models, create a separate directory for each model you create. Example: c:\program files\hereticii\base\models\box. If you check your directory box, you’ll now see poly.htr.

(For the rest of the explanation, I’ll use box as the object I’m making.)

Next, you’ll have to make a base page for it. Here’s Jeff again.

To make your base page:

  1. Resave your Max file as (toolbox_base)
  2. Make a box shape that is 50 wide, and 100 tall. (The box can really be any size, but it always has to be half as wide as it is tall.) This will be deleted later, but it will serve as your template to place all your object faces inside.
  3. Now go back to “Edit Mesh”, select “face” mode. and select the faces you detached earlier, you should be able to move them freely. Start laying them out flat , so you can see them in the front viewport. When everything is flattened, lay them inside your 50X100 box you made. (Now what happens, is when you qdata your base page, the one you made as 50X100… it takes the back side of it also, and lays it out, so you end up with a perfect square, or a 128X128 page.) So, when you are placing your faces inside the 50X100 pattern, you can also turn some around, to fill up the back side. (You might need to turn on shaded mode to see what’s going on).
  4. You can now delete your template box (the 50×100 one in this case).
  5. After everything is laid out perfectly, re-save the file (toolbox-base), and export as base.htr (If this is all to confusing, you can hire me and Jon on the weekends, we charge 200 per object)

Thanks again Jeff. As he said in his last step, export this as base.htr into the same directory.

Now, you want to create a .pcx file for your base page so you can put a texture on it. From the dos prompt, change to the directory where your new .htr’s are stored. Type in the path for “qdata” and qdata the base.htr with the flags –ignoreuv and – genskin. The specifics are as follows:

C:\progra~1\hereti~1\toolkit\designer\qdata –ignoreuv –genskin skin.pcx 128 128.

The flags I used are –ignoreuv and –genskin. Ignoreuv is used as we have newer tools at Raven, but aren’t releasing them. Ignoreuv is the old way we made skin pages. The –genskin flag actually creates a .pcx from the .htr file. The two numbers are the size of your skin page. If you have a big model and want lots of detail, make a bigger skin page.

Once you’ve finished painting your skin page (saved in the same directory), you’ll want to combine it with the poly into a .fm file. This is our format for models in the game. To do this, return to a command line.

First you have to make the .qdt file. This is a text file that contains the data for making the .fm. From your command prompt return to the directory your model is in and type the following:

C:\progra~1\hereti~1\toolkit\designer\makeqdt –nogen –fm box.qdt

The flag –nogen stops “makeqdt “from running “qdata” again. You don’t have to include this, but you’ll get an apparent error. The –fm is the model format. Our original (and no longer used format) was md2. For simplicity sake, name your .qdt the same as the directory you’re in.

You’re almost done. We just have to qdata it one more time to make the .fm. Before we do that though, there’s one change that needs to be made. Open the .qdt file in a text editor and get rid of the .pcx extensions after “skin”. Save this, return to the command prompt, and type the following:

C:\progra~1\hereti~1\toolkit\designer\qdata –ignoreuv –oldskin box.qdt

This creates a and a tris.h as well as a skin.m8. If you open this in “QMView” (which is on the CD), you’ll see your model skinned and ready to be put in the game.

That’s all there is to it! Simple huh?

To summarize:

  • Create a poly model and a base page model and export them as .htr files.
  • Run “qdata” on the base.htr to get your .pcx.
  • Run “makeqdt” to create a .qdt file for your model.
  • Run “qdata” on the .qdt file to create your .fm .h, and .m8 files.