Check out Half-Life Re-imagined competition results!
Check out Skewing textures in Hammer, our newest tutorial!
Welcome, akn, our newest member!

logo

Site Stuff

Reference

Maps

Community

ShoutBOX

Poll

Feeling Blue

What's your favourite shade of blue?

Azure

15

Cobalt

32

Turquoise

10

Cyan

11

Royal

9

Teal

3

Onliners

5 mins

Dimbeak

32 mins

twitch1

53 mins

NineTnine

1 hours

olograph

2 hours

Solokiller

2 hours

DocRock

2 hours

ZikShadow

Affiliates

A gaming and technology blog by TWHL admins Penguinboy and Ant. A music blog by TWHL users Ant and Hugh.

Better Sprites With Env_Beam

By Jeff 'Yesukai' Pritchard

I'll start of with a graphic example. Imagine our dramatic industry map has some steam vents, like pictured below:


As the player inches towards the vents, the hiss of the steam fills his ears. Upon looking from an upward angle at the vents, they look like this:


See that vent on the right? Has that happened to you? Yeah, happened to me too. Seems those darn sprites always face the player... and quite frankly, that?s only good for circular shaped sprites, not sprites that have to come from and go to a certain spot. Luckily, you can make sprites that don't turn on the vertical axis (like the vent on the left) and take advantage of some other wonderful features of the env_beam entity at the same time.

Prerequisite: The env_beam entity

Ok, for most of this to go off as smoothly as possible, I'm going to explain some things to those of you that are new to the env_beam. Those who are familiar with the entity may safely skip this section.

An env_beam is an entity that draws a beam between two points. You make the start and end points, usually info_targets for something like steam. Then you make the env_beam, which you set to use those targets as its start and end points. The beam itself is what is rendered in-between these points.

How it Works:

We have established that an env_beam renders a beam between two points. Now here comes the magic: the game can generate a beam to display, or you can supply it with a sprite to use. And since the top and bottom of the beam are anchored at these two points, the sprite is as well.

How To Make Smoke:

Ok, you will need three entities for this:

Name one of the info_targets smoke_top and the other smoke_bottom. Now in the env_beam, add smoke_top as the starting point (don't worry, the smoke will still travel upward), and smoke_bottom as the ending point. You should end up with something similar to this:


In the env_beam, you need to set some more things up:


  • Brightness: How "solid" you want the sprite. A value around 200 should make for some nice smoke.
  • Beam Color: This will recolor the sprite. Gray is good for smoke (pink smoke is kinda cool looking though...).
  • Life: Set this to 0, for infinite, unless you want your smoke to disappear after a time.
  • Width of Beam: You can make the sprite wider or thinner. I used 100.
  • Sprite Name: This is what sprite is displayed. I used sprites/lgtning.spr. Believe it or not, it looks like smoke when used this way.
  • Texture Scroll Rate: This is how fast the sprite scrolls down the beam. For smoke shooting out of a pipe or something, you would use a high number. As my smoke is just meandering, I used 5.
  • Frames Per 10 Seconds: Surprisingly, I haven't been able to get sprites to play any animations. Which means this trick is mostly for scrolling things, like smoke.


Now, in the flags section check start on and shade start. The latter key will make the smoke fade at the top, really enhancing the effect.

Closing Remarks/Files

Alright, now you know the basics for making sprites with env_beams. Play with it a bit, you may surprise yourself with what you can find. For reference, the Collective entity guide on env_beam can be found here.

I have included an example RMF for you to look through. It has an env_beam sprite and a normal sprite, for comparison purposes.