[crossfire] lighting & LOS redo.
Mark Wedel
mwedel at sonic.net
Sun May 21 01:28:28 CDT 2006
Now that I've finished the map2 command, bringing up the idea of lighting
redo. As doing part of that, I've thought up some new issues.
But first, summary of proposed changes - most of these are from discussion
last summer. Note that all are not likely to be done at the same time, and this
list in no way represents that order they will be done in. In fact, the
ordering of this list is basically random
1) Increase number of lighting levels from 4 to 12.
2) Calculate light levels as a map attribute, and not part of player LOS (this
will make things more efficient.)
3) Add ambient light level attribute to map header, which says what basic
lighting level on all spaces is (dimly lit rooms).
4) Change meaning of darkness map header (should change name - light_threshold?)
- if space is below that light level, space can not be seen
5) Have walls block light (note that the wall itself will be illuminated, so for
single thickness wall, this still won't look very good). The idea was brought
up of walls being lit base on where the light source is relative to the player -
if the lightsource was on the opposite side of the wall from the player, it
doesn't illuminate the wall. I think this is doable.
6) Add partial blocking to terrain (or other objects) - for example, jungle
might have a value of 3, so everything beyond the first space is darker,
everything beyond the second space is darker still, and and some point, can't
see any further. This is done basically by darkness.
7) Add colored lighting. Note that this is opaque to the server - it doesn't
care what the color of the light is - it just passes that info to the client to
do with it what it wants. Note that handling more than 1 light source/space
adds a bunch of complication, so my thought is the brightest light source on a
space is the one that is sent. One question is then what form to use for the
color - using the crossfire built in colors is pretty limiting (and probably is
not a good enough representation). One thought might be 6 bit RGB value, as it
is compact and probably still provides a good enough resolution (you're unlikely
to need a dim green value - I'd think that in most cases you want pretty
saturated values).
8) Light source information is sent to the client, and not actual darkness of
each space. The color of the light is also sent. Light values could be
negative to denote that the space partially blocks the light. Out of view light
sources are sent to the client if they illuminate a space the client can see.
Also, this will also have to be used to denote spaces that block all light (eg
walls)
More information about the crossfire
mailing list