/* ** This README explains some configuration file features and gotchas. First of ** all, if you are really stuck with a syntax error you can paste your config ** into the JSON validator at http://www.jsonlint.com. This will highlight ** exactly where the error is. This README file is also valid javascript, so ** editors with syntax highlighting will properly highlight it, however, ** comments are not valid JSON so this file cannot be used as a configuration ** file, nor can the configuration file itself contain comments. */ /*** Gotchas ** First of all, if you are really stuck with a syntax error you can paste your ** config into the JSON validator at http://www.jsonlint.com. This will ** highlight and explain exactly what the error is. **/ /**** Trailing Commas. ** The final member of Objects and Arrays cannot end with a comma. ** ** Wrong: ** ** "maps": ["map01", "map02",] ** ** Correct: ** ** "maps": ["map01", "map02"] */ /**** Quotes. ** Identifiers need to be surrounded with quotes. ** ** Wrong: ** ** maps: ["map01", "map02"] ** ** Correct: ** ** "maps": ["map01", "map02"] */ /**** Braces ** The entire configuration must be surrounded by braces "{}", and cannot end ** with a semicolon. */ /**** Backslashes ** If a string value contains a backslash, it must be escaped with a second ** backslash. This most commonly occurs when specifying paths on Windows. ** ** Wrong: ** ** "wad_folders": [ ** "C:\Users\TuMadre\Documents\WADs" ** ] ** ** Correct: ** ** "wad_folders": [ ** "C:\\Users\\TuMadre\\Documents\\WADs" ** ] */ /**** Duels ** If "game_type" is set to "duel", "max_players" will be forced to 2. This ** cannot be overridden, and "game_type" cannot be changed on a per-map basis. */ /*** Configuration Examples ** These examples come right out of the sample configuration file ** (server.json). */ { // Begin Configuration. /**** "masters" ** An array of all master servers to advertise on. This is not a required ** section and if omitted, no advertising will occur. ** ** Example: */ "masters": { "master.totaltrash.org": { "username": "ladna", "password": "0wn$u", "group": "totaltrash", "name": "duel1" }, "master.universe.net": { "username": "adam", "password": "ihavethepower", "group": "eternia", "name": "grayskull 1" } }, /**** "resources" ** An array of WADs and other resource files (DEH/BEX files for instance) that ** the server will load. The "alternates" option is optional, and provides an ** array of acceptable alternate resources. Normally clients cannot connect ** unless they load exactly the same resources as the server; this allows some ** freedom in that regard. Typically alternates are freedoom and various "vox" ** WADs. ** ** Example: */ "resources": [ { "name": "doom2.wad", "type": "iwad", "alternates": [ "freedoom.wad" ] }, "dwango5.wad", "judas23_.wad", "greenwar.wad", { "name": "zvox2.wad", "type": "wad", "alternates": [ "zvox4.wad", "facevox.wad" ] }, { "name": "420.deh", "type": "dehacked" } ], /* ** You'll notice that "dwango5.wad" and "greenwar.wad" are simple strings, ** compared to the full objects used for "doom2.wad", "zvox2.wad" and ** "420.deh". If your resource is a WAD (not an IWAD) and you aren't ** specifying any alternates for it, you can simply define it using a string. ** IWADs must be specified using the long format, and their type (obviously) ** must be "iwad". */ /**** "server" ** An object containing all the global server options, as in these options ** cannot be changed on a per-map basis in the "overrides" section. These ** options all have defaults and are optional. The "write_config_to" option ** deserves special mention; it will write the server's JSON configuration data ** (that clients use to connect to it) to the specified (full path) file. ** ** Authorization is fairly simple. Four authorization levels are provided: ** spectator, player, moderator and administrator. Spectators can connect and ** watch the game, but cannot join it. Players can join the game, but cannot ** use any RCON commands. Moderators can change maps and the map list, as well ** as kick and ban/unban players. Administrators can run all RCON commands. ** Setting "spectator_password" requires that players authenticate before they ** can even connect to the server. If "spectator_password" is set, but ** "player_password" isn't, then clients only need a password to connect, not ** play - any connected client can become a player. "moderator_password" and ** "administrator_password" are required; the server will quit with an error if ** they are not defined. ** ** A quick note about "max_clients" and "max_players": ** - "max_players" and "max_players_per_team" are map-specific options (can ** be changed on a per-map basis) and represent the maximum number of ** players that have "joined the game" or "joined the game on a team". ** Don't put "max_players" or "max_players_per_team" here in the server ** section, they belong below in options and maps. ** - If a player has passed through the queue and is eligible to play, but is ** spectating, a timer will start to tick. If the timer expires, the ** player is marked as AFK and the queue advances. This time limit is ** configurable using "join_time_limit". This does not affect spectators ** who are not yet eligible to play. ** ** The value for the "game" configuration option corresponds to a game folder ** found in the "base" folder, i.e. "plutonia", "heretic", "doom2", etc. ** ** Example: */ "server": { "hostname": ":: Eternity Server :: Duel 1", "address": "public", "port": 10666, "deathmatch": true, "teams": 0, "max_clients": 32, "join_time_limit": 5, "game": "doom2", "game_type": "duel", "buffer_client_commands": false, "randomize_maps": "no", "reset_if_no_players": true, "random_cyberdemon_spawn_rate": 0, "random_cyberdemon_spawn_limit": 0, "spectator_password": "cookie", "player_password": "monster", "moderator_password": "omnomnom", "administrator_password": "cookiecookiecookiestartswithc", "access_list": "/home/tumadre/ee/access_lists/duel1.json", "use_player_queue": false, "wad_folders": [ "/home/tumadre/Documents/WADs" ], "wad_repository": "http://static.totaltrash.org/wads", "write_config_to": "/home/tumadre/Documents/configs/duel1.json", "vote_commands": [ "random_map_number", {"name": "coinflip", "duration": 5} ] }, /**** "options" ** An object containing options that can be specified on a per-map basis. All ** of the options have defaults and all can be overriden per-map. The ** "bfg_type" option must be either "9000" (normal), "2704" (pre-beta), "11000" ** (slightly different from the original), "bouncing" (bounces from enemy to ** enemy) or "plasma burst". ** ** Example: */ "options": { // General Features "max_players": 2, "max_players_per_team": 8, "max_lives": 0, "dogs": 0, "skill": 5, "frag_limit": 50, "time_limit": 0, "score_limit": 0, "death_time_limit": 0, "death_time_expired_action": "respawn", "respawn_protection_time": 0, "friend_distance": 128, "bfg_type": "9000", "spawn_armor": true, "spawn_super_items": true, "respawn_health": false, "respawn_items": false, "respawn_armor": false, "respawn_super_items": false, "respawn_barrels": false, "spawn_monsters": false, "fast_monsters": false, "strong_monsters": false, "powerful_monsters": false, "respawn_monsters": false, "allow_exit": true, "kill_on_exit": true, "exit_to_same_level": false, "spawn_in_same_spot": false, "leave_keys": true, "leave_weapons": true, "drop_weapons": false, "drop_items": false, "keep_items_on_exit": false, "keep_keys_on_exit": false, // Newschool Features "allow_jump": false, "allow_freelook": false, "allow_crosshair": true, "allow_target_names": true, "allow_movebob_change": true, "use_oldschool_sound_cutoff": true, "allow_two_way_wallrun": true, "allow_no_weapon_switch_on_pickup": true, "allow_preferred_weapon_order": true, "silent_weapon_pickup": true, "allow_weapon_speed_change": false, "teleport_missiles": false, "instagib": false, "allow_chasecam": false, "follow_fragger_on_death": false, "spawn_farthest": false, "infinite_ammo": false, "enable_variable_friction": false, "enable_boom_push_effects": false, "enable_nukage": true, "allow_damage_screen_change": true, // Compatibility options "imperfect_god_mode": false, "time_limit_powerups": false, "normal_sky_when_invulnerable": false, "zombie_players_can_exit": false, "arch_viles_can_create_ghosts": false, "limit_lost_souls": false, "lost_souls_get_stuck_in_walls": false, "lost_souls_never_bounce_on_floors": false, "monsters_randomly_walk_off_lifts": false, "monsters_get_stuck_on_door_tracks": false, "monsters_give_up_pursuit": false, "actors_get_stuck_over_dropoffs": false, "actors_never_fall_off_ledges": false, "monsters_can_telefrag_on_map30": false, "monsters_can_respawn_outside_map": false, "disable_terrain_types": false, "disable_falling_damage": true, "actors_have_infinite_height": false, "doom_actor_heights_are_inaccurate": false, "bullets_never_hit_floors_and_ceilings": false, "respawns_are_sometimes_silent_in_dm": false, "short_vertical_mouselook_range": false, "radius_attacks_only_thrust_in_2d": false, "turbo_doors_make_two_closing_sounds": false, "disable_tagged_door_light_fading": false, "use_doom_stairbuilding_method": false, "use_doom_floor_motion_behavior": false, "use_doom_linedef_trigger_model": false, "line_effects_work_on_sector_tag_zero": false, "one_time_line_effects_can_break": false, "monsters_remember_target": false, "monster_infighting": false, "monsters_back_out": false, "monsters_avoid_hazards": false, "monsters_affected_by_friction": false, "monsters_climb_tall_stairs": false, "rescue_dying_friends": false, "dogs_can_jump_down": false, "build_blockmap": false, "use_zdoom_gravity": false, "use_zdoom_air_control": false, "use_zdoom_player_physics": false, "use_zdoom_sound_attenuation": false, "zdoom_gravity": 800, "zdoom_air_control": 0.0 }, /**** "maps" ** An array of maps to load. You can specify the WADs to load for each map, as ** well as override any options. If you don't need to specify any WADs or ** override any options, you can simply list the map as a string. If the short ** form is used, only the IWAD is loaded for that map. It's also important to ** remember that Doom is sensitive to the order in which WADs are added. ** Specifying WADs in various orders WILL NOT give the same ** results. ** ** Example: */ "maps": [ "map01" { "name": "map01", "wads": [ "dwango5.wad" ] }, { "name": "map23", "wads": [ "judas23_.wad" ] }, { "name": "map01", "wads": [ "greenwar.wad" ], "overrides": { "allow_mouse_look": true } }, ] // Note no trailing comma here, as it's the last section in the config. } // End configuration. // vim:sw=4 ts=4 et syntax=javascript: