1 |
$Id: weather,v 1.1 2002/11/26 23:25:49 garbled Exp $ |
2 |
Guide to basic crossfire weather system: |
3 |
|
4 |
1) As a DM, how do I turn on the weather? |
5 |
|
6 |
In your settings file, there are a few settings that affect weather. To |
7 |
turn on weather, you must turn on the worldmap* settings. Simply |
8 |
uncomment them, and leave them as the defaults. Second, you want to set |
9 |
dynamiclevel to something you are happy with: |
10 |
|
11 |
Dynamiclevel: |
12 |
|
13 |
0) No weather. |
14 |
1) Weather happens, players are affected, but there are no visual cues. |
15 |
2) Weather creates visual effects on the map, like puddles, rain, fog, etc. |
16 |
3) Weather creates items on the map, like herbs, flowers, apples in |
17 |
trees, etc. Possibly trees defoliate in the winter, etc. |
18 |
4) Rivers and lakes will appear as a product of rainfall, snowmelt. |
19 |
5) The map will be entirely dynamic. Trees and deserts will appear |
20 |
depending on the weather conditions in those areas. |
21 |
|
22 |
When you first start the weather system, it will generate all the basic |
23 |
maps for the weather. These maps are located in your var directory. |
24 |
Each map will contain data for the world on things like elevation, |
25 |
humidity, sky conditions, temperature, etc. The initial generation of |
26 |
the elevation, water and humidity maps takes about 30 minutes on a fast |
27 |
machine. You will only have to suffer through this once, unless you |
28 |
delete one of those maps. If you delete one, it is advised to delete all |
29 |
three of those, as they are generated in one pass. If you feel some part |
30 |
of the weather has gone out of control, you can delete the maps at any |
31 |
time, and regenerate them at startup. |
32 |
|
33 |
As the game sits idle, it will slowly process the worldmap, adding |
34 |
weather. For a newly started server, this can lead to blockiness in the |
35 |
weather. It is advised that you set the fastclock setting to 1, and run |
36 |
the game for an hour or two (without players), to let the weather smooth |
37 |
out. As it runs, it will depost overlay maps of the world in |
38 |
var/maps/world. When you have 900 of these, it has made one pass. It's |
39 |
not advised to run the game in fastclock mode normally. |
40 |
|
41 |
If you want to see the weather visually, compile the "maps" program in |
42 |
the utils directory. (gcc -o maps maps.c). Go to your var directory, |
43 |
and run it there. It will process your *map files, and generate ppm's |
44 |
you can look at, to see the weather formations. |
45 |
|
46 |
|
47 |
2) How does the weather work? |
48 |
|
49 |
There are two types of things in the weather system. Computed values, |
50 |
and random values. |
51 |
|
52 |
Pressure is the only random value. |
53 |
|
54 |
The world is divided into a 100x100 grid of "weathermap squares" (WM). Each |
55 |
square is computed every game hour. |
56 |
|
57 |
The game computes humidity by looking at the amount of water in the |
58 |
current WM. It then compares the pressure of nearby squares, to compute |
59 |
wind direction and speed. Humidity is pushed to nearby squares, via the |
60 |
wind. The temperature is mostly static, but is computed by the distance |
61 |
from the poles (NW and SE corners of the map) and the current season. In |
62 |
addition, the elevation of the area is taken into effect, as is |
63 |
windspeed. The equator moves up and down the map, as the seasons change, |
64 |
to simulate a reverse season for north and south hemispheres. |
65 |
|
66 |
Once the game has all of these values, it compares them against |
67 |
eachother, and computes the sky conditions for the current WM. After |
68 |
computing the sky conditions, the game then performs the actual changes |
69 |
(if any) to the maps. |
70 |
|
71 |
Changes to the map occur under two conditions: 1) The map was entered |
72 |
by a player. 2) The game loads and saves 1 tile per game hour, slowly |
73 |
moving across the world. |
74 |
|
75 |
3) I want to make a special snow to cover "some arch". |
76 |
|
77 |
Look at the table at the beginning of weather.c. Add your special snow, |
78 |
and the name of the arch to that table. Also, add your snowtype to the |
79 |
avoidance table, to allow it to melt, and avoid the game double-stacking |
80 |
the snow on your square. |
81 |
|
82 |
4) Can we make spells to affect weather? |
83 |
|
84 |
Yes. But remember that the game is constantly recalculating the |
85 |
weather. If you want something that will affect an area of the world for |
86 |
a long period of time, you will need to modify the weather code to |
87 |
special case that. Temperature, for example, is constantly recalculated, |
88 |
your spell will only work for 1 game hour. |
89 |
|
90 |
That being said.. some amount of player fiddling can be done without |
91 |
special code. For example, if you were to crank the pressure of a WM |
92 |
square up really high, and put the humidity of that square at 100%, over |
93 |
a few game hours, that square would essentially become the eye of a |
94 |
storm, as the wind would pick up moving outwards from it, spreading the |
95 |
humidity. Eventually, the game will flatten it out on it's own, but |
96 |
there will be a lingering effect for many hours to come. Feel free to |
97 |
experiment with such things. |
98 |
|
99 |
Things that are recaulculated: |
100 |
temperature |
101 |
sky conditions |
102 |
|
103 |
Things that are smoothed/spread: |
104 |
humidity |
105 |
pressure |
106 |
wind |
107 |
|
108 |
I advise that you do not mess with the elevation or water maps, as those |
109 |
are not recalculated over time. If you change the water % of a WM |
110 |
square, and don't put it back, it will stay that way until the DM deletes |
111 |
the watermap and regenerates. |