Documentation: add DedicatedServer.md, EntityGuide.md, merge EAX/EFX within doxygen generated docs.

This commit is contained in:
Marco Cawthorne 2024-01-15 15:46:41 -08:00
parent 05af28180e
commit d66ebc4fd9
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
5 changed files with 400 additions and 18 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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**
:-----:|:-----:

View File

@ -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 \