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

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). 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**. **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. **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. 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. 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. 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 simple map restart.
You can refresh EFX definitions with a map restart.
## Legacy translation table ## 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** **roomtype ID**|**EFX file**
:-----:|:-----: :-----:|:-----:

View File

@ -878,6 +878,7 @@ INPUT = src/ \
Documentation/Main.md \ Documentation/Main.md \
Documentation/Building.md \ Documentation/Building.md \
Documentation/Launching.md \ Documentation/Launching.md \
Documentation/DedicatedServer.md \
Documentation/Filesystem.md \ Documentation/Filesystem.md \
Documentation/Networking.md \ Documentation/Networking.md \
Documentation/EntityGuide.md \ Documentation/EntityGuide.md \