<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SeriousToni</id>
	<title>The DarkMod Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.thedarkmod.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SeriousToni"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/SeriousToni"/>
	<updated>2026-04-29T18:02:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=29088</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Particles&amp;diff=29088"/>
		<updated>2022-01-12T19:55:42Z</updated>

		<summary type="html">&lt;p&gt;SeriousToni: /* Switching Particles on and off */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Particles are VERY flexible - they can function as rain, snow, falling leaves, oscillating leaves and foliage, smoke, mist, flame, trickling sand, trickling water, drips, waterfall, spray, fountain - anything that can be made up of particles, big or small, fast or slow.&lt;br /&gt;
&lt;br /&gt;
There are already many particle effects available to the Dark Mod mapper. This tutorial is just the basics of how to get particle effects, new or old, into your mission...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Particle effects into your game ==&lt;br /&gt;
&lt;br /&gt;
First, all that is assumed is you know the essentials described in [[Dark Radiant Must Know Basic Intro]]&lt;br /&gt;
&lt;br /&gt;
Like so many things - it&#039;s easy when you know how. Let me describe by example. Say you want to have some smoke coming out of a chimney in your mission...&lt;br /&gt;
&lt;br /&gt;
* Right click and select Create Entity.  Select func_emitter from the list.&lt;br /&gt;
* Add the property : model &lt;br /&gt;
* If you select the model property then you see two buttons at the bottom - Choose Model and Choose Particle.&lt;br /&gt;
* Select the Choose Particles button (see below for information on Choose Model)&lt;br /&gt;
* Select a particles effect from the list. For chimney smoke there are a couple of Doom ones - admin_hall_smk_cone.prt and mc2_hall_smk_cone.prt though they are a little bright (but could be modified in the Particles Editor and resaved as a new particles effect.) There are also a couple of Dark Mod ones - chimney_smoke1.prt and chimney_smoke2.prt at this time. Other DM stuff is under tdm_ but it&#039;s worth exploring the whole list to see what is available.&lt;br /&gt;
* All that remains is to position your func_emitter over a chimney.&lt;br /&gt;
* Note that there is a DR bug that does not allow you to rotate the func_emitter on the X or Y planes; however, there&#039;s some question whether most particles care about where the emitter is rotated.&lt;br /&gt;
&lt;br /&gt;
That will give you a start. Try out some of the others so you see what is available and what is possible and then you can move on to more advanced stuff...&lt;br /&gt;
&lt;br /&gt;
* Note that &#039;Choose Model&#039; does not assign a model or models to be emitted such as a leaf or snowflake (see [[Particle Editor]]) No, if you choose model then it just assigns a visible model shape to the entity in the normal way. I guess one could use a chimney pot in our example but the particle effect would have to be customised to line up so we shall create a separate particle effect and just place it over a chimney. Depends on what you are doing whether you need a model at the position of the particle effect. It does save on entities, but it is less flexible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Switching Particles on and off==&lt;br /&gt;
&lt;br /&gt;
func_emitter can be turned on and off by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Particle effects can also be created using the [[Stim/Response]] system.&lt;br /&gt;
&lt;br /&gt;
Particles can be turned off and on by the game itself too. You can place a &amp;quot;hide_distance&amp;quot; spawnarg on the emitter with the value in units (e.g. &amp;quot;512&amp;quot;) after which the particle emitter will be switched off (and on again if the player re-enters the radius). If you encounter problems with particles going through your walls, you can also use the &amp;quot;areaLock&amp;quot; spawnarg with a value called &amp;quot;origin&amp;quot;. This ties the entity&#039;s visibility to the visleaf in which the origin lies, meaning, if the player leaves the room or closes the vis portal (by shutting the door), the emitter will stop emitting the particles.&lt;br /&gt;
&lt;br /&gt;
==Starting OFF at game start==&lt;br /&gt;
&lt;br /&gt;
To start a particle effect OFF at game start give the func_emitter the property and value...&lt;br /&gt;
&lt;br /&gt;
start_off 1&lt;br /&gt;
&lt;br /&gt;
You can then make it start when you want by using target from any targetting entity eg a button or lever.&lt;br /&gt;
&lt;br /&gt;
Note that the particle effect may be very briefly visible at game start then turn off within a second. This is normal and I don&#039;t think can be avoided. In most cases this doesn&#039;t matter if the effect is not in the player&#039;s view right at game start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Your Own Particle Effects ==&lt;br /&gt;
&lt;br /&gt;
You can create your own particle effects - or even easier - modify existing ones. To do this read [[Particle Editor]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Soft Particles ==&lt;br /&gt;
Beginning in TDM 2.03, particle effects are softened where they intersect solid objects. There&#039;s no longer any need to move lamp glares away from walls, and dust/fog/smoke will appear to be shapeless 3d volumes instead of 2d images cut off at the floor and walls. &lt;br /&gt;
&lt;br /&gt;
Soft particles start to fade out where they get close to solid objects. And when they intersect solid objects, they continue to draw over the top for a short distance. This &amp;quot;rubs out&amp;quot; any hard edges belonging to the 2d images that make up the particle effect, which stops the eye getting a fix on exactly where those images are and restores the illusion of a 3d volume. &lt;br /&gt;
&lt;br /&gt;
The range over which the particle fades out -- and is allow to draw over solid stuff -- is proportional to the &amp;quot;radius&amp;quot; of the particle volume being represented. By default, it&#039;s 0.4 times the diameter of the particle stages&#039; quads.&lt;br /&gt;
&lt;br /&gt;
Soft particles can be toggled on and off using the cvar r_useSoftParticles. &lt;br /&gt;
&lt;br /&gt;
Mappers don&#039;t have to do anything to take advantage of this -- it&#039;s enabled by default and will &amp;quot;just work&amp;quot; in 99% of cases -- but mappers can control the effect more precisely if they wish using the &amp;quot;SofteningRadius&amp;quot; keyword documented below. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Particle decl keywords ==&lt;br /&gt;
Most particle settings are applied using the particle editor, but there are a few more keywords that can be added manually to the decl generated by the editor.&lt;br /&gt;
You can read about most of keywords on the [https://www.iddevnet.com/doom3/editor_particle.html Doom 3 SDK page]. Additional explanation is provided in the [[Particle Editor]] article&lt;br /&gt;
&lt;br /&gt;
=== WorldAxis ===&lt;br /&gt;
Added in 2.03 to enable better candle smoke. If a particle stage has an offset to its origin, or if it moves in any way independent of gravity, WorldAxis will make that offset and movement use the world axis instead of the emitter&#039;s axis. Particles also have a WorldGravity keyword that&#039;s set using the particle editor. WorldGravity affects only movement under gravity. WorldAxis affects other kinds of movement plus offsets. Added so that candle smoke can rise upright at a constant rate no matter how the player turns the candle.&lt;br /&gt;
&lt;br /&gt;
Example: the new candle smoke in 2.03 starts with a narrow plume of smoke emitted from the candle&#039;s wick (which is where the emitter is placed), followed by a wider volume of wispy smoke that spreads out from the top of the narrow plume. Both stages use WorldAxis: the first stage so that it can rise upright from a knocked-over candle at a constant rate; the second stage so that it always starts from a point &#039;&#039;above&#039;&#039; the candle even if the candle is on its side.&lt;br /&gt;
&lt;br /&gt;
=== DepthHack ===&lt;br /&gt;
This is a primitive way of avoiding some particle intersections, the only one that was available in the original idTech4 engine. It&#039;s a keyword placed at the top of the particle decl and applies to all stages of the particle: it can&#039;t be applied separately to individual stages. It causes the particle to draw in front of solid objects by up to the specified number of units, e.g. &amp;quot;depthHack 20&amp;quot; was used in lamp glares to make them draw over things by up to 20 units. &lt;br /&gt;
&lt;br /&gt;
DepthHack is overridden by the new soft particle technique in TDM 2.03. The keyword and its value are ignored, unless the particle decl turns off the new soft particles effect.&lt;br /&gt;
&lt;br /&gt;
=== SofteningRadius ===&lt;br /&gt;
New particle stage keyword for TDM 2.03. Add this to individual particle &#039;&#039;stages&#039;&#039; to change the behaviour of soft particles. Accepted values are:&lt;br /&gt;
* -1: Turn off soft particles and draw this particle stage the old way, including using DepthHack if it&#039;s specified in the decl.&lt;br /&gt;
* 0: Turn off soft particles AND Depthhack.&lt;br /&gt;
* Any positive number: sets the particle &amp;quot;radius&amp;quot;, which is the amount it&#039;s allowed to draw in front of anything solid that intersects it. Defaults to 0.4 times the max particle quad size for the stage. If you have a tricky particle that&#039;s showing through a wall, you can reduce the radius a bit. For example: a tdm_dustfog_03 with a max quad size of 100 will have a default radius of 40. If you want to put it in a confined space where it ends up showing through a wall, you could add &amp;quot;softeningRadius 30&amp;quot; to the stage to stop that happening.&lt;br /&gt;
&lt;br /&gt;
=== DiversityPeriod ===&lt;br /&gt;
This keyword was introduced in TDM 2.09. With default value 0, every cycle of a particle system looks a bit different from the previous ones in terms of randomness/diversity.&lt;br /&gt;
With value K &amp;gt; 0, every K-th cycle of particle system looks exactly the same. So it makes the system look &amp;quot;periodic&amp;quot;. For instance, K = 1 means that every cycle looks the same. Value K = 10 means that ten cycles look different but after that everything repeats.&lt;br /&gt;
The keyword is required for the new [[Particle collisions and cutoff#Linear layout|&amp;quot;mapLayout linear&amp;quot;]] mode of particle collisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing]][[Category:Tutorial]][[Category:Particles]]&lt;/div&gt;</summary>
		<author><name>SeriousToni</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=28760</id>
		<title>Setting Reverb Data of Rooms (EAX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Setting_Reverb_Data_of_Rooms_(EAX)&amp;diff=28760"/>
		<updated>2021-11-21T19:39:06Z</updated>

		<summary type="html">&lt;p&gt;SeriousToni: Error Check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This document will attempt to explain how to set the new EFX settings in your rooms when mapping.&lt;br /&gt;
&lt;br /&gt;
Previously these settings were known as EAX settings, and required EAX 4.0-compatible sound card.&lt;br /&gt;
In TDM 2.06, EAX technology was completely replaced with OpenAL EFX, which is now processed in software (by [https://github.com/kcat/openal-soft openal-soft]) without any requirements on sound card.&lt;br /&gt;
&lt;br /&gt;
= General =&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
The EFX info for a map should be stored in the file &amp;quot;&amp;lt;tt&amp;gt;efxs/&amp;lt;mapname&amp;gt;.efx&amp;lt;/tt&amp;gt;&amp;quot;, where &amp;lt;mapname&amp;gt; is the name of your .map file (without extension).&lt;br /&gt;
&lt;br /&gt;
In order to check that you have put the file into right location, start your mission in game.&lt;br /&gt;
If TDM manages to load your efx file, then you will see the following message in console:&lt;br /&gt;
 sound: found efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
If you failed something, then you will see a bit different message there:&lt;br /&gt;
 sound: missing efxs/&amp;lt;mapname&amp;gt;.efx&lt;br /&gt;
In both cases some additional diagnostic messages can be present nearby.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; you must enable &amp;quot;&amp;lt;tt&amp;gt;OpenAL EFX&amp;lt;/tt&amp;gt;&amp;quot; in sound settings in the main menu, otherwise TDM won&#039;t even try to load the efx file.&lt;br /&gt;
&lt;br /&gt;
== EFX file ==&lt;br /&gt;
&lt;br /&gt;
It is a plain text file, so you can open it up in your text editor of choice.&lt;br /&gt;
&lt;br /&gt;
Any EFX file must start with a header which specifies its &#039;&#039;&#039;version&#039;&#039;&#039;:&lt;br /&gt;
 Version 2&lt;br /&gt;
If you forget this line, then your EFX file will &#039;&#039;&#039;not&#039;&#039;&#039; be loaded.&lt;br /&gt;
The following versions are supported:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Version 1&amp;lt;/tt&amp;gt; was supported by TDM from the very beginning. It uses some non-standard terms and quantities, which makes it hard to work with.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Version 2&amp;lt;/tt&amp;gt; was added in TDM 2.07. It uses the parameters from OpenAL EFX and supports a lot of presets. &#039;&#039;&#039;Recommended for all new missions.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The rest of the file consists of separate blocks, one for each &amp;quot;reverb zone&amp;quot;.&lt;br /&gt;
Each block must start with &amp;lt;tt&amp;gt;reverb&amp;lt;/tt&amp;gt; keyword for Version 1 definitions, and &amp;lt;tt&amp;gt;eaxreverb&amp;lt;/tt&amp;gt; keyword for Version 2 definitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is an example of such block from mars_city1.efx of the original Doom 3 game (Version 1):&lt;br /&gt;
&lt;br /&gt;
 // reverb maintenance&lt;br /&gt;
 reverb &amp;quot;maintenance&amp;quot; {&lt;br /&gt;
  &amp;quot;environment&amp;quot; 26&lt;br /&gt;
  &amp;quot;environment size&amp;quot; 5.0670&lt;br /&gt;
  &amp;quot;environment diffusion&amp;quot; 0.6030&lt;br /&gt;
  &amp;quot;room&amp;quot; -411&lt;br /&gt;
  &amp;quot;room hf&amp;quot; -685&lt;br /&gt;
  &amp;quot;room lf&amp;quot; 0&lt;br /&gt;
  &amp;quot;decay time&amp;quot; 1.7360&lt;br /&gt;
  &amp;quot;decay hf ratio&amp;quot; 0.8030&lt;br /&gt;
  &amp;quot;decay lf ratio&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;reflections&amp;quot; 96&lt;br /&gt;
  &amp;quot;reflections delay&amp;quot; 0.0080&lt;br /&gt;
  &amp;quot;reflections pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;reverb&amp;quot; 27&lt;br /&gt;
  &amp;quot;reverb delay&amp;quot; 0.0050&lt;br /&gt;
  &amp;quot;reverb pan&amp;quot; 0.0000 0.0000 0.0000&lt;br /&gt;
  &amp;quot;echo time&amp;quot; 0.0750&lt;br /&gt;
  &amp;quot;echo depth&amp;quot; 1.0000&lt;br /&gt;
  &amp;quot;modulation time&amp;quot; 0.2500&lt;br /&gt;
  &amp;quot;modulation depth&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;air absorption hf&amp;quot; -5.0000&lt;br /&gt;
  &amp;quot;hf reference&amp;quot; 5000.0000&lt;br /&gt;
  &amp;quot;lf reference&amp;quot; 250.0000&lt;br /&gt;
  &amp;quot;room rolloff factor&amp;quot; 0.0000&lt;br /&gt;
  &amp;quot;flags&amp;quot; 56&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And here is an artificial example of Version 2 definitions:&lt;br /&gt;
&lt;br /&gt;
  eaxreverb &amp;quot;myweirdstreets&amp;quot; {&lt;br /&gt;
    reflections_gain 0.5&lt;br /&gt;
    reflections_delay 0.0050&lt;br /&gt;
    late_reverb_gain 2.5&lt;br /&gt;
    late_reverb_delay 0.050&lt;br /&gt;
    echo_time 0.25&lt;br /&gt;
    echo_depth 0.9000&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
What does all this mean? &lt;br /&gt;
&lt;br /&gt;
There is a lot of sound design stuff that one could make guesses at if you&#039;ve ever used a reverb plugin in any sort of sound editing program. hf = high frequency, lf = low frequency, etc.&lt;br /&gt;
&lt;br /&gt;
A proper explanation of the parameters is given below.&lt;br /&gt;
&lt;br /&gt;
== Locations ==&lt;br /&gt;
Each reverb zone definition starts with a line which specifies to which location it must be applied:&lt;br /&gt;
&lt;br /&gt;
 reverb &amp;quot;&amp;lt;name of the location area you want to apply this to&amp;gt;&amp;quot;&lt;br /&gt;
 {&lt;br /&gt;
     //... (settings)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Information about locations and how to set them up is available in another article: [[Location Settings#The Location Entities]].&lt;br /&gt;
Reverb zones use exactly the same locations as the ones which are used to specify per-area ambient sounds.&lt;br /&gt;
You should name every info_location entity, i.e. provide a &amp;quot;&amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt;&amp;quot; spawnarg for it. This is the name used in reverb zone definitions.&lt;br /&gt;
&lt;br /&gt;
As of TDM 2.06, you can&#039;t use capital letters in the name of your location entity or reverb zone. This may or may not change in the future.&lt;br /&gt;
&lt;br /&gt;
Here is an example of an entity which defines &amp;quot;canal_tunnel&amp;quot; location:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.map ====================&lt;br /&gt;
 // entity 3532&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;classname&amp;quot; &amp;quot;info_location&amp;quot;&lt;br /&gt;
   &amp;quot;name&amp;quot; &amp;quot;canal_tunnel&amp;quot;             //this is the name used&lt;br /&gt;
   &amp;quot;ambient&amp;quot; &amp;quot;snd_streets&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light&amp;quot; &amp;quot;0.04 0.03 0.02&amp;quot;&lt;br /&gt;
   &amp;quot;ambient_light_dynamic&amp;quot; &amp;quot;0.01 0.01 0.01&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
And this is the EFX effect (reverb zone) for it:&lt;br /&gt;
&lt;br /&gt;
 //======================= from volta_v1.efx ====================&lt;br /&gt;
 reverb &amp;quot;canal_tunnel&amp;quot; {             //name put to here&lt;br /&gt;
   &amp;quot;environment&amp;quot; 22&lt;br /&gt;
   &amp;quot;environment size&amp;quot; 1.8000&lt;br /&gt;
   &amp;quot;environment diffusion&amp;quot; 1.0000&lt;br /&gt;
   &amp;quot;room&amp;quot; -1000&lt;br /&gt;
   &amp;quot;room hf&amp;quot; -4000&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
During playing, the engine prints a message whenever the player&#039;s location changes.&lt;br /&gt;
It allows you to check if you have set up locations properly.&lt;br /&gt;
For instance, here are console messages showing a proper EFX location change:&lt;br /&gt;
&lt;br /&gt;
 Switching to EFX &#039;canal_tunnel&#039; (#295)&lt;br /&gt;
 Changed location from &#039;canal_streets&#039; to &#039;canal_tunnel&#039;.&lt;br /&gt;
&lt;br /&gt;
It is also possible to specify portal-area number instead of location name in the reverb zone definition.&lt;br /&gt;
The portal-area number is listed in the .proc file, which is created in the dmap process, in the format of &amp;lt;tt&amp;gt;_area&amp;lt;num&amp;gt;&amp;lt;/tt&amp;gt; (where &amp;lt;num&amp;gt; is the portal area number), e.g. &amp;lt;tt&amp;gt;_area15&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Beware:&#039;&#039;&#039; this functionality exists for fast hacking only! Do not release a mission with portal-area numbers in .efx file!&lt;br /&gt;
The main reason to avoid it is that portal-area numbers are auto-generated, so minor changes in your mission can change all of them.&lt;br /&gt;
&lt;br /&gt;
Finally, there is a &amp;quot;default&amp;quot; reverb environment which is used for any area in the map which does not have reverb information specified.&lt;br /&gt;
&lt;br /&gt;
The order that the sound system checks for reverb data is: area number -&amp;gt; location name -&amp;gt; default.&lt;br /&gt;
&lt;br /&gt;
== Changes during playing ==&lt;br /&gt;
Type &amp;quot;&amp;lt;tt&amp;gt;reloadSounds&amp;lt;/tt&amp;gt;&amp;quot; command into game console in order to reload EFX definitions.&lt;br /&gt;
&lt;br /&gt;
So when you experiment with EFX, execute this command after each tweak to EFX file to hear the difference immediately.&lt;br /&gt;
&lt;br /&gt;
== Suppress effect ==&lt;br /&gt;
Sometimes you want to disable EFX effect on a specific sound.&lt;br /&gt;
A typical example is when you have a voice in player&#039;s head, which must not depend on player&#039;s physical environment.&lt;br /&gt;
Another case is when some sound already has reverb baked in, so you don&#039;t what to double-reverb it. Although the best practice is to use sound samples without embedded reverb, combined with proper EFX definitions.&lt;br /&gt;
&lt;br /&gt;
You can disable all EFX effects on one specific sound shader by adding &amp;quot;&amp;lt;tt&amp;gt;no_efx&amp;lt;/tt&amp;gt;&amp;quot; keyword to its body.&lt;br /&gt;
For instance, here is how non-EFX version of blackjack unsheathing looks like:&lt;br /&gt;
 blackjack_unsheath&lt;br /&gt;
 {&lt;br /&gt;
   description &amp;quot;Made by pakmannen&amp;quot;&lt;br /&gt;
   sound/sfx/tools/melee/blackjack_unsheath.ogg&lt;br /&gt;
   no_efx                       //do NOT apply EFX to this sound&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that if you change sound shaders, writing &amp;quot;&amp;lt;tt&amp;gt;reloadDecls&amp;lt;/tt&amp;gt;&amp;quot; in TDM game console is enough to reload them.&lt;br /&gt;
&lt;br /&gt;
There are a lot of stock sounds in TDM which should not be affected by EFX effects.&lt;br /&gt;
Starting from TDM 2.07, the corresponding core sounds are marked with &amp;quot;&amp;lt;tt&amp;gt;no_efx&amp;lt;/tt&amp;gt;&amp;quot; keyword (see issue [http://bugs.thedarkmod.com/view.php?id=4688 4688]).&lt;br /&gt;
If you discover any core sound which is affected by EFX while you believe it should not, start a discussion on forums.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Environment properties=&lt;br /&gt;
&lt;br /&gt;
== New properties (Version 2) ==&lt;br /&gt;
&lt;br /&gt;
With Version 2 of EFX file, the set of supported properties exactly matches the set of properties defined in OpenAL EFX for the &amp;quot;EAX Reverb&amp;quot; effect.&lt;br /&gt;
Note that EFX defines several types of effects, including &amp;quot;EAX Reverb&amp;quot;, &amp;quot;Standard Reverb&amp;quot;, &amp;quot;Chorus&amp;quot;, &amp;quot;Distortion&amp;quot;, &amp;quot;Echo&amp;quot;, &amp;quot;Flanger&amp;quot;, etc.&lt;br /&gt;
Only the first one is important, ignore all the rest (including the so-called &amp;quot;Standard Reverb&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The detailed description of all the properties is given in &amp;quot;Appendix 1 – Effect property descriptions&amp;quot; of the [https://kcat.strangesoft.net/misc-downloads/Effects%20Extension%20Guide.pdf OpenAL Effects Extension Guide](pages 95-101).&lt;br /&gt;
The short list is also available in a table on page 66 of the guide:&lt;br /&gt;
&lt;br /&gt;
[[File:Eaxreverb_properties_screenshot.png|500px]]&lt;br /&gt;
&lt;br /&gt;
The only difference is that the property names in the guide have the &amp;lt;tt&amp;gt;AL_EAXREVERB_&amp;lt;/tt&amp;gt; prefix, while in TDM definitions this prefix is removed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presets (Version 2) ==&lt;br /&gt;
&lt;br /&gt;
There is one special property &amp;lt;tt&amp;gt;PRESET&amp;lt;/tt&amp;gt;, which is not present in the EFX guide.&lt;br /&gt;
This property accepts the name of the preset which you want to use:&lt;br /&gt;
&lt;br /&gt;
 eaxreverb &amp;quot;myclassroom&amp;quot; {&lt;br /&gt;
   preset auditorium&lt;br /&gt;
 }&lt;br /&gt;
 eaxreverb &amp;quot;mycave&amp;quot; {&lt;br /&gt;
   preset cave&lt;br /&gt;
 }&lt;br /&gt;
 eaxreverb &amp;quot;mycorridor&amp;quot; {&lt;br /&gt;
   preset hallway&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you specify the preset like this, the values for all the reverb properties will be taken from the specified preset.&lt;br /&gt;
Additionally, you can override values of some properties if you define them manually &#039;&#039;&#039;after&#039;&#039;&#039; defining the preset.&lt;br /&gt;
&lt;br /&gt;
The preset property also accepts index of preset. Don&#039;t use indices for anything except experimentation, since they may change in future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The presets were taken from OpenAL-Soft implementation which TDM uses.&lt;br /&gt;
Here is the full list of preset names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;height:350px; overflow:scroll;&amp;quot;&amp;gt;&lt;br /&gt;
GENERIC                                     &lt;br /&gt;
PADDEDCELL                                  &lt;br /&gt;
ROOM                                        &lt;br /&gt;
BATHROOM                                    &lt;br /&gt;
LIVINGROOM                                  &lt;br /&gt;
STONEROOM                                   &lt;br /&gt;
AUDITORIUM                                  &lt;br /&gt;
CONCERTHALL                                 &lt;br /&gt;
CAVE                                        &lt;br /&gt;
ARENA                                       &lt;br /&gt;
HANGAR                                      &lt;br /&gt;
CARPETEDHALLWAY                             &lt;br /&gt;
HALLWAY                                     &lt;br /&gt;
STONECORRIDOR                               &lt;br /&gt;
ALLEY                                       &lt;br /&gt;
FOREST                                      &lt;br /&gt;
CITY                                        &lt;br /&gt;
MOUNTAINS                                   &lt;br /&gt;
QUARRY                                      &lt;br /&gt;
PLAIN                                       &lt;br /&gt;
PARKINGLOT                                  &lt;br /&gt;
SEWERPIPE                                   &lt;br /&gt;
UNDERWATER                                  &lt;br /&gt;
DRUGGED                                     &lt;br /&gt;
DIZZY                                       &lt;br /&gt;
PSYCHOTIC                                   &lt;br /&gt;
CASTLE_SMALLROOM                            &lt;br /&gt;
CASTLE_SHORTPASSAGE                         &lt;br /&gt;
CASTLE_MEDIUMROOM                           &lt;br /&gt;
CASTLE_LARGEROOM                            &lt;br /&gt;
CASTLE_LONGPASSAGE                          &lt;br /&gt;
CASTLE_HALL                                 &lt;br /&gt;
CASTLE_CUPBOARD                             &lt;br /&gt;
CASTLE_COURTYARD                            &lt;br /&gt;
CASTLE_ALCOVE                               &lt;br /&gt;
FACTORY_SMALLROOM                           &lt;br /&gt;
FACTORY_SHORTPASSAGE                        &lt;br /&gt;
FACTORY_MEDIUMROOM                          &lt;br /&gt;
FACTORY_LARGEROOM                           &lt;br /&gt;
FACTORY_LONGPASSAGE                         &lt;br /&gt;
FACTORY_HALL                                &lt;br /&gt;
FACTORY_CUPBOARD                            &lt;br /&gt;
FACTORY_COURTYARD                           &lt;br /&gt;
FACTORY_ALCOVE                              &lt;br /&gt;
ICEPALACE_SMALLROOM                         &lt;br /&gt;
ICEPALACE_SHORTPASSAGE                      &lt;br /&gt;
ICEPALACE_MEDIUMROOM                        &lt;br /&gt;
ICEPALACE_LARGEROOM                         &lt;br /&gt;
ICEPALACE_LONGPASSAGE                       &lt;br /&gt;
ICEPALACE_HALL                              &lt;br /&gt;
ICEPALACE_CUPBOARD                          &lt;br /&gt;
ICEPALACE_COURTYARD                         &lt;br /&gt;
ICEPALACE_ALCOVE                            &lt;br /&gt;
SPACESTATION_SMALLROOM                      &lt;br /&gt;
SPACESTATION_SHORTPASSAGE                   &lt;br /&gt;
SPACESTATION_MEDIUMROOM                     &lt;br /&gt;
SPACESTATION_LARGEROOM                      &lt;br /&gt;
SPACESTATION_LONGPASSAGE                    &lt;br /&gt;
SPACESTATION_HALL                           &lt;br /&gt;
SPACESTATION_CUPBOARD                       &lt;br /&gt;
SPACESTATION_ALCOVE                         &lt;br /&gt;
WOODEN_SMALLROOM                            &lt;br /&gt;
WOODEN_SHORTPASSAGE                         &lt;br /&gt;
WOODEN_MEDIUMROOM                           &lt;br /&gt;
WOODEN_LARGEROOM                            &lt;br /&gt;
WOODEN_LONGPASSAGE                          &lt;br /&gt;
WOODEN_HALL                                 &lt;br /&gt;
WOODEN_CUPBOARD                             &lt;br /&gt;
WOODEN_COURTYARD                            &lt;br /&gt;
WOODEN_ALCOVE                               &lt;br /&gt;
SPORT_EMPTYSTADIUM                          &lt;br /&gt;
SPORT_SQUASHCOURT                           &lt;br /&gt;
SPORT_SMALLSWIMMINGPOOL                     &lt;br /&gt;
SPORT_LARGESWIMMINGPOOL                     &lt;br /&gt;
SPORT_GYMNASIUM                             &lt;br /&gt;
SPORT_FULLSTADIUM                           &lt;br /&gt;
SPORT_STADIUMTANNOY                         &lt;br /&gt;
PREFAB_WORKSHOP                             &lt;br /&gt;
PREFAB_SCHOOLROOM                           &lt;br /&gt;
PREFAB_PRACTISEROOM                         &lt;br /&gt;
PREFAB_OUTHOUSE                             &lt;br /&gt;
PREFAB_CARAVAN                              &lt;br /&gt;
DOME_TOMB                                   &lt;br /&gt;
PIPE_SMALL                                  &lt;br /&gt;
DOME_SAINTPAULS                             &lt;br /&gt;
PIPE_LONGTHIN                               &lt;br /&gt;
PIPE_LARGE                                  &lt;br /&gt;
PIPE_RESONANT                               &lt;br /&gt;
OUTDOORS_BACKYARD                           &lt;br /&gt;
OUTDOORS_ROLLINGPLAINS                      &lt;br /&gt;
OUTDOORS_DEEPCANYON                         &lt;br /&gt;
OUTDOORS_CREEK                              &lt;br /&gt;
OUTDOORS_VALLEY                             &lt;br /&gt;
MOOD_HEAVEN                                 &lt;br /&gt;
MOOD_HELL                                   &lt;br /&gt;
MOOD_MEMORY                                 &lt;br /&gt;
DRIVING_COMMENTATOR                         &lt;br /&gt;
DRIVING_PITGARAGE                           &lt;br /&gt;
DRIVING_INCAR_RACER                         &lt;br /&gt;
DRIVING_INCAR_SPORTS                        &lt;br /&gt;
DRIVING_INCAR_LUXURY                        &lt;br /&gt;
DRIVING_FULLGRANDSTAND                      &lt;br /&gt;
DRIVING_EMPTYGRANDSTAND                     &lt;br /&gt;
DRIVING_TUNNEL                              &lt;br /&gt;
CITY_STREETS                                &lt;br /&gt;
CITY_SUBWAY                                 &lt;br /&gt;
CITY_MUSEUM                                 &lt;br /&gt;
CITY_LIBRARY                                &lt;br /&gt;
CITY_UNDERPASS                              &lt;br /&gt;
CITY_ABANDONED                              &lt;br /&gt;
DUSTYROOM                                   &lt;br /&gt;
CHAPEL                                      &lt;br /&gt;
SMALLWATERROOM                              &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Their definitions can be seen in [https://github.com/kcat/openal-soft/blob/master/include/AL/efx-presets.h efx-presets.h] from OpenAL-Soft source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Legacy info (Version 1) ==&lt;br /&gt;
&lt;br /&gt;
This information is from the old official EAX 2.0 documentation, although some properties may have changed in scope and focus from EAX 2.0 to EAX 4.0. One can assume that the properties serve the same general purpose and that each property&#039;s value bounds are approximately the same.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;environment&#039;&#039;&#039; - Unknown. Likely sets the room to one of an unknown number of environment presets.&lt;br /&gt;
* &#039;&#039;&#039;environment size&#039;&#039;&#039; - The Environment Size property sets the apparent size of the surrounding “room.” The value of Environment Size can be considered a characteristic dimension of the room expressed in meters. Scaling Environment Size is equivalent to scaling all dimensions of the room by the same factor. Value type is FLOAT; value range is 1.0 to 100.0, expressed in linear meters.&lt;br /&gt;
* &#039;&#039;&#039;environment diffusion&#039;&#039;&#039; - The Environment Diffusion property controls the echo density in the reverberation decay. Reducing diffusion gives the reverberation a more “grainy” character that is especially noticeable with percussive sound sources. If you set a diffusion value of 0.0, the later reverberation sounds like a succession of distinct echoes. Value type is FLOAT; value range is 0.0 to 1.0, expressed in a linear multiplier value.&lt;br /&gt;
* &#039;&#039;&#039;room&#039;&#039;&#039; - The Room property is the master volume control for the reflected sound (both early reflections and reverberation) that EAX adds to all sound sources. It sets the maximum amount of reflections and reverberation added to the sound mix in the primary buffer (the listener). Value is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room hf&#039;&#039;&#039; - The Room HF property further tweaks reflected sound by attenuating it at high frequencies. It controls a low-pass filter that applies globally to the reflected sound of all sound sources. The exact qualities of this low-pass filter -- its frequency and its bandwidth (Q) -- are unknown. Value type is LONG; value range is -10000 to 0, expressed in hundredths of one decibel (-100 dB to 0 dB).&lt;br /&gt;
* &#039;&#039;&#039;room lf&#039;&#039;&#039; - Undocumented. Assumably, the Room LF property applies a high-pass to reflected sound in much the same way as Room HF applies low-pass. The value type and range is unknown, but is likely LONG, must be between -10000 and 0 and is expressed in hundredths of one decibel.&lt;br /&gt;
* &#039;&#039;&#039;decay time&#039;&#039;&#039; - The Decay Time property sets the reverberation decay time, or the time in which reverberation is diminished. It ranges from 0.1 (typically a small room with very dead surfaces) to 20.0 (typically a large room with very live surfaces). Value is FLOAT; value range is 0.1 to 20.0, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;decay hf ratio&#039;&#039;&#039; - The Decay HF Ratio property sets the spectral quality of the Decay Time parameter. It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is neutral: the decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time increases so it’s longer than the decay time at low frequencies. You hear a more brilliant reverberation with a longer decay at high frequencies. As the Decay HF Ratio value decreases below 1.0, the high-frequency decay time decreases so it’s shorter than the decay time of the low frequencies. You hear a more natural reverberation. Value is FLOAT; value range is 0.1 to 20.0, expressed in a linear multiplier variable.&lt;br /&gt;
* &#039;&#039;&#039;decay lf ratio&#039;&#039;&#039; - Undocumented. It&#039;s likely best to leave the value at 1.0, though the value&#039;s type and range is probably the same as the Decay HF Ratio property.&lt;br /&gt;
* &#039;&#039;&#039;reflections&#039;&#039;&#039; - The Reflections property controls the overall amount of initial reflections relative to the Room property. The value of Reflections ranges from a maximum of 10 dB to a minimum of -100 dB (no initial reflections at all), and is corrected by the value of the Room property. The Reflections property does not affect the subsequent reverberation decay. You can increase the amount of initial reflections to simulate a more narrow space or closer walls, especially effective if you associate the initial reflections increase with a reduction in reflections delays by lowering the value of the Reflection Delay property. To simulate open or semi-open environments, you can maintain the amount of early reflections while reducing the value of the Reverb property, which controls later reflections. Value type is LONG; value range is -10000 to 1000, expressed in hundredths of one decibel (-100 dB to -10 dB).&lt;br /&gt;
* &#039;&#039;&#039;reflections delay&#039;&#039;&#039; - The Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source. It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant reflective surfaces—and therefore control the perceived size of the room. Value is FLOAT; value range is 0.0 to 0.3, expressed in seconds (0 to 300 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reflections pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of early reflections in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;reverb&#039;&#039;&#039; - The Reverb property controls the overall amount of later reverberation relative to the Room property. (The Room property sets the overall amount of both initial reflections and later reverberation.) The value of Reverb ranges from a maximum of 20 dB to a minimum of -100 dB (no late reverberation at all). Value is LONG; value range is -10000 to 2000, expressed in hundredths of a decibel (-100 dB to 20 dB).&lt;br /&gt;
* &#039;&#039;&#039;reverb delay&#039;&#039;&#039; - The Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection (the first of the early reflections). It ranges from 0 to 100 milliseconds. Reducing or increasing Reverb Delay is useful for simulating a smaller or larger room. Value is FLOAT; value range is 0.0 to 0.1, expressed in seconds (0 to 100 milliseconds).&lt;br /&gt;
* &#039;&#039;&#039;reverb pan&#039;&#039;&#039; - Undocumented. Three values are specified which may correspond to a generic &amp;quot;front&amp;quot;, &amp;quot;side&amp;quot; and &amp;quot;back/rear&amp;quot; configuration to control the directivity of reverberation in a 7.1 surround matrix. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;echo time&#039;&#039;&#039; - Undocumented. Likely controls the decay time of echoes, or late reflections. A value of 0.1 likely presents a natural amount of echo, while increasing the value likely causes a &amp;quot;Grand Canyon&amp;quot; effect. Value type is likely FLOAT; value range is likely between 0.075 and 0.25, expressed in seconds.&lt;br /&gt;
* &#039;&#039;&#039;echo depth&#039;&#039;&#039; - Undocumented. May control directionality or tonal qualities of echoes arriving at the listener. Probably best to leave at 1.0. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation time&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;modulation depth&#039;&#039;&#039; - Undocumented. Unknown purpose. Value type and range is unknown.&lt;br /&gt;
* &#039;&#039;&#039;air absorption hf&#039;&#039;&#039; - The Air Absorption HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium. It applies to both the direct path and reflected sound. You can use Air Absorption HF to simulate sound transmission through foggy air, dry air, smoky atmosphere, and so on. The default value is -0.05 dB per meter, which roughly corresponds to typical condition of atmospheric humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates a less absorbent medium (dry desert air, for example). Value is FLOAT; value range is -100.0 to 0.0, expressed in hundredths of one decibel per meter (-1 dB to 0 dB). Default value is -5.0, which corresponds to -0.05 dB per meter attenuation.&lt;br /&gt;
* &#039;&#039;&#039;hf reference&#039;&#039;&#039; - Likely defines the frequency used for low-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 5000.0.&lt;br /&gt;
* &#039;&#039;&#039;lf reference&#039;&#039;&#039; - Likely defines the frequency used for high-pass filters. Value is likely LONG; value range is likely between 0.0 and 20000.0, expressed in Hz. This value is probably best left at 250.0.&lt;br /&gt;
* &#039;&#039;&#039;room rolloff factor&#039;&#039;&#039; - The Room Rolloff property is one of two methods available in EAX to attenuate the reflected sound (containing both reflections, reverberation and echoes) according to source-listener distance. Value type is FLOAT; value range is 0.0 to 10.0, expressed in a linear multiplier value. It&#039;s recommended that users use 0.0, as id Software did not deviate from this value with Doom 3.&lt;br /&gt;
* &#039;&#039;&#039;flags&#039;&#039;&#039; - The Flags property is intended to control the relationship of high-level EAX properties to low-level properties. If certain EAX flags are set by setting the Flags property to a particular value, the setting of high-level properties is supposed to control the values of low-level properties based upon a defined scale, overriding specified values. In EAX 2.0, the value type is DWORD, whereas in Doom 3, it appears to be INT or some other type commonly used to store numeric values. In Doom 3, common values are 0, 2, 15, 31, 32, 56 and 63, but no documentation details what these values correspond to. If users wish to experiment with the Flags property, it is recommended that they choose from one of the above values. For reference, here is a table with the counts for each flag value as used in Doom 3:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: 0.5em; margin-left: 2em; border: 1px solid #a0a0a0; text-align: right; border-collapse: collapse;&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag decimal&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Flag binary&lt;br /&gt;
!bgcolor=&amp;quot;#ffdead&amp;quot;|Count&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|00000000&lt;br /&gt;
|497&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|00000010&lt;br /&gt;
|6&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|00001110&lt;br /&gt;
|15&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|00001111&lt;br /&gt;
|94&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|00011111&lt;br /&gt;
|511&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|00100000&lt;br /&gt;
|247&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|00111000&lt;br /&gt;
|59&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|00111111&lt;br /&gt;
|168&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Design.&#039;&#039;&#039;&lt;br /&gt;
In terms of the actual sound design for the values you put into these variables, here is a general tutorial on reverb from FruityLoops (NOTE: This is for a music production plugin, some of these don&#039;t apply, it&#039;s just to give a general idea on what certain variables do):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Low Cut&#039;&#039;&#039; Adjusts the low cutoff frequency. Use this to remove low frequencies from the input signal before reverb is added. For example, if you are adding reverb to, say a drum track, you might want to remove some of the &#039;rumble&#039; from the bass drum by attenuating the bass frequencies. Setting this parameter to the minimum value will bypass the Low Cut filter, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;High Cut&#039;&#039;&#039; - Similar to the Low Cut, this adjusts the high cutoff frequency. Use this to remove high frequencies from the input signal.&lt;br /&gt;
* &#039;&#039;&#039;Predelay&#039;&#039;&#039; - Controls the delay time between the direct input signal and the first reverb reflection. This should be set to modest values for small rooms, and can be increased in relation to increases in room size. &#039;&#039;&#039;Predelay&#039;&#039;&#039; creates a slap-back echo effect that can both add atmosphere and muffle the signal, so use it wisely.&lt;br /&gt;
* &#039;&#039;&#039;Room Size&#039;&#039;&#039; - Use this to set the size of the virtual room where the reverb is created. The Room Size should be adjusted according to the decay time. Small rooms sound better with a short decay time, large rooms sound better with longer reverb times.&lt;br /&gt;
* &#039;&#039;&#039;Diffusion&#039;&#039;&#039; - Controls the density of the reflections bouncing off the walls of the virtual room. A low diffusion setting makes the reflections sound more distinct, like closely spaced echoes. A high diffusion setting creates reflections so close they sound more like noise, where no echoes can be distinguished.&lt;br /&gt;
* &#039;&#039;&#039;Color&#039;&#039;&#039; - The Color parameter is used for adjusting the decay time of the bass frequencies of the signal. This allows you to change the overall perceived mood or &#039;sound&#039; of the virtual room. A bright room has a low bass response, while warm rooms have a higher bass response. In a flat room, the response of the bass is equal to the general frequency response. Color has five settings: Brighter, Bright, Flat, Warm, Warmer.&lt;br /&gt;
* &#039;&#039;&#039;Decay&#039;&#039;&#039; - Controls the decay time of the reverb, the time it takes for the signal to decay to -60dB (1/1000 of the maximum amplitude). Use low decay times for small rooms or boxes, and long decay times for large rooms, halls or churches. You should also make sure that the Room Size parameter has an appropriate value.&lt;br /&gt;
* &#039;&#039;&#039;High Damping&#039;&#039;&#039; - This parameter allows you to adjust damping of the high frequencies in the reverb signal over time. Damping refers to the high frequencies being attenuated and dying out. This causes the sound to become gradually muffled and warm like it is being absorbed in the room. Setting this parameter to the maximum value will bypass the High Damping, displaying OFF in the value field.&lt;br /&gt;
* &#039;&#039;&#039;Dry&#039;&#039;&#039; - Sets the relative dry output level.&lt;br /&gt;
* &#039;&#039;&#039;Reverb&#039;&#039;&#039; - Sets the relative reverb (wet) signal level.&lt;br /&gt;
&lt;br /&gt;
=Error Check=&lt;br /&gt;
If you modified the presets in your EFX file, you can check for errors ingame. Load your map and open the console. Type &#039;&#039;reloadSounds&#039;&#039;, this will trigger the reload of the EFX used in your map and print out the vars which cause an error (like a value exceeding the maximum range). Note that if your EFX files contain errors, this will make the game ignore the EFX settings you chose. &lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
There are some released FMs with EFX settings:&lt;br /&gt;
&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016 Volta and the Stone]. While Kingsal says EAX settings are unsupported, TDM loads them properly.&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/10125-fan-mission-patently-dangerous-20091031 Patently Dangerous]. Probably the first map with EFX settings, but they don&#039;t load now.&lt;br /&gt;
* [http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/?hl=%20behind%20%20closed%20%20doors Crucible of Omens : Behind Closed Doors]. Seems to have many EFX definitions and locations cover most of the map.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
The Version 2 definitions were implemented due to [http://bugs.thedarkmod.com/view.php?id=4815 issue 4815], it has some brief explanation.&lt;br /&gt;
&lt;br /&gt;
A tutorial based around EFX can be found [http://forums.thedarkmod.com/topic/19205-getting-started-with-the-efx-room-reverb-system-wip/ here]&lt;br /&gt;
&lt;br /&gt;
An old demonstration map of EAX in TDM is included [http://forums.thedarkmod.com/topic/11045-environmental-audio-extensions-eax-in-tdm/ here]&lt;br /&gt;
&lt;br /&gt;
A discussion about no_efx is [http://forums.thedarkmod.com/topic/19213-efx-discussion here]&lt;br /&gt;
&lt;br /&gt;
The first version of this article was written by Ishtvan at [http://forums.thedarkmod.com/topic/2071 http://forums.thedarkmod.com/topic/2071]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sound]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>SeriousToni</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Conversation_Tutorial&amp;diff=28744</id>
		<title>Conversation Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Conversation_Tutorial&amp;diff=28744"/>
		<updated>2021-11-12T21:12:11Z</updated>

		<summary type="html">&lt;p&gt;SeriousToni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presumably your AI are pathing along, minding their own business, when you want them to interact, say something specific, or glance at one another.  Here&#039;s how to set that up, step by step...    ([[Conversations]] are more than just talk, they may control movement, animations, or other things.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Triggering =&lt;br /&gt;
First they have to run into a [[Triggers|trigger]] to initiate a &amp;quot;conversation&amp;quot;, either as the target of a [[Path Nodes|path node]] (as of TDM 2.02), another trigger entity, a stim/response trigger, or equivalent.&lt;br /&gt;
&lt;br /&gt;
The trigger targets an &amp;quot;atdm:target_startconversation&amp;quot; entity (found in targets folder). That entity gets the spawnarg &amp;quot;conversation&amp;quot; &amp;quot;whatever&amp;quot; (substitute &amp;quot;whatever&amp;quot; with a label to identify this conversation compared to future ones in the list).&lt;br /&gt;
&lt;br /&gt;
[[File:Conversation Start Setup.png|large|center]]&lt;br /&gt;
&#039;&#039;&#039;Make sure to use the actual conversation as the value for &amp;quot;conversation&amp;quot;, NOT the entity itself! In this example the correct value for the conversation start is &amp;quot;lost_key&amp;quot;, NOT &amp;quot;convo_kitchen&amp;quot;.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=Sounds/Lines=&lt;br /&gt;
Before you jump in, you will need to type in which soundshaders you will be using if you want them to talk. So if you haven&#039;t already picked your lines, pop in a temporary Speaker and get the names of the [[Sound_Folder_Structure|soundshaders]] you&#039;ll want to use.&lt;br /&gt;
&lt;br /&gt;
For example, I have an AI greet a horse with &amp;quot;tdm_ai_wench_greet_civilian_to_civilian&amp;quot;, to which the horse whinnies via &amp;quot;animal_horse_idle&amp;quot;, then she commiserates to it from, &amp;quot;tdm_ai_wench_idle&amp;quot;. If you desire a specific line, or custom, you&#039;ll have to create your own soundshader (a text file listing an audiofile).&lt;br /&gt;
&lt;br /&gt;
An audiofile (e.g., .ogg file) intended for use in a conversation should be mono, not stereo. Stereo will play, but AI lip-sync will lag.&lt;br /&gt;
&lt;br /&gt;
=Conversation Editor window=&lt;br /&gt;
Now enter the Conversation Editor (map menu), which will create an entity if you don&#039;t already have one. Be sure it&#039;s not placed in the void!&lt;br /&gt;
&lt;br /&gt;
Click +Add down at the bottom to create a new conversation, then edit it. You&#039;ll notice toward the top, &amp;quot;Actors must be within talk distance&amp;quot; and &amp;quot;always facing&amp;quot;. These cause them to move toward each other, and/or turn when the conversation is triggered, not that the conversation waits until they are in range. For each actor (whether you have just one, or multiple AI interacting), +Add that actor and enter the name. Names identify who does what and when in the next step.&lt;br /&gt;
&lt;br /&gt;
Now in the bottom you may add commands, which run in sequence (generally). You may choose for one to not wait, in which case the next will occur perhaps before the current completes. This can be good to have AI talk more naturally overlapping, rather than a lengthy pause between each spoken line.&lt;br /&gt;
&lt;br /&gt;
Typical commands are &amp;quot;Talk&amp;quot; to say something (paste in a soundshader name you noted earlier), look at something or someone (including player1), wait a few seconds, etc. For example, my wench looks at the horse, says her line, the horse whinnies in reply, then she delivers her final line. That&#039;s it, now check to see how it works out in game.&lt;br /&gt;
&lt;br /&gt;
(Note: if you want to mute your AI generally, so they don&#039;t use their usual vocalizations the rest of the time (perhaps not making sense leading in or out of your conversation), change &amp;quot;def_vocal_set&amp;quot; to &amp;quot;atdm:ai_vocal_set_mute&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
[[Conversations]]&lt;br /&gt;
&lt;br /&gt;
[[Cutscenes Part 3: Lighting, Placing the Player, and Conversations#Conversations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:AI]]&lt;br /&gt;
[[Category:AI Tutorials]]&lt;/div&gt;</summary>
		<author><name>SeriousToni</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=File:Conversation_Start_Setup.png&amp;diff=28743</id>
		<title>File:Conversation Start Setup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=File:Conversation_Start_Setup.png&amp;diff=28743"/>
		<updated>2021-11-12T21:08:18Z</updated>

		<summary type="html">&lt;p&gt;SeriousToni: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is how you setup the Conversation Start entity. Be sure to use the name of the actual conversation (bottom of the window) and NOT the conversation entity itself (at the top of the window).&lt;/div&gt;</summary>
		<author><name>SeriousToni</name></author>
	</entry>
</feed>