Vlatitude: Monster_generic and Monster_furniture Last edited 1 year ago2022-09-29 07:56:21 UTC

Download example

Let's start with the monster_generic entity. To tell you the truth, this entity is not very hard to use. However, I've only seen it being used in very advanced levels made by very proficient level designers. There's no reason that the average Jose can't use this, and in this tutorial, I'll explain how to take advantage of monster_generic without too much hassle. What does it do? Good question: this entity will put a monster in your level which you designate by entering its file path from the pak0.pak file into the entity's attributes. "Uh, Vlad," you might say, "this is exactly the same as putting a monster_zombie in the level, only with more trouble!" This is part right and part wrong. Yes, you could put a monster_zombie into your level using a monster_generic entity, but its main use isn't for that.

It's ok if you're getting a little confused by me saying that monster_generic is used to place monsters into a level, an then I tell you that you mainly use it for something else. You see, there are some monsters in pak0.pak which did not appear in the game itself! Do you remember that yellow machine that would move crates? Here's a reminder.
User posted image
Try as you might, you can't put this guy into your level using normal Worldcraft methods. This is where the monster_generic comes to your rescue. This model, although not implemented in Worldcraft's entity list, exists in the pak0.pak file in your \valve directory. With two excellent utilities, PakExplorer and MdlViewer (check our files section), you can view all the models that came in pak0.pak file. With PakExplorer, I extracted all the model files from the \models directory in pak0.pak to c:\worldcraft\models\ Then with MdlViewer, you can view them all including all their animation sequences and different bodies (like scientist heads). By doing this, you will find certain models that you have never seen before, since they were not implemented in Worldcraft. However, Valve wouldn't leave out something this juicy, so with the monster_generic entity, we can still put these monsters into our levels.

Let's begin, place a monster_generic entity into your level, position it where you would like your monster to be. Now go into its properties. Do the properties remind you of anything? They should, they are pretty much the same properties as for any other monster. Let's leave most of them alone for now, since you should already know what they do from working with normal monsters, and scroll down to the model attribute. Now you should go into MdlViewer, and pick out which monster you'd like to put into your level. For this example, I'll use the kingpin.mdl monster. There's a picture of him.
User posted image
We know from viewing him in MdlViewer that his name is kingpin.mdl, but we can't just enter that into Worldcraft. The model attribute wants a special syntax, and it will look like this: "models\!kingpin.mdl" without the quotes of course. Make sure that you have that exclamation point. It is absolutely crucial, and the model will not load into your level without it. Now, from playing with MdlViewer, we know that this model only has 1 body, and 3 animated sequences. What!? Only 3 animated sequences!? Well yeah, I mentioned before that the monsters we'll be using are ones that didn't make it into Half-Life, or didn't make it completely. Most of the models that you haven't seen in the game but saw in MdlViewer by extracting them from pak0.pak have no A.I. So they will just sit there in their idle position, without really reacting to the player. Also, most of these - like our buddy the kingpin - won't be totally solid! You'll be able to shoot and walk right through them. HOWEVER! In MdlViewer, as you browse the different models, you will see that some of these unused models have LOTS of animation sequences. These sequences, you can use to your advantage. If you haven't guessed yet, it's using scripted_sequence and aiscripted_sequence entities! Please note that using aiscripted_sequence with monsters that have no A.I. is a bit....useless. You can see the names of the animation sequences in MdlViewer, and you can input these for the animation sequences in the scripted_sequence entities. Therefore, an unused model with many animation sequences can be really entertaining despite having absolutely no A.I. All you have to do is take total control of it using scripted_sequence entities and make it into your bitch, metaphorically speaking. Read our tutorials on the scripted_sequence and aiscripted_sequence entities to see how this is done.

There is a small problem that I mentioned earlier: you can walk and shoot right through some of these models! Plus, a few of them (like the kingpin) have no death position, so they won't die! You can still blow them up to see gibs though. This is why I strongly advise you to use these models where the player cannot touch, shoot, or interact with them. For example, like the big yellow loader during the introduction sequence: Valve didn't want you to just come up to it and see that it's actally non-solid! So, to summarize: put these models and their pathetic scripted lives behind glass, in aquariums, on steep hills, or in some place where the player can marvel at the beautiful models, but not interact with them.


If you are like me, and I know I am, you browsed through every last model from the pak0.pak file using MdlViewer. As I was doing this, I saw models that would be really useful in some levels, and would save a lot of time. For example, instead of building from brushes and texturing a book, you could just use this model: User posted image And can you imagine trying to make a rock like this: User posted image using Worldcraft? The rock is also a model from the pak file. Monster_furniture is the key here. Why not just use the monster_generic entity to put them into your level? The answer is simple: a monster_generic model will bleed when shot and will throw bloody gibs everywhere if it's blown up. Do you really want your book or your rock to be throwing blood and bones and skulls everywhere if you accidentaly throw a contact grenade in its vicinity? Probably not, and by using monster_furniture, you are doing the exact same thing as the monster_generic, only without the blood and gore. Unfortunately, some models will still be non-solid, but for a book or a skull (model: bleachbones.mdl, body: 0), that's not really crucial.

If you've read through this tutorial attentively, you should now be a much more powerful level designer, with many more ways to beautify your level. Here's an example map showing off just a couple of techniques that I described above.
chumtoad gonna eat ya!chumtoad gonna eat ya!
This article was originally published on 69th Vlatitude.
The original URL of the article was http://www.vlatitude.com/tutorials.php?tutID=21.
The archived page is available here.
TWHL only publishes archived articles from defunct websites, or with permission. For more information on TWHL's archiving efforts, please visit the TWHL Archiving Project page.


Commented 2 years ago2021-12-19 20:50:02 UTC Comment #103889
About the "special syntax": backslash followed by any character other than the letter "n" should work. The reason an extra character is needed is that backslash is a special escape character ( see https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/pr_edict.c#L693-L717 ). Or, to make it easy for yourself, just write a forward slash instead! "models/kingpin.mdl" should work just fine! Thanks to Solokiller for this info
Commented 1 year ago2022-09-27 04:54:50 UTC Comment #104803
any way to make monster_furniture solid? I've set the bbox and clipbox of the model but I still have no collision with the model.
do I set the monsterclip flag?

You must log in to post a comment. You can login or register a new account.