From d66ebc4fd91eaf2dd7dc81373eec58623ae0a2fd Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Mon, 15 Jan 2024 15:46:41 -0800 Subject: [PATCH] Documentation: add DedicatedServer.md, EntityGuide.md, merge EAX/EFX within doxygen generated docs. --- Documentation/DedicatedServer.md | 34 +++ Documentation/EntityGuide.md | 348 +++++++++++++++++++++++++++++++ Documentation/Sound/EAX.md | 13 +- Documentation/Sound/EFX.md | 22 +- Doxyfile | 1 + 5 files changed, 400 insertions(+), 18 deletions(-) create mode 100644 Documentation/DedicatedServer.md create mode 100644 Documentation/EntityGuide.md diff --git a/Documentation/DedicatedServer.md b/Documentation/DedicatedServer.md new file mode 100644 index 00000000..df715f67 --- /dev/null +++ b/Documentation/DedicatedServer.md @@ -0,0 +1,34 @@ +# Dedicated Server + +# Usage + +To initialize a dedicated server, you can run `./nuclide-ds -game yourGame`. It is generally advised to write and execute a server config file you have prepared ahead of time. + +Here is an example: + +``` +hostname "Nuclide Test Server" +set sv_public 2 // 0 - not public, 1 = advertised on master server, 2 = ICE +set deathmatch 1 // request multiplayer modus +set coop 0 // deny coop modus +set maxplayers 16 // 16 players max +set timelimit 10 // 10 minutes per map +set fraglimit 30 // 30 frags per map +set pausable 0 // don't allow players to 'pause' +set rcon_password "" // no rcon +map dm_beck16 // start +``` + +You can then run the dedicated server like this: + +`./nuclide-ds -game yourGame +exec server.cfg` + +In production, the exact same style of commands applies to release builds. So if you have a standard engine binary (**fteqwgl64.exe** or a branded executable) things will be identical. + +Keep in mind to set any game specific console variables. + +# Remote Console (RCon) + +In the above config, if you've set rcon_password to anything other than `""` you have access to remotely control the game server. + +For example, you can (as a client, once connected) use the command `rcon yourPassword changelevel dm_beck16` to forcefully change the level on the server. Anything that's possible in a conventional dedicated server console is now accessible. \ No newline at end of file diff --git a/Documentation/EntityGuide.md b/Documentation/EntityGuide.md new file mode 100644 index 00000000..c4002833 --- /dev/null +++ b/Documentation/EntityGuide.md @@ -0,0 +1,348 @@ +# Entity Guide + +# Overview + +[ambient_generic](@ref ambient_generic) + +[button_target](@ref button_target) + +[cycler](@ref cycler) + +[cycler_sprite](@ref cycler_sprite) + +[cycler_weapon](@ref cycler_weapon) + +[cycler_wreckage](@ref cycler_wreckage) + +[env_beam](@ref env_beam) + +[env_beverage](@ref env_beverage) + +[env_bubbles](@ref env_bubbles) + +[env_cascade_light](@ref env_cascade_light) + +[env_cubemap](@ref env_cubemap) + +[env_explosion](@ref env_explosion) + +[env_fade](@ref env_fade) + +[env_fire](@ref env_fire) + +[env_fog](@ref env_fog) + +[env_fog_controller](@ref env_fog_controller) + +[env_funnel](@ref env_funnel) + +[env_global](@ref env_global) + +[env_glow](@ref env_glow) + +[env_hudhint](@ref env_hudhint) + +[env_instructor_hint](@ref env_instructor_hint) + +[env_laser](@ref env_laser) + +[env_message](@ref env_message) + +[env_model](@ref env_model) + +[env_muzzleflash](@ref env_muzzleflash) + +[env_particle](@ref env_particle) + +[env_physexplosion](@ref env_physexplosion) + +[env_projectedtexture](@ref env_projectedtexture) + +[env_render](@ref env_render) + +[env_shake](@ref env_shake) + +[env_shockwave](@ref env_shockwave) + +[env_shooter](@ref env_shooter) + +[env_smoker](@ref env_smoker) + +[env_sound](@ref env_sound) + +[env_soundscape](@ref env_soundscape) + +[env_spark](@ref env_spark) + +[env_sprite](@ref env_sprite) + +[env_steam](@ref env_steam) + +[env_sun](@ref env_sun) + +[func_areaportal](@ref func_areaportal) + +[func_areaportalwindow](@ref func_areaportalwindow) + +[func_breakable](@ref func_breakable) + +[func_brush](@ref func_brush) + +[func_button](@ref func_button) + +[func_conveyor](@ref func_conveyor) + +[func_detail](@ref func_detail) + +[func_detail_illusionary](@ref func_detail_illusionary) + +[func_door](@ref func_door) + +[func_door_rotating](@ref func_door_rotating) + +[func_dustcloud](@ref func_dustcloud) + +[func_dustmotes](@ref func_dustmotes) + +[func_friction](@ref func_friction) + +[func_group](@ref func_group) + +[func_guntarget](@ref func_guntarget) + +[func_healthcharger](@ref func_healthcharger) + +[func_illusionary](@ref func_illusionary) + +[func_ladder](@ref func_ladder) + +[func_lod](@ref func_lod) + +[func_monitor](@ref func_monitor) + +[func_monsterclip](@ref func_monsterclip) + +[func_mortar_field](@ref func_mortar_field) + +[func_pendulum](@ref func_pendulum) + +[func_physbox](@ref func_physbox) + +[func_plat](@ref func_plat) + +[func_platrot](@ref func_platrot) + +[func_pushable](@ref func_pushable) + +[func_recharge](@ref func_recharge) + +[func_rot_button](@ref func_rot_button) + +[func_rotating](@ref func_rotating) + +[func_smokevolume](@ref func_smokevolume) + +[func_tank](@ref func_tank) + +[func_tankcontrols](@ref func_tankcontrols) + +[func_tankmortar](@ref func_tankmortar) + +[func_tracktrain](@ref func_tracktrain) + +[func_train](@ref func_train) + +[func_traincontrols](@ref func_traincontrols) + +[func_vehicle](@ref func_vehicle) + +[func_vehiclecontrols](@ref func_vehiclecontrols) + +[func_wall](@ref func_wall) + +[func_wall_toggle](@ref func_wall_toggle) + +[game_counter](@ref game_counter) + +[game_counter_set](@ref game_counter_set) + +[game_end](@ref game_end) + +[game_player_equip](@ref game_player_equip) + +[game_player_hurt](@ref game_player_hurt) + +[game_player_team](@ref game_player_team) + +[game_score](@ref game_score) + +[game_team_master](@ref game_team_master) + +[game_team_set](@ref game_team_set) + +[game_text](@ref game_text) + +[game_zone_player](@ref game_zone_player) + +[gibshooter](@ref gibshooter) + +[info_hint](@ref info_hint) + +[info_intermission](@ref info_intermission) + +[info_node](@ref info_node) + +[info_node_air](@ref info_node_air) + +[info_notnull](@ref info_notnull) + +[info_null](@ref info_null) + +[info_particle_system](@ref info_particle_system) + +[info_player_coop](@ref info_player_coop) + +[info_player_deathmatch](@ref info_player_deathmatch) + +[info_player_start](@ref info_player_start) + +[info_teleport_destination](@ref info_teleport_destination) + +[info_waypoint](@ref info_waypoint) + +[infodecal](@ref infodecal) + +[item_food](@ref item_food) + +[light](@ref light) + +[light_dynamic](@ref light_dynamic) + +[light_environment](@ref light_environment) + +[light_surface](@ref light_surface) + +[logic_achievement](@ref logic_achievement) + +[logic_auto](@ref logic_auto) + +[logic_case](@ref logic_case) + +[logic_relay](@ref logic_relay) + +[logic_timer](@ref logic_timer) + +[momentary_door](@ref momentary_door) + +[momentary_rot_button](@ref momentary_rot_button) + +[monster_furniture](@ref monster_furniture) + +[monster_generic](@ref monster_generic) + +[monstermaker](@ref monstermaker) + +[multi_manager](@ref multi_manager) + +[multisource](@ref multisource) + +[path_corner](@ref path_corner) + +[path_track](@ref path_track) + +[phys_ballsocket](@ref phys_ballsocket) + +[phys_constraint](@ref phys_constraint) + +[phys_constraintsystem](@ref phys_constraintsystem) + +[phys_convert](@ref phys_convert) + +[phys_hinge](@ref phys_hinge) + +[phys_keepupright](@ref phys_keepupright) + +[phys_rope](@ref phys_rope) + +[phys_slideconstraint](@ref phys_slideconstraint) + +[player_loadsaved](@ref player_loadsaved) + +[player_weaponstrip](@ref player_weaponstrip) + +[point_camera](@ref point_camera) + +[point_message](@ref point_message) + +[point_servercommand](@ref point_servercommand) + +[point_spotlight](@ref point_spotlight) + +[point_trigger](@ref point_trigger) + +[prop_dynamic](@ref prop_dynamic) + +[prop_physics](@ref prop_physics) + +[prop_rope](@ref prop_rope) + +[prop_static](@ref prop_static) + +[prop_vehicle_driveable](@ref prop_vehicle_driveable) + +[random_speaker](@ref random_speaker) + +[random_trigger](@ref random_trigger) + +[scripted_sentence](@ref scripted_sentence) + +[scripted_sequence](@ref scripted_sequence) + +[sky_camera](@ref sky_camera) + +[speaker](@ref speaker) + +[targ_speaker](@ref targ_speaker) + +[target_cdaudio](@ref target_cdaudio) + +[trigger_auto](@ref trigger_auto) + +[trigger_autosave](@ref trigger_autosave) + +[trigger_camera](@ref trigger_camera) + +[trigger_cdaudio](@ref trigger_cdaudio) + +[trigger_changelevel](@ref trigger_changelevel) + +[trigger_changetarget](@ref trigger_changetarget) + +[trigger_counter](@ref trigger_counter) + +[trigger_endsection](@ref trigger_endsection) + +[trigger_gravity](@ref trigger_gravity) + +[trigger_hurt](@ref trigger_hurt) + +[trigger_look](@ref trigger_look) + +[trigger_monsterjump](@ref trigger_monsterjump) + +[trigger_multiple](@ref trigger_multiple) + +[trigger_once](@ref trigger_once) + +[trigger_playerfreeze](@ref trigger_playerfreeze) + +[trigger_push](@ref trigger_push) + +[trigger_relay](@ref trigger_relay) + +[trigger_teleport](@ref trigger_teleport) + +[trigger_transition](@ref trigger_transition) + +[worldspawn](@ref worldspawn) + diff --git a/Documentation/Sound/EAX.md b/Documentation/Sound/EAX.md index 20447bb3..6e544653 100644 --- a/Documentation/Sound/EAX.md +++ b/Documentation/Sound/EAX.md @@ -1,12 +1,7 @@ -# Sound: EAX +# Sound: EFX {#EFX} + +## EAX Creative Technology's **Environmental Audio Extensions**, also known as **EAX**, attempted to create more ambiance within video games by more accurately simulating a real-world audio environment. -Due to the release of Windows Vista which deprecated the DirectSound3D API EAX was based on in 2007, Creative discouraged EAX implementation in favor of its [OpenAL](OpenAL.md)-based EFX equivalent. - - -EFX is fully supported in **FTEQW** and exposed via user-friendly entities and scripting language in **Nuclide**. - -## See also -* [EFX](EFX.md) -* [OpenAL](OpenAL.md) +The release of Windows Vista deprecated the DirectSound3D API on which EAX relied on in 2007, so Creative Technology encouraged the move to OpenAL's EFX. \ No newline at end of file diff --git a/Documentation/Sound/EFX.md b/Documentation/Sound/EFX.md index 3bcf66d6..0bee641d 100644 --- a/Documentation/Sound/EFX.md +++ b/Documentation/Sound/EFX.md @@ -1,16 +1,18 @@ -# Sound: EFX +# Sound: EFX {#EFX} + +## EFX EFX is a system in [OpenAL](OpenAL.md) that delivers high quality sound reverberation. It is the successor to Creative's [Environmental Audio Extensions](EAX.md). **Nuclide** offers abstraction for new and old entities relying on **digital signal processing**. -## Entities +## Entities interacting with EFX **env_sound** is most commonly used to change the environmental sound processing of a room/area. -In GoldSrc, it'll specify which enumeration of DSP preset to use for audio playback, in Nuclide however we just map it to a file in the filesystem. +In GoldSrc, it'll specify which enumeration of DSP preset to use for audio playback, in Nuclide however we just map it to a definitions file in the filesystem. See **EFX files** below. -## EFX files +## EFX defintion files Entities that specify a EFX type, usually want to load one from a file. @@ -44,15 +46,17 @@ Here's an example one, `efx/city.efx`: Most of the parameters are self explanatory. -## Debug cvars +## Console Variables -With the cvar `>s_al_debug` you'll get an overlay of information about which EFX file is currently being used, as well as what every single parameter is set to. - -You can refresh EFX definitions with a simple map restart. +With the cvar `s_al_debug` set to 1 you'll get an overlay of information about which EFX file is currently being used, as well as what every single parameter is set to. +You can refresh EFX definitions with a map restart. ## Legacy translation table -Here you can see which **.efx file** is responsible for handling a legacy **env_sound** room-type. + +*This section describes behaviour specific to converting entities from Half-Life based levels into the Nuclide environment.* + +Here you can see which **efx file** is responsible for handling a legacy **env_sound** room-type. **roomtype ID**|**EFX file** :-----:|:-----: diff --git a/Doxyfile b/Doxyfile index dd68626e..6abd65f3 100644 --- a/Doxyfile +++ b/Doxyfile @@ -878,6 +878,7 @@ INPUT = src/ \ Documentation/Main.md \ Documentation/Building.md \ Documentation/Launching.md \ + Documentation/DedicatedServer.md \ Documentation/Filesystem.md \ Documentation/Networking.md \ Documentation/EntityGuide.md \