112 lines
5.0 KiB
Plaintext
112 lines
5.0 KiB
Plaintext
$Id: weather 5941 2007-04-05 22:14:24Z akirschbaum $
|
|
Guide to basic crossfire weather system:
|
|
|
|
1) As a DM, how do I turn on the weather?
|
|
|
|
In your settings file, there are a few settings that affect weather. To
|
|
turn on weather, you must turn on the worldmap* settings. Simply
|
|
uncomment them, and leave them as the defaults. Second, you want to set
|
|
dynamiclevel to something you are happy with:
|
|
|
|
Dynamiclevel:
|
|
|
|
0) No weather.
|
|
1) Weather happens, players are affected, but there are no visual cues.
|
|
2) Weather creates visual effects on the map, like puddles, rain, fog, etc.
|
|
3) Weather creates items on the map, like herbs, flowers, apples in
|
|
trees, etc. Possibly trees defoliate in the winter, etc.
|
|
4) Rivers and lakes will appear as a product of rainfall, snowmelt.
|
|
5) The map will be entirely dynamic. Trees and deserts will appear
|
|
depending on the weather conditions in those areas.
|
|
|
|
When you first start the weather system, it will generate all the basic
|
|
maps for the weather. These maps are located in your var directory.
|
|
Each map will contain data for the world on things like elevation,
|
|
humidity, sky conditions, temperature, etc. The initial generation of
|
|
the elevation, water and humidity maps takes about 30 minutes on a fast
|
|
machine. You will only have to suffer through this once, unless you
|
|
delete one of those maps. If you delete one, it is advised to delete all
|
|
three of those, as they are generated in one pass. If you feel some part
|
|
of the weather has gone out of control, you can delete the maps at any
|
|
time, and regenerate them at startup.
|
|
|
|
As the game sits idle, it will slowly process the worldmap, adding
|
|
weather. For a newly started server, this can lead to blockiness in the
|
|
weather. It is advised that you set the fastclock setting to 1, and run
|
|
the game for an hour or two (without players), to let the weather smooth
|
|
out. As it runs, it will depost overlay maps of the world in
|
|
var/maps/world. When you have 900 of these, it has made one pass. It's
|
|
not advised to run the game in fastclock mode normally.
|
|
|
|
If you want to see the weather visually, compile the "maps" program in
|
|
the utils directory. (gcc -o maps maps.c). Go to your var directory,
|
|
and run it there. It will process your *map files, and generate ppm's
|
|
you can look at, to see the weather formations.
|
|
|
|
|
|
2) How does the weather work?
|
|
|
|
There are two types of things in the weather system. Computed values,
|
|
and random values.
|
|
|
|
Pressure is the only random value.
|
|
|
|
The world is divided into a 100x100 grid of "weathermap squares" (WM). Each
|
|
square is computed every game hour.
|
|
|
|
The game computes humidity by looking at the amount of water in the
|
|
current WM. It then compares the pressure of nearby squares, to compute
|
|
wind direction and speed. Humidity is pushed to nearby squares, via the
|
|
wind. The temperature is mostly static, but is computed by the distance
|
|
from the poles (NW and SE corners of the map) and the current season. In
|
|
addition, the elevation of the area is taken into effect, as is
|
|
windspeed. The equator moves up and down the map, as the seasons change,
|
|
to simulate a reverse season for north and south hemispheres.
|
|
|
|
Once the game has all of these values, it compares them against
|
|
eachother, and computes the sky conditions for the current WM. After
|
|
computing the sky conditions, the game then performs the actual changes
|
|
(if any) to the maps.
|
|
|
|
Changes to the map occur under two conditions: 1) The map was entered
|
|
by a player. 2) The game loads and saves 1 tile per game hour, slowly
|
|
moving across the world.
|
|
|
|
3) I want to make a special snow to cover "some arch".
|
|
|
|
Look at the table at the beginning of weather.c. Add your special snow,
|
|
and the name of the arch to that table. Also, add your snowtype to the
|
|
avoidance table, to allow it to melt, and avoid the game double-stacking
|
|
the snow on your square.
|
|
|
|
4) Can we make spells to affect weather?
|
|
|
|
Yes. But remember that the game is constantly recalculating the
|
|
weather. If you want something that will affect an area of the world for
|
|
a long period of time, you will need to modify the weather code to
|
|
special case that. Temperature, for example, is constantly recalculated,
|
|
your spell will only work for 1 game hour.
|
|
|
|
That being said.. some amount of player fiddling can be done without
|
|
special code. For example, if you were to crank the pressure of a WM
|
|
square up really high, and put the humidity of that square at 100%, over
|
|
a few game hours, that square would essentially become the eye of a
|
|
storm, as the wind would pick up moving outwards from it, spreading the
|
|
humidity. Eventually, the game will flatten it out on it's own, but
|
|
there will be a lingering effect for many hours to come. Feel free to
|
|
experiment with such things.
|
|
|
|
Things that are recaulculated:
|
|
temperature
|
|
sky conditions
|
|
|
|
Things that are smoothed/spread:
|
|
humidity
|
|
pressure
|
|
wind
|
|
|
|
I advise that you do not mess with the elevation or water maps, as those
|
|
are not recalculated over time. If you change the water % of a WM
|
|
square, and don't put it back, it will stay that way until the DM deletes
|
|
the watermap and regenerates.
|