✔️ Download example map
Although sprites date back to the most primitive of first-person shooters (in fact, they WERE first-person shooters), they still play a very important role in game maps.
Firstly, it's important to realize that sprites are 2D images. They can either be single-frame, non-animated images, such as for glow effects, or they can be fully-animated sequences, like with explosions. The beauty of sprites is that because they are 2D, there is no real limit to their complexity. In Quake 2, for example, the explosions are 3D - that's obvious, because they are slow and chunky-looking. In Half-Life, all the explosions are sprite-based, which makes them look far more realistic. There are problems though - because sprites are 2D, they can obviously only be displayed one way round. In Half-Life, the sprites will always face the player, no matter which direction the player is looking. This is why it isn't easy to get the positioning of sprites right - make a mushroom-cloud type explosion occur too near the player, and it might appear to follow him. It might even appear to be exploding along the ground.
See also: env_sprite
These are some of the more common effects that appear throughout Half-Life, and it's interesting to see how they're made. All you really need is a room and some object that steam can appear to be spewing out of - I used a classic floor-to-ceiling pipe with a break in the bottom. Then you need the key entity -
. The thing about this effect is that it doesn't use just one sprite. Although Half-Life contains several animated steam sprites, they all have that 2D problem I mentioned - they will appear to follow the player if the player is allowed to see the sprite from more than one angle. That's alright for a distant one-off burst, but we want a nice, cloudy steam to look nice from all angles. So what we're going to do is take a far less lightly looking sprite,
, and duplicate it. If this is done successfully, then it appears to the player to be one stream of 3D steam.
First place one
entity on the map and set it up. Set its Render Mode
, FX Amount
, Frame Rate
to something like 25
, Sprite Name
and scale to 0.5
. Put this entity right into the gap that you have created in the pipe. Now shift-drag it away from the original sprite in the direction you want the steam to appear to move to duplicate it. Getting the distance between the sprites right is a bit tricky - just run the map and alter it a few times to get it right. With each duplication, put the scale of the sprite up a bit (increments of 0.5 up to about 2 is fine), and lower the framerate a bit (down to about 10 or so). The reason for the framerate change is mainly that it makes the steam look as though it slows down as it leaves the pipe, but it also prevents the player from noticing that the sprites are all the same, because they move at different speeds. Play around with the distance, framerate and scale until the steam looks realistic. Try splaying the larger sprites out a bit to make it look like the steam disperses as it gets further away. You will also need to set the Start On
flag on, so that the steam starts up automatically.
The whole steam effect is heavily customisable. Editing the FX Amount
, for example, allows you to change the translucency of the sprites. Leave the Render Mode
though, or it might not look right. I've also placed an
just above the break to add some sound, and I've put some debris around the hole (notice that the debris is all bound to
. This is to stop it breaking up the world geometry to make it look better and run faster).
See also: env_glow
Although not always noticable, glow effects around lamps add depth to your levels, and they aren't difficult to set up. There are in fact two entities that can be used to create the effect -
is specifically designed for glow effects, and it is therefore a little easier to set up. However,
entities are more powerful (mainly because they allow animation), so you may want to use those. I've created two hanging lamps in the tutorial map. The one on the right (from the player start position) is using
with its default settings, and the one on the left is using
, with a different glow sprite, although they look very similar. Both lamps also have light entities just underneath (or you can use the texture called 'yellow' for the bulb, which is a texture light). To set either effect up you only need to change the Render FX
to Constant Glow
and Render Mode
Additive vs. Glow
The way Render Mode
and Render FX
control the sprite's appearance is quite interesting (and complicated). The two Render Modes
we have used in this tutorial are Additive
. The former does as it suggests - adds the sprite's colours to whatever is behind it (in a slightly more advanced way). Glow
is a bit different. While Additive
sprites allow you to see whatever parts of the sprite are not obscured by geometry, Glow
sprites will overlay anything in front of them, so that the whole sprite is always visible, as long as the player can see the centre of the sprite. This is obviously why Glow Render Modes
are only really suited to things like lights. Another difference is that Glow
sprites resize themselves as the player approaches. This creates quite an interesting effect, but it is cancelled out by the Constant Glow
setting of Render FX
, if you prefer that.
I've placed two little nozzle-like things near the pipe. Pressing the button that is on the opposite wall will activate an explosion sprite over both nozzles. The sprite on the right is using Additive
, and the left one is using Glow
without Constant Glow
set. You can see that Additive
mode is more suited to this purpose. It also demonstrates the one case in which is is okay to use orientation-specific sprites - perhaps if the explosion occurred behind a window or something it would be even better - providing the player can't get to the sprite before the sequence is over.
You will notice that the Play Once
flag is set on
for these two sprites, which stops them from looping. They also have names (explo
), which is the target
of the switch. I've set the switch's reset delay
to a value higher than the length of time that the sprites play for to prevent any problems.
You might want to try out the other Render Mode
and Render FX
settings. Some of them are designed to be used with solids (and models), rather than sprites, but you can see what they do anyway.