Sarebbe bello averlo anche in Ita

"DoV_Tomas"
Crushing Zombies with Moveables

Introduction

I just recently got into editing in Radiant and like so many others I am learning as I design my first level. In the interest of originality I was looking for ways to subdue monsters without just shooting them so I decided to build a puzzle where the player could "squish" the zombies under a heavy load. With a bit of experimentation - and help from Wykyd_1 - I was able to create a moveable that crushes zombies beneath it. It's a very simple process but provides some good lessons on how the trigger_hurt works, how it can be bound to moveables, and how you can construct just one innovative way to bash monsters. I hope you enjoy my first Doom3 tutorial and I also hope it lets you create new things you didn't think were possible in the Doom3 engine.

If you're new to Doom3 you may wish to read the entire article. If you know your way around Radiant you can skip forward to the set up section. I assume you know the basics of Radiant and to save reading I will skip the mundane details of how for example to create a room, add entities and how to move them into position.

Concept

As the name suggests moveables are things that move in the Doom world. These items obey most of the quasi-gravity world rules of Doom3 but in many ways they do not. That is, if we simply perch a large brick moveable on some exploding barrels, place a zombie beneath it and shoot out the barrels so the moveable falls onto the zombie, it will not do any damage - it's funny to see a huge brick moveable that weighs presumably many tons land atop a zombie's head and do no damage. In order for us to "cheat" the damage we use a trigger_hurt.

Trigger_hurts come in basically two varieties, pain and damage. One example of the trigger pain's use is whenever the player encounters that deadly yellow mist in the game. The mist itself is benign, but if you examine the Doom3 maps you'll see a Trigger_hurt near the mist. Basically a Trigger_hurt, as the name implies, is a trigger that causes pain and damage to the entity that steps into its range. It has some parameters we can mess with to get the desired effect. Normall a trigger_hurt does not move so we bind it to our moveable. That way we can create the illusion that the moveable is doing the actual damage. Okay, enough of the conceptual babble, lets roll up our sleeves and open Radiant.

Set Up

If you haven't already done so, construct a room, add a light and an info_player_start. Next add your exploding barrels. You'll have to experiment with the placement of the barrels, the positioning of the moveable and the zombie's placement, but in my example I'm going to keep it simple for illustrative purposes. Next create a brush, texture it, and by right clicking on the viewport, make the brush a moveable_base_brick. Next place your monster(s). Refer to the image below for some placement ideas.





Just remember that you don't want the monster too near the barrels since when you shoot them out they will kill the monster if its too close to the explosion. You'll notice I only placed two barrel "supporting beams". You can create four (one for each corner of the moveable) but that means the player will have to blow up at least three of the pillars if not four to drop the moveable. Best to go with two pillars and suggest there were other pillars that were damaged or knocked down prior to the player arriving at the scene. Next create a hurt_trigger and size it to fit the side of the moveable brick what will be the"crushing" side. Position the trigger_hurt so it is touching the moveable brick - again refer to the images.

The next step is to add some key/vals to the trigger_hurt. The only ones you have to add are these:



Make sure your key/vals are exactly as shown other than the bind key's val which should exactly match the name of your moveable_base_brick. Note the values are adjustable, and make sure the damage you set is enough to deplete the monster's health during the time its in contact with the trigger_hurt. Since I am using the fatty zombie, a damage amount of 100 will suffice. Make sure to bind the trigger_hurt to the moveable through the bind command - note the image of the entity window above. That way the trigger_hurt will travel with the moveable. Position everything as I have in the images.

Testing

Once you're done, save your map, compile it, fire up Doom3, start your map, shoot out the barrels and watch your monster get crushed.




======================================== ==================
This update was provided by Sense A Million which further refines the basic premise. Here S.A.M. explains how to add a def folder and how to attach it to the crusher. The new def folder lets you create a custom trigger_hurt crusher that squashes the monsters flat. I didn't update the second screenshot to show a flat zombie, but I did test S.A.M.'s def file and rest assured the fatty zombie ends up flat as a pancake. Thanks Sense a Million!

"Also i was messing around with the crushers some more, if you place a trigger hurt on the face of the crusher with certain properties, it will gib the monster. still haven't found a good solution for the weapons. items (health, ammo, etc) don't stop the mover.

For the trigger_hurt, give it the values of...
key: def_damage
value: my_crusher_damange_name

then make a "def" folder in the base dir and make a file in it called "any_name_i_want.def" and put these lines in it...

// ######## DAMAGE CRUSHER START ########

entityDef my_crusher_damange_name {

"damage" "999" // amount of damage to inflict
"noArmor" "1" // set weather it effects armor
"mtr_blob" "genericDamage" // effect to play on screen
"blob_time" "0" // screen effect hang time
"blob_size" "0" // screen effect size
"blob_offset_x" "0" // screen effect offset
"knockback" "0" // set weather pushes player back
"kickDir" "0 0 0" // direction of push
"kick_time" "0" // time the push takes
"kick_amplitude" "0" // apmlitude of push
"dv_time" "0" // unknown
"gib" "1" // causes monster/npc/player gib
"gibNonSolid" "1" // causes gibs to be non-solid
}

// ######## DAMAGE CRUSHER STOP ########

The 2 settings referring to gibs prevents the mover from stopping slightly when it hits or getting hung up on an npc."
======================================== ===================


Conclusion

You can mess with other key/vals for the moveable to get more subtle control of its movement but the basics shown here will get you started. You should embellish the scene a bit by perhaps placing lots of moveable stuff on top of the moveable_base_brick to give the impression that it is a giant shelf. Use your imagination to make the illusion seem more real and I am sure with a bit of thought many variations of this theme can be created to construct many interesting ways to subdue our monster foes.

Please post any input for improvement of this article. Have fun!

[email protected]


più un'altro piccolo tutoria

"DoV_Tomas"
OMG you guys, the case of newb-itis is worse than I thought.

I am working on another nice tute on an easier way to make things move as well as including a bit about how to damage things that get in the way of these movers. But, in the meantime, here's some quick, short answers.

Okay Mightydog, some insight which may explain why it's not working for you. There are basically two (maybe more) ways of moving things: either you place a func_mover and you assign it a model; or if you want a brush to move, you make your brush, texture it, then WHILE ITS SELECTED, right click on the viewport, click on func_mover to transform the brush into a mover. So we have our mover and now we can move it with a spline or a script. I think this is a far as you've come, and all works. Now, if you simply click on the mover and add the key/val: damage/xxx, the mover will only cause damage to things it "crushes". That is, to crush something, the player has to get caught between the mover and the world- like say a floor or a wall. Your brick does not crush the player and that's why it's not causing any damage when you add the key/val: damage/xxx.

Now, binding a trigger_hurt to your mover works, but likely you are not creating your trigger_hurt properly. That is, if you just create a trigger_hurt by right clicking on the viewport and clicking on it from the flydown menu, the trigger will do absolutely nothing. My experience shows that you must first create a brush, then while its selected, right click on the menu and select the trigger_hurt from the flydown menu thus transforming the brush into a trigger_hurt. Now you're ready to rock and roll. Now you move the trigger hurt up against the "striking" side of your brick mover, and add the key/vals:

1. bind/(what ever the name of your brick)
2. def_damage/damage_triggerhurt_100

Now when the brick strikes the player it will kill them instantly. You must follow that proceedure exactly and make sure you add the exact key/vals as above and it will work - I tested it so I know it works for sure.

The part that you can mess with is the damage amount but as far as I know you're restricted to the following values:

damage_triggerhurt_5
damage_triggerhurt_10
damage_triggerhurt_15
damage_triggerhurt_25
damage_triggerhurt_50
damage_triggerhurt_75
damage_triggerhurt_100
damage_triggerhurt_1000

Look at the two images below for a summary of my test. The first picture shows that I bound a trigger_hurt to a func_mover (which is called "car" and has the rover model attached to it). Notice the key/vals I've used for the trigger_hurt. The front view just shows how the trigger_hurt was oriented with respect to the "car". In this test map, a trigger moves the car forward (path indicated by the red arrow). Rest assured when I get in the way of the car, I immediately take 100 damage when it hits me. in spite of it not crushing me up against a wall. Try it. Just remember to transform a brush into a trigger_hurt, don't just create the trigger_hurt by right_clicking.


Indirizzo