ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/config.h
(Generate patch)

Comparing deliantra/server/include/config.h (file contents):
Revision 1.17 by root, Wed May 31 23:30:56 2006 UTC vs.
Revision 1.35 by pippijn, Sat Jan 6 14:42:30 2007 UTC

1/*
2 * static char *rcsid_config_h =
3 * "$Id: config.h,v 1.17 2006/05/31 23:30:56 root Exp $";
4 */
5
6/* 1/*
7 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
8 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
9 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
10 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
11 7
12 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
21 17
22 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 21
26 The authors can be reached via e-mail at crossfire-devel@real-time.com 22 The authors can be reached via e-mail at crossfire@schmorp.de
27*/ 23*/
28 24
29/* This file contains various #defines that select various options. 25/* This file contains various #defines that select various options.
30 * Some may not be desirable, and some just may not work. 26 * Some may not be desirable, and some just may not work.
31 * 27 *
71 * DEBUG - more verbose message logging? 67 * DEBUG - more verbose message logging?
72 * MAP_CLIENT_X, MAP_CLIENT_Y - determines max size client map will receive 68 * MAP_CLIENT_X, MAP_CLIENT_Y - determines max size client map will receive
73 * MAX_TIME - how long an internal tick is in microseconds 69 * MAX_TIME - how long an internal tick is in microseconds
74 * MANY_CORES - generate core dumps on gross errors instead of continuing? 70 * MANY_CORES - generate core dumps on gross errors instead of continuing?
75 * PARTY_KILL_LOG - stores party kill information 71 * PARTY_KILL_LOG - stores party kill information
76 * WATCHDOG - allows use of an external watchdog program
77 * 72 *
78 ***********************************************************************/ 73 ***********************************************************************/
79 74
80/* Use a very easy, non-challenging server? 75/* Use a very easy, non-challenging server?
81 * Defining the COZY_SERVER will make the server much less challenging: 76 * Defining the COZY_SERVER will make the server much less challenging:
137#define SIMPLE_EXP TRUE 132#define SIMPLE_EXP TRUE
138#define SPELLPOINT_LEVEL_DEPEND TRUE 133#define SPELLPOINT_LEVEL_DEPEND TRUE
139#define SPELL_ENCUMBRANCE TRUE 134#define SPELL_ENCUMBRANCE TRUE
140#define SPELL_FAILURE_EFFECTS FALSE 135#define SPELL_FAILURE_EFFECTS FALSE
141#define REAL_WIZ TRUE 136#define REAL_WIZ TRUE
142#define RECYCLE_TMP_MAPS FALSE
143#define RESURRECTION FALSE 137#define RESURRECTION FALSE
144#define SEARCH_ITEMS TRUE 138#define SEARCH_ITEMS TRUE
145#define NOT_PERMADETH TRUE 139#define NOT_PERMADETH TRUE
146#define EXPLORE_MODE FALSE 140#define EXPLORE_MODE FALSE
147#define STAT_LOSS_ON_DEATH FALSE 141#define STAT_LOSS_ON_DEATH FALSE
163 * and so on.) This can be very useful if you are trying to measure 157 * and so on.) This can be very useful if you are trying to measure
164 * server/bandwidth usage. It will periodially dump out information 158 * server/bandwidth usage. It will periodially dump out information
165 * which contains usage stats for the last X amount of time. 159 * which contains usage stats for the last X amount of time.
166 * CS_LOGTIME is how often it will print out stats. 160 * CS_LOGTIME is how often it will print out stats.
167 */ 161 */
168#ifndef WIN32 /* ***win32 we set the following stuff in the IDE */
169#define CS_LOGSTATS 162#define CS_LOGSTATS
170#endif
171#ifdef CS_LOGSTATS
172#define CS_LOGTIME 600 163#define CS_LOGTIME 600
173#endif
174 164
175/* DEBUG generates copious amounts of output. I tend to change the CC options 165/* DEBUG generates copious amounts of output. I tend to change the CC options
176 * in the crosssite.def file if I want this. By default, you probably 166 * in the crosssite.def file if I want this. By default, you probably
177 * dont want this defined. 167 * dont want this defined.
178 */ 168 */
179#ifndef WIN32 /* ***win32 we set the following stuff in the IDE */
180#ifndef DEBUG 169#ifndef DEBUG
181#define DEBUG 170#define DEBUG
182#endif
183#endif 171#endif
184/* 172/*
185 * This option creates more core files. In some areas, there are certain 173 * This option creates more core files. In some areas, there are certain
186 * checks done to try and make the program more stable (ie, check 174 * checks done to try and make the program more stable (ie, check
187 * parameter for null, return if it is). These checks are being done 175 * parameter for null, return if it is). These checks are being done
232 */ 220 */
233#define NO_POLYMORPH 221#define NO_POLYMORPH
234 222
235 223
236/* This determine how many entries are stored in the kill log. You 224/* This determine how many entries are stored in the kill log. You
237 * can see this information with the 'party kills' command. More entries 225 * can see this information with the 'party kills' command. More entries
238 * mean slower performance and more memory. IF this is not defined, then 226 * mean slower performance and more memory.
239 * this feature is disabled.
240 */ 227 */
241#define PARTY_KILL_LOG 20 228#define PARTY_KILL_LOG 40
242 229
243/* 230/*
244 * The PERM_EXP values adjust the behaviour of permenent experience. - if 231 * The PERM_EXP values adjust the behaviour of permenent experience. - if
245 * the setting permanent_experience_percentage is zero, these values have 232 * the setting permanent_experience_percentage is zero, these values have
246 * no meaning. The value in the settings file is the percentage of the 233 * no meaning. The value in the settings file is the percentage of the
263 */ 250 */
264/* GD */ 251/* GD */
265 252
266#define PERM_EXP_GAIN_RATIO 0.10f 253#define PERM_EXP_GAIN_RATIO 0.10f
267#define PERM_EXP_MAX_LOSS_RATIO 0.50f 254#define PERM_EXP_MAX_LOSS_RATIO 0.50f
268
269/*
270 * WATCHDOG lets sends datagrams to port 13325 on localhost
271 * in (more-or-less) regular intervals, so an external watchdog
272 * program can kill the server if it hangs (for whatever reason).
273 * It shouldn't hurt anyone if this is defined but you don't
274 * have an watchdog program.
275 */
276#ifndef WIN32 /* ***win32 disable watchdog as win32 default */
277#define WATCHDOG
278#endif
279
280 255
281/* Enable the new material code - it needs some work. You can 256/* Enable the new material code - it needs some work. You can
282 * enable this, and things will work, just you'll see a whole 257 * enable this, and things will work, just you'll see a whole
283 * bunch more materials show up, and thus a whole bunch more materials 258 * bunch more materials show up, and thus a whole bunch more materials
284 * in your inventory, and the sorting for them isn't really good. 259 * in your inventory, and the sorting for them isn't really good.
347 * SHUTDOWN - used when shutting down the server 322 * SHUTDOWN - used when shutting down the server
348 * SOCKETBUFSIZE - size of buffer used internally by the server for storing 323 * SOCKETBUFSIZE - size of buffer used internally by the server for storing
349 * backlogged messages. 324 * backlogged messages.
350 * TMPDIR - directory to use for temp files 325 * TMPDIR - directory to use for temp files
351 * UNIQUE_DIR - directory to put unique item files into 326 * UNIQUE_DIR - directory to put unique item files into
352 * USE_CALLOC for some memory requests
353 *********************************************************************** 327 ***********************************************************************
354 */ 328 */
355 329
356/* 330/*
357 * BANFILE - file used to ban certain sites from playing. See the example 331 * BANFILE - file used to ban certain sites from playing. See the example
358 * ban_file for examples. 332 * ban_file for examples.
359 */ 333 */
360
361#ifndef BANFILE 334#ifndef BANFILE
362#define BANFILE "ban_file" 335#define BANFILE "ban_file"
363#endif 336#endif
364 337
365/* CSPORT is the port used for the new client/server code. Change 338/* CSPORT is the port used for the new client/server code. Change
366 * if desired. Only of relevance if ERIC_SERVER is set above 339 * if desired. Only of relevance if ERIC_SERVER is set above
367 */ 340 */
368
369#define CSPORT 13327 /* old port + 1 */ 341#define CSPORT 13327 /* old port + 1 */
370 342
371 343
372/* 344/*
373 * DMFILE 345 * DMFILE
374 * A file containing valid names that can be dm, one on each line. See 346 * A file containing valid names that can be dm, one on each line. See
375 * example dm_file for syntax help. 347 * example dm_file for syntax help.
376 */ 348 */
377
378#ifndef DMFILE 349#ifndef DMFILE
379#define DMFILE "dm_file" 350#define DMFILE "dm_file"
380#endif 351#endif
381 352
382 353
383/* LOGFILE specifies which file to log to when playing with the 354/* LOGFILE specifies which file to log to when playing with the
384 * -daemon option. 355 * -daemon option.
385 */ 356 */
386
387#ifndef LOGFILE 357#ifndef LOGFILE
388#ifdef WIN32 /* change define path */
389#define LOGFILE "var\\crossfire.log"
390#else
391#define LOGFILE "/var/log/crossfire/logfile" 358#define LOGFILE "/var/log/crossfire/logfile"
392#endif 359#endif
393#endif
394
395/*
396 * MAP_MAXTIMEOUT tells the maximum of ticks until a map is swapped out
397 * after a player has left it. If it is set to 0, maps are
398 * swapped out the instant the last player leaves it.
399 * If you are low on memory, you should set this to 0.
400 * Note that depending on the map timeout variable, the number of
401 * objects can get quite high. This is because depending on the maps,
402 * a player could be having the objects of several maps in memory
403 * (the map he is in right now, and the ones he left recently.)
404 * Each map has it's own TIMEOUT value and value field and it is
405 * defaulted to 300
406 *
407 * Having a nonzero value can be useful: If a player leaves a map (and thus
408 * is on a new map), and realizes they want to go back pretty quickly, the
409 * old map is still in memory, so don't need to go disk and get it.
410 *
411 * MAP_MINTIMEOUT is used as a minimum timeout value - if the map is set
412 * to swap out in less than that many ticks, we use the MINTIMEOUT value
413 * velow. If MINTIMEOUT > MAXTIMEOUT, MAXTIMEOUT will be used for all
414 * maps.
415 */
416
417/* How many ticks till maps are swapped out */
418#define MAP_MAXTIMEOUT 500
419/* At least that many ticks before swapout */
420#define MAP_MINTIMEOUT 300
421
422/*
423 * MAP_MAXRESET is the maximum time a map can have before being reset. It
424 * will override the time value set in the map, if that time is longer than
425 * MAP_MAXRESET. This value is in seconds. If you are low on space on the
426 * TMPDIR device, set this value to somethign small. The default
427 * value in the map object is MAP_DEFAULTRESET (given in seconds.)
428 * I personally like 1 hour myself, for solo play. It is long enough that
429 * maps won't be resetting as a solve a quest, but short enough that some
430 * maps (like shops and inns) will be reset during the time I play.
431 * Comment out MAP_MAXRESET time if you always want to use the value
432 * in the map archetype.
433 */
434
435/* Maximum time to reset. */
436#define MAP_MAXRESET 7200
437/* Default time to reset. */
438#define MAP_DEFAULTRESET 7200
439
440/*
441 * MAX_OBJECTS is no hard limit. If this limit is exceeded, crossfire
442 * will look for maps which are already scheldued for swapping, and
443 * promptly swap them out before new maps are being loaded.
444 * If playing only by yourself, this number can probably be as low as
445 * 3000. If in server mode, probably figure about 1000-2000 objects per
446 * active player (if they typically play on different maps), for some guess
447 * on how many to define. If it is too low, maps just get swapped out
448 * immediately, causing a performance hit. If it is too high, the program
449 * consumes more memory. If you have gobs of free memory, a high number
450 * might not be a bad idea. Each object is around 350 bytes right now.
451 * 25000 is about 8.5 MB
452 */
453
454#define MAX_OBJECTS 200000
455
456/*
457 * Max objects low water mark (lwm). If defined, the map swapping strategy
458 * is a bit different:
459 * 1) We only start swapping maps if the number of objects in use is
460 * greater than MAX_OBJECTS above.
461 * 2) We keep swapping maps until there are no more maps to swap or the number
462 * of used objects drop below this low water mark value.
463 *
464 * If this is not defined, maps are swapped out on the timeout value above,
465 * or if the number of objects used is greater than MAX_OBJECTS above.
466 *
467 * Note: While this will prevent the pauses noticed when saving maps, there
468 * can instead be cpu performance penalties - any objects in memory get
469 * processed. So if there are 4000 objects in memory, and 1000 of them
470 * are living objects, the system will process all 1000 objects each tick.
471 * With swapping enable, maybe 600 of the objects would have gotten swapped
472 * out. This is less likely a problem with a smaller number of MAX_OBJECTS
473 * than if it is very large.
474 * Also, the pauses you do get can be worse, as if you enter a map with
475 * a lot of new objects and go above MAX_OBJECTS, it may have to swap out
476 * many maps to get below the low water mark.
477 */
478
479/*#define MAX_OBJECTS_LWM MAX_OBJECTS/2*/
480
481/*
482 * Turning on MEMORY_DEBUG slows down execution, but makes it easier
483 * to find memory corruption and leaks. Currently, the main thing
484 * that happens with this activated is that one malloc is done for
485 * each object - thus whatever debugging mechanism the malloc library
486 * (or other debugging tool provides, like purify), it can track this
487 * individual malloc. Default behaviour when turned off is that
488 * enough memory is malloced for a large group of objects so malloc does
489 * not need to be called as often.
490 * This should only be turned on if some form of memory debugging tool
491 * is being used - otherwise, turning this on will cause some performance
492 * hit with no useful advantage.
493 */
494
495/*#define MEMORY_DEBUG*/
496
497 360
498/* 361/*
499 * If you want to have a Message Of The Day file, define MOTD to be 362 * If you want to have a Message Of The Day file, define MOTD to be
500 * the file with the message. If the file doesn't exist or if it 363 * the file with the message. If the file doesn't exist or if it
501 * is empty, no message will be displayed. 364 * is empty, no message will be displayed.
502 * (It resides in the CONFDIR directory) 365 * (It resides in the CONFDIR directory)
503 */ 366 */
504
505#define MOTD "motd" 367#define MOTD "motd"
506 368
507/* 369/*
508 * You can restrict playing in certain times by creating a PERMIT_FILE 370 * You can restrict playing in certain times by creating a PERMIT_FILE
509 * in CONFDIR. See the sample for usage notes. 371 * in CONFDIR. See the sample for usage notes.
510 */ 372 */
511
512#define PERM_FILE "forbid" 373#define PERM_FILE "forbid"
513 374
514/* 375/*
515 * If you want to take the game down while installing new versions, or 376 * If you want to take the game down while installing new versions, or
516 * for other reasons, put a message into the SHUTDOWN_FILE file. 377 * for other reasons, put a message into the SHUTDOWN_FILE file.
517 * Remember to delete it when you open the game again. 378 * Remember to delete it when you open the game again.
518 * (It resides in the CONFDIR directory) 379 * (It resides in the CONFDIR directory)
519 */ 380 */
520
521#ifndef SHUTDOWN_FILE 381#ifndef SHUTDOWN_FILE
522#define SHUTDOWN_FILE "shutdown" 382#define SHUTDOWN_FILE "shutdown"
523#endif 383#endif
524 384
525 385
531 * large. When the OS buffer and this buffer is exhausted, the server 391 * large. When the OS buffer and this buffer is exhausted, the server
532 * will drop the client connection for falling too far behind. So if 392 * will drop the client connection for falling too far behind. So if
533 * you have very slow client connections, a larger value may be 393 * you have very slow client connections, a larger value may be
534 * warranted. 394 * warranted.
535 */ 395 */
536
537#define SOCKETBUFSIZE 128*1024 396#define SOCKETBUFSIZE 256*1024
538 397
539/* 398/*
540 * Your tmp-directory should be large enough to hold the uncompressed 399 * Your tmp-directory should be large enough to hold the uncompressed
541 * map-files for all who are playing. 400 * map-files for all who are playing. Local to 'lib' directory.
542 * It ought to be locally mounted, since the function used to generate
543 * unique temporary filenames isn't guaranteed to work over NFS or AFS
544 * On the other hand, if you know that only one crossfire server will be
545 * running using this temporary directory, it is likely to be safe to use
546 * something that is NFS mounted (but performance may suffer as NFS is
547 * slower than local disk)
548 */ 401 */
549
550/*#define TMPDIR "/home/hugin/a/crossfire/crossfire/tmp"*/
551#ifdef WIN32 /* change define path tmp */
552#define TMPDIR "tmp" 402#define TMPDIR "tmp"
553#else
554#define TMPDIR "/tmp"
555#endif
556 403
557 404
558/* Directory to use for unique items. This is placed into the 'lib' 405/* Directory to use for unique items. This is placed into the 'lib'
559 * directory. Changing this will cause any old unique items file 406 * directory. Changing this will cause any old unique items file
560 * not to be used. 407 * not to be used.
561 */ 408 */
562#define UNIQUE_DIR "unique-items" 409#define UNIQUE_DIR "unique-items"
563
564/*
565 * If undefined, malloc is always used.
566 * It looks like this can be oboleted. However, it can be useful to
567 * track down some bugs, as it will make sure that the entire data structure
568 * is set to 0, at the expense of speed.
569 * Rupert Goldie has run Purify against the code, and if this is disabled,
570 * apparantly there are a lot of uninitialized memory reads - I haven't
571 * seen any problem (maybe the memory reads are copies, and the destination
572 * doesn't actually use the garbage values either?), but the impact on speed
573 * of using this probably isn't great, and should make things more stable.
574 * Msw 8-9-97
575 */
576#define USE_CALLOC
577
578
579/*
580 * These define the players starting map and location on that map, and where
581 * emergency saves are defined. This should be left as is unless you make
582 * major changes to the map.
583 */
584
585#ifdef WIN32 /* change define path city */
586
587# define EMERGENCY_MAPPATH "\\city\\city"
588# define EMERGENCY_X 15
589# define EMERGENCY_Y 19
590#else
591# define EMERGENCY_MAPPATH "/city/city"
592# define EMERGENCY_X 15
593# define EMERGENCY_Y 19
594#endif
595
596 410
597/* 411/*
598 * These defines tells where, relative to LIBDIR, the maps, the map-index, 412 * These defines tells where, relative to LIBDIR, the maps, the map-index,
599 * archetypes highscore and treaures files and directories can be found. 413 * archetypes highscore and treaures files and directories can be found.
600 */ 414 */
604#define ARCHETYPES "archetypes" 418#define ARCHETYPES "archetypes"
605#define REGIONS "regions" 419#define REGIONS "regions"
606#define HIGHSCORE "highscore" 420#define HIGHSCORE "highscore"
607#define TREASURES "treasures" 421#define TREASURES "treasures"
608#define BANISHFILE "banish_file" 422#define BANISHFILE "banish_file"
609
610#define MAX_ERRORS 25 /* Bail out if more are received during tick */
611#define STARTMAX 4000 /* How big array of objects to start with */
612#define OBJ_EXPAND 500 /* How big steps to use when expanding array */
613 423
614#define HIGHSCORE_LENGTH 1000 /* How many entries there are room for */ 424#define HIGHSCORE_LENGTH 1000 /* How many entries there are room for */
615 425
616#define ARCHTABLE 16384 /* Arch hashtable size */ 426#define ARCHTABLE 16384 /* Arch hashtable size */
617#define MAXSTRING 20 427#define MAXSTRING 20
656 */ 466 */
657/* IMPORTANT: there is a race during saving, where the umask is being applied */ 467/* IMPORTANT: there is a race during saving, where the umask is being applied */
658#define SAVE_MODE 0660 468#define SAVE_MODE 0660
659#define SAVE_DIR_MODE 0770 469#define SAVE_DIR_MODE 0770
660 470
661/* NOTE ON SAVE_INTERVAL and AUTOSAVE: Only one of these two really
662 * needs to be selected. You can set both, and things will work fine,
663 * however, it just means that a lot more saving will be done, which
664 * can slow things down some.
665 */
666
667/* How often (in seconds) the player is saved if he drops things. If it is
668 * set to 0, the player will be saved for every item he drops. Otherwise,
669 * if the player drops and item, and the last time he was saved
670 * due to item drop is longer
671 * the SAVE_INTERVAL seconds, he is then saved. Depending on your playing
672 * environment, you may want to set this to a higher value, so that
673 * you are not spending too much time saving the characters.
674 * This option should now work (Crossfire 0.90.5)
675 */
676
677//#define SAVE_INTERVAL 60
678
679/* 471/*
680 * AUTOSAVE saves the player every AUTOSAVE ticks. A value of 472 * AUTOSAVE saves the player every AUTOSAVE ticks. A value of
681 * 5000 with MAX_TIME set at 120,000 means that the player will be 473 * 5000 with MAX_TIME set at 120,000 means that the player will be
682 * saved every 10 minutes. Some effort should probably be made to 474 * saved every 10 minutes. Some effort should probably be made to
683 * spread out these saves, but that might be more effort than it is 475 * spread out these saves, but that might be more effort than it is
687 * saves pretty well spread out (in a fairly random fashion.) 479 * saves pretty well spread out (in a fairly random fashion.)
688 */ 480 */
689 481
690#define AUTOSAVE 1000 482#define AUTOSAVE 1000
691 483
692/* Often, emergency save fails because the memory corruption that caused
693 * the crash has trashed the characters too. Define NO_EMERGENCY_SAVE
694 * to disable emergency saves. This actually does
695 * prevent emergency saves now (Version 0.90.5).
696 */
697
698#define NO_EMERGENCY_SAVE
699
700/* By selecting the following, whenever a player does a backup save (with
701 * the 'save command), the player will be saved at home (EMERGENCY_MAP_*
702 * information that is specified later). IF this is not set, the player
703 * will be saved at his present location.
704 */
705
706/*#define BACKUP_SAVE_AT_HOME*/
707
708/* RESET_LOCATION_TIME is the number of seconds that must elapse before 484/* RESET_LOCATION_TIME is the number of seconds that must elapse before
709 * we will return the player to his savebed location. If this is zero, 485 * we will return the player to his savebed location. If this is zero,
710 * this feature is disabled (player will resume where ever he was 486 * this feature is disabled (player will resume where ever he was
711 * when he last logged off). If this is set to less than two hours, 487 * when he last logged off). If this is set to less than two hours,
712 * it will prevent players from camping out in treasure rooms. 488 * it will prevent players from camping out in treasure rooms.
722 * Set to one hour as default 498 * Set to one hour as default
723 */ 499 */
724 500
725#define RESET_LOCATION_TIME 3600 501#define RESET_LOCATION_TIME 3600
726 502
503/*
504 * The message to send to clients when the server calls cleanup (on crash, shutdown, restart and so on).
505 */
506#define CLEANUP_MESSAGE "The server will likely restart within the minute. Our apologies."
507

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines