<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.frictionalgames.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TiMan</id>
	<title>Frictional Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.frictionalgames.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TiMan"/>
	<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page/Special:Contributions/TiMan"/>
	<updated>2026-08-04T01:29:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7181</id>
		<title>HPL3/Audition/Voice Handler Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7181"/>
		<updated>2026-07-30T22:27:43Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Voice Handler =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
The voice handler is basically a simplified way in which to play complex sound events that deal with voices. It is also a way to easily handle subtitles along with the voices and play special effects track along with them. It has a queue system and keeps track of how many times a voice has been played. &lt;br /&gt;
&lt;br /&gt;
Note that while often used along with the event database, these are two completely separate systems, so they should not be confused with one another.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
Before calling a subject the source of the sound should be set up. This is best done inside the VoiceHandler editor itself, but can also be done using the helper function Voice_SetSource(). This sets up the entity (which can be something moving) which will emit the voice coming from the specified character. It will also set up the distance that the voice can be heard. If using the function, it's best to do this in ''OnEnter'' in the map script file.&lt;br /&gt;
= Properties =&lt;br /&gt;
&lt;br /&gt;
== Character ==&lt;br /&gt;
The character is the agent that is speaking the lines. Normally this is a person of some sort but it can really be whatever. It mostly used used as a way to give debug data on what character is saying what line, and also used to place the voice in the world (the position of character can be set in script).&lt;br /&gt;
&lt;br /&gt;
'''ID'''&amp;lt;br /&amp;gt;Internal Id&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Name of the character&lt;br /&gt;
&lt;br /&gt;
'''EntryType'''&amp;lt;br /&amp;gt;The type of the sounds (and extrasounds) that are played for this character. Is either World, WorldClean or GUI.&lt;br /&gt;
&lt;br /&gt;
'''Volume''' &amp;lt;br /&amp;gt;Volume of the sound files. Gets multiplied with other volume properties.&lt;br /&gt;
&lt;br /&gt;
'''ReverbVolume''' &amp;lt;br /&amp;gt;The amount of reverb used for the sounds. Gets multiplied with other ReverbVolume properties.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scene ==&lt;br /&gt;
This does not have to mean the level that the voice are played in, but what subtext that they are used in. A scene is NOT the same as the level the voices belong to, but a level can (and should have) have many scenes. It is a way to group subjects and also to setup what voices should be in focus (by using FocusPrio).&lt;br /&gt;
&lt;br /&gt;
'''ID'''&amp;lt;br /&amp;gt;Internal Id&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Name of the scene&lt;br /&gt;
&lt;br /&gt;
'''FocusPrio'''&amp;lt;br /&amp;gt;This is the priority for a voice to into focus, meaning that is subtittles are shown and any other voice playing gets its volume lowered. To beat a currently playing voice, FocusPrio must be higher.&amp;lt;br /&amp;gt;When a subject starts playing it is checked if another sound is playing and FocusPrio determines if the new subject gets into focus. Also when a subject stops playing a certain amount of time is waited (default 2 seconds) and then there is a check to see if there is any playing voice that should come into focus. If there are many playing, FocusPrio determines which one. The reason for waiting a litte while is in case there is a conversiation in one scene containing many subjects, and if so it would not sound good if the focus was constantly switched (ie unrelated subtitles popping up for a second).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Volume''' &amp;lt;br /&amp;gt;Volume of the sound and effect files. Gets multiplied with other volume properties.&lt;br /&gt;
&lt;br /&gt;
'''ReverbVolume''' &amp;lt;br /&amp;gt;The amount of reverb used for the sounds. Gets multiplied with other ReverbVolume properties.&lt;br /&gt;
&lt;br /&gt;
== Effect ==&lt;br /&gt;
This defines certain effect that should be played on the voice, be that echo, noise or whatnot. &amp;lt;br /&amp;gt;''Note: Right now there is not much done with effect, so it is pretty useless''&lt;br /&gt;
&lt;br /&gt;
'''ID'''&amp;lt;br /&amp;gt;Internal Id&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Name of the effect&lt;br /&gt;
&lt;br /&gt;
'''GlobalStartEffectFile'''&amp;lt;br /&amp;gt;A file that is played each time a new line starts.&lt;br /&gt;
&lt;br /&gt;
'''GlobalEndEffectFile'''&amp;lt;br /&amp;gt;A file that is played each time a new line is over.&lt;br /&gt;
&lt;br /&gt;
'''GlobalVoiceOffset'''&amp;lt;br /&amp;gt;Not used.&lt;br /&gt;
&lt;br /&gt;
== Subject ==&lt;br /&gt;
A subject is what you call when you want to voice to be played. A subject is the basic data structure of the voice data and it contains sound files, subtitle texts and various options.&amp;lt;br /&amp;gt;A subject contain one or more '''Lines''' (more on these below). Normally all of these lines will be played in order, but if UseSingleRandomLine is true, only one will.&lt;br /&gt;
&lt;br /&gt;
'''ID'''&amp;lt;br /&amp;gt;Internal Id&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Name of the subject&lt;br /&gt;
&lt;br /&gt;
'''UseSingleRandomLine'''&amp;lt;br /&amp;gt;If only a single random line should be used. If more than 2 lines, it is made sure that the a line is never picked two times in a row.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''SceneId'''&amp;lt;br /&amp;gt;Id of scene connected to the subject.&lt;br /&gt;
&lt;br /&gt;
'''EffectId'''&amp;lt;br /&amp;gt;Id of the effect used for the subject.&lt;br /&gt;
== Line ==&lt;br /&gt;
When a voice is called to be played the entirety of a line is always played. &lt;br /&gt;
The line contains one or more '''Sounds''' (more on these below) that make up what is played.&lt;br /&gt;
&lt;br /&gt;
'''ID'''&amp;lt;br /&amp;gt;Internal Id&lt;br /&gt;
&lt;br /&gt;
'''CharacterId'''&amp;lt;br /&amp;gt;Id of character connected to the line.&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
This is the lowest level data structure for a subject. It contains properties for the voice, (opitonal) effect sound, and subtitle.&lt;br /&gt;
&lt;br /&gt;
The file name for the voice sound is generated based on the names of the higher level structures. The syntax is:&amp;lt;br /&amp;gt;''[map]'' /''[scene]'' _''[subject]'' _''[line index in 3 digits]'' _''[character]'' _''[sound index in 3 digits]''&lt;br /&gt;
&lt;br /&gt;
Here is an example:&amp;lt;br /&amp;gt;''01_01_castle/SwordFight_ShowMercy_002_Arthur_001'' &amp;lt;br /&amp;gt;This would be a voice sound being said in the map ''&amp;quot;01_01_castle&amp;quot;'' (no file extension!), in the Scene ''&amp;quot;SwordFight&amp;quot;''. The subject is ''&amp;quot;ShowMercy&amp;quot;'', it is the second line, it is being said by ''&amp;quot;Arthur&amp;quot;'' and it is his first sound for that line.&lt;br /&gt;
&lt;br /&gt;
The lang file entry for the text is also generated, with this syntax:&amp;lt;br /&amp;gt;Category: Voices_''[map]'' &amp;lt;br /&amp;gt;Entry: ''[scene]'' _''[subject]'' _''[line index in 3 digits]'' _''[character]'' _''[sound index in 3 digits]'' (apart from no folder name, it is exactly the same as for the voice file!)&lt;br /&gt;
&lt;br /&gt;
Finally, if &amp;quot;AutogenerateLangFiles&amp;quot; in &amp;quot;Main&amp;quot; is set to true in the user settings, then the lang file entries will be autogenerated with the text specified in the sound's properties.&lt;br /&gt;
&lt;br /&gt;
'''Text''' &amp;lt;br /&amp;gt;The text for the voices, not really saved by added to a lang file (if AutogenerateLangFiles is true i settings, see above)&lt;br /&gt;
&lt;br /&gt;
'''HasVoice''' &amp;lt;br /&amp;gt;If the sound has a voice at all. This is only meaningful false if there is an Effect filed specificed.&lt;br /&gt;
&lt;br /&gt;
'''Volume''' &amp;lt;br /&amp;gt;Volume of the sound and effect file. Gets multiplied with other volume properties.&lt;br /&gt;
&lt;br /&gt;
'''ReverbVolume''' &amp;lt;br /&amp;gt;The amount of reverb used for the sounds. Gets multiplied with other ReverbVolume properties.&lt;br /&gt;
&lt;br /&gt;
'''VoiceOffset''' &amp;lt;br /&amp;gt;Number of seconds before voice starts to play.&lt;br /&gt;
&lt;br /&gt;
'''TextOffset''' &amp;lt;br /&amp;gt;Number of seconds before the subtitles show up.&lt;br /&gt;
&lt;br /&gt;
'''ExtraEffectOffset''' &amp;lt;br /&amp;gt;Number of seconds before the effect file starts to play.&lt;br /&gt;
&lt;br /&gt;
'''ExtraEffectFile''' &amp;lt;br /&amp;gt;File path to an extra sound file that is played along with the voice.&lt;br /&gt;
&lt;br /&gt;
'''EndsAfterExtraEffect''' &amp;lt;br /&amp;gt;If the sound should end when the extra sound file is done playing (and not the voice).&lt;br /&gt;
&lt;br /&gt;
'''EndPadding''' &amp;lt;br /&amp;gt;Number of seconds of padding in the length of voice file. If this is over 0, then that means the next sound will start that many seconds earlier (while the current sound is still playing).&lt;br /&gt;
&lt;br /&gt;
= Use with AI =&lt;br /&gt;
&lt;br /&gt;
When using voice with AI it is best always through the [http://wiki.frictionalgames.com/hpl3/game/scripting/entity_components#barkmachine BarkMachine component] using ''BarkMachine_PlayVoice(...)''. That way it is sure to be played in the right place even if there are multiple agents that use voices from the same character. When using the BarkMachine, the source set up directly before the line is played.&lt;br /&gt;
&lt;br /&gt;
The voices for all agents should also have &amp;quot;AgentBark&amp;quot; as scene, this way it makes it possible to see to that there is only one dialog line from an Agent at a time. Should there be some special line that does not apply to this, then by all means do not do this. &lt;br /&gt;
&lt;br /&gt;
If you want to have longer specific dialog on agents, then the best way to set that up is to have the piece of a dialog as a single subject with two unique Characters attached to the lines. Then set up these characters as voice sources specifically in the script and start the dialog using ''Voice_Play''. The scene must be AgentBark as described above and the prio must be less than what the default barks use. What then happens is that the dialog will continue until some AI event triggers default sounds to be played and the specific dialog will automatically be stopped.&lt;br /&gt;
&lt;br /&gt;
= Best Practices =&lt;br /&gt;
&lt;br /&gt;
Here are a few practices that should be used when adding voices in the game:&lt;br /&gt;
&lt;br /&gt;
'''- Sound effects are between *:s '''&amp;lt;br /&amp;gt;When adding sound effects, like *gasp*, *pants*, *cries*, etc then always put them between *:s. This way we can easily remove them for people that do not want the hearing impaired option.&lt;br /&gt;
&lt;br /&gt;
'''- Pure sound effects is a separate line'''&amp;lt;br /&amp;gt;When implementing a subject that contains parts where there is only (non character related) sound effects playing you shall add this as Line on its own. The character containing it shall be called &amp;quot;_SoundEffect&amp;quot;. If the sound effects need to come from special position in the world, then do add a &amp;quot;_&amp;quot; followed by a prefix to the name, for instance &amp;quot;_SoundEffect_Trees&amp;quot; (this should be pretty rare though and these sort of effects are better added through callback functions, but there might be some rare instance that require it).&lt;br /&gt;
&lt;br /&gt;
Important note is that this only meant for sound effects that are not specific to a character voice. Examples:&amp;lt;br /&amp;gt;Do '''NOT''' use it for: *cough*, *clears throat*, *spits*, etc.&amp;lt;br /&amp;gt;'''DO''' use it for: *steps are heard coming down the stairs*, *large metal door opens*, *Anne carefully steps on the creaking floor*, etc.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''- All protagonist dialog come from the character &amp;quot;Player&amp;quot;'''&amp;lt;br /&amp;gt;Make sure that all the dialog that the player is supposed to say outloud comes from the character &amp;quot;Player&amp;quot;, as this allow the game to not play breathing, etc when a voice over from the player character is playing.&lt;br /&gt;
&lt;br /&gt;
'''- Use proper prefix for subjects'''&amp;lt;br /&amp;gt;Have prefixes on the subjects that give some hint where they belong and make it easier to sort. For instance a blackbox subject should start with &amp;quot;Blackbox_&amp;quot;, eg &amp;quot;Blackbox_FriedRobot&amp;quot;. Another examples would be a situation that many subjects belong. Say Simon meets a farmer and there is a lot of subjects related to this, then use the prefix &amp;quot;SimonMeetsFarmer_&amp;quot;, eg &amp;quot;SimonMeetsFarmer_Intro&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is also true for special characters, for instance when a certain character speak in a recording. So for instnace a character that appears in a SOMA blackbox message (that does not come from a world position), should have &amp;quot;Blackbox_&amp;quot; as prefix, eg &amp;quot;Blackbox_Amy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''- Write temp dialog in square brackets'''&amp;lt;br /&amp;gt;If you add some writing that is only temporary then add this between square brackets. Also briefly summarize what is supposed to be going on, or what the is supposed to be expressed. Examples:&amp;lt;br /&amp;gt;[Player gets his finger caught in bear trap]&amp;lt;br /&amp;gt;[Hint that the screw needs to be bigger]&amp;lt;br /&amp;gt;&lt;br /&gt;
If you need to have further info that feels wrong to show in-game then you can add extra info under the line direction, but make sure to start the line with INFO:, so it is not confused with proper line direction. Examples:&amp;lt;br /&amp;gt;INFO: The player tries to hold the pain inside.&amp;lt;br /&amp;gt;INFO: The solution is to use the file on the screw, can have slight hint for that.&amp;lt;br /&amp;gt;= File Format =&lt;br /&gt;
&lt;br /&gt;
(You shouldn't need this - everything can be edited using the VoiceHandler exe!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;VoiceData&amp;gt;&lt;br /&gt;
  &amp;lt;Characters&amp;gt;&lt;br /&gt;
    &amp;lt;Character [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Characters&amp;gt;&lt;br /&gt;
  &amp;lt;Effects&amp;gt;&lt;br /&gt;
    &amp;lt;Effect [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Effects&amp;gt;&lt;br /&gt;
  &amp;lt;Scenes&amp;gt;&lt;br /&gt;
    &amp;lt;Scene [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Scenes&amp;gt;&lt;br /&gt;
  &amp;lt;Subjects&amp;gt;&lt;br /&gt;
    &amp;lt;Subject [Properties] &amp;gt;&lt;br /&gt;
      &amp;lt;Line [Properties] &amp;gt;&lt;br /&gt;
        &amp;lt;Sound [Properties] /&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/Line&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/Subject&amp;gt;&lt;br /&gt;
  &amp;lt;/Subjects&amp;gt;&lt;br /&gt;
&amp;lt;/VoiceData&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on the Properties that can be used, see Properties section above.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7180</id>
		<title>HPL3/Audition/Voice Handler Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7180"/>
		<updated>2026-07-30T22:26:52Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
The voice handler is basically a simplified way in which to play complex sound events that deal with voices. It is also a way to easily handle subtitles along with the voices and play special effects track along with them. It has a queue system and keeps track of how many times a voice has been played. &lt;br /&gt;
&lt;br /&gt;
Note that while often used along with the event database, these are two completely separate systems, so they should not be confused with one another.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
Before calling a subject the source of the sound should be set up. This is best done inside the VoiceHandler editor itself, but can also be done using the helper function Voice_SetSource(). This sets up the entity (which can be something moving) which will emit the voice coming from the specified character. It will also set up the distance that the voice can be heard. If using the function, it's best to do this in ''OnEnter'' in the map script file.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7179</id>
		<title>HPL3/Audition/Voice Handler Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Audition/Voice_Handler_Overview&amp;diff=7179"/>
		<updated>2026-07-30T22:26:48Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;  The voice handler is basically a simplified way in which to play complex sound events that deal with voices. It is also a way to easily handle subtitles along with the voice...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
The voice handler is basically a simplified way in which to play complex sound events that deal with voices. It is also a way to easily handle subtitles along with the voices and play special effects track along with them. It has a queue system and keeps track of how many times a voice has been played. &lt;br /&gt;
&lt;br /&gt;
Note that while often used along with the event database, these are two completely separate systems, so they should not be confused with one another.&lt;br /&gt;
&lt;br /&gt;
= Setup =&lt;br /&gt;
&lt;br /&gt;
Before calling a subject the source of the sound should be set up. This is best done inside the VoiceHandler editor itself, but can also be done using the helper function Voice_SetSource(). This sets up the entity (which can be something moving) which will emit the voice coming from the specified character. It will also set up the distance that the voice can be heard. If using the function, it's best to do this in ''OnEnter'' in the map script file.&lt;br /&gt;
= Properties =&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition&amp;diff=7178</id>
		<title>HPL3/SOMA/Audition</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition&amp;diff=7178"/>
		<updated>2026-07-30T22:26:37Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Voice Handler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Audition and deals with managing dialogues, voice clips and lip sync.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/SOMA/Audition/Audition Overview|Audition Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Audition/Voices|Voices]]&lt;br /&gt;
* [[HPL3/Audition/Conversations|Conversations]]&lt;br /&gt;
* [[HPL3/SOMA/Audition/Lip Sync|Lip Sync]]&lt;br /&gt;
&lt;br /&gt;
== Voice Handler ==&lt;br /&gt;
* [[HPL3/Audition/Voice Handler Overview|Voice Handler Overview]]&lt;br /&gt;
* [[HPL3/Audition/Voice Settings|Voice Settings]]&lt;br /&gt;
* [[HPL3/Audition/Voice Subjects|Voice Subjects]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition/Audition_Overview&amp;diff=7177</id>
		<title>HPL3/SOMA/Audition/Audition Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition/Audition_Overview&amp;diff=7177"/>
		<updated>2026-07-30T22:25:31Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Best Practices =  Here are a few practices that should be used when adding voices in the game:  '''- Sound effects are between *:s '''&amp;lt;br /&amp;gt;When adding sound effects, like *...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Best Practices =&lt;br /&gt;
&lt;br /&gt;
Here are a few practices that should be used when adding voices in the game:&lt;br /&gt;
&lt;br /&gt;
'''- Sound effects are between *:s '''&amp;lt;br /&amp;gt;When adding sound effects, like *gasp*, *pants*, *cries*, etc then always put them between *:s. This way we can easily remove them for people that do not want the hearing impaired option.&lt;br /&gt;
&lt;br /&gt;
'''- Pure sound effects is a separate line'''&amp;lt;br /&amp;gt;When implementing a subject that contains parts where there is only (non character related) sound effects playing you shall add this as Line on its own. The character containing it shall be called &amp;quot;_SoundEffect&amp;quot;. If the sound effects need to come from special position in the world, then do add a &amp;quot;_&amp;quot; followed by a prefix to the name, for instance &amp;quot;_SoundEffect_Trees&amp;quot; (this should be pretty rare though and these sort of effects are better added through callback functions, but there might be some rare instance that require it).&lt;br /&gt;
&lt;br /&gt;
Important note is that this only meant for sound effects that are not specific to a character voice. Examples:&amp;lt;br /&amp;gt;Do '''NOT''' use it for: *cough*, *clears throat*, *spits*, etc.&amp;lt;br /&amp;gt;'''DO''' use it for: *steps are heard coming down the stairs*, *large metal door opens*, *Anne carefully steps on the creaking floor*, etc.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''- All protagonist dialog come from the character &amp;quot;Player&amp;quot;'''&amp;lt;br /&amp;gt;Make sure that all the dialog that the player is supposed to say outloud comes from the character &amp;quot;Player&amp;quot;, as this allow the game to not play breathing, etc when a voice over from the player character is playing.&lt;br /&gt;
&lt;br /&gt;
'''- Use proper prefix for subjects'''&amp;lt;br /&amp;gt;Have prefixes on the subjects that give some hint where they belong and make it easier to sort. For instance a blackbox subject should start with &amp;quot;Blackbox_&amp;quot;, eg &amp;quot;Blackbox_FriedRobot&amp;quot;. Another examples would be a situation that many subjects belong. Say Simon meets a farmer and there is a lot of subjects related to this, then use the prefix &amp;quot;SimonMeetsFarmer_&amp;quot;, eg &amp;quot;SimonMeetsFarmer_Intro&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is also true for special characters, for instance when a certain character speak in a recording. So for instnace a character that appears in a SOMA blackbox message (that does not come from a world position), should have &amp;quot;Blackbox_&amp;quot; as prefix, eg &amp;quot;Blackbox_Amy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''- Write temp dialog in square brackets'''&amp;lt;br /&amp;gt;If you add some writing that is only temporary then add this between square brackets. Also briefly summarize what is supposed to be going on, or what the is supposed to be expressed. Examples:&amp;lt;br /&amp;gt;[Player gets his finger caught in bear trap]&amp;lt;br /&amp;gt;[Hint that the screw needs to be bigger]&amp;lt;br /&amp;gt;&lt;br /&gt;
If you need to have further info that feels wrong to show in-game then you can add extra info under the line direction, but make sure to start the line with INFO:, so it is not confused with proper line direction. Examples:&amp;lt;br /&amp;gt;INFO: The player tries to hold the pain inside.&amp;lt;br /&amp;gt;INFO: The solution is to use the file on the screw, can have slight hint for that.&amp;lt;br /&amp;gt;= File Format =&lt;br /&gt;
&lt;br /&gt;
(You shouldn't need this - everything can be edited using the VoiceHandler exe!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;VoiceData&amp;gt;&lt;br /&gt;
  &amp;lt;Characters&amp;gt;&lt;br /&gt;
    &amp;lt;Character [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Characters&amp;gt;&lt;br /&gt;
  &amp;lt;Effects&amp;gt;&lt;br /&gt;
    &amp;lt;Effect [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Effects&amp;gt;&lt;br /&gt;
  &amp;lt;Scenes&amp;gt;&lt;br /&gt;
    &amp;lt;Scene [Properties] /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Scenes&amp;gt;&lt;br /&gt;
  &amp;lt;Subjects&amp;gt;&lt;br /&gt;
    &amp;lt;Subject [Properties] &amp;gt;&lt;br /&gt;
      &amp;lt;Line [Properties] &amp;gt;&lt;br /&gt;
        &amp;lt;Sound [Properties] /&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/Line&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/Subject&amp;gt;&lt;br /&gt;
  &amp;lt;/Subjects&amp;gt;&lt;br /&gt;
&amp;lt;/VoiceData&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For information on the Properties that can be used, see Properties section above.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition&amp;diff=7176</id>
		<title>HPL3/SOMA/Audition</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition&amp;diff=7176"/>
		<updated>2026-07-30T22:25:02Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Audition and deals with managing dialogues, voice clips and lip sync.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/SOMA/Audition/Audition Overview|Audition Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Audition/Voices|Voices]]&lt;br /&gt;
* [[HPL3/Audition/Conversations|Conversations]]&lt;br /&gt;
* [[HPL3/SOMA/Audition/Lip Sync|Lip Sync]]&lt;br /&gt;
&lt;br /&gt;
== Voice Handler ==&lt;br /&gt;
* [[HPL3/Audition/Voice Handler Options|Voice Handler Options]]&lt;br /&gt;
* [[HPL3/Audition/Voice Settings|Voice Settings]]&lt;br /&gt;
* [[HPL3/Audition/Voice Subjects|Voice Subjects]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Sound/Playing_Sounds&amp;diff=7175</id>
		<title>HPL3/Sound/Playing Sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Sound/Playing_Sounds&amp;diff=7175"/>
		<updated>2026-07-30T22:23:08Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Sound Browser window = This window helps when having to pick sounds. It can work in two different modes:  * Sound Entity  File:sound_entity.png  ''' '''Full path input''...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sound Browser window =&lt;br /&gt;
This window helps when having to pick sounds. It can work in two different modes:&lt;br /&gt;
&lt;br /&gt;
* Sound Entity&lt;br /&gt;
&lt;br /&gt;
[[File:sound_entity.png]]&lt;br /&gt;
&lt;br /&gt;
''' '''Full path input''': This input will display the current full path, will show each step in the path as a row in the open list. Clicking on a row will make the dialog navigate to that folder.&lt;br /&gt;
''' '''Up button''': will make the dialog navigate to the parent folder.&lt;br /&gt;
''' '''Directory and file listing'''&lt;br /&gt;
&lt;br /&gt;
* Sound Event&lt;br /&gt;
&lt;br /&gt;
[[File:sound_event.png]]&lt;br /&gt;
''' Two boxes will show up, left one will list available '''Sound Projects''' (or sound banks) and '''Sound Groups''' (pretty much like subdirectories) in a tree fashion. The one at the right will show '''Sound Events''' (sounds actually) present inside the picked Group. To use one of them, just select it there.&lt;br /&gt;
&lt;br /&gt;
These are common for both modes.&lt;br /&gt;
* '''Play button''': will play a sample of the picked sound.&lt;br /&gt;
* '''Load file name''': The name of the file to load.&lt;br /&gt;
* '''Load button''': Will try to load the given file name and close. &lt;br /&gt;
* '''Cancel button''': Will just close the dialog.&lt;br /&gt;
&lt;br /&gt;
=Sound EditMode=&lt;br /&gt;
&lt;br /&gt;
This EditMode is used to create Sound Entities in the map. These are used to add ambience sound, static sounds like water flowing, or pretty much any sound you want.&lt;br /&gt;
&lt;br /&gt;
To create a Sound Entity, just click on the grid when this EditMode is active. This will create an &amp;quot;empty&amp;quot; Sound Entity, meaning it is just a container.&lt;br /&gt;
Optionally, you can set up the .snt file that will be used by the newly created Sound Entity, in the only input that shows on the EditMode window. &lt;br /&gt;
&lt;br /&gt;
Have into account that these options will be valid for objects created right after changing them, so any Sound Entity that is already created will keep its settings.&lt;br /&gt;
&lt;br /&gt;
More on sounds [[HPL2/Sounds|here]].&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Sound/Working_with_FMod_Designer_2010&amp;diff=7174</id>
		<title>HPL3/Sound/Working with FMod Designer 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Sound/Working_with_FMod_Designer_2010&amp;diff=7174"/>
		<updated>2026-07-30T22:22:42Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Sound =  == FMOD ==  HPL3 uses FMOD to handle all sound playback. See [http://fmod.org|fmod.org]] for more details, documentation and help. When working with sounds it is ma...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sound =&lt;br /&gt;
&lt;br /&gt;
== FMOD ==&lt;br /&gt;
&lt;br /&gt;
HPL3 uses FMOD to handle all sound playback. See [http://fmod.org|fmod.org]] for more details, documentation and help. When working with sounds it is mainly the [http://www.fmod.org/download/|FMOD Ex Designer tool] that will be of interest, the easiest way to learn how it works is to check the tutorials in [[http://www.youtube.com/user/FMODTV FMOD's YouTube channel].&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
&lt;br /&gt;
It is important to plan and think through how to split up your sounds into different projects. The game will load sounds based on this, it will help you find your sounds, it will ease preloading if you need to use that and so on.&lt;br /&gt;
&lt;br /&gt;
===== Project =====&lt;br /&gt;
&lt;br /&gt;
Create a project for large chunks of sound types, for example a project for each character, level or for physics. Each project can contain many groups of sound events, preferably a hierarchy of 1-2 sub-groups will make it organized and easy to work with when for example optimizing. More details about this is found under FMOD Designer Events. Some type of sounds need to follow a special structure and naming convention! See the sections below, for example physics and footsteps.&lt;br /&gt;
&lt;br /&gt;
===== Banks =====&lt;br /&gt;
&lt;br /&gt;
A bank stores all the sounds for a project, you can have many banks but you should normally only need two. One bank for sounds that you load into memory to play and one bank that streams sounds from the harddrive and plays them. Special cases where you need to have more banks would be if you have sounds that are localized to different languages, where you have one bank for each language.&lt;br /&gt;
&lt;br /&gt;
Sounds to be streamed are usually longer sounds, such as a looping ambient track or voices. Be cautious with using streamed sounds, streams depend on the speed of the harddrive, so what works well for you might not be so for another user. Try to keep the number of simultaneous streams to something low, perhaps max 6 streams. Remember that music and dialog streams, so could easily be 3 streams if you have a cross-fade of music going when a voice is played.&lt;br /&gt;
&lt;br /&gt;
===== Example files =====&lt;br /&gt;
&lt;br /&gt;
Our releases always have all the final FMOD project files in the game sound/ folder. The actual source sound files are not included, but you can view the projects and see how they are organized and what settings are used for reference.&lt;br /&gt;
&lt;br /&gt;
==== FMOD Designer Sound Defs ====&lt;br /&gt;
&lt;br /&gt;
A sound def is the settings for a sound (or set of sounds for variation) that you can use in your Multi-track events. There is nothing specific to keep in mind for these, do as suitable and follow the FMOD documentation.&lt;br /&gt;
&lt;br /&gt;
==== FMOD Designer Events ====&lt;br /&gt;
&lt;br /&gt;
The Events are what you actually use when playing sounds in the engine. The events are what replaces our old system of playing a SNT file, which essentially worked in the same way as Simple Events. When working with events there are a few things to keep in mind, mainly to organize events into easy to navigate groups and to use categories to send the events to be processed (or not processed) by the proper global effects.&lt;br /&gt;
&lt;br /&gt;
===== Simple Event =====&lt;br /&gt;
&lt;br /&gt;
Nothing in particular to keep in mind beyond the basic usage as specified by the FMOD documentation. Just check our general important notes for events and performance concerns for info on why you should use simple events and any minor specific setting you might need to set.&lt;br /&gt;
&lt;br /&gt;
===== Multi-track Event =====&lt;br /&gt;
&lt;br /&gt;
These events allow for parameters to affect the sound in a detailed manner, for example changing the sound of an impact depending on the speed of the object or much more advanced mixes. Make sure to view Performance concerns for Events to not overdo it. These events replace what previously was set with a lot of parameters in the snt editor, model editor and level editor for sounds. The move to FMOD makes it possible for a sound designer to do much more without any engine specific knowledge or assistance from a programer/scripter.&lt;br /&gt;
&lt;br /&gt;
Following is a quick overview of events, for more details check FMOD documentation and tutorials.&lt;br /&gt;
&lt;br /&gt;
An event is created with layers, a layer can contain one or many Sound Defs. At first glance it is much like any sound editor, but as you begin to make your first event you notice that what normally is a representation of time is not so in the context of making FMOD Events.&lt;br /&gt;
&lt;br /&gt;
To be able to move your sounds around you will need to right-click the top of the event and add a parameter. The parameter can represent numerous things, such as time or the engine sending in a value with the speed of an object. These parameters can be used to make envelope mixes and different sound def play depending on the value of a parameter or mix of parameters. For example see physics, the engine sends in the speed and mass of an object, the speed sets the volume and what type of sound def to play and the mass is used to change the pitch of the sounds (increased mass = lower pitched sound).&lt;br /&gt;
&lt;br /&gt;
Let's say we have a machine in the game and the player will be able to start and stop this machine. A single event can be created to be used for this, where we first play a sound as the machine starts up, then loops a sound while it is running and finally plays a sound as it stops.&lt;br /&gt;
&lt;br /&gt;
## Right-click the top and add a parameter to the event, the name does not matter.&lt;br /&gt;
## Right-click the parameter and choose parameter properties, set Velocity to 1. This will make the event play like in a typical sound editor.&lt;br /&gt;
## Right click on your layer and add in three sounds defs. This should be a start sound, a loop sound and a stop sound.&lt;br /&gt;
## Right-click on the start and stop sound defs and choose Sound instance properties… Set Loop mode to oneshot (as in do not loop).&lt;br /&gt;
## Play the event, make sure it plays the start, loop and then stop sounds in correct order as you like. If you like, drag the sound defs a bit over each other and they will automatically cross-fade.&lt;br /&gt;
## To test envelopes, right-click the section to the left (where it says layer00) and Add effect. Choose Volume.&lt;br /&gt;
## Right-click on the red envelope line to add points that you can use to fade the sound. Play the sound and notice that it fades the sound after the envelope, just like in a sound editor.&lt;br /&gt;
## Right-click the &amp;quot;timeline&amp;quot; (parameter value line) and add a sustain point somewhere in the looping sound. Play the sound and notice that it stays and loops the looping sound at the sustain point.&lt;br /&gt;
## Press the key off button and notice how the event move along and plays the stop sound and then ends.&lt;br /&gt;
## To make it work in game, add a User Property (right-click anywhere in the property section) called KeyOffParamName, type text and add a value with the name of the parameter containing the sustain point.&lt;br /&gt;
&lt;br /&gt;
From this simple example you can see (hear) the possibilities that are available to you as the sound designer to create interesting and easy to use sound events. This event would allow the person scripting to simply play the sound as the player starts the machine, it would automatically begin to loop for as long as the machine is running and then as the player stops the machine the script would stop the sound (which triggers key off) and the sound stops with playing the stop sound as you designed it.&lt;br /&gt;
&lt;br /&gt;
'''Envelopes, volume and 3D parameters'''     &amp;lt;br /&amp;gt;There are three special parameters for 3D that you can use for events, right-click the parameter bar and you'll see Add 3D … parameter. These allow you to do typical things, such as fading a sound depending on the distance from the source. This you most of the time don't want to do, you rather simply use the 3D Min Distance and 3D Max Distance values for the event as a whole. But say you want a sound that fades out, but as it reaches a certain distance it stays at a certain volume, for this you have to do your own envelopes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;If you make your own envelopes you have to change 3D Rolloff to Custom&amp;lt;/u&amp;gt;    or else the envelopes for Volume and/or Occlusion will not be used. You can also leave the 3D Min/Max distance values as they are, they are not used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Don't forget to change the parameter property to have the correct value for the distance&amp;lt;/u&amp;gt;    you want, the default is 0 to 1, which ingame would mean that the sound only reaches 1 meter. Right-click on the distance parameter, choose Parameter Properties and set the Minimum/Maximum value to what you want them to be.&lt;br /&gt;
&lt;br /&gt;
'''Sustain Points'''     &amp;lt;br /&amp;gt;A sustain point can be added to a parameter, this makes the game play a sound and when it reaches the sustain point it stays and loops there. Then when you stop the sound it will continue playing the event from the sustain point to the end. See the above list for making a multi-track event for an example of the usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Important. To use sustain points you must add a User Property to the sound event.&amp;lt;/u&amp;gt;    You do this by right-clicking in the property sections, Add/Edit user properties and then create a property with these specifications.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| Name:  ||  || KeyOffParamName  ||  || The name of the parameter that the engine will look for when checking if a sustain points exists.  || &lt;br /&gt;
|-&lt;br /&gt;
| Description:  ||  || blank  ||  || Only a description, no need to fill in.  || &lt;br /&gt;
|-&lt;br /&gt;
| Type:  ||  || text  ||  || The name of the parameter that has the sustain point, typically param00.  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If using script to play and stop the sound event, you must set the fade on Sound_Stop() to 0 to have the event continue playing and doing the stop sequence. If you have a fade time, the sound will stop and fade with the loop at the sustain point location instead.&lt;br /&gt;
&lt;br /&gt;
===== Groups =====&lt;br /&gt;
&lt;br /&gt;
Groups are almost only for organizing your project. However it is useful to think it through how to group and sub-group your events, as you can use a script function to preload group(s). Preloading is useful if you for example notice that you want to play many sounds at the same time and the game stutters from this. By preloading the sounds the engine have the sounds ready in memory for usage.&lt;br /&gt;
&lt;br /&gt;
===== Categories =====&lt;br /&gt;
&lt;br /&gt;
All sounds must be in one of two categories. These categories you have to create in each new project you make. It is only a matter of making a new category and naming it properly, there are no specific settings needed.&lt;br /&gt;
&lt;br /&gt;
''' &amp;quot;world&amp;quot; - All sounds that should be affected by global effects, such as a reverb. For example if the player goes below surface then all the sounds around him should change.&lt;br /&gt;
''' &amp;quot;gui&amp;quot; - All sounds that should not be affected by global effects. Simply no matter where the player is or what he does, these sounds are always the same. For example button clicking sounds for the menu.&lt;br /&gt;
&lt;br /&gt;
===== FMOD files &amp;amp; how engine access them =====&lt;br /&gt;
&lt;br /&gt;
When you have a project of sounds that you want to use in the game you use the Build… option in the project menu. You can uncheck everything except that banks that you want to build. After building the project you take the .fsb (bank) files and the .fev (project) file and put them in the games sound/ folder at a suitable location.&lt;br /&gt;
&lt;br /&gt;
Most of the time sounds will be picked from menus, using the tools for the engine (that is the plan, at the time of this writing this functionality does not exist.). If you manually have to specify a sound to be played, in for example a config file, a script file or in a input field allowing only to type in text this is how you do it.&lt;br /&gt;
&lt;br /&gt;
Specify the full path to the sound, where it begins with the name of the project (the .fev file) and ends with the name of the event. For example for a physics impact that would be &amp;quot;physics/metal/compact/impact&amp;quot;. Footsteps defined in the material.cfg file has an exception from this! See the Footstep sounds section.&lt;br /&gt;
&lt;br /&gt;
===== Important notes for Events =====&lt;br /&gt;
&lt;br /&gt;
''' Make sure that all events that should be looped are set to &amp;quot;Oneshot&amp;quot; '''false'''. If not, there might be all sort of strangeness in the sound playback.&lt;br /&gt;
''' Use unique names for all projects, as the .fev file it creates with the same name, must be unique for it to work correctly.&lt;br /&gt;
''' For looping (non &amp;quot;Oneshot&amp;quot;) sounds that are to be in the environment, like fire from a torch, always use &amp;quot;just fail if quietest&amp;quot; max playback behavior. This will make sure that if there are many sounds of the same type around the player, it will be the loudest once that are heard. Other options are possible, but using any of the &amp;quot;steal&amp;quot; ones are almost always a bad choice.&lt;br /&gt;
''' Must use gui or world category, see categories section.&lt;br /&gt;
&lt;br /&gt;
===== Performance concerns for Events =====&lt;br /&gt;
&lt;br /&gt;
''' Use simple events as much as possible, they are faster than multi-track events.&lt;br /&gt;
''' Keep Max Playbacks to as few as possible, often the default 1 should suffice.&lt;br /&gt;
''' Do not add lots of effects to all events, it takes CPU. In particular never use reverb or similar, those should only be global and amount used by setting the dry/wet mix values (or use envelopes for dry/wet).&lt;br /&gt;
''' Preload projects/groups if needed to remove ingame stuttering when trying to play multiple sounds simultaneous.&lt;br /&gt;
&lt;br /&gt;
==== Physics sound ====&lt;br /&gt;
&lt;br /&gt;
The physics system lets the sound system (FMOD) handle any mixing/effects for the sounds played. This is done by sending one or more parameters to the Multi-track Event for a sound. These are as follows:&lt;br /&gt;
&lt;br /&gt;
'''Scrape'''     &amp;lt;br /&amp;gt;The event must have ONE param, name does not matter. The physics sends the linear speed to this param. Normal values 0 - 10. Is looping.&lt;br /&gt;
&lt;br /&gt;
'''Roll'''     &amp;lt;br /&amp;gt;The event must have ONE param, name does not matter. The physics sends the angular speed to this param. Normal values 0 - 10. Is  looping.&lt;br /&gt;
&lt;br /&gt;
'''Impact'''     &amp;lt;br /&amp;gt;The event must have two params named &amp;quot;mass&amp;quot; and &amp;quot;speed&amp;quot;. &amp;quot;Speed&amp;quot; is sent the speed of impact (normal values 0 - 20). &amp;quot;Mass&amp;quot; is sent mass of the colliding object (normal values 0 - 200, but rarely over ~30) Note that mass is 0 for any static object no matter their size.&lt;br /&gt;
&lt;br /&gt;
'''Joint'''     &amp;lt;br /&amp;gt;Move and Impact must have ONE param, where the speed is sent. Normal values are 0 - 5.&lt;br /&gt;
&lt;br /&gt;
===== Materials.cfg =====&lt;br /&gt;
&lt;br /&gt;
This file is located in the root (top) folder of the game installation, next to the game executable. The file can be edited in a text editor and it lists all the different types of material available to use by textures and objects in the game (ie makes something that looks like gravel behave and sound like gravel).&lt;br /&gt;
&lt;br /&gt;
Parameters that are for a sound that you can define are always ending with SoundName = &amp;quot;&amp;quot;. Currently there are three sounds: Roll, Scrape and Impact. As you can see they are specified by giving the full path to a sound event, beginning with the project name and ending with the event name.&lt;br /&gt;
&lt;br /&gt;
The parameter called StepType has the same value as the name of the event to play. For this to work you have to make sure that the footstep events are put in the correct project, in the correct groups and with the correct names. See Footstep sounds section.&lt;br /&gt;
&lt;br /&gt;
===== Specific settings for physics =====&lt;br /&gt;
&lt;br /&gt;
There are some specific parameter values to keep in mind for physics sounds.&lt;br /&gt;
&lt;br /&gt;
'''General'''&lt;br /&gt;
&lt;br /&gt;
''' Max playbacks should be 2, possibly higher if you experience issues with sounds cutting out. Keep as low as possible.&lt;br /&gt;
''' Mode is 3D.&lt;br /&gt;
''' Min, Max Distance values should not be very far. Min: 0.5, Max: at most 30.&lt;br /&gt;
''' Priority should be low for physics, it is not important to have sounds from physics if channels run out, things like voices are much more important.&lt;br /&gt;
&lt;br /&gt;
'''Scrape'''&lt;br /&gt;
&lt;br /&gt;
''' Fade in/Fade out Time must be 100-300ms to avoid stuttering sounds.&lt;br /&gt;
&lt;br /&gt;
'''Roll'''&lt;br /&gt;
&lt;br /&gt;
''' Fade in/Fade out Time must be 300-500ms to avoid stuttering sounds.&lt;br /&gt;
&lt;br /&gt;
==== Footstep sounds ====&lt;br /&gt;
&lt;br /&gt;
Footsteps are defined in the material.cfg file, with the StepType parameter. The footsteps and script for it has been designed to work in the following manner:&lt;br /&gt;
&lt;br /&gt;
''' Events are in a &amp;quot;player&amp;quot; project.&lt;br /&gt;
''' At the top there is an event group called &amp;quot;footsteps&amp;quot;, in it are event groups called &amp;quot;barefoot&amp;quot;, &amp;quot;sneaker&amp;quot; and &amp;quot;default&amp;quot;.&lt;br /&gt;
''' Events for each type of material, with the same name as the StepType parameter value are located as needed in each type of foot type (barefoot, sneaker, default).&lt;br /&gt;
''' A parameter called movement in each event, with a value from 0 to 3.&lt;br /&gt;
''' Sound defs for sneak, walk and run.&lt;br /&gt;
''' The three step types has been laid out evenly, sounds should be reaching like this: sneak 0-1, walk 1-2 and run 2-3.&lt;br /&gt;
&lt;br /&gt;
The engine checks what material the player is in contact with and what type of footwear the player has. This is then put together to a string and appends the value of the StepType parameter from the materials.cfg file. It sends the string, which is the location for a footstep event (ie player/footsteps/barefoot/stone), and also checks the current player movement (sneak, walk or run) value and sends that as the parameter value. This allows FMOD to play the different movement sounds for that particular material.&lt;br /&gt;
&lt;br /&gt;
''Note: This is game specific and can be easily changed by editing the script files for the player's current move state''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Sound&amp;diff=7173</id>
		<title>HPL3/SOMA/Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Sound&amp;diff=7173"/>
		<updated>2026-07-30T22:22:26Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Sound */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with creating and playing sounds and music in SOMA.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Sound/Sound Overview|Sound Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Sound/Playing Sounds|Working with Sounds]]&lt;br /&gt;
* [[HPL3/Sound/Playing Music|Playing Music]]&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
* [[HPL3/Sound/Working with FMod Designer 2010|Creating Sound using FMod Designer 2010]]&lt;br /&gt;
* [[HPL3/Sound/Playing Sounds|Playing Sounds]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
*[[FMod Designer 2010|FMod Designer 2010]]&lt;br /&gt;
*[[Audacity|Audacity]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=FMod_Designer_2010&amp;diff=7172</id>
		<title>FMod Designer 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=FMod_Designer_2010&amp;diff=7172"/>
		<updated>2026-07-30T22:21:55Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Sound =  == FMOD ==  HPL3 uses FMOD to handle all sound playback. See [http://fmod.org|fmod.org]] for more details, documentation and help. When working with sounds it is ma...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sound =&lt;br /&gt;
&lt;br /&gt;
== FMOD ==&lt;br /&gt;
&lt;br /&gt;
HPL3 uses FMOD to handle all sound playback. See [http://fmod.org|fmod.org]] for more details, documentation and help. When working with sounds it is mainly the [http://www.fmod.org/download/|FMOD Ex Designer tool] that will be of interest, the easiest way to learn how it works is to check the tutorials in [[http://www.youtube.com/user/FMODTV FMOD's YouTube channel].&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
&lt;br /&gt;
It is important to plan and think through how to split up your sounds into different projects. The game will load sounds based on this, it will help you find your sounds, it will ease preloading if you need to use that and so on.&lt;br /&gt;
&lt;br /&gt;
===== Project =====&lt;br /&gt;
&lt;br /&gt;
Create a project for large chunks of sound types, for example a project for each character, level or for physics. Each project can contain many groups of sound events, preferably a hierarchy of 1-2 sub-groups will make it organized and easy to work with when for example optimizing. More details about this is found under FMOD Designer Events. Some type of sounds need to follow a special structure and naming convention! See the sections below, for example physics and footsteps.&lt;br /&gt;
&lt;br /&gt;
===== Banks =====&lt;br /&gt;
&lt;br /&gt;
A bank stores all the sounds for a project, you can have many banks but you should normally only need two. One bank for sounds that you load into memory to play and one bank that streams sounds from the harddrive and plays them. Special cases where you need to have more banks would be if you have sounds that are localized to different languages, where you have one bank for each language.&lt;br /&gt;
&lt;br /&gt;
Sounds to be streamed are usually longer sounds, such as a looping ambient track or voices. Be cautious with using streamed sounds, streams depend on the speed of the harddrive, so what works well for you might not be so for another user. Try to keep the number of simultaneous streams to something low, perhaps max 6 streams. Remember that music and dialog streams, so could easily be 3 streams if you have a cross-fade of music going when a voice is played.&lt;br /&gt;
&lt;br /&gt;
===== Example files =====&lt;br /&gt;
&lt;br /&gt;
Our releases always have all the final FMOD project files in the game sound/ folder. The actual source sound files are not included, but you can view the projects and see how they are organized and what settings are used for reference.&lt;br /&gt;
&lt;br /&gt;
==== FMOD Designer Sound Defs ====&lt;br /&gt;
&lt;br /&gt;
A sound def is the settings for a sound (or set of sounds for variation) that you can use in your Multi-track events. There is nothing specific to keep in mind for these, do as suitable and follow the FMOD documentation.&lt;br /&gt;
&lt;br /&gt;
==== FMOD Designer Events ====&lt;br /&gt;
&lt;br /&gt;
The Events are what you actually use when playing sounds in the engine. The events are what replaces our old system of playing a SNT file, which essentially worked in the same way as Simple Events. When working with events there are a few things to keep in mind, mainly to organize events into easy to navigate groups and to use categories to send the events to be processed (or not processed) by the proper global effects.&lt;br /&gt;
&lt;br /&gt;
===== Simple Event =====&lt;br /&gt;
&lt;br /&gt;
Nothing in particular to keep in mind beyond the basic usage as specified by the FMOD documentation. Just check our general important notes for events and performance concerns for info on why you should use simple events and any minor specific setting you might need to set.&lt;br /&gt;
&lt;br /&gt;
===== Multi-track Event =====&lt;br /&gt;
&lt;br /&gt;
These events allow for parameters to affect the sound in a detailed manner, for example changing the sound of an impact depending on the speed of the object or much more advanced mixes. Make sure to view Performance concerns for Events to not overdo it. These events replace what previously was set with a lot of parameters in the snt editor, model editor and level editor for sounds. The move to FMOD makes it possible for a sound designer to do much more without any engine specific knowledge or assistance from a programer/scripter.&lt;br /&gt;
&lt;br /&gt;
Following is a quick overview of events, for more details check FMOD documentation and tutorials.&lt;br /&gt;
&lt;br /&gt;
An event is created with layers, a layer can contain one or many Sound Defs. At first glance it is much like any sound editor, but as you begin to make your first event you notice that what normally is a representation of time is not so in the context of making FMOD Events.&lt;br /&gt;
&lt;br /&gt;
To be able to move your sounds around you will need to right-click the top of the event and add a parameter. The parameter can represent numerous things, such as time or the engine sending in a value with the speed of an object. These parameters can be used to make envelope mixes and different sound def play depending on the value of a parameter or mix of parameters. For example see physics, the engine sends in the speed and mass of an object, the speed sets the volume and what type of sound def to play and the mass is used to change the pitch of the sounds (increased mass = lower pitched sound).&lt;br /&gt;
&lt;br /&gt;
Let's say we have a machine in the game and the player will be able to start and stop this machine. A single event can be created to be used for this, where we first play a sound as the machine starts up, then loops a sound while it is running and finally plays a sound as it stops.&lt;br /&gt;
&lt;br /&gt;
## Right-click the top and add a parameter to the event, the name does not matter.&lt;br /&gt;
## Right-click the parameter and choose parameter properties, set Velocity to 1. This will make the event play like in a typical sound editor.&lt;br /&gt;
## Right click on your layer and add in three sounds defs. This should be a start sound, a loop sound and a stop sound.&lt;br /&gt;
## Right-click on the start and stop sound defs and choose Sound instance properties… Set Loop mode to oneshot (as in do not loop).&lt;br /&gt;
## Play the event, make sure it plays the start, loop and then stop sounds in correct order as you like. If you like, drag the sound defs a bit over each other and they will automatically cross-fade.&lt;br /&gt;
## To test envelopes, right-click the section to the left (where it says layer00) and Add effect. Choose Volume.&lt;br /&gt;
## Right-click on the red envelope line to add points that you can use to fade the sound. Play the sound and notice that it fades the sound after the envelope, just like in a sound editor.&lt;br /&gt;
## Right-click the &amp;quot;timeline&amp;quot; (parameter value line) and add a sustain point somewhere in the looping sound. Play the sound and notice that it stays and loops the looping sound at the sustain point.&lt;br /&gt;
## Press the key off button and notice how the event move along and plays the stop sound and then ends.&lt;br /&gt;
## To make it work in game, add a User Property (right-click anywhere in the property section) called KeyOffParamName, type text and add a value with the name of the parameter containing the sustain point.&lt;br /&gt;
&lt;br /&gt;
From this simple example you can see (hear) the possibilities that are available to you as the sound designer to create interesting and easy to use sound events. This event would allow the person scripting to simply play the sound as the player starts the machine, it would automatically begin to loop for as long as the machine is running and then as the player stops the machine the script would stop the sound (which triggers key off) and the sound stops with playing the stop sound as you designed it.&lt;br /&gt;
&lt;br /&gt;
'''Envelopes, volume and 3D parameters'''     &amp;lt;br /&amp;gt;There are three special parameters for 3D that you can use for events, right-click the parameter bar and you'll see Add 3D … parameter. These allow you to do typical things, such as fading a sound depending on the distance from the source. This you most of the time don't want to do, you rather simply use the 3D Min Distance and 3D Max Distance values for the event as a whole. But say you want a sound that fades out, but as it reaches a certain distance it stays at a certain volume, for this you have to do your own envelopes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;If you make your own envelopes you have to change 3D Rolloff to Custom&amp;lt;/u&amp;gt;    or else the envelopes for Volume and/or Occlusion will not be used. You can also leave the 3D Min/Max distance values as they are, they are not used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Don't forget to change the parameter property to have the correct value for the distance&amp;lt;/u&amp;gt;    you want, the default is 0 to 1, which ingame would mean that the sound only reaches 1 meter. Right-click on the distance parameter, choose Parameter Properties and set the Minimum/Maximum value to what you want them to be.&lt;br /&gt;
&lt;br /&gt;
'''Sustain Points'''     &amp;lt;br /&amp;gt;A sustain point can be added to a parameter, this makes the game play a sound and when it reaches the sustain point it stays and loops there. Then when you stop the sound it will continue playing the event from the sustain point to the end. See the above list for making a multi-track event for an example of the usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Important. To use sustain points you must add a User Property to the sound event.&amp;lt;/u&amp;gt;    You do this by right-clicking in the property sections, Add/Edit user properties and then create a property with these specifications.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| Name:  ||  || KeyOffParamName  ||  || The name of the parameter that the engine will look for when checking if a sustain points exists.  || &lt;br /&gt;
|-&lt;br /&gt;
| Description:  ||  || blank  ||  || Only a description, no need to fill in.  || &lt;br /&gt;
|-&lt;br /&gt;
| Type:  ||  || text  ||  || The name of the parameter that has the sustain point, typically param00.  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If using script to play and stop the sound event, you must set the fade on Sound_Stop() to 0 to have the event continue playing and doing the stop sequence. If you have a fade time, the sound will stop and fade with the loop at the sustain point location instead.&lt;br /&gt;
&lt;br /&gt;
===== Groups =====&lt;br /&gt;
&lt;br /&gt;
Groups are almost only for organizing your project. However it is useful to think it through how to group and sub-group your events, as you can use a script function to preload group(s). Preloading is useful if you for example notice that you want to play many sounds at the same time and the game stutters from this. By preloading the sounds the engine have the sounds ready in memory for usage.&lt;br /&gt;
&lt;br /&gt;
===== Categories =====&lt;br /&gt;
&lt;br /&gt;
All sounds must be in one of two categories. These categories you have to create in each new project you make. It is only a matter of making a new category and naming it properly, there are no specific settings needed.&lt;br /&gt;
&lt;br /&gt;
''' &amp;quot;world&amp;quot; - All sounds that should be affected by global effects, such as a reverb. For example if the player goes below surface then all the sounds around him should change.&lt;br /&gt;
''' &amp;quot;gui&amp;quot; - All sounds that should not be affected by global effects. Simply no matter where the player is or what he does, these sounds are always the same. For example button clicking sounds for the menu.&lt;br /&gt;
&lt;br /&gt;
===== FMOD files &amp;amp; how engine access them =====&lt;br /&gt;
&lt;br /&gt;
When you have a project of sounds that you want to use in the game you use the Build… option in the project menu. You can uncheck everything except that banks that you want to build. After building the project you take the .fsb (bank) files and the .fev (project) file and put them in the games sound/ folder at a suitable location.&lt;br /&gt;
&lt;br /&gt;
Most of the time sounds will be picked from menus, using the tools for the engine (that is the plan, at the time of this writing this functionality does not exist.). If you manually have to specify a sound to be played, in for example a config file, a script file or in a input field allowing only to type in text this is how you do it.&lt;br /&gt;
&lt;br /&gt;
Specify the full path to the sound, where it begins with the name of the project (the .fev file) and ends with the name of the event. For example for a physics impact that would be &amp;quot;physics/metal/compact/impact&amp;quot;. Footsteps defined in the material.cfg file has an exception from this! See the Footstep sounds section.&lt;br /&gt;
&lt;br /&gt;
===== Important notes for Events =====&lt;br /&gt;
&lt;br /&gt;
''' Make sure that all events that should be looped are set to &amp;quot;Oneshot&amp;quot; '''false'''. If not, there might be all sort of strangeness in the sound playback.&lt;br /&gt;
''' Use unique names for all projects, as the .fev file it creates with the same name, must be unique for it to work correctly.&lt;br /&gt;
''' For looping (non &amp;quot;Oneshot&amp;quot;) sounds that are to be in the environment, like fire from a torch, always use &amp;quot;just fail if quietest&amp;quot; max playback behavior. This will make sure that if there are many sounds of the same type around the player, it will be the loudest once that are heard. Other options are possible, but using any of the &amp;quot;steal&amp;quot; ones are almost always a bad choice.&lt;br /&gt;
''' Must use gui or world category, see categories section.&lt;br /&gt;
&lt;br /&gt;
===== Performance concerns for Events =====&lt;br /&gt;
&lt;br /&gt;
''' Use simple events as much as possible, they are faster than multi-track events.&lt;br /&gt;
''' Keep Max Playbacks to as few as possible, often the default 1 should suffice.&lt;br /&gt;
''' Do not add lots of effects to all events, it takes CPU. In particular never use reverb or similar, those should only be global and amount used by setting the dry/wet mix values (or use envelopes for dry/wet).&lt;br /&gt;
''' Preload projects/groups if needed to remove ingame stuttering when trying to play multiple sounds simultaneous.&lt;br /&gt;
&lt;br /&gt;
==== Physics sound ====&lt;br /&gt;
&lt;br /&gt;
The physics system lets the sound system (FMOD) handle any mixing/effects for the sounds played. This is done by sending one or more parameters to the Multi-track Event for a sound. These are as follows:&lt;br /&gt;
&lt;br /&gt;
'''Scrape'''     &amp;lt;br /&amp;gt;The event must have ONE param, name does not matter. The physics sends the linear speed to this param. Normal values 0 - 10. Is looping.&lt;br /&gt;
&lt;br /&gt;
'''Roll'''     &amp;lt;br /&amp;gt;The event must have ONE param, name does not matter. The physics sends the angular speed to this param. Normal values 0 - 10. Is  looping.&lt;br /&gt;
&lt;br /&gt;
'''Impact'''     &amp;lt;br /&amp;gt;The event must have two params named &amp;quot;mass&amp;quot; and &amp;quot;speed&amp;quot;. &amp;quot;Speed&amp;quot; is sent the speed of impact (normal values 0 - 20). &amp;quot;Mass&amp;quot; is sent mass of the colliding object (normal values 0 - 200, but rarely over ~30) Note that mass is 0 for any static object no matter their size.&lt;br /&gt;
&lt;br /&gt;
'''Joint'''     &amp;lt;br /&amp;gt;Move and Impact must have ONE param, where the speed is sent. Normal values are 0 - 5.&lt;br /&gt;
&lt;br /&gt;
===== Materials.cfg =====&lt;br /&gt;
&lt;br /&gt;
This file is located in the root (top) folder of the game installation, next to the game executable. The file can be edited in a text editor and it lists all the different types of material available to use by textures and objects in the game (ie makes something that looks like gravel behave and sound like gravel).&lt;br /&gt;
&lt;br /&gt;
Parameters that are for a sound that you can define are always ending with SoundName = &amp;quot;&amp;quot;. Currently there are three sounds: Roll, Scrape and Impact. As you can see they are specified by giving the full path to a sound event, beginning with the project name and ending with the event name.&lt;br /&gt;
&lt;br /&gt;
The parameter called StepType has the same value as the name of the event to play. For this to work you have to make sure that the footstep events are put in the correct project, in the correct groups and with the correct names. See Footstep sounds section.&lt;br /&gt;
&lt;br /&gt;
===== Specific settings for physics =====&lt;br /&gt;
&lt;br /&gt;
There are some specific parameter values to keep in mind for physics sounds.&lt;br /&gt;
&lt;br /&gt;
'''General'''&lt;br /&gt;
&lt;br /&gt;
''' Max playbacks should be 2, possibly higher if you experience issues with sounds cutting out. Keep as low as possible.&lt;br /&gt;
''' Mode is 3D.&lt;br /&gt;
''' Min, Max Distance values should not be very far. Min: 0.5, Max: at most 30.&lt;br /&gt;
''' Priority should be low for physics, it is not important to have sounds from physics if channels run out, things like voices are much more important.&lt;br /&gt;
&lt;br /&gt;
'''Scrape'''&lt;br /&gt;
&lt;br /&gt;
''' Fade in/Fade out Time must be 100-300ms to avoid stuttering sounds.&lt;br /&gt;
&lt;br /&gt;
'''Roll'''&lt;br /&gt;
&lt;br /&gt;
''' Fade in/Fade out Time must be 300-500ms to avoid stuttering sounds.&lt;br /&gt;
&lt;br /&gt;
==== Footstep sounds ====&lt;br /&gt;
&lt;br /&gt;
Footsteps are defined in the material.cfg file, with the StepType parameter. The footsteps and script for it has been designed to work in the following manner:&lt;br /&gt;
&lt;br /&gt;
''' Events are in a &amp;quot;player&amp;quot; project.&lt;br /&gt;
''' At the top there is an event group called &amp;quot;footsteps&amp;quot;, in it are event groups called &amp;quot;barefoot&amp;quot;, &amp;quot;sneaker&amp;quot; and &amp;quot;default&amp;quot;.&lt;br /&gt;
''' Events for each type of material, with the same name as the StepType parameter value are located as needed in each type of foot type (barefoot, sneaker, default).&lt;br /&gt;
''' A parameter called movement in each event, with a value from 0 to 3.&lt;br /&gt;
''' Sound defs for sneak, walk and run.&lt;br /&gt;
''' The three step types has been laid out evenly, sounds should be reaching like this: sneak 0-1, walk 1-2 and run 2-3.&lt;br /&gt;
&lt;br /&gt;
The engine checks what material the player is in contact with and what type of footwear the player has. This is then put together to a string and appends the value of the StepType parameter from the materials.cfg file. It sends the string, which is the location for a footstep event (ie player/footsteps/barefoot/stone), and also checks the current player movement (sneak, walk or run) value and sends that as the parameter value. This allows FMOD to play the different movement sounds for that particular material.&lt;br /&gt;
&lt;br /&gt;
''Note: This is game specific and can be easily changed by editing the script files for the player's current move state''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Sound&amp;diff=7171</id>
		<title>HPL3/SOMA/Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Sound&amp;diff=7171"/>
		<updated>2026-07-30T22:21:24Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with creating and playing sounds and music in SOMA.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Sound/Sound Overview|Sound Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Sound/Playing Sounds|Working with Sounds]]&lt;br /&gt;
* [[HPL3/Sound/Playing Music|Playing Music]]&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
* [[HPL3/Sound/Working with FMod Designer 2010|Creating Sound using FMod Designer 2010]]&lt;br /&gt;
* [[HPL3/Sound/Working with SNT Editor|Creating Sound using SNT Editor]]&lt;br /&gt;
* [[HPL3/Sound/Playing Sounds|Playing Sounds]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
*[[FMod Designer 2010|FMod Designer 2010]]&lt;br /&gt;
*[[Audacity|Audacity]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Scripting/Scripting_Guide/Setting_up_Visual_Studio_Code&amp;diff=7170</id>
		<title>HPL3/Scripting/Scripting Guide/Setting up Visual Studio Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Scripting/Scripting_Guide/Setting_up_Visual_Studio_Code&amp;diff=7170"/>
		<updated>2026-07-30T22:18:53Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hpl3ScriptingGuideMenuBasic}}&lt;br /&gt;
{{shortPageTitle}}&lt;br /&gt;
&lt;br /&gt;
== Visual Studio Code language support ==&lt;br /&gt;
&lt;br /&gt;
[https://marketplace.visualstudio.com/items?itemName=TiManGames.hpl3-language-tools HPL3 Language Tools] is a community-made Visual Studio Code extension that provides language support for HPL3 &amp;lt;code&amp;gt;.hps&amp;lt;/code&amp;gt; scripts.&lt;br /&gt;
&lt;br /&gt;
It supports:&lt;br /&gt;
&lt;br /&gt;
* ''SOMA''&lt;br /&gt;
* ''Amnesia: Rebirth''&lt;br /&gt;
* ''Amnesia: The Bunker''&lt;br /&gt;
&lt;br /&gt;
The extension treats HPL3 scripts as their own AngelScript-based language instead of C++. This prevents unrelated C++ diagnostics and enables HPL3-specific completion, validation, navigation, mod overlays, and callback checking.&lt;br /&gt;
&lt;br /&gt;
HPL3 Language Tools is not affiliated with or endorsed by Frictional Games. The game compiler remains the final authority when validating scripts.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
==== Visual Studio Marketplace ====&lt;br /&gt;
&lt;br /&gt;
# Open Visual Studio Code.&lt;br /&gt;
# Open the '''Extensions''' view.&lt;br /&gt;
# Search for '''HPL3 Language Tools'''.&lt;br /&gt;
# Select the extension published by '''TiManGames'''.&lt;br /&gt;
# Click '''Install'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Replace this comment with the Marketplace link after publication:&lt;br /&gt;
[MARKETPLACE_URL Install HPL3 Language Tools from the Visual Studio Marketplace]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local VSIX ====&lt;br /&gt;
&lt;br /&gt;
The extension can also be installed manually:&lt;br /&gt;
&lt;br /&gt;
# Download the latest &amp;lt;code&amp;gt;.vsix&amp;lt;/code&amp;gt; package from the [https://github.com/TiManGames/hpl3-language-tools/releases GitHub releases page].&lt;br /&gt;
# Open the Visual Studio Code Command Palette with &amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Shift&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;P&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
# Run '''Extensions: Install from VSIX...'''&lt;br /&gt;
# Select the downloaded file.&lt;br /&gt;
# Reload Visual Studio Code if prompted.&lt;br /&gt;
&lt;br /&gt;
=== Opening an HPL3 project ===&lt;br /&gt;
&lt;br /&gt;
The simplest setup is to open the game installation folder as the Visual Studio Code workspace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\Program Files (x86)\Steam\steamapps\common\SOMA&lt;br /&gt;
C:\Program Files (x86)\Steam\steamapps\common\Amnesia Rebirth&lt;br /&gt;
C:\Program Files (x86)\Steam\steamapps\common\Amnesia The Bunker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the game folder is open, the extension normally detects the game automatically by locating:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;hps_api.hps&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;resources.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
* The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; directory&lt;br /&gt;
&lt;br /&gt;
It is also possible to open an individual mod folder or another folder beneath the game installation.&lt;br /&gt;
&lt;br /&gt;
If automatic detection fails:&lt;br /&gt;
&lt;br /&gt;
# Open the Command Palette.&lt;br /&gt;
# Run '''HPL3: Select Game Root'''.&lt;br /&gt;
# Select the root folder of the appropriate HPL3 game.&lt;br /&gt;
&lt;br /&gt;
The selected folder should be the main game folder, not its &amp;lt;code&amp;gt;mods&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;maps&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; subdirectory.&lt;br /&gt;
&lt;br /&gt;
=== HPS language association ===&lt;br /&gt;
&lt;br /&gt;
Files ending in &amp;lt;code&amp;gt;.hps&amp;lt;/code&amp;gt; should use the '''HPL3 HPS''' language mode.&lt;br /&gt;
&lt;br /&gt;
The current language mode is displayed in the lower-right corner of Visual Studio Code. If it displays '''C++''', click it and select '''HPL3 HPS'''.&lt;br /&gt;
&lt;br /&gt;
Some existing setups explicitly associate HPS files with C++:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;files.associations&amp;quot;: {&lt;br /&gt;
    &amp;quot;*.hps&amp;quot;: &amp;quot;cpp&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove that association if it prevents the extension from selecting HPL3 HPS. The extension may display a one-time warning about this configuration, but it will not modify the user's settings automatically.&lt;br /&gt;
&lt;br /&gt;
=== Selecting an active mod ===&lt;br /&gt;
&lt;br /&gt;
By default, &amp;lt;code&amp;gt;hpl3.activeMod&amp;lt;/code&amp;gt; is set to &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In automatic mode, the extension selects the mod containing the currently opened script. To select a mod explicitly:&lt;br /&gt;
&lt;br /&gt;
# Open the Command Palette.&lt;br /&gt;
# Run '''HPL3: Select Active Mod'''.&lt;br /&gt;
# Select the desired mod.&lt;br /&gt;
&lt;br /&gt;
The active mod controls script overlays, include resolution, completion, definitions, and project validation.&lt;br /&gt;
&lt;br /&gt;
Resolution generally follows this priority:&lt;br /&gt;
&lt;br /&gt;
# The directory containing the current file&lt;br /&gt;
# The active mod&lt;br /&gt;
# Direct mod dependencies&lt;br /&gt;
# Deeper transitive dependencies&lt;br /&gt;
# The base game&lt;br /&gt;
# Additional configured resource roots&lt;br /&gt;
&lt;br /&gt;
An active-mod file shadows a dependency or base-game file using the same virtual resource path.&lt;br /&gt;
&lt;br /&gt;
=== Mod dependencies ===&lt;br /&gt;
&lt;br /&gt;
The extension reads each mod's &amp;lt;code&amp;gt;entry.hpc&amp;lt;/code&amp;gt; file and resolves dependencies through their exact &amp;lt;code&amp;gt;Content.UID&amp;lt;/code&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
When mod X depends on mod Y, selecting mod X indexes:&lt;br /&gt;
&lt;br /&gt;
* Scripts belonging to mod X&lt;br /&gt;
* Scripts belonging to mod Y&lt;br /&gt;
* Reachable transitive dependencies&lt;br /&gt;
* Base-game scripts and API declarations&lt;br /&gt;
&lt;br /&gt;
Unrelated mods are excluded.&lt;br /&gt;
&lt;br /&gt;
Missing dependencies, duplicate UIDs, malformed manifests, and dependency cycles are reported through the HPL3 status tooltip and output channel. Valid and unambiguous dependencies continue to be indexed when possible.&lt;br /&gt;
&lt;br /&gt;
=== Language features ===&lt;br /&gt;
&lt;br /&gt;
HPL3 Language Tools provides:&lt;br /&gt;
&lt;br /&gt;
* Engine and project API completion&lt;br /&gt;
* Class and inherited-member completion&lt;br /&gt;
* Enum-value completion&lt;br /&gt;
* Array and handle type inference&lt;br /&gt;
* Include-path completion&lt;br /&gt;
* Hover documentation&lt;br /&gt;
* Function signature help&lt;br /&gt;
* Go to definition&lt;br /&gt;
* Document and workspace symbols&lt;br /&gt;
* Include navigation&lt;br /&gt;
* Incremental analysis while editing&lt;br /&gt;
* Automatic reindexing when scripts are changed or saved&lt;br /&gt;
* Semantic highlighting for HPL3 types, members, enums, and keywords&lt;br /&gt;
&lt;br /&gt;
Documentation and engine declarations are primarily loaded from the selected game's &amp;lt;code&amp;gt;hps_api.hps&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
&lt;br /&gt;
The extension reports likely script or engine failures, including:&lt;br /&gt;
&lt;br /&gt;
* Malformed HPL3 or AngelScript syntax&lt;br /&gt;
* Unresolved or ambiguous includes&lt;br /&gt;
* Unknown variables, functions, types, or members&lt;br /&gt;
* Duplicate declarations in the same scope&lt;br /&gt;
* Invalid assignments and primitive conversions&lt;br /&gt;
* Invalid return values&lt;br /&gt;
* Incorrect constructor arguments&lt;br /&gt;
* Missing function arguments&lt;br /&gt;
* Invalid overload calls&lt;br /&gt;
* Callback names that cannot be resolved&lt;br /&gt;
* Callback signature mismatches&lt;br /&gt;
* Unsupported dialect operations such as &amp;lt;code&amp;gt;array.clear()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Callback and mutable-global checks that can be valid in dynamic HPL3 code are generally displayed as warnings.&lt;br /&gt;
&lt;br /&gt;
The extension intentionally does not enforce:&lt;br /&gt;
&lt;br /&gt;
* C++ formatting conventions&lt;br /&gt;
* Naming conventions&lt;br /&gt;
* Include guards&lt;br /&gt;
* Pointer style&lt;br /&gt;
* Unused-variable rules&lt;br /&gt;
* Other C++-specific style diagnostics&lt;br /&gt;
&lt;br /&gt;
To validate every indexed script rather than only open or affected files, run '''HPL3: Validate Workspace'''.&lt;br /&gt;
&lt;br /&gt;
=== Running the current map ===&lt;br /&gt;
&lt;br /&gt;
A '''Run Map''' CodeLens and editor-title play button appear when an HPS map script has a matching &amp;lt;code&amp;gt;.hpm&amp;lt;/code&amp;gt; or legacy &amp;lt;code&amp;gt;.map&amp;lt;/code&amp;gt; asset.&lt;br /&gt;
&lt;br /&gt;
To launch the map:&lt;br /&gt;
&lt;br /&gt;
# Open the map's &amp;lt;code&amp;gt;.hps&amp;lt;/code&amp;gt; script.&lt;br /&gt;
# Click '''Run Map''' above the map class, or click the play icon in the editor title.&lt;br /&gt;
# The extension saves modified workspace files.&lt;br /&gt;
# The selected game starts in developer mode with the resolved map and mod arguments.&lt;br /&gt;
&lt;br /&gt;
The map is resolved through the active-mod, dependency, and base-game overlays. A script-only mod override can therefore launch a map asset supplied by a dependency or the base game.&lt;br /&gt;
&lt;br /&gt;
Launch details are written to the '''HPL3 Map Launcher''' output channel.&lt;br /&gt;
&lt;br /&gt;
The extension directly launches the game executable. It does not create or modify development batch files.&lt;br /&gt;
&lt;br /&gt;
=== Commands ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''HPL3: Select Game Root'''&lt;br /&gt;
| Selects the SOMA, Rebirth, or Bunker installation used for indexing.&lt;br /&gt;
|-&lt;br /&gt;
| '''HPL3: Select Active Mod'''&lt;br /&gt;
| Selects the active mod and its dependency profile.&lt;br /&gt;
|-&lt;br /&gt;
| '''HPL3: Rebuild Language Index'''&lt;br /&gt;
| Discards existing caches and reindexes the API, resources, and scripts.&lt;br /&gt;
|-&lt;br /&gt;
| '''HPL3: Validate Workspace'''&lt;br /&gt;
| Runs diagnostics across the complete indexed project.&lt;br /&gt;
|-&lt;br /&gt;
| '''HPL3: Run Current Map'''&lt;br /&gt;
| Launches the map associated with the current script.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Setting&lt;br /&gt;
! Default&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.gameRoot&amp;lt;/code&amp;gt;&lt;br /&gt;
| Automatic&lt;br /&gt;
| Absolute path to a supported HPL3 game installation.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.activeMod&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;&lt;br /&gt;
| Automatically detected or explicitly selected active mod.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.extraResourceRoots&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| Additional read-only resource roots searched after mod and base-game resources.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.diagnostics.maxPerFile&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt;&lt;br /&gt;
| Maximum number of diagnostics displayed in one file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.trace.server&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
| Controls language-server protocol logging.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.launch.executable&amp;lt;/code&amp;gt;&lt;br /&gt;
| Automatic&lt;br /&gt;
| Optional game executable override.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.launch.user&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;Dev&amp;lt;/code&amp;gt;&lt;br /&gt;
| Developer user passed to the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.launch.config&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;config/main_init_dev.cfg&amp;lt;/code&amp;gt;&lt;br /&gt;
| Developer configuration passed to the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hpl3.launch.extraArgs&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;&lt;br /&gt;
| Additional arguments appended to the map-launch command.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
==== Completion is not displayed ====&lt;br /&gt;
&lt;br /&gt;
* Confirm that the file language mode is '''HPL3 HPS'''.&lt;br /&gt;
* Remove any explicit &amp;lt;code&amp;gt;&amp;quot;*.hps&amp;quot;: &amp;quot;cpp&amp;quot;&amp;lt;/code&amp;gt; file association.&lt;br /&gt;
* Verify that the correct game and mod appear in the HPL3 status tooltip.&lt;br /&gt;
* Run '''HPL3: Rebuild Language Index'''.&lt;br /&gt;
&lt;br /&gt;
==== The project is marked as degraded ====&lt;br /&gt;
&lt;br /&gt;
Open '''View: Toggle Output''' and select the '''HPL3 Language Server''' channel.&lt;br /&gt;
&lt;br /&gt;
A degraded project can be caused by:&lt;br /&gt;
&lt;br /&gt;
* A missing or malformed &amp;lt;code&amp;gt;hps_api.hps&amp;lt;/code&amp;gt;&lt;br /&gt;
* A malformed &amp;lt;code&amp;gt;entry.hpc&amp;lt;/code&amp;gt;&lt;br /&gt;
* Missing or duplicate dependency UIDs&lt;br /&gt;
* Dependency cycles&lt;br /&gt;
* Invalid resource configuration&lt;br /&gt;
&lt;br /&gt;
When API indexing is degraded, the extension suppresses unreliable unknown-engine-symbol diagnostics to avoid excessive false errors.&lt;br /&gt;
&lt;br /&gt;
==== The wrong helper definition is selected ====&lt;br /&gt;
&lt;br /&gt;
Use '''HPL3: Select Active Mod''' and confirm the intended top-level mod. The active mod shadows dependency and base-game resources using the same virtual path.&lt;br /&gt;
&lt;br /&gt;
==== Run Map is unavailable ====&lt;br /&gt;
&lt;br /&gt;
Confirm that:&lt;br /&gt;
&lt;br /&gt;
* The current file is an HPS map script.&lt;br /&gt;
* A matching &amp;lt;code&amp;gt;.hpm&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.map&amp;lt;/code&amp;gt; asset exists.&lt;br /&gt;
* The map is reachable through the selected mod profile.&lt;br /&gt;
* The correct game root is selected.&lt;br /&gt;
&lt;br /&gt;
=== Platform support ===&lt;br /&gt;
&lt;br /&gt;
Windows is the officially supported platform.&lt;br /&gt;
&lt;br /&gt;
Language-server features may work on Linux when &amp;lt;code&amp;gt;hpl3.gameRoot&amp;lt;/code&amp;gt; points to a Steam/Proton installation. Linux is not currently tested, and '''Run Map''' is Windows-only because it directly detects and launches the Windows game executables.&lt;br /&gt;
&lt;br /&gt;
=== Source code and bug reports ===&lt;br /&gt;
&lt;br /&gt;
Source code, releases, and issue tracking are available at:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/TiManGames/hpl3-language-tools TiManGames/hpl3-language-tools]&lt;br /&gt;
* [https://github.com/TiManGames/hpl3-language-tools/issues Report a bug or request a feature]&lt;br /&gt;
&lt;br /&gt;
{{NavBar|HPL3/Scripting/Scripting_Guide/What is scripting in HPL3?|What is scripting in HPL3?|HPL3/Scripting/HPL3 Scripting Guide|HPL3 Scripting Guide|HPL3/Scripting/Scripting_Guide/Scripting Workflow and Structure|Scripting Workflow and Structure}}&lt;br /&gt;
&lt;br /&gt;
[[Category:HPL3 Scripting]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=Visual_Studio_Code&amp;diff=7169</id>
		<title>Visual Studio Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=Visual_Studio_Code&amp;diff=7169"/>
		<updated>2026-07-30T22:18:15Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Visual Studio Code is a lightweight code and config editor.&lt;br /&gt;
Featuring an integrated project folder browser and a simple but powerful interface, it is one of the best tools for developing HPL2 and HPL3 mods.&lt;br /&gt;
&lt;br /&gt;
While VS Code is open-source, its releases still contain Microsoft's telemetry and tracking.&lt;br /&gt;
[https://vscodium.com/ VSCodium] is a &amp;quot;clean&amp;quot; version without those elements. It is functionally identical to VS Code.&lt;br /&gt;
&lt;br /&gt;
== HPL2 ==&lt;br /&gt;
&lt;br /&gt;
* Check out the built-in tutorial and the [https://code.visualstudio.com/docs/introvideos/basics online tutorial]. Some particularly useful features are:&lt;br /&gt;
** Ctrl+Shift+F to search text in the entire project folder&lt;br /&gt;
** Alt+Up/Down arrows to move lines of code&lt;br /&gt;
** Ctrl+Shift+Alt+Up/Down to copy lines of code&lt;br /&gt;
** Built-in git version control interface (if you already have git installed). This is one of the more convenient ways of using git. Read more about version control [[Setting up an Online Repository | here]] and more about git in VS Code [https://code.visualstudio.com/docs/sourcecontrol/intro-to-git here].&lt;br /&gt;
* Open your mod folder.&lt;br /&gt;
* Add highlighting for HPL2 file types; Open the settings menu (Ctrl+,) and search &amp;quot;file associations&amp;quot;. You can do this in the User tab (global) or the Workspace tab (will only apply to this project folder). Then add:&lt;br /&gt;
** &amp;lt;code&amp;gt;*.hps&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;cpp&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;*.lang&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;*.cfg&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can also add associations for other HPL files, such as: .ent, .dae, .snt and so on. Pretty much all files in HPL2 use XML.&lt;br /&gt;
** This will also add auto-completion for various things (like function names) that have been written anywhere else in the project.&lt;br /&gt;
&lt;br /&gt;
Unlike HPL3, using a C++ extension will make things worse for you, as HPL2's style of scripting is not fully compatible with C++ standards (mainly; built-in functions don't have to and can't be included, and the &amp;lt;code&amp;gt;&amp;amp;in&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;amp;out&amp;lt;/code&amp;gt; syntax).&lt;br /&gt;
There do exist a few AngelScript plugins for VS Code, but none of them are suitable (and several of them are abandoned).&lt;br /&gt;
As such, there is no good way of adding hints for built-in HPL2 script functions at the moment.&lt;br /&gt;
&lt;br /&gt;
== HPL3 ==&lt;br /&gt;
&lt;br /&gt;
''Main article: [[HPL3/Scripting/Scripting Guide/Setting up Visual Studio Code | Setting up Visual Studio Code]]''&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Third_Party_Tools&amp;diff=7168</id>
		<title>HPL3/SOMA/Third Party Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Third_Party_Tools&amp;diff=7168"/>
		<updated>2026-07-30T22:17:41Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Programming Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''These tools have been created by third parties, some which are members of the community, and are not affiliated with Frictional Games.'''&lt;br /&gt;
&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Community-Made Tools ==&lt;br /&gt;
* [[HPL3/Third_Party_Tools/HPL3 Mod Manager|HPL3 Mod Manager]]&lt;br /&gt;
* [[HPL3/SOMA/Third_Party_Tools/SOMA Text Search Tool|SOMA Text Search Tool]]&lt;br /&gt;
* [[HPL3/Blender_HPL3_export_plugin|Blender HPL3 export plugin]]&lt;br /&gt;
&lt;br /&gt;
== Programming Tools ==&lt;br /&gt;
* [[Visual Studio Code|Visual Studio Code]]&lt;br /&gt;
* [[CodeLite|CodeLite]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== 3D Design Tools ==&lt;br /&gt;
* [[Autodesk Maya|Autodesk Maya]]&lt;br /&gt;
* [[Modo|Modo]]&lt;br /&gt;
* [[Blender|Blender]]&lt;br /&gt;
&lt;br /&gt;
== 2D Design Tools ==&lt;br /&gt;
* [[GIMP|GIMP]]&lt;br /&gt;
* [[Adobe Photoshop|Adobe Photoshop]]&lt;br /&gt;
&lt;br /&gt;
== Audio Tools ==&lt;br /&gt;
* [[FMod Designer 2010|FMod Designer 2010]]&lt;br /&gt;
* [[Audacity|Audacity]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition/Lip_Sync&amp;diff=7167</id>
		<title>HPL3/SOMA/Audition/Lip Sync</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Audition/Lip_Sync&amp;diff=7167"/>
		<updated>2026-07-30T22:17:24Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Animation - Lipsync =   === Introduction ===   This tutorial was written for anybody working on animations that want a character to automatically lipsync. Lipsyncing is a te...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Animation - Lipsync =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This tutorial was written for anybody working on animations that want a character to automatically lipsync. Lipsyncing is a technique used to move the mouth of a character to match the dialogue it is speaking. How the mouth should move is calculated in the code using the voice recording of the dialogue as well as a written transcript. This takes the line and converts it into phonemic characters. These are then converted into visemes which are used to move the mouth. The visemes has to be created by hand and that is what this tutorial will detail.&lt;br /&gt;
&lt;br /&gt;
=== Visemes ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A viseme is a position that the mouth has when making a sound. We use a 3rd party imlementation from Annosoft. They have three different viseme mappings that can be used, each of different quality. The best quality comes from using 17 Visemes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These pages show which visemes are needed and how to rig them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.annosoft.com/docs/Visemes17.html http://www.annosoft.com/docs/Visemes17.html] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.annosoft.com/docs/Visemes12.html http://www.annosoft.com/docs/Visemes12.html] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.annosoft.com/docs/Visemes9.html http://www.annosoft.com/docs/Visemes9.html] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The visemes should be saved in &amp;quot;entity/animations/visemes/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Setting up''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the visemes are created they need to be setup in the ModelEditor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Open the entitiy file in the ModelEditor&lt;br /&gt;
''' Click on Entity Settings &amp;gt; Animations&lt;br /&gt;
''' Add a new animation for each Viseme&lt;br /&gt;
''' Select the .dae_anim file for a Viseme&lt;br /&gt;
''' Name the animation after the number of visemes and the order of the annosoft website documentation. Using the naming convention Visemes_&amp;lt;Quality&amp;gt;_&amp;lt;ID&amp;gt;&lt;br /&gt;
''' Ex)  [http://www.annosoft.com/docs/Visemes17.html http://www.annosoft.com/docs/Visemes17.html] Frame 1 (AA) should be named Visemes_17_1&lt;br /&gt;
''' When all of the visems has been setup the engine takes care of the rest&lt;br /&gt;
&lt;br /&gt;
=== Lipsync Tool ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Can be used to edit the anno files. More to come…&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Working_with_Particles&amp;diff=7166</id>
		<title>HPL3/Particles/Working with Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Working_with_Particles&amp;diff=7166"/>
		<updated>2026-07-30T22:16:53Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{merge2|HPL2/Particle Systems}}&lt;br /&gt;
=Particle Systems=&lt;br /&gt;
General Parameters:&lt;br /&gt;
&lt;br /&gt;
*'''Name''': Name for the PS. Should be unique for all objects in map.&lt;br /&gt;
*'''Active'''&lt;br /&gt;
*'''Position''': 3D Vector storing the position in world.&lt;br /&gt;
*'''Rotation''': 3D Vector storing the rotation. Will only be used if the Particle System uses local coordinates.&lt;br /&gt;
*'''Scale'''&lt;br /&gt;
&lt;br /&gt;
Specific Parameters:&lt;br /&gt;
&lt;br /&gt;
*'''Particle System file''': .ps file to be spawned.&lt;br /&gt;
*'''Color''': color that the PS will be tinted with.&lt;br /&gt;
*'''Fade at distance''': if active, the particles will be faded if the camera is either too close or too far away according to the following parameters.&lt;br /&gt;
                              &lt;br /&gt;
&amp;lt;pre&amp;gt;                              Fading          Full Color           Fading&lt;br /&gt;
               &amp;lt;)          |----------|-------------------------|-----------|&lt;br /&gt;
             Camera     Min End    Min Start                 Max Start   Max End&lt;br /&gt;
&amp;lt;/pre&amp;gt;             &lt;br /&gt;
&lt;br /&gt;
'''Min End''': close distance in which the particles will be completely faded out.&lt;br /&gt;
'''Min Start''': close distance in which the particles will start to fade.&lt;br /&gt;
'''Max Start''': far distance in which the particles will start to fade.&lt;br /&gt;
'''Max End''': far distance in which the particles will be completely faded out.&lt;br /&gt;
&lt;br /&gt;
=Particle Systems EditMode=&lt;br /&gt;
&lt;br /&gt;
This EditMode helps in creating Particle systems on the map. These can be used to simulate effects like fire, smoke and many more.&lt;br /&gt;
&lt;br /&gt;
To create a Particle System, just click on the grid when this EditMode is active. This will create an &amp;quot;empty&amp;quot; particle system, meaning it is just a container and no real particles are shown (yet)&lt;br /&gt;
Optionally, there are two parameters one can set up prior to placing Particle Systems on maps. These are:&lt;br /&gt;
&lt;br /&gt;
*'''PS File''': sets up the Particle System that the object will be created with, in a .ps file format that is created with the ParticleEditor. If a .ps file is selected here, then the created Particle System will not be a container, but a proper Particle System.&lt;br /&gt;
*'''Color''': just sets up the color parameter for the created Particle Systems.&lt;br /&gt;
&lt;br /&gt;
Have into account that these options will be valid for objects created right after changing them, so any Particle System that is already created will keep its settings.&lt;br /&gt;
&lt;br /&gt;
More on Particle Systems [[HPL2/Particle Systems|here]].&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Working_with_Particles&amp;diff=7165</id>
		<title>HPL3/Particles/Working with Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Working_with_Particles&amp;diff=7165"/>
		<updated>2026-07-30T22:16:40Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;{{merge2|HPL2/Particle Systems}} =Particle Systems= General Parameters:  *'''Name''': Name for the PS. Should be unique for all objects in map. *'''Active''' *'''Position''':...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{merge2|HPL2/Particle Systems}}&lt;br /&gt;
=Particle Systems=&lt;br /&gt;
General Parameters:&lt;br /&gt;
&lt;br /&gt;
*'''Name''': Name for the PS. Should be unique for all objects in map.&lt;br /&gt;
*'''Active'''&lt;br /&gt;
*'''Position''': 3D Vector storing the position in world.&lt;br /&gt;
*'''Rotation''': 3D Vector storing the rotation. Will only be used if the Particle System uses local coordinates.&lt;br /&gt;
*'''Scale'''&lt;br /&gt;
&lt;br /&gt;
Specific Parameters:&lt;br /&gt;
&lt;br /&gt;
*'''Particle System file''': .ps file to be spawned.&lt;br /&gt;
*'''Color''': color that the PS will be tinted with.&lt;br /&gt;
*'''Fade at distance''': if active, the particles will be faded if the camera is either too close or too far away according to the following parameters.&lt;br /&gt;
                              &lt;br /&gt;
&amp;lt;pre&amp;gt;                              Fading          Full Color           Fading&lt;br /&gt;
               &amp;lt;)          |----------|-------------------------|-----------|&lt;br /&gt;
             Camera     Min End    Min Start                 Max Start   Max End&lt;br /&gt;
&amp;lt;/pre&amp;gt;             &lt;br /&gt;
&lt;br /&gt;
'''Min End''': close distance in which the particles will be completely faded out.&lt;br /&gt;
'''Min Start''': close distance in which the particles will start to fade.&lt;br /&gt;
'''Max Start''': far distance in which the particles will start to fade.&lt;br /&gt;
'''Max End''': far distance in which the particles will be completely faded out.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_General&amp;diff=7164</id>
		<title>HPL3/Particles/Particle General</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_General&amp;diff=7164"/>
		<updated>2026-07-30T22:16:18Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== General ===  * '''Name''': The name of the emitter currently selected. * '''Max Particles''': The maximum number of particles that can be alive at once. When this limit is...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== General ===&lt;br /&gt;
&lt;br /&gt;
* '''Name''': The name of the emitter currently selected.&lt;br /&gt;
* '''Max Particles''': The maximum number of particles that can be alive at once. When this limit is reached no more particles will be created.&lt;br /&gt;
* '''Particles per Second''': The number of particles per second that will be created.&lt;br /&gt;
* '''Start time offset''': Time offset in seconds before the emitter starts.&lt;br /&gt;
* '''Respawn dead particles''': If dead particles should be respawned.&lt;br /&gt;
* '''Warm up time''': Time that the emitter gets to warm up. This is useful when doing a a stream of something (like a fire or waterfall) and the particles should not be shown “starting up”.&lt;br /&gt;
* '''Pause''': A pause is a break during which no particles are created. Particles are updated though.&lt;br /&gt;
* '''Pause Length''': The length of the pauses, 0 and 0 means that there are no pauses.&lt;br /&gt;
* '''Pause Interval''': The length between pauses. 0 and 0 means that there are no pauses.&lt;br /&gt;
* '''Offset position''': How the emitter is offset relative to its starting position.&lt;br /&gt;
* '''Offset angle''': How the particle system is offset relative to its start angles.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Emitter_Management&amp;diff=7163</id>
		<title>HPL3/Particles/Emitter Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Emitter_Management&amp;diff=7163"/>
		<updated>2026-07-30T22:16:12Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Emitter management controls ==&lt;br /&gt;
These controls help to add, duplicate and remove particle emitters. The Add button will create a new particle emitter and select it (i.e. pick it in the combo box), the Copy button will create a copy emitter out of the selected one, and the Delete button will delete the selected emitter.&lt;br /&gt;
&lt;br /&gt;
When a particle emitter is selected, all its parameters will be shown in the tab frame below.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Collision&amp;diff=7162</id>
		<title>HPL3/Particles/Particle Collision</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Collision&amp;diff=7162"/>
		<updated>2026-07-30T22:15:56Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Collision ===  * '''Use Collision''': If collision detection should be used. * '''Update Rate''': How many times a second collision is check for each particle. * '''Maximu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Collision ===&lt;br /&gt;
&lt;br /&gt;
* '''Use Collision''': If collision detection should be used.&lt;br /&gt;
* '''Update Rate''': How many times a second collision is check for each particle.&lt;br /&gt;
* '''Maximum Collisions''': The maximum amount of collisions can have before dying.&lt;br /&gt;
* '''Bounce Amount''': How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Rotation&amp;diff=7161</id>
		<title>HPL3/Particles/Particle Rotation</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Rotation&amp;diff=7161"/>
		<updated>2026-07-30T22:15:47Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Rotation === * '''Use Particle Spinning''': If enabled, particles will rotate around themselves. * '''Spin Type''': Type for the particle spinning. Can be: ''' '''Constant...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Rotation ===&lt;br /&gt;
* '''Use Particle Spinning''': If enabled, particles will rotate around themselves.&lt;br /&gt;
* '''Spin Type''': Type for the particle spinning. Can be:&lt;br /&gt;
''' '''Constant''': A value will be picked from the spin velocity range at random.&lt;br /&gt;
''' '''Movement''': The rotation will be linked to how fast the particle is moving.&lt;br /&gt;
* '''Particle spin velocity range (rad/s)''': Spin velocity for constant spin type.&lt;br /&gt;
* '''Use Revolution''': If enabled, particles will rotate around some axis.&lt;br /&gt;
* '''Revolution speed''': 3D Vector that will determine the axis and rotation speed for particles.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Color&amp;diff=7160</id>
		<title>HPL3/Particles/Particle Color</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Color&amp;diff=7160"/>
		<updated>2026-07-30T22:15:38Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Color ===  '''NOTE''': all of the color channels have values from 0 -1.  * '''Color''': This sets the color of the particle. * '''Fading''': Settings for fading the color....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Color ===&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': all of the color channels have values from 0 -1.&lt;br /&gt;
&lt;br /&gt;
* '''Color''': This sets the color of the particle.&lt;br /&gt;
* '''Fading''': Settings for fading the color. See foreword for fading.&lt;br /&gt;
&lt;br /&gt;
=== Life ===&lt;br /&gt;
&lt;br /&gt;
* '''Lifespan''': Time in seconds that the particle will live.&lt;br /&gt;
* '''Death Type''': type of death for the particles. Currently only age can be selected.&lt;br /&gt;
* '''PS created at death''': Particle system to be spawned when the particle dies.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Rendering&amp;diff=7159</id>
		<title>HPL3/Particles/Particle Rendering</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Rendering&amp;diff=7159"/>
		<updated>2026-07-30T22:15:25Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Rendering ===  * '''Draw Type''': The different ways in which the particles can be draw to screen. ''' '''Point''': The particle is a point and will always be pointing tow...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Rendering ===&lt;br /&gt;
&lt;br /&gt;
* '''Draw Type''': The different ways in which the particles can be draw to screen.&lt;br /&gt;
''' '''Point''': The particle is a point and will always be pointing towards the camera.&lt;br /&gt;
''' '''Line''': The particle is aligned in the direction in which the particle is travelling.&lt;br /&gt;
* '''Multiply RGB with Alpha''': Some materials does not fade out the image when alpha is decreased (for example Additive) in this case it can be good to check this.&lt;br /&gt;
* '''Size''': The size of the particle. This is the value used in the fading.&lt;br /&gt;
* '''Size Fading''': See 1.2 for instructions on fading.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Movement&amp;diff=7158</id>
		<title>HPL3/Particles/Particle Movement</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Movement&amp;diff=7158"/>
		<updated>2026-07-30T22:15:18Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot; === Movement ===  * '''Velocity type''': The way in which the starting velocity is generated. * '''Box velocity''': The same as box start but with velocity instead. * '''Sphe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Movement ===&lt;br /&gt;
&lt;br /&gt;
* '''Velocity type''': The way in which the starting velocity is generated.&lt;br /&gt;
* '''Box velocity''': The same as box start but with velocity instead.&lt;br /&gt;
* '''Sphere Velocity''': The same as sphere start but with velocity instead.&lt;br /&gt;
* '''Coord system''': The way in which the particles are related to the world and the object the system is attached to (if any). In world all the particles have an individual postion that does change depending on the parent object. In local however the particle position is dependant on the parent object so if that the particle moves and turns along with the parent.&lt;br /&gt;
* '''Uses direction''': If the direction of the start velocity depends on the way the particle system is “facing” (with no rotation it faces up). This is useful for systems like steam where the system has a direction.&lt;br /&gt;
* '''Gravity Type''': The type of gravity being applied to the particles.&lt;br /&gt;
''' '''None''': No gravity it applied.&lt;br /&gt;
''' '''Vector''': The gravity acceleration is applied.&lt;br /&gt;
''' '''Centre''': The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&lt;br /&gt;
* '''Gravity Acceleration''': Used differently according by the gravity type.&lt;br /&gt;
* '''Acceleration''': Acceleration applied to all bodies.&lt;br /&gt;
* '''Speed multiplier''': How much the speed is multiplied by each second. For example, 0.5 means that the speed halfed each second. 2 means it is doubled each second.&lt;br /&gt;
* '''Maximum speed''': The maximum speed that the particles can reach.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Start&amp;diff=7157</id>
		<title>HPL3/Particles/Particle Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Start&amp;diff=7157"/>
		<updated>2026-07-30T22:15:07Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Start ===  * '''Start type''': Sets what method to use to generate the start position of the particles in the emitter. * '''Box start''': A box start is created using an x...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Start ===&lt;br /&gt;
&lt;br /&gt;
* '''Start type''': Sets what method to use to generate the start position of the particles in the emitter.&lt;br /&gt;
* '''Box start''': A box start is created using an x, y and z min and max value. The collection of particles will get the shape of a box.&lt;br /&gt;
* '''Sphere start''': The positions are generated using an angle interval and the min and max value for the radius. You can think of it like this; an arrow start pointing up. This arrow is then rotated around the X axis (red) using a value between min and max. After that the arrow is rotated by the y axis (blue). The arrow will now be pointing in a specific direction and in this direction a position is created at a distance from center according to a number generated from min/max radius.&lt;br /&gt;
[[File:spherestart.jpg]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Emitter_Management&amp;diff=7156</id>
		<title>HPL3/Particles/Emitter Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Emitter_Management&amp;diff=7156"/>
		<updated>2026-07-30T22:14:41Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;== Emitter management controls == These controls help to add, duplicate and remove particle emitters. The Add button will create a new particle emitter and select it (i.e. pic...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Emitter management controls ==&lt;br /&gt;
These controls help to add, duplicate and remove particle emitters. The Add button will create a new particle emitter and select it (i.e. pick it in the combo box), the Copy button will create a copy emitter out of the selected one, and the Delete button will delete the selected emitter.&lt;br /&gt;
&lt;br /&gt;
When a particle emitter is selected, all its parameters will be shown in the tab frame below.&lt;br /&gt;
&lt;br /&gt;
== Emitter parameters tab frame ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
* '''Name''': The name of the emitter currently selected.&lt;br /&gt;
* '''Max Particles''': The maximum number of particles that can be alive at once. When this limit is reached no more particles will be created.&lt;br /&gt;
* '''Particles per Second''': The number of particles per second that will be created.&lt;br /&gt;
* '''Start time offset''': Time offset in seconds before the emitter starts.&lt;br /&gt;
* '''Respawn dead particles''': If dead particles should be respawned.&lt;br /&gt;
* '''Warm up time''': Time that the emitter gets to warm up. This is useful when doing a a stream of something (like a fire or waterfall) and the particles should not be shown “starting up”.&lt;br /&gt;
* '''Pause''': A pause is a break during which no particles are created. Particles are updated though.&lt;br /&gt;
* '''Pause Length''': The length of the pauses, 0 and 0 means that there are no pauses.&lt;br /&gt;
* '''Pause Interval''': The length between pauses. 0 and 0 means that there are no pauses.&lt;br /&gt;
* '''Offset position''': How the emitter is offset relative to its starting position.&lt;br /&gt;
* '''Offset angle''': How the particle system is offset relative to its start angles.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Editor_View&amp;diff=7155</id>
		<title>HPL3/Particles/Particle Editor View</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Editor_View&amp;diff=7155"/>
		<updated>2026-07-30T22:13:51Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Particle Editor =&lt;br /&gt;
The Particle Editor is used to create Particle Systems to be used in maps or entities.&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
&lt;br /&gt;
=== Min and Max values ===&lt;br /&gt;
A lot of values in this editor have both a min and max. This means that when the value is applied to a particle a value between min and max is randomly selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fading ===&lt;br /&gt;
Fading can be used to fade in and/or out some property like size or colour. The fading works like this. There are three relative values that are relative to the start value of the particle. The names for these values are start, middle and end and are used in that order. There are also two times that are relative to the life of the particle, for example if a particle has 2 seconds life time and the middle time is 0.5 then this occurs after 1 second (0.5 * 2). The first time is called middle time and this is when the start value is entirely faded from start to middle. The middle length is how long the middle value lasts. After middle time + middle length the middle value is faded to the end value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
When run, the first screen we get to see is like this:&lt;br /&gt;
&lt;br /&gt;
[[File:particle_editor.png]]&lt;br /&gt;
&lt;br /&gt;
Each part of the screen has a specific function, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Main Menu ==&lt;br /&gt;
This is a menu bar, just like in any other windowed application. Available options for this particular editor are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''File'''&lt;br /&gt;
''' '''New''': This command will reset the Particle System to an empty one, and the editor to a default state as well.&lt;br /&gt;
''' '''Open''': This will load a Particle System file (.ps) in the editor.&lt;br /&gt;
''' '''Save''': Use this to save your work to a file in disk. Will ask for a file name when no file has been created.&lt;br /&gt;
''' '''Save As''': This will also save your work, but will ask for a file name everytime it is called.&lt;br /&gt;
''' '''Open Recent''': This will show a list of up to 10 files that have been recently loaded or saved.&lt;br /&gt;
''' '''Quit''': This will exit the program.&lt;br /&gt;
* '''Edit'''&lt;br /&gt;
* '''View'''&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Editor_View&amp;diff=7154</id>
		<title>HPL3/Particles/Particle Editor View</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Particles/Particle_Editor_View&amp;diff=7154"/>
		<updated>2026-07-30T22:13:31Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Particle Editor = The Particle Editor is used to create Particle Systems to be used in maps or entities.  == Foreword ==  === Min and Max values === A lot of values in this...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Particle Editor =&lt;br /&gt;
The Particle Editor is used to create Particle Systems to be used in maps or entities.&lt;br /&gt;
&lt;br /&gt;
== Foreword ==&lt;br /&gt;
&lt;br /&gt;
=== Min and Max values ===&lt;br /&gt;
A lot of values in this editor have both a min and max. This means that when the value is applied to a particle a value between min and max is randomly selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fading ===&lt;br /&gt;
Fading can be used to fade in and/or out some property like size or colour. The fading works like this. There are three relative values that are relative to the start value of the particle. The names for these values are start, middle and end and are used in that order. There are also two times that are relative to the life of the particle, for example if a particle has 2 seconds life time and the middle time is 0.5 then this occurs after 1 second (0.5 * 2). The first time is called middle time and this is when the start value is entirely faded from start to middle. The middle length is how long the middle value lasts. After middle time + middle length the middle value is faded to the end value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
When run, the first screen we get to see is like this:&lt;br /&gt;
&lt;br /&gt;
[[File:particle_editor.png]]&lt;br /&gt;
&lt;br /&gt;
Each part of the screen has a specific function, as follows:&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials/Material_Specific_Variables&amp;diff=7153</id>
		<title>HPL3/Materials/Material Specific Variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials/Material_Specific_Variables&amp;diff=7153"/>
		<updated>2026-07-30T22:12:09Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials/Types/Translucent&amp;diff=7152</id>
		<title>HPL3/Materials/Types/Translucent</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials/Types/Translucent&amp;diff=7152"/>
		<updated>2026-07-30T22:12:02Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Translucent Material =  == Overview ==  Here it will be explained how to set up an entity with a translucent material. There is a lot of differetn techniques and programs th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Translucent Material =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Here it will be explained how to set up an entity with a translucent material. There is a lot of differetn techniques and programs that can be used to make the images used in this tutorial, so the focus will be mainly on using the engine's tools.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
&lt;br /&gt;
=== 1) Setting up the model. ===&lt;br /&gt;
First of all the model needs to be be set up and have a diffuse texture set to it (more info [[hpl3:engine:model_export#modelling|here]]). The file we have are:&amp;lt;br /&amp;gt;''transbox.dae''&amp;lt;br /&amp;gt;''transbox.dds''&amp;lt;br /&amp;gt;Now we open transbox.dae up in the modelviewer and will see:&amp;lt;br /&amp;gt;[[File:material_trans01.jpg]]&amp;lt;br /&amp;gt;The files we have are now:&lt;br /&gt;
''transbox.dae''&amp;lt;br /&amp;gt;''transbox.dds''&amp;lt;br /&amp;gt;''transbox.mat''&amp;lt;br /&amp;gt;''transbox.msh''&amp;lt;br /&amp;gt;the &amp;quot;.mat&amp;quot;-file is generated by the modelviewer and is a solid material based upon the name of the diffuse texture (here &amp;quot;transbox&amp;quot;). Modelviewer can add further texture such as normalmaps, specular, etc if the files have the proper prefixes (for a list of those see [[hpl3:engine:materials#solid_diffuse|here]]).&amp;lt;br /&amp;gt;The &amp;quot;msh&amp;quot;-file is a binary version of the dae file that is much faster to load. No need to worry about that one in this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2) Changing to Translucent. ===&lt;br /&gt;
Now open up MaterialEditor (leave modelviewer open) and open &amp;quot;transbox.mat&amp;quot;. Here change the type to &amp;quot;translucent&amp;quot; and the blend mode to &amp;quot;mul&amp;quot; (you can use other blend modes, but mul is often the best when dealing with translucent surfaces).&amp;lt;br /&amp;gt;[[File:material_trans02.jpg]]&amp;lt;br /&amp;gt;Chose &amp;quot;Save&amp;quot; in the file menu.&amp;lt;br /&amp;gt;You can now simply task switch to the modelviewer (no need to close and open) and the changes will appear).&amp;lt;br /&amp;gt;[[File:material_trans03.jpg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3) Adding Reflection ===&lt;br /&gt;
The material looks a bit more translucent, but there is still a lot more that can be done. The next thing is to add a cubemap that will form an environment map for the material.&amp;lt;br /&amp;gt;&lt;br /&gt;
First of all a cubemap needs to be created and converted to the dds format. This is best done using ATI's CubeMapGen (found [http://developer.amd.com/archive/gpu/cubemapgen/pages/default.aspx here]) or a similar tool. When creating the normal, just use some environment that looks sort of like what the object can be found in and blur it a lot (as long as it looks good in the modelviewer, it does not matter that much). When generating the cubemap it is very, very important to use a an edge fix, and to use an generator that can do this for mipmaps, or else there will be ugly visible lines in the seams between the six faces. Also make sure that the dds file contains mipmaps!&amp;lt;br /&amp;gt;Cubemaps are placed in &amp;quot;textures\environment&amp;quot; and NOT in the same folder as the dae, mat, etc files! This because one cubemap can be used for many different materials. Name the environment map like this: [environment]_env, eg: &amp;quot;livingroom_env.dds&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Now in the MaterialEditor, check the CubeMap checkbox and then select the cubemap you have created. You will now see that box has gotten a reflection:&amp;lt;br /&amp;gt;[[File:material_trans04.jpg]]&amp;lt;br /&amp;gt;You can now play around the the frensel properties to change how the reflection changes depedning on the slope of the surfaces. The default values are pretty good in most cases though.&amp;lt;br /&amp;gt;More importantly, if you have a rounded objects (unlike this cube) try changing the two RimLight parameters to get a nice glow around the edges that enchances the shape of the objects.&amp;lt;br /&amp;gt;Finally the AffectedByLightLevel parameter should be checked if you know that the object will be in an environment where the general light level change a lot. What it does is to make the opacity of the model depedning on the average light the model is in and makes it not seem glowing when in darkness. Can keep this off as default as it takes a  bit cpu resources and turn on if it turns out it is needed.&lt;br /&gt;
&lt;br /&gt;
=== 4) Adding Refraction ===&lt;br /&gt;
Still the model does not look as much as translucent as it could be. What you want to add then is refraction. To do this, simply check the boxe saying &amp;quot;Refraction&amp;quot;. What this does is that it gives the background a bit of an offest simulating that light refracts through the material (not that visible on this cube). Also play with &amp;quot;RefractionScale&amp;quot; which changes how much the background is distorted (do not overdo this since the model might look strange up close if too high).&amp;lt;br /&amp;gt;[[File:material_trans05.jpg]]&amp;lt;br /&amp;gt;Switch to the Modelviewer (again no need to restart) and the effect is quite visible:&amp;lt;br /&amp;gt;[[File:material_trans06.jpg]]&lt;br /&gt;
&lt;br /&gt;
Sometimes the geometry of the mesh is not enough to give proper refraction and in that case, you need to add a normalmap. So now the file &amp;quot;transbox_nrm.dds&amp;quot; is added to the same folder as transbox.dae, etc. Open the MaterialEditor, select NMap and pick the texture:&amp;lt;br /&amp;gt;[[File:material_trans07.jpg]]&amp;lt;br /&amp;gt;You also want to check the parameter &amp;quot;RefractionNormals&amp;quot;. With this on, the normalmap normals are rotated according to mesh normals, creating a better refractive feel. In some cases this is not wanted, but for most objects it is! And as always simply save and task switch to the modelviewer to see the texture with your model:&amp;lt;br /&amp;gt;[[File:material_trans08.jpg]]&lt;br /&gt;
&lt;br /&gt;
Note that refraction is quite demanding, especially when there are a lot of objects with it in view at the same time. So if you want to have lots of glass shards or similar, then skip it for them. For most objects it should be no problem.&amp;lt;br /&amp;gt;Also another trick is that whenever possible make sure that as many objects as possible are combined when they have refraction. For example, if a model has three windows, each with refraction, do NOT add these as three submeshes. Instead combine them all into one submesh, and that can lead to nice speed-ups!&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials/Engine_Materials&amp;diff=7151</id>
		<title>HPL3/Materials/Engine Materials</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials/Engine_Materials&amp;diff=7151"/>
		<updated>2026-07-30T22:11:27Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;=== Materials ===  ----  === General ===  The size of texture simply means in relation to other textures of the material. 100% means that it is max size (which is normal whate...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Materials ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
The size of texture simply means in relation to other textures of the material. 100% means that it is max size (which is normal whatever size diffuse) has, while 50% means half of the max, size and so on. This information just general outlines though. It is nothing that needs to be followed, but is good for optimization needs. &lt;br /&gt;
&lt;br /&gt;
File format is also just a guideline, although some formats like 3DC (for luminence-alpha), are almost requirements. &lt;br /&gt;
&lt;br /&gt;
The suffix means how the file name should be. The base for the name should always be the name of the mat file if possible (unless shared). Then prefix means: basename_[prefix].ext, for example: &amp;quot;mytexture_nrm.dds&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Mipmaps ===&lt;br /&gt;
&lt;br /&gt;
All textures that can (all textures in the dds format basically) must have pregenerated mipmaps in them. In the exporter tool (like [http://code.google.com/p/nvidia-texture-tools/ Nvidia Texture Tools]) it should be possible to do this. Having mipmaps is crucial as it improves the graphical qualtiy and makes loading faster. Also, for all the compressed formats (which means pretty much all that are used) it is not possible generate mipmaps in the application, making it even more important that the created dds textures have mipmaps in them!&lt;br /&gt;
&lt;br /&gt;
The filer used to generate the mipmaps is also important. Normally &amp;quot;box&amp;quot; filter is good enough, but when there are many smaller details, these can easily become too blurred or strange aliasing patterns might arise. It is then better to use something like &amp;quot;bessel&amp;quot;, &amp;quot;cubic&amp;quot;, &amp;quot;catrom&amp;quot; or similar. In the texture export tools there should be a list of these to chose from under mipmap generation. Best is to zoom out so it looks OK, and only if there are any strangeness do you have to think closer about what filter is being used. As said normally it is not a problem.&lt;br /&gt;
&lt;br /&gt;
A list of all filters along with images of resizing can be found [http://www.wunderboy.org/images/articles/vtf_mipmap_filters4.jpg here]:&lt;br /&gt;
=== Optimizing ===&lt;br /&gt;
&lt;br /&gt;
The engine works by having many different hard-coded material types, that are changed by setting different textures and changing variables. Depending on this, the engine will generate a fitting shader to do the job. Because of this, artists do not have to worry about optimizing their materials as much as if another system would be used. However, there are still optimizations needed. Here is a few basic guidelines:&lt;br /&gt;
&lt;br /&gt;
* Never add a texture unless it adds to the final material. For example, do not use black specular, flat blue normal maps, and so on. It is almost always better to just not set the texture at all.&lt;br /&gt;
* For textures that only use alpha, it is a good idea to embed it in the alpha of a texture. That way a single texture can fill up two texture slots. However, take note that if a texture with alpha is used in many materials and/or can have a lower resolution than the one it is part of, it might be good to keep it separate. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Alpha ===&lt;br /&gt;
&lt;br /&gt;
Some of the texture types below will have the channel as alpha. There are two ways of doing this texture:&lt;br /&gt;
&lt;br /&gt;
# It can simply be the alpha channel for a texture. If you have a DDS texture remember that DXT1 only has alpha that is either 1 or 0, so only use this if you do not want any gradients. (This is for instance OK with transparency for the solid material that does not support gradients anyway.)&lt;br /&gt;
# Use a single channel (grayscale) texture. The engine will always load single channel texture as if the texture only consist of an alpha channel (even though the image editor might name it an red channel or similar).&lt;br /&gt;
&lt;br /&gt;
If possible, it often is faster and saves space to have it as an alpha in a texture, so use that when possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Solid diffuse ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
This is the most common material used and is basically an all-round solid (as in non-transparent) surface shader. It works nicely for metals, plastics, wood, organic (that do not require anything special), etc.&lt;br /&gt;
&lt;br /&gt;
Important Notes:&amp;lt;br /&amp;gt;* A material having alpha and parallax on a mesh that where IsOccluder is true, will NOT be displayed correctly.&lt;br /&gt;
* An mesh MUST be set with IsOccluder=true for the dissolve effect to work!&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==== Blend Modes ====&lt;br /&gt;
&lt;br /&gt;
Not used.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
&lt;br /&gt;
'''HeightMapScale''' | This controls the amount how much the max depth (pure white) will offset the pixel.&amp;lt;br /&amp;gt;'''HeightMapBias''' | Currently not used.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrenselBias''' | Bias for Fresnel term. values: 0-1. Higher means that more of reflection is seen when looking straight at object.&amp;lt;br /&amp;gt;'''FrenselPow''' | The higher the 'sharper' the reflection is, meaning that it is only clearly seen at sharp angles.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AlphaDissolveFilter'''| Currently not used.&lt;br /&gt;
&lt;br /&gt;
'''DetailUvMul''' | The amount the UV maps are multiplied with. The higer the more the detail maps are repeated&amp;lt;br /&amp;gt;'''DetailWeight_Diffuse''' | Weight for the diffuse detail. Valid values: 0 - 2.0&amp;lt;br /&amp;gt;'''DetailWeight_Specular''' | Weight for the specular detail. Valid values: 0 - 2.0&amp;lt;br /&amp;gt;'''DetailWeight_Normal''' | Weight for the normalmap detail. Valid values: 0 - 2.0 (inf really, but not recommended)&amp;lt;br /&amp;gt;'''DetailFadeStart''' | When the details start fading out&lt;br /&gt;
'''DetailFadeEnd''' | When details have completely faded out&lt;br /&gt;
&lt;br /&gt;
'''SwayActive''' | If the model should sway according to wind properties. NOTE: Heightmap must be used to set the sway amount for each model part.&amp;lt;br /&amp;gt;'''SwayForceFieldAffected''' | If the model is affected by force fields&amp;lt;br /&amp;gt;'''SwayFreq''' | The frequency of the sway movement.&amp;lt;br /&amp;gt;'''SwayAmplitude''' | How much the sway offsets the model at maximum (in meters).&amp;lt;br /&amp;gt;'''SwaySpeed''' | The speed of the sway&amp;lt;br /&amp;gt;'''SwayOctaveMuls''' | The sway consists of the three (high - low) different freq movements, this is the factor for each.&amp;lt;br /&amp;gt;'''SwayYFreqMul''' | This can be used so that sway changes along the y-axis. The higher value the more change. 0=off&amp;lt;br /&amp;gt;'''SwayForceFieldMul''' | Factor for the force field induced sway.&amp;lt;br /&amp;gt;'''SwayForceFieldMax''' | The max offset (after adding factor) can that be added from a force field.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''IlluminationBrightness''' | The brightness of the illumination texture. Multiplies with the illumination map, used to make the illumination brighter than 1.0 &amp;lt;br /&amp;gt;&lt;br /&gt;
'''LiquidTrickleColor''' | The color and alpha of the liquid &amp;lt;br /&amp;gt;'''LiquidTrickleSpecular''' | Specular color and power of the liquid (RGB, Power). If set to (0,0,0,0) the original specular map value will be used &amp;lt;br /&amp;gt;'''LiquidTrickleLoopFade''' | If the liquid animation should loop and fade in again after it has faded out &amp;lt;br /&amp;gt;'''LiquidTrickleFadeSpeed''' | How fast the liquid fades in and then stays before fading out again. Unit is in seconds (Fade In, Fade Out) &amp;lt;br /&amp;gt;'''LiquidTrickleEdgeSize''' | The size of the normal map edge generated by the trickling liquid &amp;lt;br /&amp;gt;'''LiquidTrickleDryness''' | How long the generated liquid normal map should stay before drying back to the original normal map &amp;lt;br /&amp;gt;'''LiquidTrickleBlendMode''' | Which blend mode that should be used when combining the liquid with the color. Specular always uses Alpha blending. With Illumination blend mode the liquid is added to the illumination output &amp;lt;br /&amp;gt;&lt;br /&gt;
==== Diffuse ====&lt;br /&gt;
'''Size:''' 100%&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5. (use dxt1 if it looks okay!)&amp;lt;br /&amp;gt;'''Suffix:''' None.&amp;lt;br /&amp;gt;This is simply the color and is needed for as good as all materials.&amp;lt;br /&amp;gt;Note that diffuse is a perfect texture for adding some other map (that only use alpha) in the Alpha channel. For example: Alpha, Height and Translucency map.&lt;br /&gt;
&lt;br /&gt;
==== Normal map ====&lt;br /&gt;
'''Size:''' 100% (50% possible for very large and blurry features)&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5).&amp;lt;br /&amp;gt;'''Suffix:''' “nrm”.&amp;lt;br /&amp;gt;The normal map for the material and uses the standard format rgb = xyz and is in tangent space. Note that this needs to be converted to a format of XY only though! &lt;br /&gt;
&lt;br /&gt;
==== Specular map ====&lt;br /&gt;
'''Size:''' 100% - 50% (50% should work in most cases, but 100% might be needed for slimy objects and similar)&amp;lt;br /&amp;gt;'''Channels:''' RGBA&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt5.&amp;lt;br /&amp;gt;'''Suffix:''' “spec”.&amp;lt;br /&amp;gt;The specular map handles the specular intensity and power for each pixel. The intensity uses the R,G and B channel and the power in the Alpha channel.&amp;lt;br /&amp;gt;Intensity sets the amount of specularity (for each color channel) applied to a pixel, the higher value of the channel, the higher intensity.&amp;lt;br /&amp;gt;Power sets the sharpness of the specular highlight, a low value give a dull and diffuse look, while a high value give a wet/shiny look. &lt;br /&gt;
&lt;br /&gt;
==== Alpha ====&lt;br /&gt;
'''Size:''' 100% - 50% (the smaller version only if alpha features are very large)&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel&amp;lt;br /&amp;gt;'''Suffix:''' “alpha”.&amp;lt;br /&amp;gt;Sets the alpha for each texture and for any lit surface this is a simply 0 or 1 decision per pixel since a lit pixel can never be half transparent, only fully visible or invisible. &amp;lt;br /&amp;gt;Note that because of this, it is okay to use the Alpha channel of a DXT1 texture for this!&lt;br /&gt;
&lt;br /&gt;
==== Height map ====&lt;br /&gt;
'''Size:''' 100% - 50% (depends on the amount of small details needed)&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “height”. (&amp;quot;sway&amp;quot; when used for sway)&amp;lt;br /&amp;gt;Height map is more like a depth map actually. White = largest depth, Black = no depth and this is important to remember when creating it. &amp;lt;br /&amp;gt;This map is also used for sway, so when sway is active, normal parallax does NOT work. During sway it act has a factor for the sway. Black = no sway, White = full sway and all inbetween for greyscale of course. So if doing a swaying plant, make it black at the base of the plant and whiter as it comes nearer the top.&lt;br /&gt;
&lt;br /&gt;
==== Illumination map ====&lt;br /&gt;
'''Size:''' 100% - 50% (only use 100% if very sharp features are required. Most illumination then to be blurry)&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1. (dxt5 if alpha is required for extra map)&amp;lt;br /&amp;gt;'''Suffix:''' “illum”.&amp;lt;br /&amp;gt;This map will be added additively on top of the model when rendering and will not be affected by lighting. It is useful for creating glowing surfaces such as lightbulb, ember, etc.&amp;lt;br /&amp;gt;Like diffuse, Illumination is a perfect texture for adding some other map (that only use alpha) in the Alpha channel. For example: Alpha, Height and Translucency map. Especially so if the size of the other map is 50% or so (as this is normally what the illumination map is).&lt;br /&gt;
&lt;br /&gt;
==== Dissolve Alpha Map ====&lt;br /&gt;
'''Size:''' 100% - 50%&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “diss_alpha”.&amp;lt;br /&amp;gt;When dissolving a mesh, this map sets how fast each part of the mesh does this. White = fastest, Black = slowest&amp;lt;br /&amp;gt;Because of the way rendering works, it is almost always best to have this as separate texture (and as alpha inside another)&lt;br /&gt;
&lt;br /&gt;
==== Environment Map (CubeMap) ====&lt;br /&gt;
'''Size:''' NA, cubemaps take a lot of memory, so try and keep them small. Usually they are blurry and can be kept very small.&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' CubeMap&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5 cube (as the map is usually blurry and distorted, dx1 should work fine in most cases)&amp;lt;br /&amp;gt;'''Suffix:''' “env”.&amp;lt;br /&amp;gt;This will apply a cube to the mesh as if it is was reflecting it (hence called &amp;quot;environment map&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== Environment Alpha Map (CubeMapAlpha) ====&lt;br /&gt;
'''Size:''' 100% - 50%&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “env_alpha”.&amp;lt;br /&amp;gt;Determines how much of each pixel on mesh should reflect. White=max reflection, Black = no reflection.&lt;br /&gt;
&lt;br /&gt;
==== Detail Diffuse Map ====&lt;br /&gt;
'''Size:''' NA, this is entirely up to how the texture is repeated&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1&amp;lt;br /&amp;gt;'''Suffix:''' “detail_diff”.&amp;lt;br /&amp;gt;A detail map is special in that it uses differnt UV coordinates from the rest of the textures (see variables). This map blends with the diffuse and specular (each according to weights, see variables section). The way it mixes, Grey (127) means that nothing is changed, darker (126 or below) makes the result darker, and brighter (128 or above) makes the result brighter).&amp;lt;br /&amp;gt;There is a variable for fading this out at a distance, but in some special cases this might not look good. In that case use dxt5 and have custom mipmaps that fade to gray in an appropriate way. Only use this if really needed though!&lt;br /&gt;
&lt;br /&gt;
==== Detail Normal Map ====&lt;br /&gt;
'''Size:''' NA, this is entirely up to how the texture is repeated&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5).&amp;lt;br /&amp;gt;'''Suffix:''' “detail_nrm”.&amp;lt;br /&amp;gt;Detail normal works basically like the diffuse version, but on the normal map.&lt;br /&gt;
&lt;br /&gt;
==== Translucency Map ====&lt;br /&gt;
'''Size:''' 100% - 50%&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “trans”.&amp;lt;br /&amp;gt;This allows part of the texture to shine through to the backside when lit. This is good for thin organic shapes like nose-wings, leaves and fish-fins. Note that for this to work, the mesh must not cast a shadow or it must be thin enough (how thin depends on shadow settings). White means that all light from the front comes out back and black means that no light does.&lt;br /&gt;
&lt;br /&gt;
==== Liquid Map ====&lt;br /&gt;
'''Size:''' 100% - 25%&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5), tga for high quality.&amp;lt;br /&amp;gt;'''Suffix:''' “liquid”.&amp;lt;br /&amp;gt;This texture shows how liquid should fade in, move and fade out over an object. The red channel contains a mask for how liquid should fade in on the image, the brighter a pixel is the earlier the liquid will cover it. The green channel contains a mask for how the liquid should fade out. If a 3dc compressed texture produces poor results then a RGBA tga should be used with the red channel stored in the alpha channel and the green channel stored in the blue channel.&lt;br /&gt;
If the liquid is very thin then the mip-map filter should be set to &amp;quot;Point&amp;quot; when exporting the texture.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Translucent ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
This material is used for any transparent surface, such as glass, some forms of water, etc. It is generally not affected by lighting and when, only mildly so by setting the variable AffectedByLightLevel to true (more on that below).&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==== Blend Modes ====&lt;br /&gt;
&lt;br /&gt;
All available blend modes work for Translucent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
&lt;br /&gt;
'''Refraction''' | If the material has refraction (distortion of bg). Uses NMap and/or normals of mesh.&amp;lt;br /&amp;gt;'''RefractionEdgeCheck''' | If true, there is no bleeding with foreground objects, but takes some extra power. This usually makes object look a lot better so should generally be used, but have in mind that removing it when there are several object with refraction, it can speed things up quite a bit.&amp;lt;br /&amp;gt;'''RefractionNormals''' | If normals should be used when refracting. If no NMap is set this is forced true!&amp;lt;br /&amp;gt;If this is false (and NMap is set), then the material will only read from the NMap and use that as distortion. This can be quite nice fort certain effects such as animated water, magical portals and the like.&amp;lt;br /&amp;gt;'''RefractionScale''' | The amount refraction offsets the background.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrenselBias''' | Bias for Fresnel term. values: 0-1. Higher means that more of reflection is seen when looking straight at the surface.&amp;lt;br /&amp;gt;'''FrenselPow''' | The higher the 'sharper' the reflection is, meaning that it is only clearly seen at sharp angles.&amp;lt;br /&amp;gt;'''RimLightMul''' | The amount of rim light based on the reflection. This gives an edge to the object. Values: 0 - inf (although 1.0f should be used for max.&amp;lt;br /&amp;gt;'''RimLightPow''' | The sharpness of the rim lighting.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AffectedByLightLevel''' | The the material alpha is affected by the light level. This is especially useful for objects that are in an environment where the lightlevel changes.&amp;lt;br /&amp;gt; How this works that for each light that intersect the Bounding box of the mesh, a light level variable is increased (according to color and attenuation). The final light level variable is then used to control the alpha.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''SwayActive''' | If the model should sway according to wind properties. NOTE: Heightmap must be used to set the sway amount for each model part.&amp;lt;br /&amp;gt;'''SwayForceFieldAffected''' | If the model is affected by force fields&amp;lt;br /&amp;gt;'''SwayFreq''' | The frequency of the sway movement.&amp;lt;br /&amp;gt;'''SwayAmplitude''' | How much the sway offsets the model at maximum (in meters).&amp;lt;br /&amp;gt;'''SwaySpeed''' | The speed of the sway&amp;lt;br /&amp;gt;'''SwayOctaveMuls''' | The sway consists of the three (high - low) different freq movements, this is the factor for each.&amp;lt;br /&amp;gt;'''SwayYFreqMul''' | This can be used so that sway changes along the y-axis. The higher value the more change. 0=off&amp;lt;br /&amp;gt;'''SwayForceFieldMul''' | Factor for the force field induced sway.&amp;lt;br /&amp;gt;'''SwayForceFieldMax''' | The max offset (after adding factor) can that be added from a force field.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ScrollingNoiseActive''' | If the alpha of the model should be affected by noise moving in the air&amp;lt;br /&amp;gt;'''ScrollingNoiseSpeed''' | The speed of the scrolling noise&amp;lt;br /&amp;gt;'''ScrollingNoiseScale''' | The size of the scrolling noise particles&amp;lt;br /&amp;gt;'''ScrollingNoiseDetail''' | How detailed the scrolling noise is. The higher the value the more the alpha gets affected&amp;lt;br /&amp;gt;&lt;br /&gt;
'''AngleFadeActive''' | If the triangles should fade out at steep viewing angles&amp;lt;br /&amp;gt;&lt;br /&gt;
'''SoftParticleActive''' | Removes hard edges where the particle intersects geometry&amp;lt;br /&amp;gt;'''SoftPartSphereBillboard''' | If the billboard should be thicker in the middle and thinner near the edges (Only works for billboards&amp;lt;br /&amp;gt;'''SoftPartThickness''' | The percived thickness of the particle, measured in meters&amp;lt;br /&amp;gt;'''SoftPartAlphaBasedThickness''' | The percived thickness of the particle based on the alpha channel of the particle, measured in meters&amp;lt;br /&amp;gt;'''SoftPartDepthBias''' | Moves the soft particle closer to or further away from the camera (Negative value only work for point billboards)&amp;lt;br /&amp;gt;&lt;br /&gt;
'''LiquidTrickleColor''' | The color and alpha of the liquid &amp;lt;br /&amp;gt;'''LiquidTrickleLoopFade''' | If the liquid animation should loop and fade in again after it has faded out &amp;lt;br /&amp;gt;'''LiquidTrickleFadeSpeed''' | How fast the liquid fades in and then stays before fading out again. Unit is in seconds (Fade In, Fade Out) &amp;lt;br /&amp;gt;'''LiquidTrickleEdgeSize''' | The size of the normal map edge generated by the trickling liquid (Only used with refraction or EnvMap)&amp;lt;br /&amp;gt;'''LiquidTrickleDryness''' | How long the generated liquid normal map should stay before drying back to the original normal map  (Only used with refraction or EnvMap) &amp;lt;br /&amp;gt;&lt;br /&gt;
==== Diffuse Map ====&lt;br /&gt;
'''Size:''' 100%&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5. (use dxt1 if it looks okay!)&amp;lt;br /&amp;gt;'''Suffix:''' None.&amp;lt;br /&amp;gt;This is simply the color and is needed for as good as all materials.&amp;lt;br /&amp;gt;Note that diffuse is a perfect texture for adding some other map (that only use alpha) in the Alpha channel. For example: Cube Alpha map..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Normal Map ====&lt;br /&gt;
'''Size:''' 100% (50% possible for very large and blurry features)&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5).&amp;lt;br /&amp;gt;'''Suffix:''' “nrm”.&amp;lt;br /&amp;gt;Instead of changing the way light is shaded (like with solid material), here the normal map is used to distort the background (if refraction is set to true) and/or to change the way reflection is calculated.&amp;lt;br /&amp;gt;The normal map for the material and uses the standard format rgb = xyz and is in tangent space. Note that this needs to be converted to a format of XY only though! &amp;lt;br /&amp;gt;		&lt;br /&gt;
==== Environment Map (CubeMap) ====&lt;br /&gt;
'''Size:''' NA, cubemaps take a lot of memory, so try and keep them small. Usually they are blurry and can be kept very small.&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' CubeMap&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5 cube (as the map is usually blurry and distorted, dx1 should work fine in most cases)&amp;lt;br /&amp;gt;'''Suffix:''' “env”.&amp;lt;br /&amp;gt;This will apply a cube to the mesh as if it is was reflecting it (hence called &amp;quot;environment map&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== Environment Alpha Map (CubeMapAlpha) ====&lt;br /&gt;
'''Size:''' 100% - 50%&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “env_alpha”.&amp;lt;br /&amp;gt;Determines how much of each pixel on mesh should reflect. White=max reflection, Black = no reflection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Height map ====&lt;br /&gt;
'''Size:''' 100% - 50% (depends on the amount of small details needed)&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “sway” (do NOT use &amp;quot;height&amp;quot;).&amp;lt;br /&amp;gt;This map is used for sway, so when sway is active and NOT for any parallax stuff. It act as a factor for the sway. Black = no sway, White = full sway and all in between for greyscale of course. So if doing a swaying plant, make it black at the base of the plant and whiter as it comes nearer the top.&lt;br /&gt;
&lt;br /&gt;
==== Liquid Map ====&lt;br /&gt;
'''Size:''' 100% - 25%&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5), tga for high quality.&amp;lt;br /&amp;gt;'''Suffix:''' “liquid”.&amp;lt;br /&amp;gt;This texture shows how liquid should fade in, move and fade out over an object. The red channel contains a mask for how liquid should fade in on the image, the brighter a pixel is the earlier the liquid will cover it. The green channel contains a mask for how the liquid should fade out. If a 3dc compressed texture produces poor results then a RGBA tga should be used with the red channel stored in the alpha channel and the green channel stored in the blue channel.&lt;br /&gt;
If the liquid is very thin then the mip-map filter should be set to &amp;quot;Point&amp;quot; when exporting the texture.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
=== Decal ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Decals work a bit different from other materials in that they never write to the Z-buffer. Instead they simply write to the renderers G-buffer directly and what this means is that they need have have some solid geometry behind them to be visible. This make them useful as a sort clutter to add to add extra details. As the resulting image is affected by lighting it can be easily used to add dirt to floor, blood stainds, etc.&lt;br /&gt;
&lt;br /&gt;
Important notes:&lt;br /&gt;
* The material require Alpha blend mode if normalmaps shall work!&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==== Blend Modes ====&lt;br /&gt;
&lt;br /&gt;
All available blend modes work for Decal. However, alpha blending mode is best (if not needed!) to use if anything else but diffuse map is in the material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
&lt;br /&gt;
'''HeightMapScale''' | The scale of the height map.&amp;lt;br /&amp;gt;'''HeightMapBias''' | Not used.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrenselBias''' | Not used.&amp;lt;br /&amp;gt;'''FrenselPow''' | Not used.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''DetailUvMul''' | The amount the UV maps are multiplied with. The higer the more the detail maps are repeated&amp;lt;br /&amp;gt;'''DetailWeight''' | Weight for the diffuse detail. Valid values: 0 - 2.0&amp;lt;br /&amp;gt;'''DetailFadeStart''' | When the details start fading out.&amp;lt;br /&amp;gt;'''DetailFadeEnd''' | When details have completely faded out&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Diffuse Map ====&lt;br /&gt;
'''Size:''' 100%&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5. (use dxt1 if it looks okay!)&amp;lt;br /&amp;gt;'''Suffix:''' None.&amp;lt;br /&amp;gt;This is simply the color and is needed for as good as all materials.&amp;lt;br /&amp;gt;Note that diffuse is a perfect texture for adding some other map (that only use alpha) in the Alpha channel. For example: Cube Alpha map..&lt;br /&gt;
&lt;br /&gt;
==== Normal Map ====&lt;br /&gt;
'''Size:''' 100% (50% possible for very large and blurry features)&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5).&amp;lt;br /&amp;gt;'''Suffix:''' “nrm”.&amp;lt;br /&amp;gt;Instead of changing the way light is shaded (like with solid material), here the normal map is used to distort the background (if refraction is set to true) and/or to change the way reflection is calculated.&amp;lt;br /&amp;gt;The normal map for the material and uses the standard format rgb = xyz and is in tangent space. Note that this needs to be converted to a format of XY only though! &amp;lt;br /&amp;gt;		&lt;br /&gt;
==== Specular Map ====&lt;br /&gt;
'''Size:''' 100% - 50% (50% should almost always work)&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5&amp;lt;br /&amp;gt;'''Suffix:''' “spec”.&amp;lt;br /&amp;gt;This will only apply the specular color/intensity and NOT the power. Because of this only 3 channels are needed!&lt;br /&gt;
&lt;br /&gt;
==== Height Map ====&lt;br /&gt;
'''Size:''' 100% - 50% (depends on the amount of small details needed)&amp;lt;br /&amp;gt;'''Channels:''' Alpha&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' tga, single channel (greyscale).&amp;lt;br /&amp;gt;'''Suffix:''' “height”.&amp;lt;br /&amp;gt;Height map is more like a depth map actually. White = largest depth, Black = no depth and this is important to remember when creating it. &lt;br /&gt;
&lt;br /&gt;
==== Detail Diffuse ====&lt;br /&gt;
'''Size:''' NA, this is entirely up to how the texture is repeated&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1&amp;lt;br /&amp;gt;'''Suffix:''' “detail_diff”.&amp;lt;br /&amp;gt;A detail map is special in that it uses differnt UV coordinates from the rest of the textures (see variables). This map blends with the diffuse and specular (each according to weights, see variables section). The way it mixes, Grey (127) means that nothing is changed, darker (126 or below) makes the result darker, and brighter (128 or above) makes the result brighter).&amp;lt;br /&amp;gt;There is a variable for fading this out at a distance, but in some special cases this might not look good. In that case use dxt5 and have custom mipmaps that fade to gray in an appropriate way. Only use this if really needed though!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Water ===&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
&lt;br /&gt;
Water is a special shader that not only can render the world reflection, but also contain a special algorithm to simulate ripples.&lt;br /&gt;
&lt;br /&gt;
Important notes:&amp;lt;br /&amp;gt;* When using world refection, it is extremely demanding, so make sure there is not more than one visible at any time.&lt;br /&gt;
* Must be applied to a flat (or at least almost completely flat) and one-sided mesh.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
&lt;br /&gt;
'''RefractionScale'''&amp;lt;br /&amp;gt;The amount reflection and refraction is offset by ripples in water.&lt;br /&gt;
&lt;br /&gt;
'''FrenselBias'''&amp;lt;br /&amp;gt;Bias for Fresnel term. values: 0-1. Higher means that more of reflection is seen when looking straight at object.&lt;br /&gt;
&lt;br /&gt;
'''FrenselPow'''&amp;lt;br /&amp;gt;The higher the 'sharper' the reflection is, meaning that it is only clearly seen at sharp angles. &lt;br /&gt;
&lt;br /&gt;
'''WaveSpeed'''&amp;lt;br /&amp;gt;The speed of the waves.&lt;br /&gt;
&lt;br /&gt;
'''WaveAmplitude'''&amp;lt;br /&amp;gt;The size of the waves.&lt;br /&gt;
&lt;br /&gt;
'''WaveFreq'''&amp;lt;br /&amp;gt;The frequency of the waves.&lt;br /&gt;
&lt;br /&gt;
'''ReflectionFadeStart'''&amp;lt;br /&amp;gt;Where the reflection starts fading.&lt;br /&gt;
&lt;br /&gt;
'''ReflectionFadeEnd'''&amp;lt;br /&amp;gt;Where the reflection stops fading. 0 or less means no fading.&lt;br /&gt;
&lt;br /&gt;
'''HasReflection'''&amp;lt;br /&amp;gt;If a reflection should be shown or not.&lt;br /&gt;
&lt;br /&gt;
'''OcclusionCullWorldReflection'''&amp;lt;br /&amp;gt;If occlusion culling should be used on reflection.&lt;br /&gt;
&lt;br /&gt;
'''LargeSurface'''&amp;lt;br /&amp;gt;If the water will cover a large surface and will need special sorting when rendering other transperant objects&lt;br /&gt;
&lt;br /&gt;
'''HasVertexWaves&amp;quot;'''&amp;lt;br /&amp;gt;If the vertices are animated.&lt;br /&gt;
&lt;br /&gt;
'''VertexWaveSpeed'''&amp;lt;br /&amp;gt;The speed of the vertex waves.&lt;br /&gt;
&lt;br /&gt;
'''VertexWaveAmplitude'''&amp;lt;br /&amp;gt;The size of the vertex waves.&lt;br /&gt;
&lt;br /&gt;
'''VertexWaveFreq'''&amp;lt;br /&amp;gt;The frequency of the vertex waves.&lt;br /&gt;
&lt;br /&gt;
'''FadeWhenShallowMul'''&amp;lt;br /&amp;gt;This determines when the water should start fading when in shallow water. In meters.&lt;br /&gt;
&lt;br /&gt;
'''FadeWhenShallowPow'''&amp;lt;br /&amp;gt;How fast the shallow water drops off, higher means faster, lower means slower.&lt;br /&gt;
&lt;br /&gt;
==== Blend Modes ====&lt;br /&gt;
&lt;br /&gt;
A modulative blend mode is forced.&lt;br /&gt;
&lt;br /&gt;
==== Diffuse Map ====&lt;br /&gt;
'''Size:''' 100%&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5. (use dxt1 if it looks okay!)&amp;lt;br /&amp;gt;'''Suffix:''' None.&amp;lt;br /&amp;gt;This is the basic texture that act as a base for the water surface. It is always modulatively blended with the background.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Normal Map ====&lt;br /&gt;
'''Size:''' 100% (50% possible for very large and blurry features)&amp;lt;br /&amp;gt;'''Channels:''' G and Alpha (must use special exporter for this!)&amp;lt;br /&amp;gt;'''Type:''' 2D&amp;lt;br /&amp;gt;'''File format:''' dds, 3dc (aka DXN, BC5).&amp;lt;br /&amp;gt;'''Suffix:''' “nrm”.&amp;lt;br /&amp;gt;Instead of changing the way light is shaded (like with solid material), here the normal map is used to distort the background (if refraction is set to true) and/or to change the way reflection is calculated.&amp;lt;br /&amp;gt;The normal map for the material and uses the standard format rgb = xyz and is in tangent space. Note that this needs to be converted to a format of XY only though! &lt;br /&gt;
&lt;br /&gt;
==== Environment Map (CubeMap)====&lt;br /&gt;
'''Size:''' NA, cubemaps take a lot of memory, so try and keep them small. Usually they are blurry and can be kept very small.&amp;lt;br /&amp;gt;'''Channels:''' RGB&amp;lt;br /&amp;gt;'''Type:''' CubeMap&amp;lt;br /&amp;gt;'''File format:''' dds, dxt1 or dxt5 cube (as the map is usually blurry and distorted, dx1 should work fine in most cases)&amp;lt;br /&amp;gt;'''Suffix:''' “env”.&amp;lt;br /&amp;gt;This will apply a cube to the mesh as if it is was reflecting it (hence called “environment map”). It will be used instead of the world reflection, thus making the water rendering ALOT faster!&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials&amp;diff=7150</id>
		<title>HPL3/Materials</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials&amp;diff=7150"/>
		<updated>2026-07-30T22:11:21Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category is undergoing major editing, as information about different articles is still being gathered and researched. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Material Editor and deals with creating and using materials.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Materials/Materials Overview|Materials Overview]]&lt;br /&gt;
* [[HPL3/Materials/Engine Materials|Engine Materials]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Materials/Working with Materials|Working with Materials]]&lt;br /&gt;
* [[HPL3/Materials/Texture Maps|Texture Maps]]&lt;br /&gt;
* [[HPL3/Materials/Physics Material|Physics Material]]&lt;br /&gt;
&lt;br /&gt;
== Material Editor ==&lt;br /&gt;
* [[HPL3/Materials/Materials Editor View|Materials Editor View]]&lt;br /&gt;
* [[HPL3/Materials/UV Animations|UV Animations]]&lt;br /&gt;
* [[HPL3/Materials/Texture Units|Texture Units]]&lt;br /&gt;
* [[HPL3/Materials/Material Specific Variables|Material Specific Variables]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Material Types ==&lt;br /&gt;
* [[HPL3/Materials/Types/Decal|Decal]]&lt;br /&gt;
* [[HPL3/Materials/Types/Projected UV|Projected UV]]&lt;br /&gt;
* [[HPL3/Materials/Types/Solid Diffuse|Solid Diffuse]]&lt;br /&gt;
* [[HPL3/Materials/Types/Terrain|Terrain]]&lt;br /&gt;
* [[HPL3/Materials/Types/Terrain Decal|Terrain Decal]]&lt;br /&gt;
* [[HPL3/Materials/Types/Translucent|Translucent]]&lt;br /&gt;
* [[HPL3/Materials/Types/Water|Water]]&lt;br /&gt;
&lt;br /&gt;
== Blending Modes ==&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Add|Add]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Mul|Mul]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Mulx2|Mulx2]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Alpha|Alpha]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/PremulAlpha|PremulAlpha]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials/Material_Specific_Variables&amp;diff=7149</id>
		<title>HPL3/Materials/Material Specific Variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials/Material_Specific_Variables&amp;diff=7149"/>
		<updated>2026-07-30T22:10:44Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Translucent Material =  == Overview ==  Here it will be explained how to set up an entity with a translucent material. There is a lot of differetn techniques and programs th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Translucent Material =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Here it will be explained how to set up an entity with a translucent material. There is a lot of differetn techniques and programs that can be used to make the images used in this tutorial, so the focus will be mainly on using the engine's tools.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
&lt;br /&gt;
=== 1) Setting up the model. ===&lt;br /&gt;
First of all the model needs to be be set up and have a diffuse texture set to it (more info [[hpl3:engine:model_export#modelling|here]]). The file we have are:&amp;lt;br /&amp;gt;''transbox.dae''&amp;lt;br /&amp;gt;''transbox.dds''&amp;lt;br /&amp;gt;Now we open transbox.dae up in the modelviewer and will see:&amp;lt;br /&amp;gt;[[File:material_trans01.jpg]]&amp;lt;br /&amp;gt;The files we have are now:&lt;br /&gt;
''transbox.dae''&amp;lt;br /&amp;gt;''transbox.dds''&amp;lt;br /&amp;gt;''transbox.mat''&amp;lt;br /&amp;gt;''transbox.msh''&amp;lt;br /&amp;gt;the &amp;quot;.mat&amp;quot;-file is generated by the modelviewer and is a solid material based upon the name of the diffuse texture (here &amp;quot;transbox&amp;quot;). Modelviewer can add further texture such as normalmaps, specular, etc if the files have the proper prefixes (for a list of those see [[hpl3:engine:materials#solid_diffuse|here]]).&amp;lt;br /&amp;gt;The &amp;quot;msh&amp;quot;-file is a binary version of the dae file that is much faster to load. No need to worry about that one in this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2) Changing to Translucent. ===&lt;br /&gt;
Now open up MaterialEditor (leave modelviewer open) and open &amp;quot;transbox.mat&amp;quot;. Here change the type to &amp;quot;translucent&amp;quot; and the blend mode to &amp;quot;mul&amp;quot; (you can use other blend modes, but mul is often the best when dealing with translucent surfaces).&amp;lt;br /&amp;gt;[[File:material_trans02.jpg]]&amp;lt;br /&amp;gt;Chose &amp;quot;Save&amp;quot; in the file menu.&amp;lt;br /&amp;gt;You can now simply task switch to the modelviewer (no need to close and open) and the changes will appear).&amp;lt;br /&amp;gt;[[File:material_trans03.jpg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3) Adding Reflection ===&lt;br /&gt;
The material looks a bit more translucent, but there is still a lot more that can be done. The next thing is to add a cubemap that will form an environment map for the material.&amp;lt;br /&amp;gt;&lt;br /&gt;
First of all a cubemap needs to be created and converted to the dds format. This is best done using ATI's CubeMapGen (found [http://developer.amd.com/archive/gpu/cubemapgen/pages/default.aspx here]) or a similar tool. When creating the normal, just use some environment that looks sort of like what the object can be found in and blur it a lot (as long as it looks good in the modelviewer, it does not matter that much). When generating the cubemap it is very, very important to use a an edge fix, and to use an generator that can do this for mipmaps, or else there will be ugly visible lines in the seams between the six faces. Also make sure that the dds file contains mipmaps!&amp;lt;br /&amp;gt;Cubemaps are placed in &amp;quot;textures\environment&amp;quot; and NOT in the same folder as the dae, mat, etc files! This because one cubemap can be used for many different materials. Name the environment map like this: [environment]_env, eg: &amp;quot;livingroom_env.dds&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Now in the MaterialEditor, check the CubeMap checkbox and then select the cubemap you have created. You will now see that box has gotten a reflection:&amp;lt;br /&amp;gt;[[File:material_trans04.jpg]]&amp;lt;br /&amp;gt;You can now play around the the frensel properties to change how the reflection changes depedning on the slope of the surfaces. The default values are pretty good in most cases though.&amp;lt;br /&amp;gt;More importantly, if you have a rounded objects (unlike this cube) try changing the two RimLight parameters to get a nice glow around the edges that enchances the shape of the objects.&amp;lt;br /&amp;gt;Finally the AffectedByLightLevel parameter should be checked if you know that the object will be in an environment where the general light level change a lot. What it does is to make the opacity of the model depedning on the average light the model is in and makes it not seem glowing when in darkness. Can keep this off as default as it takes a  bit cpu resources and turn on if it turns out it is needed.&lt;br /&gt;
&lt;br /&gt;
=== 4) Adding Refraction ===&lt;br /&gt;
Still the model does not look as much as translucent as it could be. What you want to add then is refraction. To do this, simply check the boxe saying &amp;quot;Refraction&amp;quot;. What this does is that it gives the background a bit of an offest simulating that light refracts through the material (not that visible on this cube). Also play with &amp;quot;RefractionScale&amp;quot; which changes how much the background is distorted (do not overdo this since the model might look strange up close if too high).&amp;lt;br /&amp;gt;[[File:material_trans05.jpg]]&amp;lt;br /&amp;gt;Switch to the Modelviewer (again no need to restart) and the effect is quite visible:&amp;lt;br /&amp;gt;[[File:material_trans06.jpg]]&lt;br /&gt;
&lt;br /&gt;
Sometimes the geometry of the mesh is not enough to give proper refraction and in that case, you need to add a normalmap. So now the file &amp;quot;transbox_nrm.dds&amp;quot; is added to the same folder as transbox.dae, etc. Open the MaterialEditor, select NMap and pick the texture:&amp;lt;br /&amp;gt;[[File:material_trans07.jpg]]&amp;lt;br /&amp;gt;You also want to check the parameter &amp;quot;RefractionNormals&amp;quot;. With this on, the normalmap normals are rotated according to mesh normals, creating a better refractive feel. In some cases this is not wanted, but for most objects it is! And as always simply save and task switch to the modelviewer to see the texture with your model:&amp;lt;br /&amp;gt;[[File:material_trans08.jpg]]&lt;br /&gt;
&lt;br /&gt;
Note that refraction is quite demanding, especially when there are a lot of objects with it in view at the same time. So if you want to have lots of glass shards or similar, then skip it for them. For most objects it should be no problem.&amp;lt;br /&amp;gt;Also another trick is that whenever possible make sure that as many objects as possible are combined when they have refraction. For example, if a model has three windows, each with refraction, do NOT add these as three submeshes. Instead combine them all into one submesh, and that can lead to nice speed-ups!&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials&amp;diff=7148</id>
		<title>HPL3/Materials</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials&amp;diff=7148"/>
		<updated>2026-07-30T22:10:24Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Material Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category is undergoing major editing, as information about different articles is still being gathered and researched. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Material Editor and deals with creating and using materials.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Materials/Materials Overview|Materials Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Materials/Working with Materials|Working with Materials]]&lt;br /&gt;
* [[HPL3/Materials/Texture Maps|Texture Maps]]&lt;br /&gt;
* [[HPL3/Materials/Physics Material|Physics Material]]&lt;br /&gt;
&lt;br /&gt;
== Material Editor ==&lt;br /&gt;
* [[HPL3/Materials/Materials Editor View|Materials Editor View]]&lt;br /&gt;
* [[HPL3/Materials/UV Animations|UV Animations]]&lt;br /&gt;
* [[HPL3/Materials/Texture Units|Texture Units]]&lt;br /&gt;
* [[HPL3/Materials/Material Specific Variables|Material Specific Variables]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Material Types ==&lt;br /&gt;
* [[HPL3/Materials/Types/Decal|Decal]]&lt;br /&gt;
* [[HPL3/Materials/Types/Projected UV|Projected UV]]&lt;br /&gt;
* [[HPL3/Materials/Types/Solid Diffuse|Solid Diffuse]]&lt;br /&gt;
* [[HPL3/Materials/Types/Terrain|Terrain]]&lt;br /&gt;
* [[HPL3/Materials/Types/Terrain Decal|Terrain Decal]]&lt;br /&gt;
* [[HPL3/Materials/Types/Translucent|Translucent]]&lt;br /&gt;
* [[HPL3/Materials/Types/Water|Water]]&lt;br /&gt;
&lt;br /&gt;
== Blending Modes ==&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Add|Add]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Mul|Mul]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Mulx2|Mulx2]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/Alpha|Alpha]]&lt;br /&gt;
* [[HPL3/Materials/Blending Modes/PremulAlpha|PremulAlpha]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Materials/Materials_Editor_View&amp;diff=7147</id>
		<title>HPL3/Materials/Materials Editor View</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Materials/Materials_Editor_View&amp;diff=7147"/>
		<updated>2026-07-30T22:10:16Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Material Editor =   The Material Editor helps out in creating new materials to be used in games. It can be run as a standalone app or can be invoked from file inputs in othe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Material Editor =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Material Editor helps out in creating new materials to be used in games. It can be run as a standalone app or can be invoked from file inputs in other editors when pressing the '+' button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When run, the first screen we get to see is like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:material_editor.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each part of the screen has a specific function, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Main Menu ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a menu bar, just like in any other windowed application. Available options for this particular editor are as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''File'''&lt;br /&gt;
'''* '''New''': This command will reset the material to an empty one, and the editor to a default state as well.&lt;br /&gt;
'''* '''Open''': This will load a map file in the editor.&lt;br /&gt;
'''* '''Save''': Use this to save your work to a file in disk. Will ask for a file name when no file has been created.&lt;br /&gt;
'''* '''Save As''': This will also save your work, but will ask for a file name everytime it is called.&lt;br /&gt;
'''* '''Quit''': This will exit the program.&lt;br /&gt;
== General Settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This group contains inputs to control basic properties for the currently edited material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Material Type''': This combo box will show the available engine material types. Currently these are:&lt;br /&gt;
'''* [[hpl3:engine:materials#decal|Decal]]: set this type when you want to create a material to be used by regular decals.&lt;br /&gt;
'''* [[hpl3:engine:materials#projecteduv|ProjectedUV]]: this material type does a normal projection of textures over objects.&lt;br /&gt;
'''* [[hpl3:engine:materials#soliddiffuse|Soliddifuse]]: use this for your regular solid objects.&lt;br /&gt;
'''* [[hpl3:engine:materials#terrain|Terrain]]: this type applies to the materials you will paint on a terrain.&lt;br /&gt;
'''* [[hpl3:engine:materials#terraindecal|Terraindecal]]: special type of material only to be used by terrain decals.&lt;br /&gt;
'''* [[hpl3:engine:materials#translucent|Translucent]]: for non opaque objects.&lt;br /&gt;
'''* [[hpl3:engine:materials#water|Water]]: to simulate liquid objects.&lt;br /&gt;
''' '''Depth Test''': if the material should be affected by depth test.&lt;br /&gt;
''' '''Blend mode''': blending mode to be used by the material.&lt;br /&gt;
''' '''Physics Material''': the physics material that will be associated to this material. For example, if you create a metallic looking material, it should be logical to associate it to a metal physics material (these being defined in the materials.cfg file located in the redist folder)&lt;br /&gt;
''' '''UV SubDivisions''': this sets up in how many parts the way the material will be split&lt;br /&gt;
== UV Animation Settings ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This group contains controls to add and edit UV texture coordinate animations. Displacements, rotations, etc can be done using these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''UV Animation''': currently selected animation. Any edition will be done on this particular one.&lt;br /&gt;
''' '''Create'''  / '''Delete'''buttons: will add a new animation / remove the currently selected one.&lt;br /&gt;
''' '''Anim Type''': animation type for the current animation. Possible values are:&lt;br /&gt;
'''* '''Translate''': will perform a linear displacement over the texture along the given axis and at the given speed.&lt;br /&gt;
'''* '''Sin''': will add an oscillating movement over the texture along the given axis, with the given amplitude and at the given speed.&lt;br /&gt;
'''* '''Rotate''': will rotate the texture around the selected axis and at the given speed.&lt;br /&gt;
''' '''Axis'''  / '''Speed'''  / '''Amplitude''': used to set the parameters used for the previously explained setting.&lt;br /&gt;
== Texture Units ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This group is one vital part of the material edition process. All texture data that is going to be used by the material in the engine will be set here. It is divided in two different parts:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Available Texture Units''': here we will see a list of the texture units that this material can use. If you want a material to use a determinate unit, you need to enable it in this list. To do so, just check the box right at the side of it. Each type of material will show its own set of units, see each material type for details.&lt;br /&gt;
''' '''Texture Unit Panels''': here we will see details for every texture unit that we have enabled from the available units listing. Along with a thumbnail, we will have the following inputs:&lt;br /&gt;
'''* '''File''': texture file for the unit. Must be in a valid format (jpg, png, bmp…)&lt;br /&gt;
'''* '''Wrap Mode''': this will set the texture behaviour when the surface it is applied onto has texture coordinates that exceed the 0.0-1.0 range. Available modes are&lt;br /&gt;
'''''' '''Repeat'''&lt;br /&gt;
'''''' '''Clamp'''&lt;br /&gt;
'''''' '''ClampToEdge'''&lt;br /&gt;
'''''' '''ClampToBorder'''&lt;br /&gt;
'''* '''Use Mip Maps''': sets if MipMapping should be enabled for the texture.&lt;br /&gt;
'''* '''Animation Mode''': sets if the texture data should be loaded as an animation. A special formatting on file names is required for this to work. Available modes are:&lt;br /&gt;
'''''' '''None''': no animation at all.&lt;br /&gt;
'''''' '''Loop''': the animation will show over and over, &amp;quot;rewinding&amp;quot; itself everytime the end is reached.&lt;br /&gt;
'''''' '''Oscillate''': the animation will play forward and then backwards when the end is reached.&lt;br /&gt;
'''* '''Frame Time''': time in seconds that frames will be displayed.&lt;br /&gt;
== Preview Window ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This window will show a realtime preview of how the material would look ingame. Following there is a description of each control:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Viewport''': the actual material showcase. It should show a simple model using the material, a background and two lights. The current point of view can be controlled with the mouse. Left mouse button + movement will orbit the camera around the model, scrolling wheel up and down will zoom in and out respectively. Pressing the right mouse button + movement will move one of the lights around.&lt;br /&gt;
''' '''Model''': this combobox will show a set of preview models that you can select. Currently available there is a Box, a Cylinder, a Sphere and a Plane.&lt;br /&gt;
''' '''Rotate Model''': when checked, the model will rotate around its own Y axis (upward one).&lt;br /&gt;
''' '''Background Type''': use this to select a cubemapped background or a flat colored one.&lt;br /&gt;
''' '''Cubemap File''': background file that will be shown when the cubemap background type is selected.&lt;br /&gt;
''' '''Background Color''': color that will be shown when the flat background type is selected.&lt;br /&gt;
''' '''Fixed Light Color''': diffuse color for the non-movable light.&lt;br /&gt;
''' '''Movable Light Color''': diffuse color for the moveable light.&lt;br /&gt;
== Material Specific Variables ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This group will show controls that are specific to a material type. Descriptions for them should show when moving the mouse over them.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7146</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7146"/>
		<updated>2026-07-30T22:02:32Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
&lt;br /&gt;
== Shapes ==&lt;br /&gt;
* [[HPL3/Entities/Working with Shapes|Working with Shapes]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Settings&amp;diff=7145</id>
		<title>HPL3/Entities/Entity Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Settings&amp;diff=7145"/>
		<updated>2026-07-30T22:02:12Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Entity Class window = With this window, one can set up properties for the entity. First, a class shall be picked from the combo box at the top of the window. When this is do...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Entity Class window =&lt;br /&gt;
With this window, one can set up properties for the entity. First, a class shall be picked from the combo box at the top of the window. When this is done, a list of variables will appear below them.&lt;br /&gt;
&lt;br /&gt;
[[File:window_entityclass.png]]&lt;br /&gt;
&lt;br /&gt;
If defined, you can get information on a variable by moving the mouse over it.&lt;br /&gt;
&lt;br /&gt;
[[File:window_entityclass_tooltip.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: These variables are game-specific.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Rig&amp;diff=7144</id>
		<title>HPL3/Entities/Entity Rig</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Rig&amp;diff=7144"/>
		<updated>2026-07-30T22:00:58Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Bones = If the imported mesh has a skeleton, its component bones will be created along with the submeshes. Subentities can be attached to bones.  General parameters: * '''Na...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bones =&lt;br /&gt;
If the imported mesh has a skeleton, its component bones will be created along with the submeshes. Subentities can be attached to bones.&lt;br /&gt;
&lt;br /&gt;
General parameters:&lt;br /&gt;
* '''Name''': Name of the bone. Cannot be edited.&lt;br /&gt;
&lt;br /&gt;
Attachments Tab:&lt;br /&gt;
&lt;br /&gt;
Just like with bodies, stuff can be attached to a bone. To do so, just set up the filter and press the attach button, then click on objects you want to attach.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7143</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7143"/>
		<updated>2026-07-30T21:59:59Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Joints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
&lt;br /&gt;
== Shapes ==&lt;br /&gt;
* [[HPL3/Entities/Working with Shapes|Working with Shapes]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities/Working_with_Joints&amp;diff=7142</id>
		<title>HPL3/SOMA/Entities/Working with Joints</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities/Working_with_Joints&amp;diff=7142"/>
		<updated>2026-07-30T21:59:51Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Joints = Joints are used to constrain the movement between to bodies. They are a very powerful tool and can be used to do a lot of stuff such as lamps that can sway back and...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Joints =&lt;br /&gt;
Joints are used to constrain the movement between to bodies. They are a very powerful tool and can be used to do a lot of stuff such as lamps that can sway back and forth, drawers that can be interacted with and even a car with wheels and suspenders.&lt;br /&gt;
&lt;br /&gt;
All joints are made up from an anchor (also called pivot point) and an axis (also called pin direction), these have different meanings for the different joint types and describe the constraint. All bodies also have some limits to limit the constraint. If all of these values are set to 0 the limit is disabled. It can also be set if the two bodies on the joint will collide or not.&lt;br /&gt;
&lt;br /&gt;
General Parameters:&lt;br /&gt;
* '''Name'''&lt;br /&gt;
* '''Position'''&lt;br /&gt;
* '''Rotation'''&lt;br /&gt;
&lt;br /&gt;
Base Joint Parameters:&lt;br /&gt;
* '''Set Parent Body button''': Press and click on a body to set it as parent body for the joint.&lt;br /&gt;
* '''Set Child Body button''': Press and click on a body to set it as child body for the joint. Note that a joint must always have a child body.&lt;br /&gt;
* '''Sticky Min Limit'''&lt;br /&gt;
* '''Sticky Max Limit'''&lt;br /&gt;
* '''Limit Step Count'''&lt;br /&gt;
* '''Breakable''': Set if the joint should break.&lt;br /&gt;
* '''Break Force''': Force that should be applied on the joint for it to break (if Breakable is set).&lt;br /&gt;
&lt;br /&gt;
Joint Sound Parameters:&lt;br /&gt;
* '''Move Type'''&lt;br /&gt;
* '''Move Sound'''&lt;br /&gt;
* '''Min Speed'''&lt;br /&gt;
* '''Min Freq'''&lt;br /&gt;
* '''Min Freq Speed'''&lt;br /&gt;
* '''Min Volume'''&lt;br /&gt;
* '''Max Speed'''&lt;br /&gt;
* '''Max Freq'''&lt;br /&gt;
* '''Max Freq Speed'''&lt;br /&gt;
* '''Max Volume'''&lt;br /&gt;
* '''Middle Speed'''&lt;br /&gt;
* '''Middle Volume'''&lt;br /&gt;
* '''Break Sound'''&lt;br /&gt;
* '''Min Limit Sound'''&lt;br /&gt;
* '''Min Speed'''&lt;br /&gt;
* '''Max Speed'''&lt;br /&gt;
* '''Max Limit Sound'''&lt;br /&gt;
* '''Min Speed'''&lt;br /&gt;
* '''Max Speed'''&lt;br /&gt;
&lt;br /&gt;
Specific Parameters for Ball Joint:&lt;br /&gt;
&lt;br /&gt;
[[ball-and-socket.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Max Cone Angle''': This is the maximum angle between Body1(Parent) and the axis. Has value from 0 – 180.&lt;br /&gt;
* '''Max Twist Angle''': This is the maximum angle that bodies can twist relative to each other. Has a value from 0 – 180.&lt;br /&gt;
&lt;br /&gt;
Specific Parameters for Hinge Joint:&lt;br /&gt;
&lt;br /&gt;
[[hinge.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Min Angle''' &amp;amp; '''Max Angle''': Maximum and minimum angle between the bodies relative to the start position. Max angle is in the positive direction and min in the negative. To get the positive direction place your thumb on your right hand in the direction of the axis. Now bend your fingers towards your palm, the direction in which you fingers are pointing is the direction of the positive angle. In mathematics this is called the right hand rule. Valid values are 0 – 179.&lt;br /&gt;
&lt;br /&gt;
Specific Parameters for Slider Joint:&lt;br /&gt;
&lt;br /&gt;
[[slider.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Min Distance''' &amp;amp; '''Max Distance''': Picture the anchor as attached to Body1(Parent). When the anchor is moved in the distance of the axis the distance gets larger and when it moves in the other way it gets negative (and smaller). At the start position the distance is 0.&lt;br /&gt;
&lt;br /&gt;
Specific Parameters for Screw Joint:&lt;br /&gt;
* '''Min Distance''' &amp;amp; '''Max Distance''': This joint works exactly as the slider but it can spin around the axis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Joint EditMode =&lt;br /&gt;
&lt;br /&gt;
To build more complex physics setups, you will need to add joints to your models. This way you will be able to create stuff like doors, tables with drawers, levers and so on.&lt;br /&gt;
&lt;br /&gt;
There are four types of joints that can be created at the moment:&lt;br /&gt;
* Ball&lt;br /&gt;
* Hinge&lt;br /&gt;
* Screw&lt;br /&gt;
* Slider&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Working_with_Shapes&amp;diff=7141</id>
		<title>HPL3/Entities/Working with Shapes</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Working_with_Shapes&amp;diff=7141"/>
		<updated>2026-07-30T21:59:19Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Shapes =  General Parameters:  ''' '''Name''': Name of the shape. ''' '''Position''': Position of the shape in the world. ''' '''Rotation''': 3D Vector storing the shape rot...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Shapes =&lt;br /&gt;
&lt;br /&gt;
General Parameters:&lt;br /&gt;
&lt;br /&gt;
''' '''Name''': Name of the shape.&lt;br /&gt;
''' '''Position''': Position of the shape in the world.&lt;br /&gt;
''' '''Rotation''': 3D Vector storing the shape rotation.&lt;br /&gt;
''' '''Scale''': 3D Vector storing the scale of the shape.&lt;br /&gt;
Shape Specific:&lt;br /&gt;
&lt;br /&gt;
''' '''Create body''': will create a body out of the shape. Also works when multiple shapes are selected, thus creating a multishape body.&lt;br /&gt;
''' '''Detach from body''': the shape will be removed from the body it is part of.&lt;br /&gt;
Best Practices:&lt;br /&gt;
&lt;br /&gt;
''' Keep the Scale in all axis larger than 0.04 to make the collisions stable&lt;br /&gt;
&lt;br /&gt;
= Shape EditMode =&lt;br /&gt;
&lt;br /&gt;
This EditMode is used to create Shapes that will help in physics body creation. At the moment you can create four types of shapes:&lt;br /&gt;
&lt;br /&gt;
* Box&lt;br /&gt;
* Cylinder&lt;br /&gt;
* Sphere&lt;br /&gt;
* Capsule&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7140</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7140"/>
		<updated>2026-07-30T21:58:59Z</updated>

		<summary type="html">&lt;p&gt;TiMan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Joint Properties|Joint Properties]]&lt;br /&gt;
&lt;br /&gt;
== Shapes ==&lt;br /&gt;
* [[HPL3/Entities/Working with Shapes|Working with Shapes]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7139</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7139"/>
		<updated>2026-07-30T21:57:37Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Physics Bodies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Joint Properties|Joint Properties]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Adding_Animations_to_Entities&amp;diff=7138</id>
		<title>HPL3/Entities/Adding Animations to Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Adding_Animations_to_Entities&amp;diff=7138"/>
		<updated>2026-07-30T21:57:07Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;With this tool you will be able to add, delete and edit animations for the current entity.    Animation related controls   ''' '''Add new animation'''  this button will add an...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With this tool you will be able to add, delete and edit animations for the current entity. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Animation related controls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Add new animation'''  this button will add an animation with empty parameters.&lt;br /&gt;
''' '''Hide visemes'''this button will toggle the showing of special animations known as &amp;quot;visemes&amp;quot; which are used for facial animation. &lt;br /&gt;
''' '''Animation list'''  Every animation set up for the current entity will show up here (unless it is a viseme and Hide visemes is toggled)&lt;br /&gt;
''' '''Delete animation ''' this button will delete the animation that is currently selected on the Animation list&lt;br /&gt;
''' '''Name'''&lt;br /&gt;
''' '''File'''&lt;br /&gt;
''' '''Layer'''&lt;br /&gt;
''' '''Speed'''&lt;br /&gt;
''' '''TImeline''': The timeline for the animation editor will have different functionality, depending on which elements (events or transitions) are being edited at the moment.&lt;br /&gt;
''' Animation elements tab frame: &lt;br /&gt;
'''* Event tab&lt;br /&gt;
'''''' '''New''': this button will add a new event to the currently selected animation, at the current time position in the timeline. A marker will be added to the timeline, drag this marker along the timeline to modify the event's time parameter.&lt;br /&gt;
'''''' '''Event list''': Shows the events that are set up for the current animation.&lt;br /&gt;
'''''' Delete: Deletes the currently selected event.&lt;br /&gt;
'''''' Name: name of the current event. &lt;br /&gt;
'''''' Time: position in seconds in the animation when the event will be triggered.&lt;br /&gt;
'''''' Type: The type for the current event. There is an extra value that is used depending on what the type is, as follows.&lt;br /&gt;
''''''* PlaySound&lt;br /&gt;
: The event will play the sound picked with the File control.&lt;br /&gt;
''''''* &lt;br /&gt;
Step:&lt;br /&gt;
''''''* &lt;br /&gt;
ScriptCallback:&lt;br /&gt;
''''''* &lt;br /&gt;
Message: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Transition Tab&lt;br /&gt;
'''* New: this button will add a new transition to the currently selected animation&lt;br /&gt;
'''* &lt;br /&gt;
Transition list: Shows every transition defined for the current animation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
'''* Delete: Deletes the currently selected transition.&lt;br /&gt;
'''* Name: name of the current transition. &lt;br /&gt;
'''* PrevAnimation: lets you choose the previous animation for the transition (meaning the transition will be triggered when choosing to play the current animation while the previous is playing in the game) from a combo box. If &amp;quot;Any&amp;quot; is chosen, the transition will be played in any case. &amp;lt;br /&amp;gt;        * Min and Max time: time interval in the previous animation where triggering the transition is okay. These only work when a previous animation other than &amp;quot;Any&amp;quot; is chosen. The interval will be shown with draggable markers on the timeline as well.&lt;br /&gt;
'''* Transition: animation that will be played as a &amp;quot;bridge&amp;quot; between the previous and the currently selected (base) animation.&lt;br /&gt;
'''''' Play transition preview: toggle to enable preview of the transition.&lt;br /&gt;
'''''' Start time: for tweaking the min and max time on the previous animation, one can choose at which time position the transition is to start. Also has an associated draggable marker on the timeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes on the timeline workings: event markers will only be shown when the event tab is selected. The timeline will play transition previews and will show transition markers when a transition on the Transition tab is picked, otherwise the current animation will be played.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Model_Preview_Settings&amp;diff=7137</id>
		<title>HPL3/Entities/Model Preview Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Model_Preview_Settings&amp;diff=7137"/>
		<updated>2026-07-30T21:56:11Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Entity Preview/Animation Editor window =   When you have your entity all set up with bodies, joints and such, it is time to test how it would look in the game. That's what t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Entity Preview/Animation Editor window =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you have your entity all set up with bodies, joints and such, it is time to test how it would look in the game. That's what the Entity Preview window is for. In this window you will be able to see how the entity would look ingame, meaning it will be physically simulated. In it you will also get to edit the entity's animations, if any. To start the preview, just press the &amp;quot;Toggle preview&amp;quot; button (the one with cogwheels) in lower toolbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window behaves just like a regular viewport. You can move and orbit the camera around the model the same way. Added to this, you can use the mouse pointer to actually &amp;quot;pick&amp;quot; and drag physical objects in the scene.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Animation controls''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Animation''': With this control you can select the animation to play, if there is any available. When selected, it will be looped on and on.&lt;br /&gt;
''' '''Autoplay''': when this is checked, pressing the play button will not be needed when selecting an animation on the Animation selector.&lt;br /&gt;
''' '''Play button'''&lt;br /&gt;
''' '''Loop button'''&lt;br /&gt;
''' '''Step backward/forward button'''&lt;br /&gt;
''' '''Time display'''&lt;br /&gt;
''' '''Timeline'''&lt;br /&gt;
'''Visualization controls''':&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Ph ''' Toggles drawing of physical objects information. Bodies will be shown as wireframe objects, with a cross indicating their center of mass and joints will appear as green spheres.&lt;br /&gt;
''' '''Sk'''If a skeleton is present, it will be drawn draw it as red lines for bones and spheres for joints when this button is pressed.&lt;br /&gt;
''' '''BV ''' Toggles showing of Bounding Volume for the meshes on screen.&lt;br /&gt;
''' '''Fl ''' Will set the floor object to visible when pressed.&lt;br /&gt;
''' '''Am/Ma/Bk ''' Toggles Ambient, Main and Back lights on the scene respectively.&lt;br /&gt;
The buttons below the previous ones work as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Edit Animations'''  When pressed, the Animation Editor pane will be shown, more on this later.&lt;br /&gt;
''' '''Exit Preview'''  When pressed, the preview window will be dismissed.&lt;br /&gt;
Buoyancy controls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Buoyancy''': Toggles buoyancy active, along with a plane representing a liquid surface.&lt;br /&gt;
''' '''B. Density''': Buoyancy density.&lt;br /&gt;
''' '''S. Height''': Height of the liquid surface.&lt;br /&gt;
''' '''B. A. viscosity''': Buoyancy angular viscosity.&lt;br /&gt;
''' '''B. L. viscosity''': Buoyancy linear viscosity.&lt;br /&gt;
Animation Editor pane&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this tool you will be able to add, delete and edit animations for the current entity. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Animation related controls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' '''Add new animation'''  this button will add an animation with empty parameters.&lt;br /&gt;
''' '''Hide visemes'''this button will toggle the showing of special animations known as &amp;quot;visemes&amp;quot; which are used for facial animation. &lt;br /&gt;
''' '''Animation list'''  Every animation set up for the current entity will show up here (unless it is a viseme and Hide visemes is toggled)&lt;br /&gt;
''' '''Delete animation ''' this button will delete the animation that is currently selected on the Animation list&lt;br /&gt;
''' '''Name'''&lt;br /&gt;
''' '''File'''&lt;br /&gt;
''' '''Layer'''&lt;br /&gt;
''' '''Speed'''&lt;br /&gt;
''' '''TImeline''': The timeline for the animation editor will have different functionality, depending on which elements (events or transitions) are being edited at the moment.&lt;br /&gt;
''' Animation elements tab frame: &lt;br /&gt;
'''* Event tab&lt;br /&gt;
'''''' '''New''': this button will add a new event to the currently selected animation, at the current time position in the timeline. A marker will be added to the timeline, drag this marker along the timeline to modify the event's time parameter.&lt;br /&gt;
'''''' '''Event list''': Shows the events that are set up for the current animation.&lt;br /&gt;
'''''' Delete: Deletes the currently selected event.&lt;br /&gt;
'''''' Name: name of the current event. &lt;br /&gt;
'''''' Time: position in seconds in the animation when the event will be triggered.&lt;br /&gt;
'''''' Type: The type for the current event. There is an extra value that is used depending on what the type is, as follows.&lt;br /&gt;
''''''* PlaySound&lt;br /&gt;
: The event will play the sound picked with the File control.&lt;br /&gt;
''''''* &lt;br /&gt;
Step:&lt;br /&gt;
''''''* &lt;br /&gt;
ScriptCallback:&lt;br /&gt;
''''''* &lt;br /&gt;
Message: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Transition Tab&lt;br /&gt;
'''* New: this button will add a new transition to the currently selected animation&lt;br /&gt;
'''* &lt;br /&gt;
Transition list: Shows every transition defined for the current animation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
'''* Delete: Deletes the currently selected transition.&lt;br /&gt;
'''* Name: name of the current transition. &lt;br /&gt;
'''* PrevAnimation: lets you choose the previous animation for the transition (meaning the transition will be triggered when choosing to play the current animation while the previous is playing in the game) from a combo box. If &amp;quot;Any&amp;quot; is chosen, the transition will be played in any case. &amp;lt;br /&amp;gt;        * Min and Max time: time interval in the previous animation where triggering the transition is okay. These only work when a previous animation other than &amp;quot;Any&amp;quot; is chosen. The interval will be shown with draggable markers on the timeline as well.&lt;br /&gt;
'''* Transition: animation that will be played as a &amp;quot;bridge&amp;quot; between the previous and the currently selected (base) animation.&lt;br /&gt;
'''''' Play transition preview: toggle to enable preview of the transition.&lt;br /&gt;
'''''' Start time: for tweaking the min and max time on the previous animation, one can choose at which time position the transition is to start. Also has an associated draggable marker on the timeline.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes on the timeline workings: event markers will only be shown when the event tab is selected. The timeline will play transition previews and will show transition markers when a transition on the Transition tab is picked, otherwise the current animation will be played.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7136</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7136"/>
		<updated>2026-07-30T21:55:41Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* Model Preview / Animations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Joint Properties|Joint Properties]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Mesh&amp;diff=7135</id>
		<title>HPL3/Entities/Entity Mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Mesh&amp;diff=7135"/>
		<updated>2026-07-30T21:54:57Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= SubMeshes = Whenever a Mesh is imported into the ModelEditor, it will spawn one or several submeshes. These can be attached to bodies.  General Parameters: * '''Name''': Nam...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SubMeshes =&lt;br /&gt;
Whenever a Mesh is imported into the ModelEditor, it will spawn one or several submeshes. These can be attached to bodies.&lt;br /&gt;
&lt;br /&gt;
General Parameters:&lt;br /&gt;
* '''Name''': Name of the shape.&lt;br /&gt;
* '''Position''': Position of the shape in the world. If the mesh has a skeleton, no transformations can be applied.&lt;br /&gt;
* '''Rotation''': 3D Vector storing the shape rotation. If the mesh has a skeleton, no transformations can be applied.&lt;br /&gt;
* '''Scale''': 3D Vector storing the scale of the shape. If the mesh has a skeleton, no transformations can be applied.&lt;br /&gt;
&lt;br /&gt;
= SubMesh Reassign Dialog =&lt;br /&gt;
&lt;br /&gt;
[[File:model_editor_submesh_reassign.png]]&lt;br /&gt;
&lt;br /&gt;
This window allows the user to keep existing submesh data in the event of importing a new mesh or updating of the current one.&lt;br /&gt;
&lt;br /&gt;
On the left, a list with the new submeshes will be displayed, as well as a selector for pairing with a previous submesh for each. The &amp;quot;Use new data&amp;quot; item will ignore any present parameters.&lt;br /&gt;
&lt;br /&gt;
On the right, submeshes that are currently unassigned will be listed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Best Match button will try to find the best pairing for each submesh. At the time of writing, only triangle count will be taken into consideration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When done, pressing the OK button will close the dialog and use the chosen parameters in the new mesh.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Types&amp;diff=7134</id>
		<title>HPL3/Entities/Entity Types</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/Entities/Entity_Types&amp;diff=7134"/>
		<updated>2026-07-30T21:54:16Z</updated>

		<summary type="html">&lt;p&gt;TiMan: Created page with &amp;quot;= Entity Class window = With this window, one can set up properties for the entity. First, a class shall be picked from the combo box at the top of the window. When this is do...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Entity Class window =&lt;br /&gt;
With this window, one can set up properties for the entity. First, a class shall be picked from the combo box at the top of the window. When this is done, a list of variables will appear below them.&lt;br /&gt;
&lt;br /&gt;
[[File:window_entityclass.png]]&lt;br /&gt;
&lt;br /&gt;
If defined, you can get information on a variable by moving the mouse over it.&lt;br /&gt;
&lt;br /&gt;
[[File:window_entityclass_tooltip.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: These variables are game-specific.&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7133</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7133"/>
		<updated>2026-07-30T21:53:49Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Joint Properties|Joint Properties]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7132</id>
		<title>HPL3/SOMA/Entities</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Entities&amp;diff=7132"/>
		<updated>2026-07-30T21:53:22Z</updated>

		<summary type="html">&lt;p&gt;TiMan: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This category and its sub-pages are undergoing major editing, as some information in this category and all the sub pages is currently in the process of being formatted or re-written from scratch to achieve a higher standard of formatting, or not everything is yet available. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
'''This category deals with the HPL3 Model Editor, entities and related topics.'''&lt;br /&gt;
{{CategoryHeader}}&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
* [[HPL3/Entities/Entities Overview|Entities Overview]]&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [[HPL3/Entities/Model Editor Controls|Model Editor Controls]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor View|Model Editor View]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Toolbar|Model Editor Toolbar]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Preferences|Model Editor Preferences]]&lt;br /&gt;
* [[HPL3/Entities/Model Editor Outline|Model Editor Outline]]&lt;br /&gt;
* [[HPL3/Entities/Entity Settings|Entity Settings]]&lt;br /&gt;
* [[HPL3/Entities/Entity Notes|Entity Notes]]&lt;br /&gt;
* [[HPL3/Entities/Entity Mesh|Entity Mesh]]&lt;br /&gt;
* [[HPL3/Entities/Entity Rig|Entity Rig]]&lt;br /&gt;
* [[HPL3/Entities/Entity Types|Entity Types]]&lt;br /&gt;
&lt;br /&gt;
== Model Preview / Animations ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Model Preview Settings|Model Preview Settings]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Adding Animations to Entities|Adding Animations to Entities]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryNewcolumn}}&lt;br /&gt;
&lt;br /&gt;
== Physics Bodies ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Physics Bodies|Working with Physics Bodies]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Physics Body Properties|Physics Body Properties]]&lt;br /&gt;
&lt;br /&gt;
== Joints ==&lt;br /&gt;
* [[HPL3/SOMA/Entities/Working with Joints|Working with Joints]]&lt;br /&gt;
* [[HPL3/SOMA/Entities/Joint Properties|Joint Properties]]&lt;br /&gt;
&lt;br /&gt;
{{CategoryEnd}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;br /&gt;
[[Category:Entry pages]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
</feed>