Cables and Ropes: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (→‎See also: sdknuts)
m (→‎See also: linked suspended object trap tut)
Line 29: Line 29:
*[[phys_pulleyconstraint]] — make a pulley
*[[phys_pulleyconstraint]] — make a pulley
*[[phys_spring]] — make a stretchable, springy cable
*[[phys_spring]] — make a stretchable, springy cable
* [[Suspended Object Trap]] — make a trap with an object suspended by a rope
*[http://www.sdknuts.com/tutorials/wiseWind.asp Wind blown Power lines]
*[http://www.sdknuts.com/tutorials/wiseWind.asp Wind blown Power lines]
*[http://twhl.co.za/mapvault_map.php?id=3920 A Counter-weighted Door]
*[http://twhl.co.za/mapvault_map.php?id=3920 A Counter-weighted Door]
*[http://twhl.co.za/mapvault_map.php?id=3924 Cable Shakes on Nearby Grenade]
*[http://twhl.co.za/mapvault_map.php?id=3924 Cable Shakes on Nearby Grenade]

Revision as of 05:07, 12 September 2006

Abstract Mapping series Discuss your thoughts - Help us develop the articles or ideas you want

Ammunition | List of HL2 Animals and Creatures | Mapping with Antlions | Beams and Lasers | Cables and Ropes | Moving Clouds | Color Theory in Level Design | Combat | Combine | Compression (Source 1) | Doors | Dust, Fog, & Smoke | Elevators | Level Transitions | Environmental Lighting, Sun, Weather, & Outdoors | Explosions | Fire | Half-Life 2 Foliage | Glass & Windows | Headcrab | Health | Ladders | Lighting | Optimization (level design) | Physics | Retinal scanners | Sound and Music | Special effects | Terrain | Trains | Turrets | Water | Weapons | Zombie

Cables provide a simple method for adding movement and complexity to a scene for a relatively low cost. Cables can be strung between moving objects and used as a visual representation between physical constraints (springs, length constraints, etc). Cables can also dynamically be shaken or broken by level events.

Note.pngNote:Cables are not solid unless you make them that way. To suspend an object by a cable you must also use a physics constraint. Details below.

Placement

Cables are strewn through a level using the move_rope and keyframe_rope entities. First, place a move_rope entity at one desired anchor point for the rope. Next, place a keyframe_rope at the second anchor point. Point the "Next Keyframe" field on the move_rope to the keyframe_rope entity. You'll now see a line representing an estimation of how the cable will lie between the two points (See Fig 1a). Cloning the keyframe_rope entity will automatically rename the new entity and point the entity that was cloned from to that new entity. Using this method you can quickly lay out cables through multiple points (like power lines).

Fig 1a. - A cable strewn between two points in Hammer

Appearance

Cables have a certain amount of "slack", which is the amount of bend they have while resting between their two anchor points. Slack helps give the cables a greater sense of motion and believability. The value entered into the entity field dictates how much "extra" cable there is between the two anchor points. This is equivalent to stretching the cable directly between the two points, then adding the specified number of units to that length. As the cable moves, the slack is not recalculated, so a cable that initially droops due to slack will become taut if one of the end points moves away from the other. Likewise, a taut cable will begin to droop if its end points move closer together. The line representing the estimated lie of the cable in Hammer will update itself based on the values entered, and may be used as a guide for how the cable will look when seen in the engine.

Behavior

Cable anchor points may be placed in hierarchy with other objects, and will move along with those entities. In the sample map provided in the SDK, a moving door (cleverly disguised as a pole) provides a dynamic anchor point for two cables. As the door moves, the cables stretch and move to maintain their span. In addition, a timed env_shake entity periodically moves all the anchor points, causing the cables to "bounce." These techniques can be a very effective visual tool for adding movement and polish to simple moving pieces in the world.

It is possible to detach cables from their anchor points, either by a player's direct action or by triggering it to do so. When a cable receives a "Break" input, it will detach itself from the anchor point which received the input. A cable will also detach itself from an anchor point if that point is parented via hierarchy to an entity which is killed. In the sample map provided in the SDK, add a weapon_crowbar entity to the map. The tattered pole (a func_breakable) on the left-most side of the map can be broken with the crowbar. When the pole breaks, it triggers a "Break" output to the anchor point at its top and the cable attached to it will fall to the ground.

By default, cables are not solid and will pass through world geometry. In some cases (especially when cables are broken), this can be visually unacceptable. By using the "Collide With World" setting on the entity, the cable can be made to collide with world geometry. Because this makes the cable more expensive, this setting is only recommended for cables that exhibit the problem of interpenetrating the world.

Sample Map

sdk_cables.vmf

See also