Special
Sprites
I
learned recently from a fellow mapper that there are actually different
kinds of sprites one can use in Half-Life. By different, I mean
that they act differently in-game in how they present their "faces"
to players. As you know, "normal" sprites always face the
player, no matter the direction from which they are looking at it. This
can cause problems when you use sprites to create fire, for example,
as the sprite looks weird when viewed from above or below:
When I learned that
sprites can be altered so that they act differently, I was interested
because I wanted a fire sprite that didn't mess up like this! Luckily,
there is a way to do this.
First of all, there
are four kinds of sprites:
Ordinary Sprite
(02): Always faces the player, even when seen from above. Most HL sprites
are this way.
Side-View Sprite
(00): This kind of sprite always faces the player, but will not rotate
on the z-axis. It allows you to avoid the visual bug above.
Fixed-Direction
Sprite
(03): This kind of sprite always faces a certain direction, regardless
of player location. The direction it faces can be set in "angles"
the env_sprite's Properties box.
Flipper Sprite
(01): This kind of sprite acts like a side-view sprite, except when
a player approaches closely it rotates to face a certain direction (set
in the angles I think). Not sure what this would be good for to be honest...
Ok, so how do you
change an ordinary sprite to behave in one of these new ways? Basically
you open up the .spr file in a hex
editor and alter just one value. The value we are interested in
is byte 9, boxed in red here:
The values associated
with each kind of sprite are in parentheses in their descriptions above.
As you can see, this default HL fire sprite is set to "02"
because it is a normal sprite. By changing that value, you can change
the sprite's behavior. "00" is a good setting for fire, so
that it doesn't look so weird viewed from above.
So what use is this?
For me I was mostly interested in getting a better fire sprite. However,
side-view and fixed-direction sprites might be helpful if you want to
use sprites for more than lense-flares! Some objects like bushes might
be done more effectively as sprites this way. This lets you do rising
smoke/steam better too. Also, you might use an animated sprite rather
than an animated texture in some situations; you can, for example, control
the animation speed of a sprite whereas you cannot with "+"
textures. Basically, be creative!
I put together a zip with special versions
of several HL sprites- including the fire sprites! Each comes in both
a "side-view" and "fixed-direction" flavor. Each
sprite has a prefix in its name with a number that tells what the Hex
value is. So "jx0fire.spr" is the HL "fire.spr"
set to "side-view" mode. I included one "01" Flipper
sprite for people to look at.
Files and Links:
Jinx's
Sprite Pack
Hex
Editor
Sprite
Viewer
Sprite
Wizard
Kman's
Sprite Tutorial
Wavelength
Sprite Tutorial
Vlatitude's
Sprite List
Special thanks to
Banana
for teaching me about this, and D-Fender for helping me with the Hex
Editor!