![]() ![]() ![]() Lesson 8 - Moving BrushesHi, welcome back! If you've made it this far you're either really getting the hang of editing Quake, or you're really bored (or both). Oh well, whichever is the case, glad you stopped by. Continuing on our theme of moving things around, this lesson we'll learn how to make a train. As usual, you'll need the file we've been working with in the earlier lessons. If you have 'lesson7.map' saved from the last lesson, great! If not, that's okay; you can download it here. First things first: make a copy of lesson7.map and call it lesson8.map. Now load lesson8.map into BSP and we'll get started. In Quake, moving brushes other than lifts and doors are accomplished mainly with the 'func_train' entity. The entity itself is pretty easy to understand, but making the path for the train to follow is a little tricky. To get started, let's make a platform for our player to ride around the room on. Start by drawing a 64x64 brush in the Top View, centered at (-736, 224). Assign a texture of 'MMETAL1_6' to this brush and then switch to the Side view. Make this new brush 8 units high and drag it down so that it sits on the floor. This will be our platform. This brush is pretty simplistic, but your train entity can be as complex as you want (providing it's not so complicated that it creates lag problems). If you want to see a really cool example of a moving train, see The Gondola at the Quake Lab. It's great! Once you've got the brush drawn, go ahead and switch to the Entity Window and make this brush into a 'func_train'. Assign it a key/value pair of 'sounds' '1'. This will give it the ratchety metal sound you've come to know in Quake. Before I show you how to make your train move, let me explain something that is a little different about trains. Once triggered, a train entity will move continuously until it hits a 'path_corner' entity that has a key/value pair of 'wait' '-1'. Once it hits this and stops, there is no way I've found to restart it again. That's why a lot of the moving platforms you see in Quake move continuously after they're activated. However, you might want to make a train that only moves to a certain point and stops without being activated again. Just keep this in mind when making your own maps. As a train is moving, it will move in a straight line (even through walls) until it hits a 'path_corner' entity. When it hits this, it will either stop, turn, or pause. If it turns, it will go in the new direction until it finds another 'path_corner'. When it reaches the last 'path_corner' in the cycle, it will return to the starting position and begin again, unless you stop it of course. The tricky part about making the train move where you want is understanding how the 'path_corner' entity works. When you make a train (why do I feel like doing the Loco-motion?), the platform will appear at the location of the first 'path_corner' in the chain. The location of the platform is defined by the point where the center point of the 'path_corner' intersects the lowest point of the train on each axis. In our example, this point would be X=-768, Y=192 , Z=0. In order for our platform to appear where we've drawn it, we'll need a 'path_corner' which has its center point at these coordinates. I know it sounds confusing, but it's really not. Let's go ahead and draw our first 'path_corner'. Draw a 16x16x16 brush and make it into a 'path_corner' entity. Now make sure the brush is centered on (-768, 192) in the Top View and the bottom of the brush is sitting on -8 on the Z-axis. This will put the entity's center point where we want it. This will be the platform's starting point. Now, copy the 'path_corner' brush and paste it back into the map. Move this new copy so that it is directly above the first, with its bottom edge sitting on 120 on the Z-axis. This will be the next position our train will travel to once it's activated. Before we link these 'path_corners' together, let's go ahead and make two more. This will give our platform a nice path to follow. Copy one of the 'path_corners' and paste it, moving it to be centered on X=-768, Y=-320, and Z=128. Paste another copy and move it to be centered on X=-768, Y=-320, and Z=0. Now our train will move up into the air, cross the room, lower to the floor and return to its starting position. Since we have all our path defined, it's time to link it to the platform. BSP makes this easy. Start by selecting the platform brush (it might be easiest to do this in the Right View). Now move the mouse cursor over the first 'path_corner' and CTRL-Click. You should see a purple arrow pointing from the center of your platform to the center of the 'path_corner'. That means they're connected. Now move to the brush directly above the first one and CTRL-Click again. Move to each 'path-corner' and CTRL-Click until they are all connected. When you've done the fourth 'path_corner' CTRL-Click on the first one again to complete the cycle. That's all we need to make our train run. Go ahead and compile your map and test it in Quake. When you enter the room, you'll notice that the train is already moving. Why is that do you suppose? If you're thinking it's because we don't have a trigger attached to the brush, you are right. Give yourself a gold star. Let's add a trigger entity to our platform. That way the platform won't start moving until the player steps on it. Draw a 64x64x64 brush sitting directly on top of the platform brush. Make this new brush into a 'trigger_once' entity. Now with this new brush selected, connect it to your platform by CTRL-Clicking on the platform. That's all there is to it. Run your map in Quake again. Now the brush is stationary when you first enter the room. Step on the platform and you're magically whisked away! Here's our platform flying through the air: ![]() It's a bird! It's a plane! Well, maybe not... Since none of the 'path_corners' have 'wait' '-1' set as a key/value pair, the train will continue moving indefinitely. Just to make sure it works right, select the last 'path_corner' in the cycle and set 'wait' '-1'. Now when Quake runs, the train will stop after one trip around the room. Like I said earlier, I don't know of any way to re-start the train after it has stopped. I think this is a limitation in the Quake engine, but if you find a way, let me know. Well, that wraps up lesson 8. Hope it wasn't too confusing. Next time out, we'll make a wind tunnel. See you soon. ![]() ![]() BSP is the sole creation of
Yahn Bernier. I am only a
dedicated user, reporting news and making tutorials so Yahn can spend
more time enhancing BSP. QUAKE is a registered trademark of Id Software,
Inc. QUAKE(r), the stylized reproduction of the QUAKE(r) trademark,
including, without limitation, the Q in QUAKE(r), and the images
depicted in QUAKE(r) are the copyrighted property of Id Software, Inc.
So there :-P
This web page was created and is being maintained by me (DeadMeat). The main logo for this site was made by QuakeGod. Most everything else was made by me.
All content appearing on this site after August 30, 1997 was written by DeadMeat. Also, DeadMeat's BSP Tutorials were created entirely by DeadMeat. All unauthorized use is prohibited. (c) 1997 |