<?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=Iamrealife</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=Iamrealife"/>
	<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page/Special:Contributions/Iamrealife"/>
	<updated>2026-04-03T23:17:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation&amp;diff=6411</id>
		<title>HPL1/Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation&amp;diff=6411"/>
		<updated>2023-04-17T19:15:19Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL-Engine© Content Creation=&lt;br /&gt;
&lt;br /&gt;
==Table of Contents==&lt;br /&gt;
&lt;br /&gt;
==1. Introduction==&lt;br /&gt;
&lt;br /&gt;
===1.1 Some forewords===&lt;br /&gt;
Welcome dear content creator to the HPL-Engine.&lt;br /&gt;
&lt;br /&gt;
In some parts of the doc naming conventions are described. This are described something like this:&amp;lt;br /&amp;gt;'''_thing_[name]_[stuff]'''&lt;br /&gt;
&lt;br /&gt;
This means that “[name]” and “[stuff]” are variables and are to be replaced with other text. The above example could be translated to:&amp;lt;br /&amp;gt;'''_thing_thomas_lighter'''&lt;br /&gt;
&lt;br /&gt;
Or something else depending on what the variables should describe.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 Setup===&lt;br /&gt;
Below are just some general rules and settings.&lt;br /&gt;
&lt;br /&gt;
'''Units:'''&amp;lt;br /&amp;gt;The game will use SI-units for measurements. This means that 1 length unit equals 1 meter, 1 time unit equals 1 second, 1 mass unit equals 1 kg and so on.&lt;br /&gt;
&lt;br /&gt;
'''National Settings'''&amp;lt;br /&amp;gt;All the tools for the engine uses a dot “.” as a decimal separator. If you are Swedish or something this might not be how your computer is set up. Open the ''control panel-&amp;gt;national settings'' and check so that this is correct! Also don’t forget to write decimals with dot and '''not comma.'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Good:||1.00||1.23||234.3&lt;br /&gt;
|-&lt;br /&gt;
|Bad:||1,00||1,23||234,3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===1.3 Exporter used===&lt;br /&gt;
Collada is used to export models and maps. The exporter can be used for most major 3d packages, however HPL cannot load all of the files created from the different exporters. Currently Maya is the most supported package.&lt;br /&gt;
&lt;br /&gt;
More information is found at:&amp;lt;br /&amp;gt;http://collada.org/public_forum/&amp;lt;br /&amp;gt;Maya specific information is found at:&amp;lt;br /&amp;gt;http://colladamaya.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Exporters known to work properly with current HPL release can be found in [[HPL1/Getting started]].&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2. Creating Models==&lt;br /&gt;
[[HPL1/Content Creation Chapter 2|2. Creating Models]]&lt;br /&gt;
&lt;br /&gt;
==3. Creating maps==&lt;br /&gt;
[[HPL1/Content Creation Chapter 3|3. Creating maps]]&lt;br /&gt;
&lt;br /&gt;
==4. Creating Materials==&lt;br /&gt;
[[HPL1/Content Creation Chapter 4|4. Creating Materials]]&lt;br /&gt;
&lt;br /&gt;
==5. HPL Helper==&lt;br /&gt;
[[HPL1/Content Creation Chapter 5|5. HPL Helper]]&lt;br /&gt;
&lt;br /&gt;
==6. Entity files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 6|6. Entity files]]&lt;br /&gt;
&lt;br /&gt;
==7. Configuration files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 7|7. Configuration files]]&lt;br /&gt;
&lt;br /&gt;
==8. Naming and structure==&lt;br /&gt;
[[HPL1/Content Creation Chapter 8|8. Naming and structure]]&lt;br /&gt;
&lt;br /&gt;
==9. Heads-Up Display files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 9|9. HUD files]]&lt;br /&gt;
&lt;br /&gt;
==10. Graphical User Interface files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 10|10. GUI files]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_10&amp;diff=6410</id>
		<title>HPL1/Content Creation Chapter 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_10&amp;diff=6410"/>
		<updated>2023-04-17T19:07:17Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 10.1 Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This page is undergoing major editing, as information is still being gathered and researched. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
== 10 Graphical User Interface files ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 10.1 Intro ===&lt;br /&gt;
'''NOTE:''' Before you begin, make sure you've familiarized yourself with the Extensible Markup Language (XML) before beginning to edit these files. Currently you may only change and replace existing GUI files as they are referenced elsewhere in order for the game to be able to initialize and use them.&lt;br /&gt;
&lt;br /&gt;
Graphical User Interface files are ordinary XML files albeit slightly more advanced than your usual Entity (*.ent) or Heads-Up Display (*.hud) file, GUI files are mostly used to display interfaces on the screen when the player interacts with a certain object (such as a computer or bombs). The most common use however is for the Computer Terminals found throughout Black Plague.&lt;br /&gt;
&lt;br /&gt;
Overture cannot load nor display Graphical User Interface files.&lt;br /&gt;
&lt;br /&gt;
Prior to editing Graphical User Interface (*.gui) files make sure that the language is set to XML in Notepad++.&lt;br /&gt;
&lt;br /&gt;
The following values are used, note that all types have &amp;quot;&amp;quot; around the value:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''String'''	 || A string of letters. &amp;quot;MyName&amp;quot; or &amp;quot;My_Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Integer'''	 || A number without decimals &amp;quot;-15&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector2'''	 || Two numbers in a row separated by space: &amp;quot;1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector3'''	 || Three numbers in a row separated by space: &amp;quot;1 1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector4'''	 || Four numbers in a row separated by space: &amp;quot;1 1 1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Boolean'''	 || A data type using &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot; values.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.2 Script Functions ===&lt;br /&gt;
Here are all the valid Scripting Functions available for associating your Graphical User Interface files with. Most of the functions are defined here, think of GUI files as a setting file.&lt;br /&gt;
&lt;br /&gt;
Use these as a reference and look at existing AngelScript files used by the various GUI files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void ClickMyFunction(string asName, string asMessage, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is the standard syntax used to define various windows and playing back sound.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void CloseScreenGui();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will kick the player out of the terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWidgetBool(string asName, string asString, bool abActive);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Displays or hides a window.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
asName name of the window&amp;lt;br/&amp;gt;&lt;br /&gt;
asString what string value to change (enabled or visible)&amp;lt;br/&amp;gt;&lt;br /&gt;
abActive whether to change the value to true or false&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetAttentionWidget(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Makes the current window active. (Think folder directories or an error message)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
CreateGuiPopUpTrans(&amp;quot;string asCat1&amp;quot;,&amp;quot;string asEntry1&amp;quot;,&lt;br /&gt;
					&amp;quot;string asCat2&amp;quot;,&amp;quot;string asEntry2&amp;quot;,&lt;br /&gt;
					&amp;quot;string asCat3&amp;quot;,&amp;quot;string asEntry3&amp;quot;, &lt;br /&gt;
					&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;string asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Display a simple text window.&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat1 Text Category for the toolbar text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry1 Text Entry for the toolbar text&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat2 Text Category for the window text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry2 Text Entry for the window text&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat3 Text Category for the window button&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry3 Text Entry for the window button&amp;lt;br/&amp;gt;&lt;br /&gt;
asFunction Must be a valid int xButton function name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void MyFunction(int xButton)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Defines what sound should be played when pressing a button in the interface.&lt;br /&gt;
&lt;br /&gt;
Valid syntax: &amp;quot;PlayGuiSound(string asName, float afVol)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateGuiTextView(	&amp;quot;string asCat1&amp;quot;, &amp;quot;string asEntry1&amp;quot;, &lt;br /&gt;
				&amp;quot;string asCat2&amp;quot;, &amp;quot;string asEntry2&amp;quot;,&amp;quot;string, asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Creates a text window.&lt;br /&gt;
&lt;br /&gt;
asCat1 Text Category for the toolbar&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry1 Text Entry for the toolbar&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat2 Text Category for the actual text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry2 Text Name for the actual text&amp;lt;br/&amp;gt;&lt;br /&gt;
asFunction Must be a valid int xButton function name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void ViewImage(&amp;quot;string asName&amp;quot;, &amp;quot;string asCat&amp;quot;, &amp;quot;string asEntry&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Creates an image window.&lt;br /&gt;
&lt;br /&gt;
asName Name of the image to display. Must match name in the GUI images tag.&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat Category for the image window name&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry Entry for the image window name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWidgetCallback(&amp;quot;string asName&amp;quot;, &amp;quot;string asButton&amp;quot;, &amp;quot;string asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Add a callback that is called when the player interacts with the interface&lt;br /&gt;
&lt;br /&gt;
asName Name of the Widget in the GUI file&amp;lt;br/&amp;gt;&lt;br /&gt;
asButton Type of interaction (ButtonPressed, MouseDoubleClick)&lt;br /&gt;
=== 10.3 Graphical User Interface reference file ===&lt;br /&gt;
Below is a sample that will help you define a GUI file, this file has some of the more basic stuff to creating a computer terminal interface, you can add more advanced stuff as you go through the various existing ones and this documentation.&lt;br /&gt;
&lt;br /&gt;
Due to the nature and structuring of GUI files it is recommended that you only use this as a reference when editing existing GUI files rather than making your own as it can become quite cumbersome.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ScriptName&amp;quot; Implies what you'd call the function in order to be referenced with the accompanying script file. (I.E VacationPic)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;FontsTag&amp;quot; Must match the name used in the Fonts tag. (I.E FileTextWhite)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;ImageTag&amp;quot; Must match the name used in the Images tag. (I.E DeskTop.jpg or Folder.bmp)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;GUI&amp;gt;&lt;br /&gt;
	&amp;lt;Main SkinFile=&amp;quot;String, name of skin (*.skin) file&amp;quot; ScriptFile=&amp;quot;String, name of accompanying script (*.hps) file&amp;quot; IsFullScreen=&amp;quot;Boolean&amp;quot; /&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;Images&amp;gt;&lt;br /&gt;
		&amp;lt;Image Name=&amp;quot;String, ImageTag&amp;quot; File=&amp;quot;String, name of a valid bitmap (*.bmp) file&amp;quot; Offset=&amp;quot;0 0&amp;quot; ActiveSize=&amp;quot;-1 -1&amp;quot; Color=&amp;quot;Vector4, Red, Green, Blue, Alpha values&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;Texture Name=&amp;quot;String, ScriptName&amp;quot; File=&amp;quot;String, name of image (*.jpg) file&amp;quot; Offset=&amp;quot;0 0&amp;quot; ActiveSize=&amp;quot;-1 -1&amp;quot; Color=&amp;quot;Vector4, Red, Green, Blue, Alpha values&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Images&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;Fonts&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;FileTextWhite&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;11 11&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;FileTextBlack&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;11 11&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;Normal&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;NormalGreen&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;0 1 0 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;NormalRed&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;1 0 0 1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Fonts&amp;gt;		&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;Widgets&amp;gt;&lt;br /&gt;
		&amp;lt;Image Position=&amp;quot;Vector3, position of image&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of image&amp;quot; &amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Button Name=&amp;quot;CloseTerminal&amp;quot; Position=&amp;quot;775 5 1&amp;quot; Size=&amp;quot;20 20&amp;quot; Text=&amp;quot;X&amp;quot;/&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- FILES --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, icon position&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of the icon&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Label Name = &amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of label text&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Font=&amp;quot;String, must match font name in fonts tag&amp;quot; TextAlign=&amp;quot;String, valid alignments are Left, Right and Center&amp;quot; WordWrap=&amp;quot;Boolean&amp;quot; Size=&amp;quot;Vector2, size of text, in width and height, default&amp;quot;/&amp;gt;&lt;br /&gt;
	  	&amp;lt;/Image&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- FOLDER WINDOW --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Window Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, icon position&amp;quot; Size=&amp;quot;Vector2, size of the icon&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Visible=&amp;quot;Boolean, whether or not the frame should be drawn&amp;quot; Enabled=&amp;quot;Boolean, whether or not the window should be enabled&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Frame Position=&amp;quot;Vector3, position of folder window&amp;quot; Size=&amp;quot;Vector2, size of folder window&amp;quot; BackgroundColor=&amp;quot;Vector4, Red, Gree, Blue, Alpha values&amp;quot; DrawBackground=&amp;quot;Boolean, doesn't do anything&amp;quot; DrawFrame=&amp;quot;Boolean, does nothing&amp;quot; &amp;gt;&lt;br /&gt;
	  			&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of icon&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of icon&amp;quot;&amp;gt;&lt;br /&gt;
			  		&amp;lt;Label Name = &amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of text&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Font=&amp;quot;String, FontsTag&amp;quot; TextAlign=&amp;quot;String, valid alignments are Left, Right and Center&amp;quot; WordWrap=&amp;quot;Boolean, if the words should wrap around the edges or continue off-screen&amp;quot; Size=&amp;quot;Vector2, size of text, in width and height&amp;quot;/&amp;gt;&lt;br /&gt;
			  	&amp;lt;/Image&amp;gt;&lt;br /&gt;
		  	&amp;lt;/Frame&amp;gt;&lt;br /&gt;
	  		&lt;br /&gt;
			&amp;lt;Button Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, button position&amp;quot; Size=&amp;quot;Vector2, size of button in width and height&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; /&amp;gt;	  			  		&lt;br /&gt;
	  	&amp;lt;/Window&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- IMAGE WINDOW --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Window Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, window position&amp;quot; Size=&amp;quot;String, size of window&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Visible=&amp;quot;Boolean, whether or not the frame should be drawn&amp;quot; Enabled=&amp;quot;Boolean, whether or not the window should be enabled&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Frame Position=&amp;quot;Vector3, position of image viewer window&amp;quot; Size=&amp;quot;Vector2, size of image viewer window&amp;quot; DrawBackground=&amp;quot;Boolean, doesn't do anything&amp;quot; DrawFrame=&amp;quot;Boolean, does nothing&amp;quot; &amp;gt;&lt;br /&gt;
	  			&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of image&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of image, in width and height&amp;quot; /&amp;gt;&lt;br /&gt;
	  	  	&amp;lt;/Frame&amp;gt;&lt;br /&gt;
	  		&lt;br /&gt;
			&amp;lt;Button Name=&amp;quot;CloseImageWindow&amp;quot; Position=&amp;quot;160 340 1&amp;quot; Size=&amp;quot;100 30&amp;quot; TextCat=&amp;quot;GUI&amp;quot; TextEntry=&amp;quot;Close Window&amp;quot; /&amp;gt;	  			  		&lt;br /&gt;
	  	&amp;lt;/Window&amp;gt;&lt;br /&gt;
	  &amp;lt;/Image&amp;gt;&lt;br /&gt;
	&amp;lt;/Widgets&amp;gt;&lt;br /&gt;
&amp;lt;/GUI&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_10&amp;diff=6409</id>
		<title>HPL1/Content Creation Chapter 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_10&amp;diff=6409"/>
		<updated>2023-04-17T18:55:38Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: Created page with &amp;quot;{{constructionNotice|This page is undergoing major editing, as information is still being gathered and researched. More pages and information will gradually be added.}}  == 10...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{constructionNotice|This page is undergoing major editing, as information is still being gathered and researched. More pages and information will gradually be added.}}&lt;br /&gt;
&lt;br /&gt;
== 10 Graphical User Interface files ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 10.1 Intro ===&lt;br /&gt;
'''NOTE:''' Before you begin, make sure you've familiarized yourself with the Extensible Markup Language (XML) before beginning to edit these files. Currently you may only change and replace existing GUI files as they are referenced elsewhere in order for the game to be able to initialize and use them.&lt;br /&gt;
&lt;br /&gt;
Graphical User Interface files are ordinary XML files albeit slightly more advanced than your usual Entity (*.ent) or Heads-Up Display (*.hud) file, GUI files are mostly used to display interfaces on the screen when the player interacts with a certain object (such as a computer or bombs). The most common use however is for the Computer Terminals found throughout Black Plague.&lt;br /&gt;
&lt;br /&gt;
Overture cannot load nor display Graphical User Interface files.&lt;br /&gt;
&lt;br /&gt;
Prior to editing Graphical User Interface (*.gui) files make sure that the language is set to XML in Notepad++.&lt;br /&gt;
&lt;br /&gt;
The following values are used, note that all types have &amp;quot;&amp;quot; around the value:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''String'''	 || A string of letters. &amp;quot;MyName&amp;quot; or &amp;quot;My_Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Float'''     || A decimal number. &amp;quot;1.04&amp;quot; or &amp;quot;1.04f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Integer'''	 || A number without decimals &amp;quot;-15&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector3'''	 || Three numbers in a row separated by space: &amp;quot;1 1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Boolean'''	 || A data type using &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot; values.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.2 Script Functions ===&lt;br /&gt;
Here are all the valid Scripting Functions available for associating your Graphical User Interface files with. Most of the functions are defined here, think of GUI files as a setting file.&lt;br /&gt;
&lt;br /&gt;
Use these as a reference and look at existing AngelScript files used by the various GUI files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void ClickMyFunction(string asName, string asMessage, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is the standard syntax used to define various windows and playing back sound.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void CloseScreenGui();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will kick the player out of the terminal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWidgetBool(string asName, string asString, bool abActive);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Displays or hides a window.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
asName name of the window&amp;lt;br/&amp;gt;&lt;br /&gt;
asString what string value to change (enabled or visible)&amp;lt;br/&amp;gt;&lt;br /&gt;
abActive whether to change the value to true or false&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetAttentionWidget(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Makes the current window active. (Think folder directories or an error message)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
CreateGuiPopUpTrans(&amp;quot;string asCat1&amp;quot;,&amp;quot;string asEntry1&amp;quot;,&lt;br /&gt;
					&amp;quot;string asCat2&amp;quot;,&amp;quot;string asEntry2&amp;quot;,&lt;br /&gt;
					&amp;quot;string asCat3&amp;quot;,&amp;quot;string asEntry3&amp;quot;, &lt;br /&gt;
					&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&lt;br /&gt;
					&amp;quot;string asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Display a simple text window.&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat1 Text Category for the toolbar text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry1 Text Entry for the toolbar text&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat2 Text Category for the window text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry2 Text Entry for the window text&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat3 Text Category for the window button&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry3 Text Entry for the window button&amp;lt;br/&amp;gt;&lt;br /&gt;
asFunction Must be a valid int xButton function name&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void MyFunction(int xButton)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Defines what sound should be played when pressing a button in the interface.&lt;br /&gt;
&lt;br /&gt;
Valid syntax: &amp;quot;PlayGuiSound(string asName, float afVol)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateGuiTextView(	&amp;quot;string asCat1&amp;quot;, &amp;quot;string asEntry1&amp;quot;, &lt;br /&gt;
				&amp;quot;string asCat2&amp;quot;, &amp;quot;string asEntry2&amp;quot;,&amp;quot;string, asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Creates a text window.&lt;br /&gt;
&lt;br /&gt;
asCat1 Text Category for the toolbar&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry1 Text Entry for the toolbar&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat2 Text Category for the actual text&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry2 Text Name for the actual text&amp;lt;br/&amp;gt;&lt;br /&gt;
asFunction Must be a valid int xButton function name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void ViewImage(&amp;quot;string asName&amp;quot;, &amp;quot;string asCat&amp;quot;, &amp;quot;string asEntry&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Creates an image window.&lt;br /&gt;
&lt;br /&gt;
asName Name of the image to display. Must match name in the GUI images tag.&amp;lt;br/&amp;gt;&lt;br /&gt;
asCat Category for the image window name&amp;lt;br/&amp;gt;&lt;br /&gt;
asEntry Entry for the image window name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWidgetCallback(&amp;quot;string asName&amp;quot;, &amp;quot;string asButton&amp;quot;, &amp;quot;string asFunction&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Add a callback that is called when the player interacts with the interface&lt;br /&gt;
&lt;br /&gt;
asName Name of the Widget in the GUI file&amp;lt;br/&amp;gt;&lt;br /&gt;
asButton Type of interaction (ButtonPressed, MouseDoubleClick)&lt;br /&gt;
=== 10.3 Graphical User Interface reference file ===&lt;br /&gt;
Below is a sample that will help you define a GUI file, this file has some of the more basic stuff to creating a computer terminal interface, you can add more advanced stuff as you go through the various existing ones and this documentation.&lt;br /&gt;
&lt;br /&gt;
Due to the nature and structuring of GUI files it is recommended that you only use this as a reference when editing existing GUI files rather than making your own as it can become quite cumbersome.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;ScriptName&amp;quot; Implies what you'd call the function in order to be referenced with the accompanying script file. (I.E VacationPic)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;FontsTag&amp;quot; Must match the name used in the Fonts tag. (I.E FileTextWhite)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;quot;ImageTag&amp;quot; Must match the name used in the Images tag. (I.E DeskTop.jpg or Folder.bmp)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;GUI&amp;gt;&lt;br /&gt;
	&amp;lt;Main SkinFile=&amp;quot;String, name of skin (*.skin) file&amp;quot; ScriptFile=&amp;quot;String, name of accompanying script (*.hps) file&amp;quot; IsFullScreen=&amp;quot;Boolean&amp;quot; /&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;Images&amp;gt;&lt;br /&gt;
		&amp;lt;Image Name=&amp;quot;String, ImageTag&amp;quot; File=&amp;quot;String, name of a valid bitmap (*.bmp) file&amp;quot; Offset=&amp;quot;0 0&amp;quot; ActiveSize=&amp;quot;-1 -1&amp;quot; Color=&amp;quot;Vector4, Red, Green, Blue, Alpha values&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;Texture Name=&amp;quot;String, ScriptName&amp;quot; File=&amp;quot;String, name of image (*.jpg) file&amp;quot; Offset=&amp;quot;0 0&amp;quot; ActiveSize=&amp;quot;-1 -1&amp;quot; Color=&amp;quot;Vector4, Red, Green, Blue, Alpha values&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/Images&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;Fonts&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;FileTextWhite&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;11 11&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;FileTextBlack&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;11 11&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;Normal&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;1 1 1 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;NormalGreen&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;0 1 0 1&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Font Name=&amp;quot;NormalRed&amp;quot; File=&amp;quot;verdana.fnt&amp;quot; Size = &amp;quot;12 12&amp;quot; Color=&amp;quot;1 0 0 1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Fonts&amp;gt;		&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;Widgets&amp;gt;&lt;br /&gt;
		&amp;lt;Image Position=&amp;quot;Vector3, position of image&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of image&amp;quot; &amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Button Name=&amp;quot;CloseTerminal&amp;quot; Position=&amp;quot;775 5 1&amp;quot; Size=&amp;quot;20 20&amp;quot; Text=&amp;quot;X&amp;quot;/&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- FILES --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, icon position&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of the icon&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Label Name = &amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of label text&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Font=&amp;quot;String, must match font name in fonts tag&amp;quot; TextAlign=&amp;quot;String, valid alignments are Left, Right and Center&amp;quot; WordWrap=&amp;quot;Boolean&amp;quot; Size=&amp;quot;Vector2, size of text, in width and height, default&amp;quot;/&amp;gt;&lt;br /&gt;
	  	&amp;lt;/Image&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- FOLDER WINDOW --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Window Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, icon position&amp;quot; Size=&amp;quot;Vector2, size of the icon&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Visible=&amp;quot;Boolean, whether or not the frame should be drawn&amp;quot; Enabled=&amp;quot;Boolean, whether or not the window should be enabled&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Frame Position=&amp;quot;Vector3, position of folder window&amp;quot; Size=&amp;quot;Vector2, size of folder window&amp;quot; BackgroundColor=&amp;quot;Vector4, Red, Gree, Blue, Alpha values&amp;quot; DrawBackground=&amp;quot;Boolean, doesn't do anything&amp;quot; DrawFrame=&amp;quot;Boolean, does nothing&amp;quot; &amp;gt;&lt;br /&gt;
	  			&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of icon&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of icon&amp;quot;&amp;gt;&lt;br /&gt;
			  		&amp;lt;Label Name = &amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of text&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Font=&amp;quot;String, FontsTag&amp;quot; TextAlign=&amp;quot;String, valid alignments are Left, Right and Center&amp;quot; WordWrap=&amp;quot;Boolean, if the words should wrap around the edges or continue off-screen&amp;quot; Size=&amp;quot;Vector2, size of text, in width and height&amp;quot;/&amp;gt;&lt;br /&gt;
			  	&amp;lt;/Image&amp;gt;&lt;br /&gt;
		  	&amp;lt;/Frame&amp;gt;&lt;br /&gt;
	  		&lt;br /&gt;
			&amp;lt;Button Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, button position&amp;quot; Size=&amp;quot;Vector2, size of button in width and height&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; /&amp;gt;	  			  		&lt;br /&gt;
	  	&amp;lt;/Window&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;!-- IMAGE WINDOW --&amp;gt;&lt;br /&gt;
	  	&lt;br /&gt;
	  	&amp;lt;Window Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, window position&amp;quot; Size=&amp;quot;String, size of window&amp;quot; TextCat=&amp;quot;String, TextCategory&amp;quot; TextEntry=&amp;quot;String, TextEntry&amp;quot; Visible=&amp;quot;Boolean, whether or not the frame should be drawn&amp;quot; Enabled=&amp;quot;Boolean, whether or not the window should be enabled&amp;quot;&amp;gt;&lt;br /&gt;
	  		&amp;lt;Frame Position=&amp;quot;Vector3, position of image viewer window&amp;quot; Size=&amp;quot;Vector2, size of image viewer window&amp;quot; DrawBackground=&amp;quot;Boolean, doesn't do anything&amp;quot; DrawFrame=&amp;quot;Boolean, does nothing&amp;quot; &amp;gt;&lt;br /&gt;
	  			&amp;lt;Image Name=&amp;quot;String, ScriptName&amp;quot; Position=&amp;quot;Vector3, position of image&amp;quot; Image=&amp;quot;String, ImageTag&amp;quot; Size=&amp;quot;Vector2, size of image, in width and height&amp;quot; /&amp;gt;&lt;br /&gt;
	  	  	&amp;lt;/Frame&amp;gt;&lt;br /&gt;
	  		&lt;br /&gt;
			&amp;lt;Button Name=&amp;quot;CloseImageWindow&amp;quot; Position=&amp;quot;160 340 1&amp;quot; Size=&amp;quot;100 30&amp;quot; TextCat=&amp;quot;GUI&amp;quot; TextEntry=&amp;quot;Close Window&amp;quot; /&amp;gt;	  			  		&lt;br /&gt;
	  	&amp;lt;/Window&amp;gt;&lt;br /&gt;
	  &amp;lt;/Image&amp;gt;&lt;br /&gt;
	&amp;lt;/Widgets&amp;gt;&lt;br /&gt;
&amp;lt;/GUI&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6408</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6408"/>
		<updated>2023-04-17T16:38:43Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* File extensions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a unique meaning to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Reference'''&lt;br /&gt;
|An item referencing a valid Entity file to be used within the game's engine. All entities in your 3D editor must begin with ''_ref_''&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|-&lt;br /&gt;
|'''Stick'''&lt;br /&gt;
|Areas that act as glue towards entities in the game world. The entities will stay in place until interacted with again.&lt;br /&gt;
|-&lt;br /&gt;
|'''Link'''&lt;br /&gt;
|Start Locator for the player. This can also be a link between two Starting Positions in a single map.&lt;br /&gt;
|-&lt;br /&gt;
|'''Node'''&lt;br /&gt;
|Navigation points for character entities.&lt;br /&gt;
|-&lt;br /&gt;
|'''Portal'''&lt;br /&gt;
|Special type of handler for what room (or sector) is currently being rendered in-game. A way to optimize ones map better.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.gui'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_10|Graphical User Interface]], XML file that contains information on the various interfaces used throughout Black Plague, these files can only be created manually.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Script_Reference&amp;diff=6407</id>
		<title>HPL1/Script Reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Script_Reference&amp;diff=6407"/>
		<updated>2023-04-08T12:38:38Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Script Reference document =&lt;br /&gt;
&lt;br /&gt;
In this document you will find all the various scripting functions used in the Penumbra trilogy, it's good to have a basic understanding of how Angelscript works before attempting to do anything. Unlike HPL2, the HPL1 engine will crash if too many errors are present. In some cases instead of crashing the game just won't run the accompanying map's script file until the errors have been cleared up. It's also a good idea to locate a Howard Phillip Script (*.hps) file to see how it is used in the Penumbra games to get a better understanding of its functions if you get stuck here.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
== Engine scripts ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void Print(string asText)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prints a string to the log.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
string FloatToString(float afX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Converts a float to string&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
string IntToString(int alX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Converts an integer to string,&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float RandFloat(float afMin, float afMax)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generates a random float.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int RandInt(int alMin, int alMax)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generates a random int.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
StringContains(string asString, string asSubString)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checks what a string contains.&amp;lt;br /&amp;gt;asString what string to check&amp;lt;br /&amp;gt;asSubString what to check the string against&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
string Translate(string asCat, string asName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets a string in the current language.&amp;lt;br /&amp;gt;asCat The translation category&amp;lt;br /&amp;gt;asName The name of the category entry.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void PreloadSound(string asFile)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preloads the data for a sound.&amp;lt;br /&amp;gt;asFile This can be a wav, ogg, mp3 or snt file.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ResetLogicTimer()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resync screen frames to logic timer.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Particle Systems ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetParticleSystemActive(string asName, bool abActive)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set if a particle system should be active or not.&amp;lt;br /&amp;gt;asName The name of the particle system.&amp;lt;br /&amp;gt;abActive If it should be active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateParticleSystem(string asName, string asType, string asArea, float afX, float afY, float afZ)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a particle system at the position of an area&amp;lt;br /&amp;gt;asName The name of the particle system.&amp;lt;br /&amp;gt;asType The type of aprticle system&amp;lt;br /&amp;gt;asArea The name of the area&amp;lt;br /&amp;gt;X Y and Z the variables of the particle system.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CreateParticleSystemOnCamera(string asName ,string asFile)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create an particle on the position of the camera(player).&amp;lt;br /&amp;gt;asName the name of the particle system ingame.&amp;lt;br /&amp;gt;asFile the name of the file for the particle system.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void KillParticleSystem(string asName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kill a particle system&amp;lt;br /&amp;gt;asName The name of the particle system.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Beams ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateBeam(string asName, string asFile, string asStartArea, string asEndArea)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a beam between 2 areas&amp;lt;br /&amp;gt;asName the name of the beam&amp;lt;br /&amp;gt;asFile the name of the .beam file&amp;lt;br /&amp;gt;asStartArea name of the area to start the beam&amp;lt;br /&amp;gt;asEndArea name of the area to end the beam&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void DestroyBeam(string asName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Destroy a beam&amp;lt;br /&amp;gt;asName name of the beam to destory&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Lights ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void FadeLight3D(string asName, float afR,float afG, float afB, float afA, float afRadius, float afTime)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fades a sound to a color and a radius&amp;lt;br /&amp;gt;asName The name of the light&amp;lt;br /&amp;gt;afR The red channel to fade to.&amp;lt;br /&amp;gt;afG The green channel to fade to.&amp;lt;br /&amp;gt;afB The blue channel to fade to.&amp;lt;br /&amp;gt;afA The alpha channel to fade to.&amp;lt;br /&amp;gt;afRadius The radius to fade to.&amp;lt;br /&amp;gt;afTime The amount of seconds the fade should last.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AttachBillboardToLight3D(string asBillboardName, string asLightName,bool abX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attaches a billboard to a light&amp;lt;br /&amp;gt;asBillboardName The billbaord name&amp;lt;br /&amp;gt;asLightName The light name&amp;lt;br /&amp;gt;abX True if it should be attached, false if you want to remove.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLight3DVisible(string asName, bool abX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets on/off a light&amp;lt;br /&amp;gt;asName The light name&amp;lt;br /&amp;gt;abX if the light should be on or off.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLight3DFlickerActive(string asName, bool abX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets flickering on/off a light&amp;lt;br /&amp;gt;asName The light name&amp;lt;br /&amp;gt;abX if the light flicker should be on or off.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLight3DFlicker(string asName,&lt;br /&gt;
                          float afR,float afG, float afB, float afA,&lt;br /&gt;
                          float afRadius,&lt;br /&gt;
                          float afOnMinLength, float afOnMaxLength,&lt;br /&gt;
                          string asOnSound,string asOnPS,&lt;br /&gt;
                          float afOffMinLength, float afOffMaxLength,&lt;br /&gt;
                          string asOffSound,string asOffPS,&lt;br /&gt;
                          bool abFade,&lt;br /&gt;
                          float afOnFadeLength, float afOffFadeLength)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets flickering parameters&amp;lt;br /&amp;gt;asName The light name&amp;lt;br /&amp;gt;abR, afG, afB, afA The color of the light when off&amp;lt;br /&amp;gt;afRadius The radius of the light when off.&amp;lt;br /&amp;gt;afOnMinLength Minimum time before going from off to on.&amp;lt;br /&amp;gt;afOnMaxLength Maximum time before going from off to on.&amp;lt;br /&amp;gt;asOnSound Name of the sound played when going from off to on. “” means no sound.&amp;lt;br /&amp;gt;asOnPS Name of the particle system played when going from off to on. “” means none.&amp;lt;br /&amp;gt;afOffMinLength Minimum time before going from on to off.&amp;lt;br /&amp;gt;afOffMaxLength Maximum time before going from on to off.&amp;lt;br /&amp;gt;asOffSound Name of the sound played when going from on to off. “” means no sound.&amp;lt;br /&amp;gt;asOffPS Name of the particle system played when going from on to off. “” means none.&amp;lt;br /&amp;gt;abFade If there should be a fade between off and on.&amp;lt;br /&amp;gt;afOnFadeLength Fade length from off to on.&amp;lt;br /&amp;gt;afOffFadeLength Fade length from on to off.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateLightFlashAtArea(string asArea, float afRadius,&lt;br /&gt;
                    float afR,float afG, float afB, float afA,&lt;br /&gt;
                    float afAddTime, float afNegTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a flash of light at an area.&amp;lt;br /&amp;gt;asArea Name of the area to create the flash in&amp;lt;br /&amp;gt;afRadius Radius of the flash&amp;lt;br /&amp;gt;afR, afG, afB, afA Red, Green, Blue and alpha of the flash..&amp;lt;br /&amp;gt;afAddTime Time it will take to reach full strenght.&amp;lt;br /&amp;gt;afNegTime Time it will take to end flash, turning black.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLight3DOnlyAffectInSector(string asName, bool abX);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a light should cast its light and shadow, affecting the surroundings in its sector(_room grouping) or in all sectors it reaches. By default static lights added in the editor to a level is true, the same goes for lights that are part of an Lamp entity.&amp;lt;br /&amp;gt;asName The light name&amp;lt;br /&amp;gt;abX if it should only affect the sector or not.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateSoundEntity(string asName, string asFile, string asArea)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a sound entity at the postion of an area.&amp;lt;br /&amp;gt;asName Name of the created sound entity.&amp;lt;br /&amp;gt;asFile The snt file to load.&amp;lt;br /&amp;gt;asArea The area to create at.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateSoundEntityAt(string asType,string asDestName,string asSoundName,string asSoundFile);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a sound entity at the position of an entity.&amp;lt;br /&amp;gt;asType The type of entity. This can be: “Joint”,“Body” or “Entity”.&amp;lt;br /&amp;gt;asDestName The entity/body/joint name&amp;lt;br /&amp;gt;asSoundName The name of created sound entity.&amp;lt;br /&amp;gt;asSoundFile The name of the snt file.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void PlaySoundEntity(string asName, bool abPlayStart)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play a sound entity&amp;lt;br /&amp;gt;asName The entity name&amp;lt;br /&amp;gt;abPlayStart If the start sound should be played.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StopSoundEntity(string asName, bool abPlayEnd)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop a sound entity&amp;lt;br /&amp;gt;asName The entity name&amp;lt;br /&amp;gt;abPlayEnd If the end sound should be played.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void FadeInSoundEntity(string asName, float afSpeed)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play a sound entity fading it&amp;lt;br /&amp;gt;asName The entity name&amp;lt;br /&amp;gt;afSpeed Volume increase per second.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void FadeOutSoundEntity(string asName, float afSpeed)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop a sound entity fading it&amp;lt;br /&amp;gt;asName The entity name&amp;lt;br /&amp;gt;afSpeed Volume decrease per second.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void PlayMusic(string asName, float afVol, float afStepSize, bool abLoop)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play music track.&amp;lt;br /&amp;gt;asName Name of the music file.&amp;lt;br /&amp;gt;afVol Volume of the music&amp;lt;br /&amp;gt;afStepSize The increase in volume per second when fading in.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StopMusic(float afStepSize)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop music track.&amp;lt;br /&amp;gt;afStepSize The decrease in volume per second when fading out.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
PlayGameMusic(string asFile, float afVolume,float afFadeStep,bool abLoop, int alPrio);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play music track with prio, added to episode 1 to be able to play different tracks that mix in and out depending on prio.&amp;lt;br /&amp;gt;asFile The name of the music file.&amp;lt;br /&amp;gt;afVolume The volume to play the music at 0 to 1.&amp;lt;br /&amp;gt;afFadeStep The decrease in volume per second when fading out.&amp;lt;br /&amp;gt;abLoop If the music should loop.&amp;lt;br /&amp;gt;alPrio The priority of the track, 0 to 10. A higher numbers fades a lower number out, if you have an ambient music track using prio 0 it will fade out if you add a music track to an enemy entity with prio 1 and the enemy attacks the player. When the attack is over the ambient track will fade back in.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
StopGameMusic(float afFadeStep, int alPrio);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop game music track with prio.&amp;lt;br /&amp;gt;afFadeStepThe decrease in volume per second when fading out.&amp;lt;br /&amp;gt;alPrio priority of the music track.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void PlayGuiSound(string asName, float afVol)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Play a sound gui sound, with out any position.&amp;lt;br /&amp;gt;asName The sound name&amp;lt;br /&amp;gt;afVol Volume of the sound&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Physics ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetJointCallback(string asJointName, string asType,string asFunc)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a callback for a joint.&amp;lt;br /&amp;gt;The syntax for the function is: void MyFunction(string asJointName)&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;asType The type, can be: “OnMax” or “OnMin”.&amp;lt;br /&amp;gt;asFunc The script function to be called. Must be in the current script file. “” = disabled.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void BreakJoint(string asJointName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Breaks a joint.&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetJointControllerActive(string asJointName,string asCtrlName, bool abActive)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets if a joint controller is active or not.&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;asCtrlName The controller name&amp;lt;br /&amp;gt;abActive If the controller is to be active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetJointControllerPropertyFloat(string asJointName,string asCtrlName, string asProperty, float afValue)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets if a joint controller is active or not.&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;asCtrlName The controller name&amp;lt;br /&amp;gt;asProperty The property to change.&amp;lt;br /&amp;gt;afValue The value of the property to change.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ChangeJointController(string asJointName,string asCtrlName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the active controller. All other controllers are set to false.&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;asCtrlName The controller name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetJointProperty(string asJointName, string asProp)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets a property from the joint.&amp;lt;br /&amp;gt;Valid properties are:&amp;lt;br /&amp;gt;“Angle” The angle between the bodies (in degrees) (Not working for ball joint)&amp;lt;br /&amp;gt;“Distance” The distance between the bodies (in meter)&amp;lt;br /&amp;gt;“LinearSpeed” The relative linear speed between the bodies (in m/s)&amp;lt;br /&amp;gt;“AngularSpeed” The relative angular speed between the bodies (in m/s)&amp;lt;br /&amp;gt;“Force” The size of the force (in newton, kg*m/s^2).&amp;lt;br /&amp;gt;“MinLimit” The minimum limit of the joint.&amp;lt;br /&amp;gt;“MaxLimit” The maximum limit of the joint.&amp;lt;br /&amp;gt;asJointName The joint name&amp;lt;br /&amp;gt;asProp The property to get&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetJointProperty(string asJoint, string asProp, float afVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a property to the joint.&amp;lt;br /&amp;gt;asJoint the joint to change property for&amp;lt;br /&amp;gt;asProp what property to change:&amp;lt;br /&amp;gt;“MinLimit” the min limit on joint, does not work on ball joint.&amp;lt;br /&amp;gt;“MaxLimit” the max limit on joint, does not work on ball joint.&amp;lt;br /&amp;gt;afVal the value in float to set.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetBodyProperty(string asBodyName, string asProp)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets a property from the body.&amp;lt;br /&amp;gt;Valid properties are:&amp;lt;br /&amp;gt;“Mass” The mass of the body (in kg)&amp;lt;br /&amp;gt;“LinearSpeed” The linear speed the body has (in m/s)&amp;lt;br /&amp;gt;“AngularSpeed” The angular speed the body has (in m/s)&amp;lt;br /&amp;gt;asBodyName The body name&amp;lt;br /&amp;gt;asProp The property to get&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetBodyProperty(string asBodyName, string asProp, float afVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a property to the body.&amp;lt;br /&amp;gt;Valid properties are:&amp;lt;br /&amp;gt;“Mass” The mass of the body (in kg)&amp;lt;br /&amp;gt;“CollideCharacter” If the body should collide with the character or not, 0=false 1=true.&amp;lt;br /&amp;gt;“HasGravity” If a body is affected by gravity. 0=false 1=true.&amp;lt;br /&amp;gt;asBodyName The body name&amp;lt;br /&amp;gt;asProp The property to get&amp;lt;br /&amp;gt;afVal The new value of the property&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddBodyForce(string asBodyName, string asCoordType, float afX, float afY, float afZ)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a force to the body. This can either be in the bodies local coord system or the world's.&amp;lt;br /&amp;gt;asBodyName The body name&amp;lt;br /&amp;gt;asCoordType The coordinate system type. “World” or “Local”.&amp;lt;br /&amp;gt;afX force in the x direction. (in newton, kg*m/s^2)&amp;lt;br /&amp;gt;afY force in the y direction. (in newton, kg*m/s^2)&amp;lt;br /&amp;gt;afZ force in the z direction. (in newton, kg*m/s^2)&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddBodyImpulse(string asBodyName, string asCoordType, float afX, float afY, float afZ)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds an impule (a change in velocity) to the body. This can either be in the bodies local coord system or the world's.&amp;lt;br /&amp;gt;asBodyName The body name&amp;lt;br /&amp;gt;asCoordType The coordinate system type. “World” or “Local”.&amp;lt;br /&amp;gt;afX velocity in the x direction. (in m/s)&amp;lt;br /&amp;gt;afY velocity in the y direction. (in m/s)&amp;lt;br /&amp;gt;afZ velocity in the z direction. (in m/s)&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Local Variables ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateLocalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLocalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddLocalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int GetLocalVar(string asName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Global Variables ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void  CreateGlobalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGlobalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddGlobalVar(string asName, int alVal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int GetGlobalVar(string asName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
== Game scripts ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ResetGame();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resets the game and returns to main menu&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartCredits();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starts the end credits screen, uses .lang Category “MainMenu” and .lang Entry “CreditsText” as well as music file “penumbra_music_E1_E.ogg”&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartDemoEndText();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starts the end images that are used in the demo of episode 1, images are named “demo_end01.jpg” increase the number for each image you want to use.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
string GetActionKeyString(string asAction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the key for a certain action, for example can be used in tutorials to create text that uses the user configured key for “Interact”.&amp;lt;br /&amp;gt;asAction The name of the action&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddMessageTrans(string asTransCat, string asTransName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds on on screen game message.&amp;lt;br /&amp;gt;TransCat The translation category&amp;lt;br /&amp;gt;TransName The translation name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddMessage(string asMessage);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds on on screen game message.&amp;lt;br /&amp;gt;asMessage The text to be shown.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetMessagesOverCallback(string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a callback that is called (and removed) when the last message as been shown.&amp;lt;br /&amp;gt;asFunction The function to be called, syntax “MyFunc()“&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddSubTitleTrans(string asTransCat,string asTransName, float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a onscreen message at the bottom, that does not interrupt the gameplay.&amp;lt;br /&amp;gt;asTransCat The translation files category.&amp;lt;br /&amp;gt;asTransName The translation files name of the entry to be displayed.&amp;lt;br /&amp;gt;afTime the length of time it should be displayed.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddSubTitle(string asMessage, float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a onscreen message at the bottom, that does not interrupt the gameplay.&amp;lt;br /&amp;gt;asMessage the text you want to appear on screen.&amp;lt;br /&amp;gt;afTime the length of time it should be displayed.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetMessageBlackText(bool abX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Makes the onscreen text invert colours to be easier to read on bright backgrounds.&amp;lt;br /&amp;gt;abX enable or disabled the function.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddRadioMessage(string asTransCat,string asTransName,string asSound);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Plays an audio file and displays subtitles for it.&amp;lt;br /&amp;gt;asTransCat the Category in the translations file&amp;lt;br /&amp;gt;asTransName the name of the entry in the translations file&amp;lt;br /&amp;gt;asSound the sound file to play for the text.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetRadioOnEndCallback(string asFunc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Callback that activates when a Radio message is over&amp;lt;br /&amp;gt;asFunc The name of the callback to activate&amp;lt;br /&amp;gt;VARIOUS TEMP STRINGS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddToTempString(string asString); //A piece of text to add to a string&lt;br /&gt;
void AddToTempStringTrans(string asCat,string asEntry); //A text from the translations file in Category from Entry&lt;br /&gt;
void AddToTempStringAction(string); //Get user configured key for a certain action&lt;br /&gt;
void AddMessageTempString(); //Add the strings to one temporary string to print as a Message on screen&lt;br /&gt;
void AddSubTitleTempString(float); //Add the strings to one temporary string to print as a Subtitle on screen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Used to create a flow of text that uses various sources, as an example from episode 1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
AddToTempStringTrans(&amp;quot;00_01_boat_cabin&amp;quot;, &amp;quot;PadLock01&amp;quot;);&lt;br /&gt;
AddToTempStringAction(&amp;quot;Inventory&amp;quot;);&lt;br /&gt;
AddToTempStringTrans(&amp;quot;Misc&amp;quot;, &amp;quot;ParentDot&amp;quot;);&lt;br /&gt;
AddMessageTempString();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wrote the message “Always travel with a padlock. And a key, preferably. Mine's in the inventory (TAB).” as a message.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ChangeMap(string asMapFile, string asMapPos,&lt;br /&gt;
                    string asStartSound, string asStopSound,&lt;br /&gt;
                    float afFadeOutTime, float afFadeInTime,&lt;br /&gt;
                    string asLoadTextCat, string asLoadTextEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Changes the map.&amp;lt;br /&amp;gt;asMapFile The file to be loaded&amp;lt;br /&amp;gt;asMapPos The position on the map to be spawned on.&amp;lt;br /&amp;gt;asStartSound The sound that is played when the change starts.&amp;lt;br /&amp;gt;asStopsSound The sound that is played when the new map is loaded&amp;lt;br /&amp;gt;afFadeOutTime Time in seconds it takes for the fade out.&amp;lt;br /&amp;gt;afFadeInTime Time in seconds it takes for the fade in.&amp;lt;br /&amp;gt;asLoadTextCat Category in .lang file to use&amp;lt;br /&amp;gt;asLoadTextEntry Entry in .lang file to use&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddNotebookTask(string asName, string asTransCat,&lt;br /&gt;
                                       string asTransEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a new task note in the notebook&amp;lt;br /&amp;gt;asName Name of the task&amp;lt;br /&amp;gt;asTransCat Translation category of text.&amp;lt;br /&amp;gt;asTransEntry Translation entry of text.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddNotebookTaskText(string asName,string asText);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a new task note in the notebook without using the lang file.&amp;lt;br /&amp;gt;asName Name of the task&amp;lt;br /&amp;gt;asText The text for the task&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddNotebookNote(string asNameCat, string asNameEntry,&lt;br /&gt;
                     string asTextCat, string asTextEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a note to the note book&amp;lt;br /&amp;gt;asNameCat&amp;lt;br /&amp;gt;asNameEntry Name of the note&amp;lt;br /&amp;gt;asTextCat&amp;lt;br /&amp;gt;asTextEntry The note text.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveNotebookTask(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Removes a task note in the notebook.&amp;lt;br /&amp;gt;asName Name of the task&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartNumericalPanel(string asName,int alCode1,int alCode2,int alCode3,&lt;br /&gt;
                       int  alCode4, float afDifficulty, string asCallback);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starts the numerical panel&amp;lt;br /&amp;gt;asName Name of the panel&amp;lt;br /&amp;gt;alCode1 1st code digit.&amp;lt;br /&amp;gt;alCode2 2nd code digit.&amp;lt;br /&amp;gt;alCode3 3rd code digit.&amp;lt;br /&amp;gt;alCode4 4th code digit.&amp;lt;br /&amp;gt;afDifficulty How difficult it is to hack.&amp;lt;br /&amp;gt;asCallback Called when the code as been entered. Syntax: '''MyCallback(string asName, bool abCodeWasCorrect)''' &amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetInventoryActive(bool abX);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set if the inventory should be active.&amp;lt;br /&amp;gt;abX If it is active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void FadeIn(float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fades the screen to full color.&amp;lt;br /&amp;gt;afTime Time the fade will take in seconds.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void FadeOut(float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fades the screen to black.&amp;lt;br /&amp;gt;afTime Time the fade will take in seconds.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool IsFading();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check if a fade is going on.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWideScreenActive(bool abActive);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets wide screen mode on or off.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AutoSave();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the game to the auto save.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ClearSavedMaps();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clears the “history” of the save, useful to do when you know the player will not be able to go back anymore. Makes the next save much smaller in size. It's a must to clear the save history a couple of times during the length of a game, in Penumbra: Overture we do it 5-7 times during the whole game.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetDepthOfFieldActive(bool abX, float afFadeTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets depth of field on/off&amp;lt;br /&amp;gt;abX if true/false&amp;lt;br /&amp;gt;afFadeTime how long for it to focus.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupDepthOfField(float afNearPlane, float afFocalPlane, float afFarPlane);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
How the depth of field should appear&amp;lt;br /&amp;gt;afNearPlane where the focus should begin&amp;lt;br /&amp;gt;afFocalPlane how large area that is in focus&amp;lt;br /&amp;gt;afFarPlane where the focus should end&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
FocusOnEntity(string asEntity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set focus on a particular entity.&amp;lt;br /&amp;gt;asEntity name of the entity&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetConstantFocusOnEntity(string asEntity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set focus on a particular entity and keep focus on it if it moves or the player moves.&amp;lt;br /&amp;gt;asEntity name of the entity&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartFlash(float afFadeIn, float afWhite, float afFadeOut);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a white flash on screen.&amp;lt;br /&amp;gt;afFadeIn The time the fade in takes.&amp;lt;br /&amp;gt;afWhite The time it stays white.&amp;lt;br /&amp;gt;afFadeOut The time the fade out takes.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
StartScreenShake(float afAmount, float afTime,float afFadeInTime,float afFadeOutTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Makes the screen shake.&amp;lt;br /&amp;gt;afAmount The ammount of shaking.&amp;lt;br /&amp;gt;afTime How long the shake should be.&amp;lt;br /&amp;gt;afFadeInTime How fast the shake should fade in.&amp;lt;br /&amp;gt;afFadeOutTime How fast the shake should fade out.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupSaveArea(string asName,string asMessageCat,string asMessageEntry, string asSound);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Properties for an area to type “save”, eg “_area_save_gamename”. asName the name of the area&amp;lt;br /&amp;gt;asMessageCat The message category in lang file&amp;lt;br /&amp;gt;asMessageEntry The message entry in lang file&amp;lt;br /&amp;gt;asSound The sound to play during the save&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attacks ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateSplashDamage(string asAreaName, float afRadius, float afMinDamage, float afMaxDamge,&lt;br /&gt;
                                             float afMinForce, float afMaxForce, float afMaxImpulse, int alStrength);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a ball shaped splash damage at the center of an area.&amp;lt;br /&amp;gt;asAreaName Name of the area.&amp;lt;br /&amp;gt;afRadius Radius of the slash damage in meters.&amp;lt;br /&amp;gt;afMinDamage The minimum damage if in side radius&amp;lt;br /&amp;gt;afMaxDamge The maximum damage, this is when you are at center.&amp;lt;br /&amp;gt;afMinForce The minimum force if you are inside the radius.&amp;lt;br /&amp;gt;afMaxForce The maximum force, this is when you are at center.&amp;lt;br /&amp;gt;afMaxImpulse Impulse is ForceSize / Mass and this is the max value for that. This is useful to insure that samll objects to no gain very high speed.&amp;lt;br /&amp;gt;alStrength The strength of the the damage.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetupDamageArea( string asName, float afDamage,&lt;br /&gt;
             float afUpdatesPerSec, int alStrength,&lt;br /&gt;
             bool abDisableObjects, bool abDisableEnemies,&lt;br /&gt;
             string asDamageType, string asDamageSound);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Properties for an area of type “damage”, eg “_area_damage_gamename”. Will inflict damage on player and entites while in it.&amp;lt;br /&amp;gt;asName The name of the area&amp;lt;br /&amp;gt;afDamage Damage to do for each update&amp;lt;br /&amp;gt;afUpdatesPerSec How many updates per second&amp;lt;br /&amp;gt;alStrength The strength of each update&amp;lt;br /&amp;gt;abDisableObjects If objects should be disabled on destruction&amp;lt;br /&amp;gt;abDisableEnemies If enemies should be disabled on destruction&amp;lt;br /&amp;gt;asDamageType What sort of damage graphics to use. “BloodSplash”, “Ice”, “Poison”.&amp;lt;br /&amp;gt;asDamageSound What sound to play at each damage.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void DamageEntity(string asName, float afDamage, int alStrength);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gives damage to an entity&amp;lt;br /&amp;gt;asName the name of the entity&amp;lt;br /&amp;gt;afDamage the amount of damage to do&amp;lt;br /&amp;gt;alStrength the strength of the damage&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Game Timer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateTimer(string asName, float afTime, string asCallback, bool abGlobal);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a new timer which calls a callback function when the time is out.&amp;lt;br /&amp;gt;Syntax: '''MyCallback(string asTimerName)''', the prefix ”@” (ie “@Func()”) shows that the function is in the global script&amp;lt;br /&amp;gt;asName Name of the timer&amp;lt;br /&amp;gt;afTime The time til time out in seconds.&amp;lt;br /&amp;gt;asCallback The callback fucntion&amp;lt;br /&amp;gt;abGlobal If the timer is global. Global timers are not deleted at map change.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void DestroyTimer(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetTimerPaused(string asName, bool abPaused);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetTimerTime(string asName, float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddTimerTime(string asName, float afTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetTimerTime(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Player ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void GivePlayerDamage(float afAmount,  string asType);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gives the player a hit + damage&amp;lt;br /&amp;gt;afAmount The amount of health taken.&amp;lt;br /&amp;gt;asType what sort of damage effect&amp;lt;br /&amp;gt;“BloodSplash”&amp;lt;br /&amp;gt;“Ice”&amp;lt;br /&amp;gt;“Poison”&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetPlayerHealth(float afHealth);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the health of the player.&amp;lt;br /&amp;gt;afHealth The amount the health should be set to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetPlayerHealth();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the current health of the player.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetPlayerPose(string asPose,bool abChangeDirectly);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the pose of the player.&amp;lt;br /&amp;gt;asPose The pose, can be “Stand” or “Crouch”&amp;lt;br /&amp;gt;abChangeDirectly, if the pose should change instantly or in a movement&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetPlayerActive(bool abActive);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets if player can be moved or not.&amp;lt;br /&amp;gt;abActive If the player is active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartPlayerLookAt(string asEntityName, float afSpeedMul, float afMaxSpeed);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This turns the players head towards a specific entity.&amp;lt;br /&amp;gt;asEntityName The entity name&amp;lt;br /&amp;gt;afSpeedMul The speed of the head movement is determined by the angle length multiplied by this.&amp;lt;br /&amp;gt;afMaxSpeed The maximum speed the head will turn.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StopPlayerLookAt();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stops the look at motion.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StartPlayerFearFilter(float afStrength);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Starts a fear effect filter.&amp;lt;br /&amp;gt;afStrength strength of the filter.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetFlashlightDisabled(bool abDisabled);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disabled the flashlight.&amp;lt;br /&amp;gt;abDisabled true/false for flashlight on/off.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void StopPlayerFearFilter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stops the fear filter.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void TeleportPlayerToArea(string asArea);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teleports the player to an area, players feet is aligned to the center of the area.&amp;lt;br /&amp;gt;asArea the name of the area to teleport to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool GetPlayerHasGasMask();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get if the player has gasmask or not.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Inventory ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddPickupCallback(string asItem, string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a callback that is called when the player picks up an item.&amp;lt;br /&amp;gt;The syntax for the callback function is:&amp;lt;br /&amp;gt;'''void MyFunction(string asItem)''', the prefix “@” (ie “@Func()”) shows that the function is in the global script&amp;lt;br /&amp;gt;asItem The name of the item.&amp;lt;br /&amp;gt;asFuntion The name of the function called.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddUseCallback(string asItem, string asEntity, string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a callback that is called when the player uses the item on en entity&amp;lt;br /&amp;gt;The syntax for the callback function is:&amp;lt;br /&amp;gt;'''void MyFunction(string asItem, string asEntity)''', the prefix “@” (ie “@Func()”) shows that the function is in the global script.&amp;lt;br /&amp;gt;asItem The name of the item.&amp;lt;br /&amp;gt;asEntity The name of the entity.&amp;lt;br /&amp;gt;asFuntion The name of the function called.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddCombineCallback(string asItem1,string asItem2, string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a callback that is called when the player combines two items&amp;lt;br /&amp;gt;The syntax for the callback function is (alSlotIndex = slot at which combination occurd):&amp;lt;br /&amp;gt;'''void MyFunction(string asItem1, string asItem2, int alSlotIndex)''', the prefix “@” (ie “@Func()”) shows that the function is in the global script.&amp;lt;br /&amp;gt;asItem1 The name of the first item.&amp;lt;br /&amp;gt;asItem2 The name of the second item.&amp;lt;br /&amp;gt;asFuntion The name of the function called.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemovePickupCallback(string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveUseCallback(string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveCombineCallback(string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Removes the callback.&amp;lt;br /&amp;gt;asFuntion The name of the function used by the callback.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool HasItem(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checks if the player has a certain item.&amp;lt;br /&amp;gt;asName The name of the item.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveItem(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Removes an item from the inventory.&amp;lt;br /&amp;gt;asName The name of the item.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void GiveItem(string asName,string asEntityFile, int alSlotIndex);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Give an item to the player.&amp;lt;br /&amp;gt;asName The name of the entity&amp;lt;br /&amp;gt;asEntityFile The file to load it from.&amp;lt;br /&amp;gt;lSlotIndex The index of the slot to put the item in. -1 = first empty slot&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetInventoryMessage(string asMessage);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays a message in the inventory.&amp;lt;br /&amp;gt;asMessage The message to write in the inventory.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetInventoryMessageTrans(string asTransCat, string asTransName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays a message from the lang file in the inventory.&amp;lt;br /&amp;gt;asTransCat The name of the category in the lang file.&amp;lt;br /&amp;gt;asTransName The name of the entry in the lang file.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Map / Level Properties ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetAmbientColor(float r, float g, float b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the ambient color of the level, this should always be part of a level as it gives it a bit of light otherwise shadows will be pitch black.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetSectorProperties(string asSector, float afAmbR,float afAmbG, float afAmbB);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the ambient color of a sector(individual groups of _room.&amp;lt;br /&amp;gt;asSector the name of the sector.&amp;lt;br /&amp;gt;afAmbR red 0-1&amp;lt;br /&amp;gt;afAmbG green 0-1&amp;lt;br /&amp;gt;afAmbB blue 0-1&amp;lt;br /&amp;gt;The values are multiplied with the SetAmbientColor(f,f,f); values. This script function will most likely be expanded to include specific ambient sounds etc for each sector.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetSkybox(string asTexture);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a texture as a sky box.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetSkyboxActive(bool);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the skybox active with true/False&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetSkyboxColor(float R, float G, float B, float A);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What color should the Skybox have&amp;lt;br /&amp;gt;R, G, B and Alpha&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetFogActive(bool abX);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a level should have fog or not.&amp;lt;br /&amp;gt;bool abX, false/true&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetFogProperties(float afStart, float afEnd, float r,float g, float b);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties of the fog.&amp;lt;br /&amp;gt;afStart how many meters from the camera should the fog begin.&amp;lt;br /&amp;gt;afEnd how many meters from the camera should the fog reach full thickness.&amp;lt;br /&amp;gt;float r,float g, float b the color of the fog in RGB.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetFogCulling(bool);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Should the game stop rendering the level when the fog is full thickness&amp;lt;br /&amp;gt;true/false&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetWaveGravityActive(bool abX);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable a dynamic gravity that mimics waves, ture/false&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupWaveGravity(float afMaxAngle, float afSwingLength, float afGravitySize, string asAxis);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the properties for the dynamic wave gravity&amp;lt;br /&amp;gt;afMaxAngle The maximum angel of the wave&amp;lt;br /&amp;gt;afSwingLength The length for going from top to bottom&amp;lt;br /&amp;gt;afGravitySize The strength of the gravity&amp;lt;br /&amp;gt;asAxis Along which axis should the wave “move”&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetMapGameName(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the name of the current map, is used for naming the saved games.&amp;lt;br /&amp;gt;asName the name of the map&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetMapGameNameTrans(string asTransCat,string asTransEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the name of the current map using the lang file, is used for naming the saved games.&amp;lt;br /&amp;gt;asTransCat the category in the lang file&amp;lt;br /&amp;gt;asTransEntry the entry in the lang file with the name of the map&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Game Entity Properties ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityActive(string asName, bool abX);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set if a game entity is active.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;abX If active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool GetGameEntityActive(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get if a game entity is active.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;return if active or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ReplaceEntity(string asName, string asBodyName, string asNewName, string asNewFile);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replaces an ingame entity with another entity, the new entity will appear at the center of the old entities location&amp;lt;br /&amp;gt;asName Name of the ingame entity&amp;lt;br /&amp;gt;asBodyName The name of the body in the old entity that will be used as a center for the new entity, leave as “” if entity only has 1 body&amp;lt;br /&amp;gt;asNewName The ingame name given to the new entity&amp;lt;br /&amp;gt;asNewFile The .ent file to be used for the new entity&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CreateGameEntityVar(string asEntName, string asVarName, int alVal);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a variable for a game entity. Nothing happens if it is already created.&amp;lt;br /&amp;gt;asEntName The name of the game entity&amp;lt;br /&amp;gt;asVarName The name of variable&amp;lt;br /&amp;gt;alVal value to set the variable to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityVar(string asEntName, string asVarName, int alVal);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the value of a entity variable to a new value&amp;lt;br /&amp;gt;asEntName The name of the game entity&amp;lt;br /&amp;gt;asVarName The name of variable&amp;lt;br /&amp;gt;alVal value to set the variable to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddGameEntityVar(string asEntName, string asVarName, int alVal);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the value of an entity variable by adding to the previous value&amp;lt;br /&amp;gt;asEntName The name of the game entity&amp;lt;br /&amp;gt;asVarName The name of variable&amp;lt;br /&amp;gt;alVal value to add to the existing variable.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int GetGameEntityVar(string asEntName, string asVarName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the value of a variable for a game entity.&amp;lt;br /&amp;gt;asEntName The name of the game entity&amp;lt;br /&amp;gt;asVarName The name of variable&amp;lt;br /&amp;gt;alVal value to set the variable to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityMaxExamineDist(string asName,float afDist);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the maximum distance at which a game entity can be examined.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;afDist The distance in meters&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityMaxInteractDist(string asName,float afDist);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set the maximum distance at which a game entity can be interacted with.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;afDist The distance in meters&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityDescriptionTrans(string asName,string asTransCat, string asTransName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set a description on a game entity.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;asTransCat The translation category&amp;lt;br /&amp;gt;asTransName The translation name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetGameEntityDescriptionOnceTrans(string asName,string asTransCat,string asTransName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set a description on a game entity BUT display the eye only 1 time, after that the you can still examine but the eye wont show unless in Interact mode.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;asTransCat The translation category&amp;lt;br /&amp;gt;asTransName The translation name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityDescription(string asName, string asMessage);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set a description on a game entity.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;asMessage The message&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameEntityGameNameTrans(string asName, string asTransCat,string asTransName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set a game name on a game entity.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;asTransCat The translation category&amp;lt;br /&amp;gt;asTransName The translation name&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetDoorState(string asName,string asState);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the state of a door with animation. This entity was only used in early test builds of HPL.&amp;lt;br /&amp;gt;asName The name of the game entity&amp;lt;br /&amp;gt;asState The state to set, thís can be “Open”,“Closed”, “Opening” or “Closing”.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetDoorLocked(string asDoor, bool abLocked);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a door locked or unlocked, only works with SwingDoor entities(set in the .ent file)&amp;lt;br /&amp;gt;asDoor the name of the entity.&amp;lt;br /&amp;gt;abLocked true or false if locked or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetDoorLockedProperties(string asDoor,&lt;br /&gt;
                string asMessCat,string asMessEntry,&lt;br /&gt;
                string asSound,&lt;br /&gt;
                bool RepeatLockedMessage);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gives properties to a locked door, how it should sound what message to show etc. Only works with SwingDoor entities(set in the .ent file)&amp;lt;br /&amp;gt;asDoor the name of the entity.&amp;lt;br /&amp;gt;asMessCat the name of the category in the translations file.&amp;lt;br /&amp;gt;asMessEntry the name of the entry in the translations file to use.&amp;lt;br /&amp;gt;asSound sound to play for the locked door when player interacts.&amp;lt;br /&amp;gt;RepeatLockedMessage true or false if the event should be every time or only the first time.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetObjectInteractMode(string asName,string asMode);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the interact mode of an game object.&amp;lt;br /&amp;gt;asName The name of the game object&amp;lt;br /&amp;gt;asState The mode to set, valid modes are “Static”, “Grab”, “Move” and “Push”.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetupLink(string asName, string asMapFile, string asMapPos,&lt;br /&gt;
               string asStartSound, string asStopSound,&lt;br /&gt;
               float afFadeOutTime, float afFadeInTime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets up the properties for a link.&amp;lt;br /&amp;gt;asName The name of the link&amp;lt;br /&amp;gt;asMapFile The file to be loaded&amp;lt;br /&amp;gt;asMapPos The position on the map to be spawned on.&amp;lt;br /&amp;gt;asStartSound The sound that is played when the change starts.&amp;lt;br /&amp;gt;asStopsSound The sound that is played when the new map is loaded&amp;lt;br /&amp;gt;afFadeOutTime Time in seconds it takes for the fade out.&amp;lt;br /&amp;gt;afFadeInTime Time in seconds it takes for the fade in.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetupLinkLoadText(string asName,&lt;br /&gt;
            string asMapFile, string asMapPos,&lt;br /&gt;
            string asStartSound, string asStopSound,&lt;br /&gt;
            float afFadeOutTime, float afFadeInTime,&lt;br /&gt;
            string asTextCat, string asTextEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets up the properties for a link and displays a screen with text/picture while loading.&amp;lt;br /&amp;gt;asName The name of the link&amp;lt;br /&amp;gt;asMapFile The file to be loaded&amp;lt;br /&amp;gt;asMapPos The position on the map to be spawned on.&amp;lt;br /&amp;gt;asStartSound The sound that is played when the change starts.&amp;lt;br /&amp;gt;asStopsSound The sound that is played when the new map is loaded&amp;lt;br /&amp;gt;afFadeOutTime Time in seconds it takes for the fade out.&amp;lt;br /&amp;gt;afFadeInTime Time in seconds it takes for the fade in.&amp;lt;br /&amp;gt;asTextCat The text category in translations file .lang&amp;lt;br /&amp;gt;asTextEntry The text entry in translations file .lang&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetupLinkLockedProp(string asName,string asLockedSound,&lt;br /&gt;
             string asLockedDescCat,string asLockedDescEntry);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Properties for an area of type “link”, eg “_area_link_gamename”, to be used if the link is “locked”.&amp;lt;br /&amp;gt;asName The name of the link&amp;lt;br /&amp;gt;asLockedSound The “locked sound” to play&amp;lt;br /&amp;gt;asLockedDescCat In what category the text to use is in the .lang file.&amp;lt;br /&amp;gt;asLockedDescEntry In what entry the text is found in the .lang file.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLinkLocked(string asName, bool abLocked);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set an area of type “link” as locked or unlocked.&amp;lt;br /&amp;gt;asName The name of the link&amp;lt;br /&amp;gt;abLocked True/false for locked or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetAreaCustomIcon(string asName, string asIcon);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Makes the area show a custom icon on player focus.&amp;lt;br /&amp;gt;asName The name of the area&amp;lt;br /&amp;gt;asIcon The icon, can be: “Inactive”, “Active”, “Invalid”, “Grab”, “Examine”,, “PickUp”, “Pointer”, “Item”, “DoorLink” or “None”.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddEnemyPatrolNode(string asEnemy,string asNode,float afTime,string asAnimation);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds node that the enemy will have on his patrol path.&amp;lt;br /&amp;gt;asEnemy Name of the enemy&amp;lt;br /&amp;gt;asNode The Node to walk to.&amp;lt;br /&amp;gt;afTime The time to stay at the node when reached.&amp;lt;br /&amp;gt;asAnimation The animation to be played when at the node. “” = idle.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ClearEnemyPatrolNodes(string asEnemy);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clears all the patrol nodes for the enemy&amp;lt;br /&amp;gt;asEnemy The Name of the enemy.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetEntityHealth(string asName, float afHealth);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the health of an entity&amp;lt;br /&amp;gt;asName Name of the entity&amp;lt;br /&amp;gt;afHealth the amount to set the health to.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetEnemyHealth(string asEnemy);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the health of an enemy&amp;lt;br /&amp;gt;asEnemyName Name of the enemy&amp;lt;br /&amp;gt;return the health.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ShowEnemyPlayer(string asEnemy);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show the enemy the position of the player and sets the enemy into hunt mode.&amp;lt;br /&amp;gt;asEnemy The name of the Enemy.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetEnemyUseTriggers(string asEnemy, bool abUseTriggers);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If an enemy should use triggers, for example if an enemy should react to sounds.&amp;lt;br /&amp;gt;asEnemy The name of the Enemy.&amp;lt;br /&amp;gt;abUseTriggers use triggers or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetEnemyAttackCallback(string asEnemy,string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activates a callback when an enemy attacks the player.&amp;lt;br /&amp;gt;asEnemy The name of the Enemy.&amp;lt;br /&amp;gt;asFunction The name of the callback to activate.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetLampLit(string asName,bool abLit, bool abFade);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a Lamp entity light on/off, requires the entity file to be a Type=“Lamp”.&amp;lt;br /&amp;gt;asName The name of the lamp entity.&amp;lt;br /&amp;gt;abLit if it should be lit or not.&amp;lt;br /&amp;gt;abFade if it should fade on/off, properties are set in the entity file.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLampFlicker(string asName,bool abFlicker);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a Lamp entity lights flicker, requires the entity file to be a Type=“Lamp”.&amp;lt;br /&amp;gt;asName The name of the lamp entity.&amp;lt;br /&amp;gt;abFlicker starts/stops the flicker.&amp;lt;br /&amp;gt;Flicker properties are set in the entity file.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupStickArea(string asArea, bool abCanDeatch,&lt;br /&gt;
            bool abMoveBody, bool abRotateBody,&lt;br /&gt;
            bool abCheckCenterInArea, float afPoseTime,&lt;br /&gt;
            string asAttachSound, string asDetachSound,&lt;br /&gt;
            string asAttachPS, string asDetachPS,&lt;br /&gt;
            string asAttachFunc, string asDetachFunc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Give properties to an area of type “stick”. Used to make an object attach itself to another etc.&amp;lt;br /&amp;gt;asArea The name of the stick area&amp;lt;br /&amp;gt;abCanDeatch if the area will allow to detach and attached object&amp;lt;br /&amp;gt;abMoveBody Should the attached object be moved into the center&amp;lt;br /&amp;gt;abRotateBody should the attached object be rotated to attach in a certain direction(rotating the stick area in the level will decide this)&amp;lt;br /&amp;gt;abCheckCenterInArea only attach if the object to be attached is in the center of the stick area&amp;lt;br /&amp;gt;afPoseTime how long will the attach movement(move/rotate) take&amp;lt;br /&amp;gt;asAttachSound what attach sound to play&amp;lt;br /&amp;gt;asDetachSound what detach sound to play&amp;lt;br /&amp;gt;asAttachPS what particle effect to use on attach&amp;lt;br /&amp;gt;asDetachPS what particle effect to use on detach&amp;lt;br /&amp;gt;asAttachFunc name of attach callback&amp;lt;br /&amp;gt;asDetachFunc name of detach callback&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AllowAttachment();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executes the attachment settings in SetupStickArea.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;''Example of an attach callback''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void MyAttach(string asArea, string asBody)&lt;br /&gt;
{&lt;br /&gt;
    if(StringContains(asBody, &amp;quot;entityname&amp;quot;))&lt;br /&gt;
    {&lt;br /&gt;
        AllowAttachment();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
DetachBodyFromStickArea(string asArea);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detach a body from a stick area.&amp;lt;br /&amp;gt;asArea Name of the area.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupLadder(string asName,string asAttachSound, string asClimbUpSound, string asClimbDownSound);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets properties for an area of type “ladder”. eg “_area_ladder_gamename”&amp;lt;br /&amp;gt;asName Name of the area.&amp;lt;br /&amp;gt;asAttachSound Sound to be played as player grabs onto ladder&amp;lt;br /&amp;gt;asClimbUpSound Sound to be played as player climbs up.&amp;lt;br /&amp;gt;asClimbDownSound Sound to be played as player climbs down.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void ChangeEntityAnimation(string asName,string asAnimation,bool abLoop);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the animation of an entity.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;asAnimation the animation that should be used&amp;lt;br /&amp;gt;abLoop if it should loop or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetupForceArea(    string asName,&lt;br /&gt;
            float afMaxForce, float afConstant,&lt;br /&gt;
            float afDestSpeed, float afMaxMass,&lt;br /&gt;
            bool abMulWithMass, bool abForceAtPoint,&lt;br /&gt;
            bool abAffectBodies, bool abAffectCharacters);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Properties for an area of type “force”, eg “_area_force_gamename”.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;afMaxForce the value for the maximum force to apply&amp;lt;br /&amp;gt;afConstant Used in the formula. Force = Constant * DistanceToDestSpeed, meaning it determines the force based on how far from the dest speed the object is.&amp;lt;br /&amp;gt;afDestSpeed the value of the speed an object will travel at when reached maximum&amp;lt;br /&amp;gt;afMaxMass the maximum mass that will be affected by the force&amp;lt;br /&amp;gt;abMulWithMass if the force should apply the same amount to all objects of different mass&amp;lt;br /&amp;gt;abForceAtPoint if force is to be applied to the collison point with the area. False = just use center of object.&amp;lt;br /&amp;gt;abAffectBodies affect dynamic objects/bodies&amp;lt;br /&amp;gt;abAffectCharacters affect charaters(player/enemies/etc)&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetupLiquidArea(string asName,float afDensity, float afLinearViscosity,float afAngularViscosity,string asPhysicsMaterial.&lt;br /&gt;
            float fR, float fG, float fB, abHasWaves);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Properties for an area of type “liquid”, eg “_area_liquid_gamename”.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;afDensity The density of the liquid&amp;lt;br /&amp;gt;afLinearViscosity How much “friction” the liquid should have in linear direction.&amp;lt;br /&amp;gt;afAngularViscosity How much “friction” the liquid should have in angular direction&amp;lt;br /&amp;gt;asPhysicsMaterial What physics material to use&amp;lt;br /&amp;gt;fR, fG, fB The color of the liquid in Red, Green, Blue&amp;lt;br /&amp;gt;abHasWaves if objects should bob in the water.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 void SetupGameButton(string asName,string asCallback,string asAffectedEntities);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creates a callback for entity of type “button”, eg .ent says Type=“Button”.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;asCallback the name of the callback to activate.&amp;lt;br /&amp;gt;asAffectedEntities The names of the entities that should be activated, example “light01” or “light01, light02, light03”.&lt;br /&gt;
&lt;br /&gt;
Callback syntax: '''void OnStateChange(string asButton,bool asInOn);'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetGameButtonOn(string asName, bool abOn, bool abUseEffects);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a button entity on/off.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;abOn On or off, true/false&amp;lt;br /&amp;gt;abUseEffects if various effects set in the entity files of the entities affected by the button switch should be used or not.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int GetLeverState(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the current state of a Lever entity.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;returns int as -1 = min, 0=middle, 1=max&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetLeverStuck(string asName,int alState);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a Lever entity stuck at a certain position.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;alState What position to stick it in, state: -1 = min, 0=middle, 1=max&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
int GetWheelState(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the current state of a Wheel entity.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;returns int as -1 = min, 0=middle, 1=max&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetWheelStuck(string asName,int alState );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a Wheel entity stuck at a certain position.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;alState What position to stick it in, state: -1 = min, 0=turn off stuck, 1=max&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetWheelAngle(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the current angle of a Wheel entity.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;returns the value as float.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float GetWheelSpeed(string asName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gets the current speed of a Wheel entity.&amp;lt;br /&amp;gt;asName Name of the entity.&amp;lt;br /&amp;gt;returns the value as float.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
ConnectWheelToController(string asWheelName,string asEntName,string asCtrlName,&lt;br /&gt;
                 float afMinDest, float afMaxDest);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connects a controller in the .ent file to the wheel.&amp;lt;br /&amp;gt;asWheelName Name of the wheel entity in level.&amp;lt;br /&amp;gt;asEntName Name of the entity file to use.&amp;lt;br /&amp;gt;asCtrlName Name of the controller.&amp;lt;br /&amp;gt;afMinDest Value of the minimum destination.&amp;lt;br /&amp;gt;afMaxDest Value of the maximum destination.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
MoveEntityToArea(string asEntityName, string asAreaName,&lt;br /&gt;
            float afSpeed, float afAcceleration,&lt;br /&gt;
              float afSlowDownRange, string asCallback);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Moves an entity to an area. This can be used to create moving platforms, elevators etc.&amp;lt;br /&amp;gt;asEntityName Name of the entity.&amp;lt;br /&amp;gt;asAreaName Name of the area to move the entity to.&amp;lt;br /&amp;gt;afSpeed At what speed to move the entity.&amp;lt;br /&amp;gt;afAcceleration Acceleration of the entity.&amp;lt;br /&amp;gt;afSlowDownRange How far away from the area to begind deceleration.&amp;lt;br /&amp;gt;asCallback name of the callback to trigger when entity reaches area.&amp;lt;br /&amp;gt;'''Callback syntax: MyFunc(string asEntityName)''' &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Game Entity Callbacks ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddEntityCollideCallback(string asType, string asDestName,&lt;br /&gt;
                        string asEntityName, string asFuncName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a collide callback to an entity.&amp;lt;br /&amp;gt;The syntax for the callback function is:&amp;lt;br /&amp;gt;'''void MyFunction(string asParent, string asChild)''', the prefix “@” (ie “@Func()”) shows that the function is in the global script.&amp;lt;br /&amp;gt;asParent is the entity the function is attached to and asChild is the other entity in the collision.&amp;lt;br /&amp;gt;asType The type of callback, this can be “Enter”, “During” or “Leave”&amp;lt;br /&amp;gt;asDestName The entity that should have the callback. “Player” will add it to the player.&amp;lt;br /&amp;gt;asEntityName The entity to check for collision with.&amp;lt;br /&amp;gt;asFuncName The name of the script function to add. This must be in the level's script file and not the global.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveEntityCollideCallback(string asType, string asDestName, string asEntityName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Removes a collide callback on an entity.&amp;lt;br /&amp;gt;asType The type of callback, this can be “Enter”, “During” or “Leave”&amp;lt;br /&amp;gt;asDestName The entity that has the callback&amp;lt;br /&amp;gt;asEntityName The entity to check for collision with.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void AddEntityCallback(string asType, string asDestName, string asFuncName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a callback to an entity.&amp;lt;br /&amp;gt;The syntax for the callback function is:&amp;lt;br /&amp;gt;'''void MyFunction(string asEntity)''', the prefix “@” (ie “@Func()”) shows that the function is in the global script.&amp;lt;br /&amp;gt;The different types are the following&amp;lt;br /&amp;gt;“PlayerInteract” The player interacts with the entity.&amp;lt;br /&amp;gt;“PlayerExamine” The player examines the entity.&amp;lt;br /&amp;gt;“PlayerLook” The player is looking at the entity (it is in “focus”).&amp;lt;br /&amp;gt;“OnUpdate” When the entity is updated.&amp;lt;br /&amp;gt;“OnBreak” When the entity breaks.&amp;lt;br /&amp;gt;asType The type of callback&amp;lt;br /&amp;gt;asDestName The entity that should have the callback&amp;lt;br /&amp;gt;asFuncName The name of the script function to add. This must be in the level's script file and not the global.&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void RemoveEntityCallback(string asType, string asDestName);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Removes a callback on an entity.&amp;lt;br /&amp;gt;asType The type of callback. The same types as for AddEntityCallback applies.&amp;lt;br /&amp;gt;asDestName The entity that has the callback&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void SetEnemyDeathCallback(string asEnemy,string asFunction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the function that is called when the enemy dies.&amp;lt;br /&amp;gt;asEnemyName Name of the enemy&amp;lt;br /&amp;gt;asFunction The function, syntax: '''MyFunc(string asEnemyName)''' &amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetLampLitChangeCallback(string asName,string asCallback);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a callback for a Lamp entity, Type=“Lamp” in .ent, as it changes from on to off or vice versa.&amp;lt;br /&amp;gt;asName The name of the lamp entity.&amp;lt;br /&amp;gt;asCallback The name of the callback, syntax: '''MyFunc(bool abActive)''' &amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetLeverCallback(string asName,string asType, string asCallback);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a callback for a Lever entity, Type=“Lever” in .ent, as it changes states.&amp;lt;br /&amp;gt;asName The name of the lever entity.&amp;lt;br /&amp;gt;asType What type: “Enter”, “Leave” or “During”.&amp;lt;br /&amp;gt;asCallback The name of the callback, syntax: '''void MyFunc(string asName, int alType, int alState)''' &amp;lt;br /&amp;gt;type: 0=enter, 1=leave, 2=during&amp;lt;br /&amp;gt;state: -1 = min, 0=middle, 1=max&amp;lt;br /&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SetWheelCallback(string asName,string asType,string asCallback);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adds a callback for a Wheel entity, Type=“Wheel” in .ent.&amp;lt;br /&amp;gt;asName The name of the wheel entity.&amp;lt;br /&amp;gt;asType What type: “Enter”, “Leave” or “During”.&amp;lt;br /&amp;gt;asCallback The name of the callback, syntax: '''void MyFunc(string asName, int alType, int alState)''' &amp;lt;br /&amp;gt;type: 0=enter, 1=leave, 2=during&amp;lt;br /&amp;gt;state: -1 = min, 0=middle, 1=max&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6406</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6406"/>
		<updated>2023-04-08T12:34:55Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 1.6 Particle Viewer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Lets you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.6 Particle Viewer===&lt;br /&gt;
This program allows you to view your Particle by pressing the large and obvious Save and View Particle System button.&amp;lt;br /&amp;gt;&lt;br /&gt;
Left Mouse Button lets you move the view around and Middle Mouse Button zooms in and out. Pressing B toggles the bloom option.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type'''&amp;lt;br /&amp;gt;Only Normal type can be used, Beam type was never implemented.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6405</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6405"/>
		<updated>2023-04-08T12:28:34Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* File extensions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a unique meaning to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Reference'''&lt;br /&gt;
|An item referencing a valid Entity file to be used within the game's engine. All entities in your 3D editor must begin with ''_ref_''&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|-&lt;br /&gt;
|'''Stick'''&lt;br /&gt;
|Areas that act as glue towards entities in the game world. The entities will stay in place until interacted with again.&lt;br /&gt;
|-&lt;br /&gt;
|'''Link'''&lt;br /&gt;
|Start Locator for the player. This can also be a link between two Starting Positions in a single map.&lt;br /&gt;
|-&lt;br /&gt;
|'''Node'''&lt;br /&gt;
|Navigation points for character entities.&lt;br /&gt;
|-&lt;br /&gt;
|'''Portal'''&lt;br /&gt;
|Special type of handler for what room (or sector) is currently being rendered in-game. A way to optimize ones map better.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world, these files can only be created manually.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6404</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6404"/>
		<updated>2023-04-08T12:26:18Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a unique meaning to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Reference'''&lt;br /&gt;
|An item referencing a valid Entity file to be used within the game's engine. All entities in your 3D editor must begin with ''_ref_''&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|-&lt;br /&gt;
|'''Stick'''&lt;br /&gt;
|Areas that act as glue towards entities in the game world. The entities will stay in place until interacted with again.&lt;br /&gt;
|-&lt;br /&gt;
|'''Link'''&lt;br /&gt;
|Start Locator for the player. This can also be a link between two Starting Positions in a single map.&lt;br /&gt;
|-&lt;br /&gt;
|'''Node'''&lt;br /&gt;
|Navigation points for character entities.&lt;br /&gt;
|-&lt;br /&gt;
|'''Portal'''&lt;br /&gt;
|Special type of handler for what room (or sector) is currently being rendered in-game. A way to optimize ones map better.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6403</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6403"/>
		<updated>2023-04-08T07:51:42Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a unique meaning to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Reference'''&lt;br /&gt;
|An item referencing a valid Entity file to be used within the game's engine. All entities in your 3D editor must begin with ''_ref_''&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|-&lt;br /&gt;
|'''Sticky'''&lt;br /&gt;
|Areas that act as glue towards entities in the game world. The entities will stay in place until interacted with again.&lt;br /&gt;
|-&lt;br /&gt;
|'''Link'''&lt;br /&gt;
|Start Locator for the player. This can also be a link between two Starting Positions in a single map.&lt;br /&gt;
|-&lt;br /&gt;
|'''Node'''&lt;br /&gt;
|Navigation points for character entities.&lt;br /&gt;
|-&lt;br /&gt;
|'''Portal'''&lt;br /&gt;
|Special type of handler for what room (or sector) is currently being rendered in-game. A way to optimize ones map better.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6402</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6402"/>
		<updated>2023-03-31T16:56:29Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Lets you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.6 Particle Viewer===&lt;br /&gt;
This program allows you to view your Particle by pressing the large and obvious Save and View Particle System button.&lt;br /&gt;
&lt;br /&gt;
Left Mouse Button lets you move the view around and Middle Mouse Button zooms in and out. Pressing B toggles the bloom option.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type'''&amp;lt;br /&amp;gt;Only Normal type can be used, Beam type was never implemented.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_6&amp;diff=6400</id>
		<title>HPL1/Content Creation Chapter 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_6&amp;diff=6400"/>
		<updated>2023-03-31T08:49:28Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 6.3.4 Type Door */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 6 Entity files ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Intro ===&lt;br /&gt;
Entity files are XML files and before editing them it is suggested to read some quick tutorial on XML files. Only very basic XML understanding is needed to edit these files.&lt;br /&gt;
&lt;br /&gt;
The files are divided into different sections, some sections are in all entity files and some are only present in certain entity types.&lt;br /&gt;
&lt;br /&gt;
Make sure that the language is set to XML in Notepad++ when editing the Entity files. &lt;br /&gt;
&lt;br /&gt;
The following values are used, note that all types have &amp;quot;&amp;quot; around the value:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''String'''	 || A string of letters. &amp;quot;MyName&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Float'''     || A decimal number. &amp;quot;1.04&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Integer'''	 || A number without decimals &amp;quot;-15&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector'''	 || Three numbers in a row separated by space and/or commas: &amp;quot;1, 1, 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 6.1.1 Entity Types====&lt;br /&gt;
Several different entity types have been created to simplify the creation of often used objects such as doors, lights and buttons. Much of the special entity functionality can be scripted in the .hps file for a level, but using special entities you can easily make an entity that can be imported to a level and have full functionality from the start. These entity types have extra settings mainly set in the &amp;lt;GAME/&amp;gt; section of the entity files. The specific settings for each entity type is described in [[#game.section|Chapter 6.3]].&lt;br /&gt;
&lt;br /&gt;
Types are edited as described in [[#main|Chapter 6.2.1]].&lt;br /&gt;
&lt;br /&gt;
The following entity types are available:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| Type       || Subtype    ||                               &lt;br /&gt;
|-&lt;br /&gt;
| '''Object''' || '''Normal''' || Regular objects with no specific function. Examples: Wooden box, rock &lt;br /&gt;
|-&lt;br /&gt;
| '''Enemy''' || '''&amp;quot;EnemyName&amp;quot;''' || Enemy entities, these have a very extended &amp;lt;GAME/&amp;gt; section. &amp;quot;EnemyName&amp;quot; = Worm, Dog, Spider. ''This entity type is somewhat limited as to what sort of enemies have been in Penumbra.''&lt;br /&gt;
|-&lt;br /&gt;
| '''SwingDoor''' || '''Normal''' || Doors and objects with door like features. Examples: All regular doors that swing open, can also be used with success to create coffins, cupboards etc. A SwingDoor is easy to lock, unlock, make it breakable etc&lt;br /&gt;
|-&lt;br /&gt;
| '''Item''' || '''Normal''' || Item is an entity type that will be added to the players inventory. Normal is used for all regular items like keys, puzzle items and such. Basically an item that you want to be added to the inventory and that the player can then combine with another item, use on an item or some other basic item usage.&lt;br /&gt;
|-&lt;br /&gt;
| '''Item''' || '''Battery''' || Item is an entity type that will be added to the players inventory. Battery is added to the energy meter.&lt;br /&gt;
|-&lt;br /&gt;
| '''Item''' || '''Dynamite''' || Item is an entity type that will be added to the players inventory. Dynamite is is for... an object that will be thrown, explode and inflict damage.&lt;br /&gt;
|-&lt;br /&gt;
| '''Item''' || '''Health''' || Item is an entity type that will be added to the players inventory. Health is an item that can be &amp;quot;eaten&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Item''' || '''Flare''' || Item is an entity type that will be added to the players inventory. Flare is an item that will be active in the players hand for a certain amount as configured in config/game.cfg.&lt;br /&gt;
|-&lt;br /&gt;
| '''Door''' || '''Normal''' || A door entity that contains animations, not used in the Tech Demo/Overture but is there and functional. Examples: Star Trek doors that slide open etc...&lt;br /&gt;
|-&lt;br /&gt;
| '''DoorPanel''' || '''Normal''' || A panel entity that is easily connectable to Door, enabling interacting with the panel to open/close door.&lt;br /&gt;
|-&lt;br /&gt;
| '''Lamp''' || '''Normal''' || Item is an entity type for creating an object with an easy to control light source. Examples: desk lamp, ceiling light, control panel with lights, a machine with lights.&lt;br /&gt;
|-&lt;br /&gt;
| '''Button''' || '''Normal''' || An entity that will easily control other entities. Examples: switch to turn on/off ceiling lights.&lt;br /&gt;
|-&lt;br /&gt;
| '''Lever''' || '''Normal''' || An entity that is a lever and as such can easily trigger events when pulled, can also be locked and unlocked.&lt;br /&gt;
|-&lt;br /&gt;
| '''Wheel''' || '''Normal''' || Not done, an entity that can be rotated several times and easily read out and trigger events based on that.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6.2 General sections ===&lt;br /&gt;
The following sections are present in most entity files used and are part of engine standards. Some extra options will also be mentioned that are not apart of the standard and game specific.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.2.1 Main ====&lt;br /&gt;
This section exist in all entity files.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Name'''     || The name of the entity type. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Type'''     || The root type that is entity is. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Subtype'''  || This is a subtype of the root type. For example the enemy type. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 6.2.2 Physics ====&lt;br /&gt;
This section deals with the physical properties of an entity. For entities that have joints there are several versions of this section. One for each body connected with joints.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''SubName'''	            || When entities with joints are used this is the name of the body. This should be the SHAPE name and not the node name! (i.e. pCube1Shape and not pCube1). ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''CollideCharacter'''	    || If the body collides with character bodies. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Collides'''	          || If the entity colldies with the world. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''HasPhysics'''           || If the physics are to be simulated. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''StaticMeshCollider'''   || If a submesh should be used as a collider, mass must be 0. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''ColliderMesh'''         || The name of the submesh used for StaticMeshCollider. This should be the SHAPE name and not the node name! (i.e. pCube1Shape and not pCube1). ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Material'''	          || The name of the material used. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Mass'''                 || The mass of the body in kg. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''InertiaScale'''         || Scale the inertia of the object (this is how easy it rotates). Should be “1 1 1” in most cases. ''Vector''.&lt;br /&gt;
|-&lt;br /&gt;
| '''AngularDamping'''       || Damping can be described has air friction. 1 is max friction and 0 is no fricton at all. Anglular means that this is the friction on the spinning motion of the entity, the more friction that faster it will stop spinning. Valid values are 0.0001 – 1.0, normally &amp;quot;0.1&amp;quot; is used. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''LinearDamping'''        || The same as Angular damping but on the movement instead of spinning motion. The more friction the faster the entity will stop moving. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''BlocksSound'''          || This body will make sound lower if the camera is behind it. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''HasGravity'''           || If the body has gravity or not. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLinearSpeed'''       || The maxium linear (up,down, right, left, etc) speed in m/s the body can have. 0 = unlimited speed. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxAngularSpeed'''      || The maxium angular (rotation) speed in m/s the body can have. 0 = unlimited speed. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''ContinuousCollision'''  || If the body should use continuous collison detection or not. This is good for small bodies (or larger bodies that has one or many small colliders) that would easily stick or tunnel other bodies.  It is also good for high speed bodies. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''PushedByCharacterGravity'''  || If the body will be affected when a characters stands on top. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''PauseGravity'''  || If gravity should be removed during interaction. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''AutoDisableLinearThreshold'''  || Square of the min linear speed before body is disabled. Default 0.1 ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''AutoDisableAngularThreshold'''  || Square of the min angular speed before body is disabled. Default 0.1 ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''AutoDisableNumSteps'''  || Min steps of required speeds before the body is disabled. Default 10 ''Int''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Volatile'''             || If a body might disappear or for some reason leave the way open for AI. Only needed on mass 0. Default false ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''CanAttachCharacter'''   || If a character standing on the body will be attached. For example if you have a moving platform and want the character to move with it as it moves. Default false ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.2.3 Graphics ====&lt;br /&gt;
This section set the graphical appearance of the entities.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''ModelFile'''          || The name of the model file. No extension needed. ''String.''&lt;br /&gt;
|-&lt;br /&gt;
| '''CastShadows'''        || Sets if the entity casts shadows or not. ''Boolean.''&lt;br /&gt;
|-&lt;br /&gt;
| '''AnimationLoop'''      || If the start animation should be looped or not. ''Boolean.''&lt;br /&gt;
|-&lt;br /&gt;
| '''AnimationRandStart''' || If the start animation should start at a random location, false starts always at 0 and true starts randomly between 0 and length of animation. ''Boolean.''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.2.4 Submesh ====&lt;br /&gt;
A submesh section is created for each submesh in the mesh.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Name''' 	 || Name of the geometry for the submesh. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaterialFile'''  || Sets a new material for the submesh. If not the defined the one in the model is used. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.2.5 Attach Billboards ====&lt;br /&gt;
The section contains info on how to attach billboards to lights, the styntax is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ATTACH_BILLBOARDS&amp;gt;&lt;br /&gt;
	&amp;lt;Pair Light=&amp;quot;rampspot1&amp;quot; Billboard=&amp;quot;rampbb1&amp;quot; &amp;gt;&lt;br /&gt;
	[more pairs]&lt;br /&gt;
&amp;lt;/ATTACH_BILLBOARDS&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Light'''   || The name of the light to add the billboard to.&lt;br /&gt;
|-&lt;br /&gt;
| '''Billboard'''   || The name of the billboard to be added.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.2.6 Animation ====&lt;br /&gt;
The animation is used to give an object more than one animation. The model file defined by ModelFile in Graphics will be the main file (for more information, see 2.2). The syntax is the following for adding animations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ANIMATIONS&amp;gt;&lt;br /&gt;
	&amp;lt;Animation [properties]&amp;gt;&lt;br /&gt;
	[…]&lt;br /&gt;
&amp;lt;/ANIMATIONS&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties for each animation field are the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''File'''  || The model file that contains the animation. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Name'''  || The name the animation will have ingame. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Speed'''  || The speed of the animation in percent /100. 1 = normal speed, 0.5 = half speed,  2 = double speed. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''SpecialEventTime'''  || Generic variable that is game dependant. Should signify some event happening in the animation ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;GRAPHICS &lt;br /&gt;
ModelFile = “test.dae”&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test.dae will be the main file, it is in this file colliders and such must be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ANIMATIONS&amp;gt;&lt;br /&gt;
	&amp;lt;Animation File=”test_run.dae” Name=”Run” Speed=”1”&amp;gt;&lt;br /&gt;
	&amp;lt;Animation File=”test_jump.dae” Name=”Jump” Speed=”1”&amp;gt;&lt;br /&gt;
&amp;lt;/ANIMATIONS&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will add the animations “test_run.dae” and “test_jump.dae” and will name them “Run” and “Jump” in game. These files should not have colliders and such.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
It's also possible to add events to an animation. Currently it's only used to add in sounds for an animation. See below example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ANIMATIONS&amp;gt;&lt;br /&gt;
	&amp;lt;Animation File=”test_run.dae” Name=”Run” Speed=”1” &amp;gt;&lt;br /&gt;
          &amp;lt;Event Time=&amp;quot;0.1&amp;quot; Type=&amp;quot;PlaySound&amp;quot; Value=&amp;quot;name_of_snt_file&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Animation&amp;gt;&lt;br /&gt;
&amp;lt;/ANIMATIONS&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The properties for each event field are the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Time'''  || At what time in the animation to do the event. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Type'''  || What type, currently on PlaySound is available. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Value'''  || The name of the file to use for the event, for PlaySound that is what sound entity file to use. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 6.2.7 Joint ====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Name''' 	 || This is the name of the joint and is the same as the '''name parameter'''. If the joint is like this:&amp;lt;br /&amp;gt;'''_joint_hinge_test_test_10_20_MyJoint'''&amp;lt;br /&amp;gt;Then “MyJoint” is the name to use. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinValue'''	 || Min limit value for joint, depends on joint type and overrides previous value if defined. ''Integer''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxValue'''	 || Max limit value for joint, depends on joint type and overrides previous value if define. ''Integer''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLimit_Sound'''  || The sound played when reaching the max limit. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLimit_MinSpeed'''  || The minimum speed for the sound to be played. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLimit_MaxSpeed'''  || At this speed the sounds stops getting louder. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''MinLimit_Sound'''  || The sound played when reaching the min limit. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinLimit_MinSpeed'''  || The minimum speed for the sound to be played. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinLimit_MaxSpeed'''  || At this speed the sounds stops getting louder.''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1		&lt;br /&gt;
|-&lt;br /&gt;
| '''MoveSound'''	 || The sound played when the joint objects are moving. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MoveType'''  || The type of movement that the speed will be determined from, this can be “Linear” or “Angular”. This is up/down/left/etc movement and rotation respectively. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''MinMoveSpeed'''  || The minimum speed in m/s at which sound is heard. Valid values are 0 – infinity. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinMoveFreq'''  || The lowest frequency played from the sound. Valid values are 0 – infinity. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinMoveVolume'''  || The lowest volume played. . Valid values are 0 – 1. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinMoveFreqSpeed'''  || The speed (and below) at which MinMoveFreq and MinMoveVolume is played. 0 – infinity. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxMoveFreq'''  || The highest frequency played from the sound. Valid values are 0 – infinity. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxMoveVolume'''  || The loudest volume played. . Valid values are 0 – 1. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxMoveFreqSpeed'''  || The speed (and above) at which MaxMoveFreq and MaxMoveVolume is played. 0 – infinity. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''MiddleMoveSpeed'''  || The Speed at which frequency is 1 and MiddleMoveVolume. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MiddleMoveVolume'''  || The middle volume. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''Breakable'''   || If the joint should break if enough force is applied to it. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakForce'''  || The minimum force for the joint to break. 0 – inf. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakSound'''  || The sound played when the joint breaks. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
|-&lt;br /&gt;
| '''LimitAutoSleep'''   || If there should be extra autosleep at limits. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''LimitAutoSleepDist'''  || The distance at which the sleep occurs. 0 – inf. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''LimitAutoSleepNumSteps'''  || The number of steps need for the sleep to start. 0 – inf. ''Int''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1 &lt;br /&gt;
|-&lt;br /&gt;
| '''StickyMaxDistance'''   || The distance from max limit that the body is stopped. 0 = disabled. (this is in radians for hinge). ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''StickyMinDistance'''   || The distance from min limit that the body is stopped. 0 = disabled. (this is in radians for hinge). ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.2.8 Joint Controller ====&lt;br /&gt;
The Joint may also contain one or more Controllers. Controllers are used for controlling a body in some way. This maybe used to keep the body at a certain orientation or at a certain speed. This can simulate things like spinning fans and levers that go back to a certain position when released. &lt;br /&gt;
&lt;br /&gt;
A demo of a Pid controller can be found in the Pid Demo folder.&lt;br /&gt;
&lt;br /&gt;
'''Note''' that only the child body of the joint is affected by the controller, '''not''' the parent.&lt;br /&gt;
&lt;br /&gt;
A controller is defined like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Controller&lt;br /&gt;
[properties]&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And resides inside the joint tag, like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;JOINT&amp;gt;&lt;br /&gt;
	&amp;lt;Controller /&amp;gt;&lt;br /&gt;
&amp;lt;Controller /&amp;gt;&lt;br /&gt;
	[continues for as many controllers are needed]&lt;br /&gt;
&amp;lt;/JOINT&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At its basics a controller is a machine that gets an input and generates an output. The input could be the distance from a goal and the output could be a speed. This would create a controller that lowers the speed of an object as it gets closer to its goal. To control the amount of speed at a certain distance some constants are used. In most cases these the will make the relationship between input and output vary in a linear fashion, i.e. at half the distance the speed is at 50%, at 1/4th the distance 25% and so on.&lt;br /&gt;
&lt;br /&gt;
There are two types of controllers. “Spring” and “Pid” these work in about the same way but can produce very different results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Spring'''&amp;lt;br /&amp;gt;This is probably the easiest type to understand. It is controlled by the formula:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Output = (DesiredValue – Input) * k – Input * b'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The first part of the equation is used to control the output needed to reach the desired value. As you see the higher difference between desired value and input (called error) the higher output. The second part of the equation is used to make the output smaller if input gets too large. For example at a long distance you don’t want have too large speed. (Normally the same input is not used for the first and second part, but this is a simplified spring.)&lt;br /&gt;
&lt;br /&gt;
'''Pid'''&amp;lt;br /&amp;gt;A Pid is a little harder to describe than a spring. It consists of 3 constants; p, i and d. These are part of an equation but is better to explain what the 3 constants do instead of describing the equation used.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''p''' 	 || This is the proportional constant and works exactly like the first part of the spring formula. The higher it is, the higher the output generated will be. This has most influence over the generated output.&lt;br /&gt;
|-&lt;br /&gt;
| '''i'''	 || This is the integral term and can be said to be a memory of the previous errors. The greater the previous errors have been the greater affect this will have on the output. This is good to use if the input/output gets in a steady state (the output makes no change on the input) often, this state will make the old errors the same and thus it will increase the output by this term.&lt;br /&gt;
|-&lt;br /&gt;
| '''d'''	 || This is the derivative term and it is change in error. The term normally work negative on the output and is used to dampen the output when it is closing in too fast. The result will be that the desired valued is not over shot but instead reached in a smooth matter. The higher the term the more negative impact on the output when the error difference gets lower. This term will also give an extra boost to the output if the error difference gets higher (input gets further away from the desired value).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The properties are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Name''' || The name of the controller. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Active''' || If the controller is active or not. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Type''' || The type of the controller. “Pid” or “Spring”.&lt;br /&gt;
|-&lt;br /&gt;
| '''A''' || p-term for Pid and k term for Spring. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''B''' || i-term for Pid and b term for Spring. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''C''' || d-term for Pid and not used in springs. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''IntegralSize''' || The number of errors saved for the integral term. 1 – inf. ''Integer''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Input''' || The type of input. &amp;quot;JointAngle&amp;quot;, &amp;quot;JointDist&amp;quot;,&amp;quot;LinearSpeed&amp;quot; or &amp;quot;AngularSpeed&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''InputAxis''' || The axis of the input (use “X” joint inputs). “X”,”Y” or “Z”.&lt;br /&gt;
|-&lt;br /&gt;
| '''DestValue''' || The desired value for input. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Output''' || The output type. “Force” or “Torque”. (Torque is for rotation.)&lt;br /&gt;
|-&lt;br /&gt;
| '''OutputAxis''' || The axis of the output. “X”,”Y” or “Z”.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxOutput''' || The maximum output. 0 – infinity. 0 equals infinity (no upper limit). ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''MulMassWithOutput''' || If the output should be multiplied with the body’s mass before being used. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''EndType''' ||  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
This defines what is the end of the controller. When this happens the motor will become non active and another controller (if specified) will be active instead. This can be “Null”, “OnMax”, “OnMin” or “OnDest”.&amp;lt;br /&amp;gt;Null: No end.&amp;lt;br /&amp;gt;OnMax: The max limit of the joint is reached.&amp;lt;br /&amp;gt;OnMin: The min limit of the joint is reached.&amp;lt;br /&amp;gt;OnDest: DestValue is reached.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''NextController''' || The controller that will be activated when the end (specified in EndType) of this controller is reached.&lt;br /&gt;
|-&lt;br /&gt;
| '''LogInfo''' || If the controller should write debug info to the log, default is false. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 6.2.9 Light ====&lt;br /&gt;
The light section can be used to change the properties to lights in a model, if section not present the values from the model will be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;LIGHT&amp;gt;&lt;br /&gt;
	Name = &amp;quot;pointLight1&amp;quot;&lt;br /&gt;
	[…]&lt;br /&gt;
&amp;lt;/LIGHT&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''Name'''        || The name of the light to change values for. ''String''.&lt;br /&gt;
|-&lt;br /&gt;
| '''CastShadows''' || Should the light cast a shadow or not. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Attenuation''' || The size of the light in meters. ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Color'''       || The color of the light, &amp;quot;R G B A&amp;quot;. ''Vector4''.&lt;br /&gt;
|-&lt;br /&gt;
| '''FOV'''         || How quickly the radius of the light increases, as degree. '''Only for spotlights.''' ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
| '''Aspect'''      || The difference between width and height increase set by the FOV, example: Aspect 1.5 for FOV 90 gives width=135 and height=90. '''Only for spotlights.''' ''Float''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6.3 Game Section ===&lt;br /&gt;
&lt;br /&gt;
The game section of an entity file is the section that contains the most interesting properties, is in this section where the different types have all their specific settings.&lt;br /&gt;
&lt;br /&gt;
The game section is defined like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;GAME&lt;br /&gt;
          InteractMode = “Static”&lt;br /&gt;
          [...] Other settings&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In it you add all the specifics for the different entity types as well as the standard features that are present in most entities. All settings are written '''Setting = &amp;quot;The Value&amp;quot;''', it uses &amp;quot; &amp;quot; regardless of int, float, string, boolean.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 6.3.1 Game Section General ====&lt;br /&gt;
These settings are usable in all entities, there might be some that only work for a certain type or some that work against each other. Overall should be no problem and nothing to risk by trial and error.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''InteractMode'''      || ''String''  || Static   || Different modes for when you interact with the object, additional specific information see below for details. &amp;quot;Static&amp;quot;, &amp;quot;Grab&amp;quot;, &amp;quot;Move&amp;quot;, &amp;quot;Push&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''ForwardUpMul'''      || ''Float''   || 1        || MoveMode: Multiplied to the forward/backward force when moving the mouse up/down.&lt;br /&gt;
|-&lt;br /&gt;
| '''UpMul'''             || ''Float''   || 1        || MoveMode: Multiplied to the up/down force when moving the mouse up/down.&lt;br /&gt;
|-&lt;br /&gt;
| '''RightMul'''          || ''Float''   || 1        || MoveMode: Multiplied to the right/left force when moving the mouse right/left.&lt;br /&gt;
|-&lt;br /&gt;
| '''PickAtPoint'''       || ''Bool''    || False    || GrabMode: Should the object be picked that point the mouse is.&lt;br /&gt;
|-&lt;br /&gt;
| '''RotateWithPlayer'''  || ''Bool''    || True     || GrabMode: Should the object rotate along with the player.&lt;br /&gt;
|-&lt;br /&gt;
| '''UseNormalMass'''     || ''Bool''    || False    || GrabMode: Should the object's normal mass be used.&lt;br /&gt;
|-&lt;br /&gt;
| '''GrabMassMul'''       || ''Float''   || 1        || GrabMode: Multiplied to the force applied to the object.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxInteractDist'''   || ''Float''   || additional specific information Depends  || The maximum length at which the object can be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
| '''PauseControllers'''  || ''Bool''    ||          || MoveMode: Should controllers be paused when interacting.&lt;br /&gt;
|-&lt;br /&gt;
| '''DamageCharacter'''   || ''Bool''    || False    || Should the characters take damage from the object.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinLinearDamageSpeed'''   || ''Float''    || 0  || Minimum linear speed at which damage is dealt.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinAngularDamageSpeed'''  || ''Float''    || 0  || Minimum angular speed at which damage is dealt.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLinearDamageSpeed'''   || ''Float''    || 0  || Maximum linear speed at which damage stops getting higher.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxAngularDamageSpeed'''  || ''Float''    || 0  || Maximum angular speed at which damage stops getting higher.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinDamage'''              || ''Float''    || 0  || Damage dealt at minium speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxDamage'''              || ''Float''    || 0  || Damage dealt at maximum speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''DamageStrength'''         || ''???''    || ???  || ???.&lt;br /&gt;
|-&lt;br /&gt;
| '''Destroyable'''            || ''Bool''   || false  || If enemies can destroy all joints conneced to the body.&lt;br /&gt;
|-&lt;br /&gt;
| '''Toughness'''              || ''Int''   || 0  || Thoughness of entity.&lt;br /&gt;
|-&lt;br /&gt;
| '''DestroyStrength'''        || ''Float''  || 0      || Mimimum strength of the enemy to destroy the body.&lt;br /&gt;
|-&lt;br /&gt;
| '''DestroySound'''           || ''String'' || &amp;quot;&amp;quot;     || The sounds played when the object is destroyed.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash'''             || ''Bool'' || &amp;quot;&amp;quot;     || If a ligth flash should be displayed on destruction.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash_Color'''       || ''Color'' || &amp;quot;R G B A&amp;quot;    || Color of flash.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash_Radius'''      || ''Float'' || 0     || Radius of flash.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash_AddTime'''     || ''Float'' || 0     || The time it takes for falsh to expand.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash_NegTime'''     || ''Float'' || 0     || The time it takes for falsh to contract.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightFlash_Offset'''      || ''Vector3'' || 0   || The offset from the object position.&lt;br /&gt;
|-&lt;br /&gt;
| '''CanBeThrown'''            || ''Bool'' || True   || Sets if an object can be thrown.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttractEnemies'''         || ''Bool'' || False  || If the object will attract enemies to it.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttractDistance'''        || ''Float'' || 0     || The distance at which the attraction works.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttractSubtypes'''        || ''String Vector'' || &amp;quot; &amp;quot;     || A string vec of the subtypes of enemies that are attraced. ie: &amp;quot;Dog Spider&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttractIsEaten'''         || ''Bool'' || False  || If the object is eaten once reached by the enemy.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttractEatLength'''       || ''Float'' || 0     || The time it takes for the object to be eaten.&lt;br /&gt;
|-&lt;br /&gt;
| '''CanBePulled'''       || ''Bool'' || True     || If an object with InteractMode Push can be pulled as well.&lt;br /&gt;
|-&lt;br /&gt;
| '''ForceLightOffset'''       || ''Bool'' || False  || If light should have an extra offset in absolute world coords.&lt;br /&gt;
|-&lt;br /&gt;
| '''LightOffset'''       || ''Vector3'' || 0 0 0 || Extra light offest.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMinCloseDist'''       || ''Float'' || 0  || When below this distance to another eneity of the same type, disappera instantly. 0 = off.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6.3.1.1 Additional specific information =====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Interact Modes !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''Static'''      || Nothing happens when you interact, example: ceiling light, large machine run by control panel.&lt;br /&gt;
|-&lt;br /&gt;
| '''Grab'''        || Used to grab and move around objects, exampel: small rocks, bottles.&lt;br /&gt;
|-&lt;br /&gt;
| '''Move'''        || Used to interact and  move objects. These should be stuck onto something, example: a furniture door.&lt;br /&gt;
|-&lt;br /&gt;
| '''Push'''        || Used to push around larger objects, example: crates, barrels.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!MaxInteractDist!!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''Grab'''        || Default value: 1.5.&lt;br /&gt;
|-&lt;br /&gt;
| '''Move'''        || Default value: 1.4.&lt;br /&gt;
|-&lt;br /&gt;
| '''Push'''        || Default value: 1.5.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.3.2 Type Lamp ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''InteractDist'''     || ''Float''   || ???    || Max distance you can interact with the lamp.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOnTime'''       || ''Float''   || 1      || Time for fade when turning on.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOffTime'''      || ''Float''   || 1      || Time for fade when turning off.&lt;br /&gt;
|-&lt;br /&gt;
| '''InteractOff'''      || ''Bool''    || ???    || If you can interact to turn off.&lt;br /&gt;
|-&lt;br /&gt;
| '''InteractOn'''       || ''Bool''    || ???    || If you can interact to turn on.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOnSound'''      || ''String''  || &amp;quot; &amp;quot;    || Sound played when turning on.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOffSound'''     || ''String''  || &amp;quot; &amp;quot;    || Sound played when turning off.&lt;br /&gt;
|-&lt;br /&gt;
| '''OnItem'''           || ''String''  || &amp;quot; &amp;quot;    || Item used to turn on, if &amp;quot; &amp;quot; then normal interaction works.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffItem'''          || ''String''  || &amp;quot; &amp;quot;    || Item used to turn off, if &amp;quot; &amp;quot; then normal interaction works.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffMaterial'''      || ''String''  || &amp;quot; &amp;quot;      || Material used when off.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffSubMesh'''       || ''Float''    || &amp;quot; &amp;quot;      || Sub mesh to change material on when off.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffColor'''         || ''Vector''   || &amp;quot;R G B A&amp;quot; || The color of the light when off, 0 0 0 = black.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''Flickering'''       || ''Bool''    || False  || Flickering active or not see the following options.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffSound'''       || ''String''    || &amp;quot; &amp;quot;  || The sound to play when flickering off.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOnSound'''        || ''String''    || &amp;quot; &amp;quot;  || The sound to play when flickering on.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffPS'''          || ''String''    || &amp;quot; &amp;quot;  || The particle effect to use when flickering off.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOnPS'''           || ''String''    || &amp;quot; &amp;quot;  || The particle effect to use when flickering on.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOnMinLength'''    || ''Float''    || ???  || Minimum time the light will be on.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOnMaxLength'''    || ''Float''    || ???  || Maximum time the light will be on.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffMinLength'''   || ''Float''    || ???  || Minimum time the light will be off.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffMaxLength'''   || ''Float''    || ???  || Maximum time the light will be off.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffColor'''       || ''Vector''   || &amp;quot;R G B A&amp;quot; || The color of the light when off, 0 0 0 = black.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffRadius'''      || ''Float''    || ???  || The radius of the light when off during a flicker.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerFade'''           || ''Bool''    || False  || If it should fade between on and off.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOnFadeLength'''   || ''Float''   || ???  || How long the fade should be when going to on.&lt;br /&gt;
|-&lt;br /&gt;
| '''FlickerOffFadeLength'''  || ''Float''   || ???  || How long the fade should be when going to off.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.3.3 Type SwingDoor ====&lt;br /&gt;
Entities with a door that swings open. There are some rules:&amp;lt;br /&amp;gt;- May only have hinge joints&amp;lt;br /&amp;gt;- Must open towards positive Z-axis.&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''Health'''      || ''float''  || 0   || The health of the door, the door will be breakable this way.&lt;br /&gt;
|-&lt;br /&gt;
| '''Toughness'''      || ''int''  || 0   || The toughness of the door, depending on toughness of the attacking entity the door will or will not take damage.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.3.4 Type Door ====&lt;br /&gt;
Door is an old entity type that was added even before the tech demo. It's a door that uses animations to open and close, and when closed it can block portals making it a good optimization tool in crowded areas.&lt;br /&gt;
&lt;br /&gt;
The Door entity needs 4 animations named: Opening, Open, Closing and Closed. It's an opening animation, the static open look, the closing animation and the static closed door. See [[HPL1/Content_Creation_Chapter_2#2.2_Animations|Chapter 2.2]] for more details on animations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ANIMATIONS&amp;gt;&lt;br /&gt;
		&amp;lt;Animation File=&amp;quot;door_model_opening.dae&amp;quot; Name=&amp;quot;Opening&amp;quot; Speed=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Animation File=&amp;quot;door_model_closed.dae&amp;quot;  Name=&amp;quot;Closed&amp;quot; Speed=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Animation File=&amp;quot;door_model_closing.dae&amp;quot; Name=&amp;quot;Closing&amp;quot; Speed=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Animation File=&amp;quot;door_model_open.dae&amp;quot; Name=&amp;quot;Open&amp;quot; Speed=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/ANIMATIONS&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''OpenStartSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Played when started opening.&lt;br /&gt;
|-&lt;br /&gt;
| '''OpenLoopSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Looped when opening.&lt;br /&gt;
|-&lt;br /&gt;
| '''OpenStopSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Played when stopped opening.&lt;br /&gt;
|-&lt;br /&gt;
| '''OpenLoopStartFadeSpeed'''         || ''Float''  || 1     || Fade in speed of loop sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''OpenLoopStopFadeSpeed'''         || ''Float''  || 1      || Fade out speed of loop sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseStartSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Played when started closing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseLoopSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Looped when closing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseStopSound'''         || ''String''  || &amp;quot; &amp;quot;      || Sound Played when stopped closing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseLoopStartFadeSpeed'''         || ''Float''  || 1      || Fade in speed of loop sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseLoopStopFadeSpeed'''         || ''Float''  || 1      || Fade out speed of loop sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''OpenWhenBlocked'''         || ''Bool''  || False     || If the door should openitself if blocked. For example, place a box in the gap to bounce doors open on collide.&lt;br /&gt;
|-&lt;br /&gt;
| '''BlockPortals'''         || ''Bool''  || True      || If the door blocks portals when closed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.3.5 Type DoorPanel ====&lt;br /&gt;
An Entity that is an object that the player can interact with to trigger the Door entity. They require a certain naming that needs to be looked into, it's a sort of lost knowledge as it has never been used beyond early testing...&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''ChangeWhileMoving'''         || ''Bool''  || False      || If the door can have its state changed while it is moving.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.3.6 Type Button ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''InteractDist'''  || ''Float''  || ???   || Max interaction distance.&lt;br /&gt;
|-&lt;br /&gt;
| '''InteractOff'''      || ''Bool''   || ???        || If you can turn off by interacting.&lt;br /&gt;
|-&lt;br /&gt;
| '''InteractOn'''       || ''Bool''   || ???         || If you can turn on by interacting.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOnSound'''      || ''String''   || &amp;quot; &amp;quot;         || Sound played when turning on.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOffSound'''     || ''String''    || &amp;quot; &amp;quot;   || Sound played when turning off.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOnAnimation'''  || ''String''    || &amp;quot; &amp;quot;    || Animation played when turning on.&lt;br /&gt;
|-&lt;br /&gt;
| '''TurnOffAnimation''' || ''String''    || &amp;quot; &amp;quot;    || Animation played when turning off.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffMaterialName'''  || ''String''    || &amp;quot; &amp;quot;     || Material used when turned off.&lt;br /&gt;
|-&lt;br /&gt;
| '''OffSubMesh'''       || ''String''    || &amp;quot; &amp;quot;     || Sub mesh that material is switch on (if OffMaterialName != &amp;quot;&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 6.3.7 Type Wheel====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''InteractDist'''  || ''Float''  || 1.8f   || Max interaction distance.&lt;br /&gt;
|-&lt;br /&gt;
| '''MinLimit'''      || ''Float''   || 0        || Min limit of wheel (should be negative).&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxLimit'''       || ''Float''   || 0         || Max limit of wheel (should be postive).&lt;br /&gt;
|-&lt;br /&gt;
| '''MinSound'''      || ''String''   || &amp;quot; &amp;quot;         || Sound played at min.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxSound'''     || ''String''    || &amp;quot; &amp;quot;   || Sound played at max.&lt;br /&gt;
|-&lt;br /&gt;
| '''StuckAtMin'''  || ''Bool''    || false    || If it gets stuck at min.&lt;br /&gt;
|-&lt;br /&gt;
| '''StuckAtMax''' || ''Bool''    || false    || If it gets stuck at max.&lt;br /&gt;
|-&lt;br /&gt;
| '''SpinDir'''  || ''int''    || 0     || 0=both dirs, 1=to max, -1=to min.&lt;br /&gt;
|-&lt;br /&gt;
| '''PauseControllers'''  || ''bool''    || true  || if controllers should be paused during player interaction.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.3.8 Type Enemy ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6.3.8.1 Enemy Dog =====&lt;br /&gt;
An enemy that can take care of itself.&lt;br /&gt;
&lt;br /&gt;
'''Needs animations for:'''&lt;br /&gt;
* Standing still, named: Idle&lt;br /&gt;
* Walking forwards, named: Walk&lt;br /&gt;
* Walking backwards, named: Backward&lt;br /&gt;
* Running, named: Run&lt;br /&gt;
* Eating, named: Eating&lt;br /&gt;
* Attacking high, named: Attack&lt;br /&gt;
* Rise right after knocked, named: RiseRight&lt;br /&gt;
* Rise left after knocked,, named: RiseLeft&lt;br /&gt;
* Attacking a door to break it, named: BreakDoor&lt;br /&gt;
* Calling for backup, named: Howl&lt;br /&gt;
* Attacking low, named: AttackLow&lt;br /&gt;
* Seeing player and waiting to attack, named:Angry&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''ShowDebug'''                || ''Bool''     || Displays additional informaiton on the screen about the enemy and it's behavior, useful to check path nodes etc.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''Disappear'''                || ''Bool''    || If the enemy should disappear on death.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMinTime'''         || ''Float''   || The minimum of time before disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMaxTime'''         || ''Float''   || The maximum of time before disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMinDistance'''     || ''Float''   || The minimum of distance from player to disappear.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearPS'''              || ''String''  || Particle effect to display on disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearSound'''           || ''String''  || Sound to play on disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearFreezesRagdoll'''  || ''Bool''    || If the Ragdoll should turn static or remain active on diseappering.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusic'''               || ''String''   || The music to play when enemy close to player.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicPrio'''           || ''Int''      || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStartDist'''      || ''Float''    || At what distance the music should start playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStopDist'''       || ''Float''    || At what distance the music should stop playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusic'''              || ''String''  || The music to play when enemy enters attack mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusicPrio'''          || ''Int''     || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxPushMass'''              || ''Float''   || The maximum mass of an object that the enemy can move.&lt;br /&gt;
|-&lt;br /&gt;
| '''PushForce'''                || ''Float''   || At what force an emeny pushes an object.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxHealth'''                || ''Float''   || The maximum health on an enemy, regenerates other time. 100 = players health.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxSeeDist'''               || ''Float''   || The maximum distance that the enemy can spot the player.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxForwardSpeed'''          || ''Float''   || Maximum forward speed of enemy, default 1.&lt;br /&gt;
|-&lt;br /&gt;
| '''Acceleration'''             || ''Float''   || Acceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''Deacceleration'''           || ''Float''   || Deceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''StoppedToWalkSpeed'''       || ''Float''   || How long to go from halt to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToStoppedSpeed'''       || ''Float''   || How long to go from walk to halt.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToRunSpeed'''           || ''Float''   || How long to go from walk to run.&lt;br /&gt;
|-&lt;br /&gt;
| '''RunToWalkSpeed'''           || ''Float''   || How long to go from run to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''MoveAnimSpeedMul'''         || ''Float''   || Speed multiplier for the animations, to sync the animation to the movement speed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''BodySize'''                 || ''Vector3'' || The size of the body.&lt;br /&gt;
|-&lt;br /&gt;
| '''BodyMass'''                 || ''Float''   || The mass of the body.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Rot'''          || ''Vector3'' || Rotating offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Pos'''          || ''Vector3'' || Position offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''AlignToGroundNormal'''      || ''Bool''    || If the body should align to the ground as the ground changes angel.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''HitPS'''      || ''String''    || Particle effect to be played at point of impact on enemy.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''MinKnockDamage'''      || ''Float''    || The minimum damage where the enemy might be knocked over.&lt;br /&gt;
|-&lt;br /&gt;
| '''CertainKnockDamage'''      || ''Float''    || The amount of damage where the enemy will always be knocked over.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 &lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''LengthBodyToAss'''      || ''Float''    || Who knows... (Hahaha wtf)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFOV'''      || ''Float''    || Field of view for enemy when idle.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFoundPlayerSound'''      || ''String''    || Sound for enemy spotting the player.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinSeeChance'''      || ''Float''    || Minimum chance of enemy seeing player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinHearVolume'''      || ''Float''    || Minimum chance of enemy hearing the player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleSound'''      || ''String''    || Sound to be played at random intervals.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleSoundMinInteraval'''      || ''Float''    || Minimum time between each time it plays the idle sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleSoundMaxInteraval'''      || ''Float''    || Maximum time between each time it plays the idle sound.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleCallBackupChance'''      || ''Float''    || Chance of the enemy running away and calling for backup, 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 &lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''InvestigateSound'''      || ''String''    || Sound to be played when enemy hears or sees something worth investigating.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''AttentionSound'''      || ''String''    || Sound to be played when the enemy sees player and goes into attention.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttentionTime'''      || ''Float''    || For how long the enemy will stay in attention, if player moves out of sight before end enemy will go back.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttentionMinDist'''      || ''Float''    || Minimum distance for attention to happen, if enemy within this distance it will go to attack directly.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntFOV'''      || ''Float''    || Field of view for enemy when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntSpeed'''      || ''Float''    || At what speed the enemy moves when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntForLostPlayerTime'''      || ''Float''    || For how long will enemy continue to hunt for the player when enemy lost track of player.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinSeeChance'''      || ''Float''    || Minimum chance of seeing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinHearVolume'''      || ''Float''    || Minimum chance of hearing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDistance'''      || ''Float''    || At what distance the enemy will do it's attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackSpeed'''      || ''Float''    || At what speed the attack will happen.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackJumpTime'''      || ''Float''    || How long to delay before jump.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageTime'''      || ''Float''    || How long the damage from the attack will be active.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageSize'''      || ''Vector3''    || How large the area will be affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageRange'''      || ''Float''    || How far the attack will reach.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinDamage'''      || ''Float''    || Minimum damage dealt with each attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxDamage'''      || ''Float''    || Maximum damage dealt with each attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackStartSound'''      || ''String''    || The sound to play at the beginning of an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackHitSound'''      || ''String''    || The sound to play when the attack is successful.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinMass'''      || ''Float''    || Minimum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxMass'''      || ''Float''    || Maximum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinImpulse'''      || ''Float''    || Minimum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxImpulse'''      || ''Float''    || Maximum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackStrength'''      || ''Float''    || The strength of an attack.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorAnimation'''      || ''String''    || The animation to use for enemy attacking a door it encounters locked/blocked.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorSpeed'''      || ''Float''    || At what speed to play the animation.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorDamageTime'''      || ''Float''    || How long the damage will be active for the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorDamageSize'''      || ''Vector3''    || The size of the area affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorDamageRange'''      || ''Float''    || The range of the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMinDamage'''      || ''Float''    || Minimum damage dealt with attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMaxDamage'''      || ''Float''    || Maximum damage dealt with attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorStartSound'''      || ''String''    || Sound of start of door attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorHitSound'''      || ''String''    || Sound when hitting the door during attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMinMass'''      || ''Float''    || The minimum mass affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMaxMass'''      || ''Float''    || The maximum mass affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMinImpulse'''      || ''Float''    || The minimum impulse given by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorMaxImpulse'''      || ''Float''    || The maximum impulse given by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorStrength'''      || ''Float''    || The strength of the attack on the door,.&lt;br /&gt;
|-&lt;br /&gt;
| '''BreakDoorRiseAtEnd'''      || ''Bool''    || Should the rise animation be played at the end of the break door animation.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''KnockDownSound'''      || ''String''    || The sound played as an enemy is knocked over.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''DeathSound'''      || ''String''    || The sound played as an enemy dies.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''FleePositionChance'''      || ''Float''    || The chance of fleeing when knocked. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleePositionMaxTime'''      || ''Float''    || How long the flee will last.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleePositionMinDistance'''      || ''Float''    || Minimum distance to run away.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleePositionMaxDistance'''      || ''Float''    || Maximum distance to run away.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleeBackChance'''      || ''Float''    || The chance of running back to the player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleeBackTime'''      || ''Float''    || How long it will wait to run back.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleeBackSpeed'''      || ''Float''    || At what speed to run back.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''CallBackupAnimation'''      || ''String''    || What animation to use when calling for backup.&lt;br /&gt;
|-&lt;br /&gt;
| '''CallBackupSound'''      || ''String''    || What sound to play during call for backup animation.&lt;br /&gt;
|-&lt;br /&gt;
| '''CallBackupRange'''      || ''Float''    || How far the backup call will reach, one enemy within the range will come to help the other.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description&lt;br /&gt;
|-&lt;br /&gt;
| '''EatFOV'''      || ''Float''    || The field of view while eating&lt;br /&gt;
|-&lt;br /&gt;
| '''EatMinSeeChance'''      || ''Float''    || The chance it will see the player while eating. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''EatMinHearVolume'''      || ''Float''    || The chance it will hear the player while eating. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 6.3.8.2 Enemy Spider=====&lt;br /&gt;
A erratic enemy that hunts the player when seen, and optionally runs away from the flashlight.&lt;br /&gt;
&lt;br /&gt;
'''Needs animations for:'''&lt;br /&gt;
* Standing still, named: Idle&lt;br /&gt;
* Walking forwards, named: Walk&lt;br /&gt;
* Running, named: Run&lt;br /&gt;
* Attacking high, named: Attack&lt;br /&gt;
* Death animation that takes over after landing from ragdoll, named:Death&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''ShowDebug'''                || ''Bool''     || Displays additional informaiton on the screen about the enemy and it's behavior, useful to check path nodes etc.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''Disappear'''                || ''Bool''    || If the enemy should disappear on death.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMinTime'''         || ''Float''   || The minimum of time before disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMaxTime'''         || ''Float''   || The maximum of time before disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearMinDistance'''     || ''Float''   || The minimum of distance from player to disappear.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearPS'''              || ''String''  || Particle effect to display on disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearSound'''           || ''String''  || Sound to play on disappearing.&lt;br /&gt;
|-&lt;br /&gt;
| '''DisappearFreezesRagdoll'''  || ''Bool''    || If the Ragdoll should turn static or remain active on diseappering.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusic'''               || ''String''   || The music to play when enemy close to player.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicPrio'''           || ''Int''      || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStartDist'''      || ''Float''    || At what distance the music should start playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStopDist'''       || ''Float''    || At what distance the music should stop playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusic'''              || ''String''  || The music to play when enemy enters attack mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusicPrio'''          || ''Int''     || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxPushMass'''              || ''Float''   || The maximum mass of an object that the enemy can move.&lt;br /&gt;
|-&lt;br /&gt;
| '''PushForce'''                || ''Float''   || At what force an emeny pushes an object.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxHealth'''                || ''Float''   || The maximum health on an enemy, regenerates other time. 100 = players health.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxSeeDist'''               || ''Float''   || The maximum distance that the enemy can spot the player.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''AlignToGroundNormal'''      || ''Bool''    || If the body should align to the ground as the ground changes angel.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxForwardSpeed'''          || ''Float''   || Maximum forward speed of enemy, default 1.&lt;br /&gt;
|-&lt;br /&gt;
| '''Acceleration'''             || ''Float''   || Acceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''Deacceleration'''           || ''Float''   || Deceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''mfMaxTurnSpeed'''             || ''Float''   || Turning speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''mfAngleDistTurnMul'''           || ''Float'' || Multiplier for turning ???.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''mfMinBreakAngle'''             || ''Float''   || Break angle ???&lt;br /&gt;
|-&lt;br /&gt;
| '''mfBreakAngleMul'''           || ''Float''   || Multiplier for break angel ???&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''StoppedToWalkSpeed'''       || ''Float''   || How long to go from halt to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToStoppedSpeed'''       || ''Float''   || How long to go from walk to halt.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToRunSpeed'''           || ''Float''   || How long to go from walk to run.&lt;br /&gt;
|-&lt;br /&gt;
| '''RunToWalkSpeed'''           || ''Float''   || How long to go from run to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''MoveAnimSpeedMul'''         || ''Float''   || Speed multiplier for the animations, to sync the animation to the movement speed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''BodySize'''                 || ''Vector3'' || The size of the body.&lt;br /&gt;
|-&lt;br /&gt;
| '''BodyMass'''                 || ''Float''   || The mass of the body.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Rot'''          || ''Vector3'' || Rotating offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Pos'''          || ''Vector3'' || Position offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''HitPS'''      || ''String''    || Particle effect to be played at point of impact on enemy.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MinKnockDamage'''      || ''Float''    || The minimum damage where the enemy might be knocked over.&lt;br /&gt;
|-&lt;br /&gt;
| '''CertainKnockDamage'''      || ''Float''    || The amount of damage where the enemy will always be knocked over.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''LengthBodyToAss'''      || ''Float''    || Who knows...&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFOV'''      || ''Float''    || Field of view for enemy when idle.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFoundPlayerSound'''      || ''String''    || Sound for enemy spotting the player.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinSeeChance'''      || ''Float''    || Minimum chance of enemy seeing player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinHearVolume'''      || ''Float''    || Minimum chance of enemy hearing the player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinWaitLength'''      || ''Float''    || Minimum time it stands still waiting.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMaxWaitLength'''      || ''Float''    || Maximum time it stands still waiting.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''HuntFOV'''      || ''Float''    || Field of view for enemy when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntSpeed'''      || ''Float''    || At what speed the enemy moves when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntForLostPlayerTime'''      || ''Float''    || For how long will enemy continue to hunt for the player when enemy lost track of player.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinSeeChance'''      || ''Float''    || Minimum chance of seeing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinHearVolume'''      || ''Float''    || Minimum chance of hearing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDistance'''      || ''Float''    || At what distance the enemy will do it's attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackForce'''      || ''Float''    || At what what force to do the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackJumpTime'''      || ''Float''    || How long to delay before jump.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageTime'''      || ''Float''    || How long the damage from the attack will be active.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageSize'''      || ''Vector3''    || How large the area will be affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageRange'''      || ''Float''    || How far the attack will reach.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinDamage'''      || ''Float''    || Minimum damage dealt with each attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxDamage'''      || ''Float''    || Maximum damage dealt with each attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackStartSound'''      || ''String''    || The sound to play at the beginning of an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackHitSound'''      || ''String''    || The sound to play when the attack is successful.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinMass'''      || ''Float''    || Minimum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxMass'''      || ''Float''    || Maximum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinImpulse'''      || ''Float''    || Minimum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxImpulse'''      || ''Float''    || Maximum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackStrength'''      || ''Float''    || The strength of an attack.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''KnockDownSound'''      || ''String''    || The sound played as an enemy is knocked over.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''DeathSound'''      || ''String''    || The sound played as an enemy dies.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''FleeMinDistance'''      || ''Float''    || Minimum distance the enemy runs away when fleeing.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleeMaxDistance'''      || ''Float''    || Maximum distance the enemy runs away when fleeing.&lt;br /&gt;
|-&lt;br /&gt;
| '''FleeFromFlashlight'''      || ''Float''    || IF the enemy should be scared of the flashlight beam.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 6.3.8.3 Enemy Worm=====&lt;br /&gt;
An enemy that follows the player around and deals damage at set intervals.&lt;br /&gt;
&lt;br /&gt;
'''Needs animations for:'''&lt;br /&gt;
* Being still, named: Idle&lt;br /&gt;
* Moving, named: Move&lt;br /&gt;
* Attacking, named: Attack&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type        !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''ShowDebug'''                || ''Bool''     || Displays additional informaiton on the screen about the enemy and it's behavior, useful to check path nodes etc.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''Disappear'''                || ''Bool''    || If the enemy should disappear on death.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusic'''               || ''String''   || The music to play when enemy close to player.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicPrio'''           || ''Int''      || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStartDist'''      || ''Float''    || At what distance the music should start playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''CloseMusicStopDist'''       || ''Float''    || At what distance the music should stop playing.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusic'''              || ''String''  || The music to play when enemy enters attack mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMusicPrio'''          || ''Int''     || The priority of the music, should be higher than ambient music of level or else it wont play.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxPushMass'''              || ''Float''   || The maximum mass of an object that the enemy can move.&lt;br /&gt;
|-&lt;br /&gt;
| '''PushForce'''                || ''Float''   || At what force an emeny pushes an object.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxHealth'''                || ''Float''   || The maximum health on an enemy, regenerates other time. 100 = players health.&lt;br /&gt;
|-&lt;br /&gt;
| '''MaxSeeDist'''               || ''Float''   || The maximum distance that the enemy can spot the player.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''AlignToGroundNormal'''      || ''Bool''    || If the body should align to the ground as the ground changes angel.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MaxForwardSpeed'''          || ''Float''   || Maximum forward speed of enemy, default 1.&lt;br /&gt;
|-&lt;br /&gt;
| '''Acceleration'''             || ''Float''   || Acceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''Deacceleration'''           || ''Float''   || Deceleration speed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''mfMaxTurnSpeed'''             || ''Float''   || Turning speed.&lt;br /&gt;
|-&lt;br /&gt;
| '''mfAngleDistTurnMul'''           || ''Float'' || Multiplier for turning ???.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''mfMinBreakAngle'''             || ''Float''   || Break angle ???&lt;br /&gt;
|-&lt;br /&gt;
| '''mfBreakAngleMul'''           || ''Float''   || Multiplier for break angel ???&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''StoppedToWalkSpeed'''       || ''Float''   || How long to go from halt to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToStoppedSpeed'''       || ''Float''   || How long to go from walk to halt.&lt;br /&gt;
|-&lt;br /&gt;
| '''WalkToRunSpeed'''           || ''Float''   || How long to go from walk to run.&lt;br /&gt;
|-&lt;br /&gt;
| '''RunToWalkSpeed'''           || ''Float''   || How long to go from run to walk.&lt;br /&gt;
|-&lt;br /&gt;
| '''MoveAnimSpeedMul'''         || ''Float''   || Speed multiplier for the animations, to sync the animation to the movement speed.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''BodySize'''                 || ''Vector3'' || The size of the body.&lt;br /&gt;
|-&lt;br /&gt;
| '''BodyMass'''                 || ''Float''   || The mass of the body.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Rot'''          || ''Vector3'' || Rotating offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
| '''ModelOffset_Pos'''          || ''Vector3'' || Position offset for the model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''HitPS'''      || ''String''    || Particle effect to be played at point of impact on enemy.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''MoveSound'''     || ''String''   || A sound to play while moving.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFOV'''      || ''Float''    || Field of view for enemy when idle.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleFoundPlayerSound'''      || ''String''    || Sound for enemy spotting the player.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinSeeChance'''      || ''Float''    || Minimum chance of enemy seeing player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinHearVolume'''      || ''Float''    || Minimum chance of enemy hearing the player. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMinWaitLength'''      || ''Float''    || Minimum time it stands still waiting.&lt;br /&gt;
|-&lt;br /&gt;
| '''IdleMaxWaitLength'''      || ''Float''    || Maximum time it stands still waiting.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''HuntFOV'''      || ''Float''    || Field of view for enemy when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntSpeed'''      || ''Float''    || At what speed the enemy moves when in hunt mode.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntForLostPlayerTime'''      || ''Float''    || For how long will enemy continue to hunt for the player when enemy lost track of player.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinSeeChance'''      || ''Float''    || Minimum chance of seeing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
| '''HuntMinHearVolume'''      || ''Float''    || Minimum chance of hearing the player when in hunt. 0 never 1 always, 0.x the chance.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
! !! !! &lt;br /&gt;
|-&lt;br /&gt;
| '''AttackInterval'''      || ''Float''    || At what intervals the attacks will be.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamage'''      || ''Float''    || The damage dealt from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackHitSound'''      || ''String''    || The sound to play when attacking with a hit.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackHitSoundInterval'''      || ''Float''    || The interval between hit sounds.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinMass'''      || ''Float''    || Minimum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxMass'''      || ''Float''    || Maximum mass that will be affected by an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMinImpulse'''      || ''Float''    || Minimum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackMaxImpulse'''      || ''Float''    || Maximum impulse given from an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackStrength'''      || ''Float''    || The strength of an attack.&lt;br /&gt;
|-&lt;br /&gt;
| '''AttackDamageSize'''      || ''Vector3''    || How large the area will be affected by the attack.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6.3.8.4 Enemy Roach (Flying dolphin)=====&lt;br /&gt;
All properties hardcoded. ???&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 6.3.9 Type Item ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!Name                 !!Type       !!Default !!Description &lt;br /&gt;
|-&lt;br /&gt;
| '''ImageFile'''         || ''String''  || &amp;quot; &amp;quot;      || The image file to be loaded.&lt;br /&gt;
|-&lt;br /&gt;
| '''CanBeDropped'''      || ''Bool''    || True     || If it should be possible to drop the item.&lt;br /&gt;
|-&lt;br /&gt;
| '''NameCat'''           || ''String''  || &amp;quot; &amp;quot;      || Translation Category for name.&lt;br /&gt;
|-&lt;br /&gt;
| '''NameEntry'''         || ''String''  || &amp;quot; &amp;quot;      || Translation Entry for name.&lt;br /&gt;
|-&lt;br /&gt;
| '''DescCat'''           || ''String''  || &amp;quot; &amp;quot;      || Translation Category for description.&lt;br /&gt;
|-&lt;br /&gt;
| '''DescEntry'''         || ''String''  || &amp;quot; &amp;quot;      || Translation Entry for description.&lt;br /&gt;
|-&lt;br /&gt;
| '''ItemType'''          || ''String''  || &amp;quot;Normal&amp;quot; || Type of Item, different types of items see below for possible values.&lt;br /&gt;
|-&lt;br /&gt;
| '''HasCount'''          || ''Bool''    || False    || If the item has a count, ie it only takes up one slot.&lt;br /&gt;
|-&lt;br /&gt;
| '''Count'''             || ''Int''     || 1        || If the items has a count this specifies how much the count increases.&lt;br /&gt;
|-&lt;br /&gt;
| '''PickUpSound'''       || ''String''  || &amp;quot;player_pickup_generic&amp;quot; || The sound that is played when the item is picked.&lt;br /&gt;
|-&lt;br /&gt;
| '''HudModelFile'''       || ''String''  || &amp;quot; &amp;quot; || The hud file to be used.&lt;br /&gt;
|-&lt;br /&gt;
| '''HudModelName'''       || ''String''  || &amp;quot; &amp;quot; || The name of the object in the hud file.&lt;br /&gt;
|-&lt;br /&gt;
| '''EnterFlashDist'''       || ''Float'' || 3     || The Distance at which an item can flash.&lt;br /&gt;
|-&lt;br /&gt;
| '''ExitFlashDist'''       || ''Float''  || 6     || The distance at which the flash will be reset and it might flash again (when in sight and near enough).&lt;br /&gt;
|-&lt;br /&gt;
| '''SkipRayCheck'''       || ''Bool''    || False || Skips the ray check when doing flashes.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 6.3.9.1 Different types of Items =====&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!ItemType!! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''Normal''' ||  Regular items, as it's default you do not need to add an ItemType to the GAME unless you are going to specify any of the below.&lt;br /&gt;
|-&lt;br /&gt;
| '''Note''' ||  Note item that will be added to notebook, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Normal&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Map''' ||  Map item that will be added to map folder, this type was canceled but might still be functional.&lt;br /&gt;
|-&lt;br /&gt;
| '''Battery''' ||  Battery item, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Battery&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Throw''' ||  A throwable object like the dynamite that can be wielded and charged to throw, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Dynamite&amp;quot;/SubType=&amp;quot;DogFood&amp;quot; .&lt;br /&gt;
|-&lt;br /&gt;
| '''Flashlight''' ||  Flashlight item that will run on batteries, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Normal&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''GlowStick''' ||  Light item that will last indefinitely, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Normal&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Flare''' ||  Light item that will burn out, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Flare&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Food''' ||  Eatable, do not think it has been used at all. But it should be there.. maybe.&lt;br /&gt;
|-&lt;br /&gt;
| '''Painkillers''' ||  A health item that restores the players health, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Health&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''WeaponMelee''' ||  An item that can be wielded and swung around, is a Type=&amp;quot;Item&amp;quot;, SubType=&amp;quot;Normal&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_9&amp;diff=6399</id>
		<title>HPL1/Content Creation Chapter 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_9&amp;diff=6399"/>
		<updated>2023-03-31T08:05:11Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 9.1 Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 9 Heads-Up Display files ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 9.1 Intro ===&lt;br /&gt;
The Hud Object Editor is a tool that aids you with creating items that can be wielded in-game, this can be anything from a custom lantern, throwable object or even a custom weapon for defending yourself.&lt;br /&gt;
&lt;br /&gt;
Heads-Up Display files are XML files and before editing them it is suggested to read some quick tutorial on XML files. Only very basic XML understanding is needed to edit these files.&lt;br /&gt;
&lt;br /&gt;
The files are divided into different sections, some sections are in all hud files and some are only present in certain hud types.&lt;br /&gt;
&lt;br /&gt;
Prior to editing Heads-Up Display (*.hud) files make sure that the language is set to XML in Notepad++.&lt;br /&gt;
&lt;br /&gt;
The following values are used, note that all types have &amp;quot;&amp;quot; around the value:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''String'''	 || A string of letters. &amp;quot;MyName&amp;quot; or &amp;quot;My_Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Float'''     || A decimal number. &amp;quot;1.04&amp;quot; or &amp;quot;1.04f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Integer'''	 || A number without decimals &amp;quot;-15&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector3'''	 || Three numbers in a row separated by space: &amp;quot;1 1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Boolean'''	 || A data type using &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot; values.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 9.1.1 Prerequisite ====&lt;br /&gt;
In order to use the Hud Object Editor you need the fmod library and the Verdana font. You can download these things from the [[HPL1/Getting_started|Getting Started]] page. The prerequisites archive also contains an offline version of this document as well as some other last minute information, should the wiki ever go down for whatever reason.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Toss the fmod Dynamic Library Link (*.dll) into the redistributable directory of Penumbra and the Verdana TrueType Font into the fonts folder.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Depending on where you installed Penumbra the Drive letter and directory might differ from the following example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The fmod.dll file goes into&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;C:\penumbra2\redist&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
And the TrueType Font goes into&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;C:\penumbra2\redist\fonts&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The program can only be called via Windows' Command Prompt. Grip never made a GUI for the program, you must also be in the redistributable directory when calling the program.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
==== 9.1.2 Invocation ====&lt;br /&gt;
In the Windows Command Prompt, change the directory to the folder and drive where you have penumbra installed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;cd C:\penumbra2\redist&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Then, load the Collada file (*.dae) while invoking the program. File extension isn't necessary.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;hudobjecteditor my_model&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The program will then fire up while using the HPL engines resource configuration file to search and index all directories currently written to it.&lt;br /&gt;
Your model file and the accompanying materials for it can be placed anywhere you like so long as it's within the reach of the resource.cfg file.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Use the [[HPL1/Content_Creation_Chapter_5|HPL Helper]] program to add new directories or type them out manually with something like Notepad++.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Hud Object Editor ===&lt;br /&gt;
When you first fire up the program, you'll notice that it's very similar to the Model Viewer program. The controls are the same asides from a few minor changes.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Left Mouse Button:'''||Dolly around.&lt;br /&gt;
|-&lt;br /&gt;
|'''Middle Mouse Button:'''||Zoom in/out.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Switch to viewer camera.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Switch to Player camera.&lt;br /&gt;
|-&lt;br /&gt;
|'''A and Z:'''||Rotate models along the X axis. (A rotates up Z rotates down)&lt;br /&gt;
|-&lt;br /&gt;
|'''S and X:'''||Rotate models along the Y axis. (S rotates counter-clockwise X rotates clockwise)&lt;br /&gt;
|-&lt;br /&gt;
|'''D and C:'''||Rotate models along the Z axis. (D rotates left C rotates right)&lt;br /&gt;
|-&lt;br /&gt;
|'''P:'''||Prints the axis information to the Hud Object Editor log file to be used when creating the Heads-up Display (*.hud) file.&lt;br /&gt;
|-&lt;br /&gt;
|'''Arrow keys:'''||Moves the model in the respective directions. (Up, Left, Right, Down etc.)&lt;br /&gt;
|-&lt;br /&gt;
|'''Page Up:'''||Move item forward.&lt;br /&gt;
|-&lt;br /&gt;
|'''Page Down:'''||Move item backward.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 9.2.1 Heads-Up Display reference file ====&lt;br /&gt;
Below you will find a sample that will help you define a HUD file.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Use the Hud Object Editor to print the XYZ axis position and rotation values and then paste it to the Equip and Unequip roations and positions.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can print multiple axis values without having to close the program down each time.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The Sound Entity (*.snt), Particle System (*.ps) and Entity (*.ent) files don't need their extensions when being referenced.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
MAIN must always be present to define and reference the items to be used.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
THROW is used for items with the Throw type.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
MELEE is used for miscellanous stuff, not needed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
ATTACK is only used for WeaponMelee types. It defines various weapon information like how much damage it can deal, starting position and so forth.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For example: if the item is a &amp;quot;Throw&amp;quot; type, you get rid of the ATTACK tags.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When you're finished, create a new text file and rename the extension from .txt to .hud and then copypaste the stuff below into it to be used in-game.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HUD_MODEL&amp;gt;&lt;br /&gt;
	&amp;lt;MAIN&lt;br /&gt;
		Name = &amp;quot;String, name of the item (for example: Meat, Lantern)&amp;quot;&lt;br /&gt;
		Type = &amp;quot;Valid types are Throw and WeaponMelee, remove this line if object is neither&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ModelFile = &amp;quot;String, name of a valid Collada (*.dae) file to be used, must include extension as well when referencing (I.E banana.dae)&amp;quot;&lt;br /&gt;
		EquipTime = Float, how long it takes to draw the item.&lt;br /&gt;
		UnequipTime = Float, how long it takes to holster the item.&lt;br /&gt;
&lt;br /&gt;
		EquipPose_Pos = &amp;quot;Vector3, XYZ position of the item when drawn&amp;quot;&lt;br /&gt;
		EquipPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when drawn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		UnequipPose_Pos = &amp;quot;Vector3, XYZ position of the item when holstered&amp;quot;&lt;br /&gt;
		UnequipPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when holstered&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		EquipSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when drawing the item&amp;quot;&lt;br /&gt;
		UnequipSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when holstering the item&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;MELEE&lt;br /&gt;
	 	DrawDebug = &amp;quot;Boolean, whether or not to display debug information for the Haptic hardware&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	 	HapticSize = &amp;quot;Vector3, this was meant to be utilized by the Novint Falcon controller with Reachin Technologies' HaptX API but remains unused&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;ATTACK&lt;br /&gt;
	 	Name = &amp;quot;String, name of the item (for example: SwingLeft, SwingRight, Poke)&amp;quot;&lt;br /&gt;
	 	&lt;br /&gt;
	 	StartPose_Pos = &amp;quot;Vector3, XYZ position of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		StartPose_Rot =	&amp;quot;Vector3, XYZ rotation of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		EndPose_Pos = &amp;quot;Vector3, XYZ position of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		EndPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackLength = &amp;quot;Float, how fast or slow the attack animation should play&amp;quot;&lt;br /&gt;
		ChargeLength = &amp;quot;Float, how fast or slow the charge animation should play&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		TimeOfAttack = &amp;quot;Float, how long it takes before the attack begins&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MaxImpulse = &amp;quot;Integer, maximum impulse&amp;quot;&lt;br /&gt;
		MinImpulse = &amp;quot;Integer, minimum impulse&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinMass = &amp;quot;Integer, minimum mass&amp;quot;&lt;br /&gt;
		MaxMass = &amp;quot;Integer, maximum mass&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
		MinDamage = &amp;quot;Integer, minimum damage dealt&amp;quot;&lt;br /&gt;
		MaxDamage = &amp;quot;Integer, maximum damage dealt&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		SpinMul = &amp;quot;Vector3, If the weapon spinning should be multiplied to the forward/backward force when moving the mouse up/down&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		DamageRange = &amp;quot;Float, how far the damage can be dealt&amp;quot;&lt;br /&gt;
		DamageSize = &amp;quot;Vector3, how large the damage area is in XYZ axis format (0 0 0)&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackRange = &amp;quot;Float, how far the attack range is&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackSpeed = &amp;quot;Integer, speed of the attack&amp;quot;&lt;br /&gt;
		AttackStrength = &amp;quot;Integer, strength of the attack&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		HitPS = &amp;quot;String, the Particle System (*.ps) file to be used when the weapon hits something&amp;quot;&lt;br /&gt;
		HitPSPrio = Integer, set Particle priority&lt;br /&gt;
		&lt;br /&gt;
		SwingSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when swinging the weapon&amp;quot;&lt;br /&gt;
		ChargeSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when charging the weapon&amp;quot;&lt;br /&gt;
		HitSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when the weapon hits something&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;THROW&lt;br /&gt;
	 	ChargePose_Pos = &amp;quot;Vector3, XYZ position of the item when being prepared to be thrown&amp;quot;&lt;br /&gt;
	 	ChargePose_Rot = &amp;quot;Vector3, XYZ rotation of the item when being prepared to be thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ChargeTime = &amp;quot;Integer, how long it takes to prepare the item to be thrown&amp;quot;&lt;br /&gt;
		MinImpulse = &amp;quot;Integer, minimum impulse given when thrown&amp;quot;&lt;br /&gt;
		MaxImpulse = &amp;quot;Integer, maximum impulse given when thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ReloadTime = &amp;quot;Float, how fast it takes to draw another batch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Torque = &amp;quot;Vector3, set rotation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ThrowEntity = &amp;quot;String, the entity (*.ent) file to be used when the item is thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ChargeSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when charging the item&amp;quot;&lt;br /&gt;
		ThrowSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when throwing the item&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
&amp;lt;/HUD_MODEL&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6398</id>
		<title>HPL1/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6398"/>
		<updated>2023-03-30T16:44:31Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* Modding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't expect them to work error free under anything higher than Windows Vista either.}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Before troubleshooting==&lt;br /&gt;
Make sure you meet the minimum requirements and that all of your drivers are up-to-date.&lt;br /&gt;
&lt;br /&gt;
'''MINIMUM SYSTEM REQUIREMENTS'''&amp;lt;br&amp;gt;&lt;br /&gt;
Windows XP/2000 or Vista&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows 95/NT not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Ghz CPU&amp;lt;br&amp;gt;&lt;br /&gt;
512 Mb RAM&amp;lt;br&amp;gt;&lt;br /&gt;
1GB Disk Space&amp;lt;br&amp;gt;&lt;br /&gt;
CD-ROM&amp;lt;br&amp;gt;&lt;br /&gt;
ATI Radeon 8500/NVidia GeForce3 Ti&amp;lt;br&amp;gt;&lt;br /&gt;
(Geforce 4MX not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
Keyboard and mouse&lt;br /&gt;
&lt;br /&gt;
==Main game issues==&lt;br /&gt;
&lt;br /&gt;
===The game will not start, what is happening?===&lt;br /&gt;
1. Check that you meet the minimum requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Make sure that you have the latest drivers for your graphics card.&lt;br /&gt;
&lt;br /&gt;
===The graphics have strange artefacts or look weird in some other way.===&lt;br /&gt;
1. Make sure that you have the latest drivers for your graphics card.&amp;lt;br&amp;gt;&lt;br /&gt;
2. If you have an ATI card try turning off the A.I. optimisation option in Catalyst Center.&amp;lt;br&amp;gt;&lt;br /&gt;
3. If you have [http://www.stardock.com/products/windowblinds/wb5/ StarDock WindowBlinds 5] installed, try turning it off.&lt;br /&gt;
&lt;br /&gt;
===Why is there no audio?===&lt;br /&gt;
1. Make sure you have the latest drivers for your soundcard.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try resetting the audio settings in the control panel.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Check and make sure your speakers are turned on.&lt;br /&gt;
&lt;br /&gt;
===The game is very slow. How can I make it faster?===&lt;br /&gt;
1. Choose a lower resolution in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try choosing a lower shader quality in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Turn off post effects in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Turn off shadows in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Make sure you have the latest drivers for your graphics card!&lt;br /&gt;
&lt;br /&gt;
===None of these answers help me!===&lt;br /&gt;
Go to http://support.frictionalgames.com to get more information, but please keep in mind that offical support has long since ceased for these products.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modding==&lt;br /&gt;
&lt;br /&gt;
===Viewers not scaling===&lt;br /&gt;
The HPL1 viewer windows cannot be scaled with the mouse. When you first run one of the viewers HPL Helper will create a little file in your Penumbra root directory called &amp;lt;code&amp;gt;viewer_settings.cfg&amp;lt;/code&amp;gt; the file is in the XML format.&amp;lt;br&amp;gt;&lt;br /&gt;
You edit this file to change how the viewers behave. For example, you can change whether or not they will start in fullscreen or a certain resolution and whether or not the viewers framerate should synchronize to your monitor's refresh rate.&lt;br /&gt;
&lt;br /&gt;
Changing the settings affects the following programs:&lt;br /&gt;
*HudObjectEditor&lt;br /&gt;
*ModelViewer&lt;br /&gt;
*ParticleViewer&lt;br /&gt;
*SceneViewer&lt;br /&gt;
&lt;br /&gt;
===Game not executing scripts===&lt;br /&gt;
If you start the game with your custom map and script and nothing happens then you most likely have one too many errors in your script file that prevents it from being executed. Check the hpl.log file in your Penumbra root directory to see what errors are causing this fuss.&lt;br /&gt;
&lt;br /&gt;
===Custom assets crash the Model Viewer===&lt;br /&gt;
1. You most likely forgot to assign a proper material to the model or didn't create a Material (*.mat) file with the accompanying texture.&amp;lt;br&amp;gt;&lt;br /&gt;
2. The Entity (*.ent) file used lacks a collider. All entities must have a body of some kind in order to function in-game.&amp;lt;br&amp;gt;&lt;br /&gt;
3. You're most likely trying to use a modern version of either Maya, 3D Studio or Blender. Unfortunately no modern alternative seems to work as the game uses a very old Collada specification for its models.&amp;lt;br&amp;gt;&lt;br /&gt;
4. You didn't specify the file path for your model. Use the [[HPL1/Content_Creation_Chapter_5#5.2.1_Resource_Directories|HPL Helper]] program to define the paths and write them to the &amp;lt;code&amp;gt;resources.cfg&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
===libtheora.dll was not found===&lt;br /&gt;
In the highly unlikely event that you have an old retail copy of Penumbra: Overture, you will receive this error message if you try to use the HPL1 viewers. Download the latest update patch [https://fricpub.s3.amazonaws.com/updates/penumbra_overture_1.1u.exe here] to fix this.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6397</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6397"/>
		<updated>2023-03-30T14:30:38Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5.4 Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
Convert does nothing.&lt;br /&gt;
&lt;br /&gt;
The following keys are used inside the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D:'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse:'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7:'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8:'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9:'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though. You have 32 audio channels to work with.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.8 Translation===&lt;br /&gt;
This section allows you to create and edit your language files. A language file is an XML file that contains text that should appear in-game as well as other places throughout. Depending on the entries and categories, this could be the text used in the main menu or for describing various objects in the game world. These descriptions are usually called via script.&lt;br /&gt;
&lt;br /&gt;
'''Translation File:'''&amp;lt;br /&amp;gt;This allows you to save and open a language (*.lang) file, prior to editing make sure that you click the &amp;quot;Save As&amp;quot; button first before any work is to be done!&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&amp;lt;br /&amp;gt;Allows you to add, rename or remove a text category. It can be anything like MainMenu, Notebook, Global, Items, etc.&lt;br /&gt;
&lt;br /&gt;
'''Entry:'''&amp;lt;br /&amp;gt;The entry is used to name your text depending on how it will be used (I.E AlkoholDesc), categories are used a way to organize these entries without losing track. You can add, remove and rename entries.&lt;br /&gt;
&lt;br /&gt;
'''Text Entry:'''&amp;lt;br /&amp;gt;You type words into this big white box, this defines the actual text to be displayed in-game.&lt;br /&gt;
&lt;br /&gt;
'''Name:'''&amp;lt;br /&amp;gt;Allows you to change the name of a text entry if you're not happy with it or made a typo somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6396</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6396"/>
		<updated>2023-03-30T14:28:19Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5.4 Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
Convert does nothing.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D:'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse:'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7:'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8:'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9:'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though. You have 32 audio channels to work with.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.8 Translation===&lt;br /&gt;
This section allows you to create and edit your language files. A language file is an XML file that contains text that should appear in-game as well as other places throughout. Depending on the entries and categories, this could be the text used in the main menu or for describing various objects in the game world. These descriptions are usually called via script.&lt;br /&gt;
&lt;br /&gt;
'''Translation File:'''&amp;lt;br /&amp;gt;This allows you to save and open a language (*.lang) file, prior to editing make sure that you click the &amp;quot;Save As&amp;quot; button first before any work is to be done!&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&amp;lt;br /&amp;gt;Allows you to add, rename or remove a text category. It can be anything like MainMenu, Notebook, Global, Items, etc.&lt;br /&gt;
&lt;br /&gt;
'''Entry:'''&amp;lt;br /&amp;gt;The entry is used to name your text depending on how it will be used (I.E AlkoholDesc), categories are used a way to organize these entries without losing track. You can add, remove and rename entries.&lt;br /&gt;
&lt;br /&gt;
'''Text Entry:'''&amp;lt;br /&amp;gt;You type words into this big white box, this defines the actual text to be displayed in-game.&lt;br /&gt;
&lt;br /&gt;
'''Name:'''&amp;lt;br /&amp;gt;Allows you to change the name of a text entry if you're not happy with it or made a typo somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_4&amp;diff=6395</id>
		<title>HPL1/Content Creation Chapter 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_4&amp;diff=6395"/>
		<updated>2023-03-30T14:27:14Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 4.4 Physics material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==4. Creating Materials==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===4.1 Types===&lt;br /&gt;
Instead of creating materials for your self, like one usually does in 3d modeling programs, a couple of predefined materials are used. What needs to be filled out are the different maps used.&lt;br /&gt;
&lt;br /&gt;
'''Settings for General'''&amp;lt;br /&amp;gt;Use Alpha: Never implemented.&amp;lt;br /&amp;gt;Depth Test: Never Implemented.&amp;lt;br /&amp;gt;Value: Does nothing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.1 Flat====&lt;br /&gt;
This material shows the diffuse map without any lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.2 Additive====&lt;br /&gt;
This transparent material is blended additively with the background.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Result = source_pixel + screen_pixel''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is not affected by lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====4.1.3 Modulative====&lt;br /&gt;
This transparent material is multiplied with the background.&amp;lt;br /&amp;gt;&lt;br /&gt;
''Result = source_pixel *  screen_pixel''&amp;lt;br /&amp;gt;&lt;br /&gt;
It is not affected by lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.4 Modulative x 2====&lt;br /&gt;
This transparent material is multiplied with the background times two, like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
''Result = (source_pixel * screen_pixel) * 2''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is not affected by lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.5 Alpha====&lt;br /&gt;
Each texel on the texture is transperant according to the alpha channel on the texture.&amp;lt;br /&amp;gt;&lt;br /&gt;
It is not affected by lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.6 Diffuse====&lt;br /&gt;
The diffuse map with lighting.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse and Illumination (optional).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.7 DiffuseSpecular====&lt;br /&gt;
The diffuse map with lighting and specular term. Does not have any support for specular map.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse and Illumination (optional).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.8 Bump====&lt;br /&gt;
This material shows the diffuse map with a bump mapped surface.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse, Normal-Map and Illumination (optional).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.9 BumpSpecular====&lt;br /&gt;
This material shows the diffuse map with a bump mapped surface and specular term. The alpha channel of the normal map is used as specular map.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse, Normal-Map and Illumination (optional).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.1.10 BumpColorSpecular====&lt;br /&gt;
This material shows the diffuse map with a bump mapped surface and a color specular term.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse, Normal-Map, Specular and Illumination (optional).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====4.1.11 EnvironmentMapReflect====&lt;br /&gt;
This material shows the diffuse map with a environment reflection from a CubeMap.&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse and CubeMap.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====4.1.12 Water====&lt;br /&gt;
This transparent material is blended additively with the background. It also has a bobbing surface.&lt;br /&gt;
&lt;br /&gt;
Result = source_pixel + screen_pixel&lt;br /&gt;
&lt;br /&gt;
It is not affected by lighting&amp;lt;br /&amp;gt;'''Texture units:''' Diffuse.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.2 Texture units===&lt;br /&gt;
The different material types uses texture units to calculate the value of pixel. Each texture units have the following properties:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Type:'''||The type of texture, 1D, 2D and Cube can be used. Normally only 2D is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mipmaps:'''||If mipmaps should be created for the texture and should be used for most textures.&lt;br /&gt;
|-&lt;br /&gt;
|'''Compress:'''||If hardware compression should be used if available. (Not supported yet).&lt;br /&gt;
|-&lt;br /&gt;
|'''Wrap:'''||The wrap mode to use when drawing the texture, “Repeat” means texture is tiled. “Clamp” means that uv-values above 1 and below 0 are clamped. Useful on for example flat objects with transparent edges. “ClampToEdge” is the same as “Clamp” but does not blend with the opposite edge.&lt;br /&gt;
|-&lt;br /&gt;
|'''Anim mode:'''||How to play an animation, looping or bouncing back and forth with oscillation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Frame time:'''||How long an image should be displayed in an image sequence, 1 = 1 image / second, 2 = 1 image / 2 seconds, 0.2 = 5 images / second etc.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.2.1 Diffuse====&lt;br /&gt;
The r,g and b channels contain the color values. The alpha channel is used for transparent materials.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.2.2 Normal-Map====&lt;br /&gt;
This is a map showing the topology of a surface in tangent space. The r,g and b channels contain the compressed normal vectors. The alpha channel is used for specifying the specular term for specular material, 0= no specularity 1 = full specularity.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.2.3 Illumination====&lt;br /&gt;
This map is additively added after all lights has been rendered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
====4.2.4 Specular====&lt;br /&gt;
The r,g and b channels are used to create a specular effect. The whiter the shinier, black = no shine.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====4.2.5 CubeMap====&lt;br /&gt;
''Cube map texturing is a form of texture mapping that uses a 3D direction vector (a fancy phrase that means nothing more than a direction) to index into a texture that is six square 2D textures arranged like the faces of a cube. See [http://developer.nvidia.com/object/cube_map_ogl_tutorial.html this cube map tutorial] for extensive information on it's construction.''&lt;br /&gt;
&lt;br /&gt;
The CubeMap is used to create a &amp;quot;reflection&amp;quot; of the environment in a texture, for example the ice in the ice cave level in penumbra. &lt;br /&gt;
&lt;br /&gt;
For the HPL engine you make the 6 images as separate images, and you name them:&amp;lt;br /&amp;gt;nameofimage_neg_x&amp;lt;br /&amp;gt;nameofimage_neg_y&amp;lt;br /&amp;gt;nameofimage_neg_z&amp;lt;br /&amp;gt;nameofimage_pos_x&amp;lt;br /&amp;gt;nameofimage_pos_y&amp;lt;br /&amp;gt;nameofimage_pos_z&amp;lt;br /&amp;gt;&lt;br /&gt;
In the material editor under Texture Units at the file prompt: you add one of the images and only use the &amp;quot;nameofimage&amp;quot; excluding &amp;quot;_neg_x&amp;quot;, the engine will then automatically locate and use the 6 images.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===4.3 File format===&lt;br /&gt;
Material files has the extension “.mat”, are made in XML and has the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&amp;gt;&lt;br /&gt;
&amp;lt;Main Type=&amp;quot;[material type]&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;TextureUnits&amp;gt;&lt;br /&gt;
&amp;lt;[Texture unit] File=&amp;quot;[file name]&amp;quot; Type =&amp;quot;[type]&amp;quot; Mipmaps=&amp;quot;[true or false]&amp;quot; Compress=&amp;quot;[true or false]&amp;quot; Wrap=&amp;quot;[wrap mode]&amp;quot;/&amp;gt;&lt;br /&gt;
[additional texture units…]&lt;br /&gt;
&amp;lt;/TextureUnits&amp;gt;&lt;br /&gt;
&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of handwriting these files HplHelper can be used to create material files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===4.4 Physics material===&lt;br /&gt;
This is gives the material physical properties as well. Read more about the different types under [[HPL1/Content_Creation_Chapter_5#5.6_Physics_Materials|chapter 5.6]]. Note that this property is only useful for static scene geometry and is NOT used for entities, entities specify their physics material in the entity file.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6394</id>
		<title>HPL1/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6394"/>
		<updated>2023-03-30T09:37:09Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* Custom assets crash the Model Viewer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't expect them to work error free under anything higher than Windows Vista either.}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Before troubleshooting==&lt;br /&gt;
Make sure you meet the minimum requirements and that all of your drivers are up-to-date.&lt;br /&gt;
&lt;br /&gt;
'''MINIMUM SYSTEM REQUIREMENTS'''&amp;lt;br&amp;gt;&lt;br /&gt;
Windows XP/2000 or Vista&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows 95/NT not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Ghz CPU&amp;lt;br&amp;gt;&lt;br /&gt;
512 Mb RAM&amp;lt;br&amp;gt;&lt;br /&gt;
1GB Disk Space&amp;lt;br&amp;gt;&lt;br /&gt;
CD-ROM&amp;lt;br&amp;gt;&lt;br /&gt;
ATI Radeon 8500/NVidia GeForce3 Ti&amp;lt;br&amp;gt;&lt;br /&gt;
(Geforce 4MX not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
Keyboard and mouse&lt;br /&gt;
&lt;br /&gt;
==Main game issues==&lt;br /&gt;
&lt;br /&gt;
===The game will not start, what is happening?===&lt;br /&gt;
1. Check that you meet the minimum requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Make sure that you have the latest drivers for your graphics card.&lt;br /&gt;
&lt;br /&gt;
===The graphics have strange artefacts or look weird in some other way.===&lt;br /&gt;
1. Make sure that you have the latest drivers for your graphics card.&amp;lt;br&amp;gt;&lt;br /&gt;
2. If you have an ATI card try turning off the A.I. optimisation option in Catalyst Center.&amp;lt;br&amp;gt;&lt;br /&gt;
3. If you have [http://www.stardock.com/products/windowblinds/wb5/ StarDock WindowBlinds 5] installed, try turning it off.&lt;br /&gt;
&lt;br /&gt;
===Why is there no audio?===&lt;br /&gt;
1. Make sure you have the latest drivers for your soundcard.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try resetting the audio settings in the control panel.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Check and make sure your speakers are turned on.&lt;br /&gt;
&lt;br /&gt;
===The game is very slow. How can I make it faster?===&lt;br /&gt;
1. Choose a lower resolution in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try choosing a lower shader quality in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Turn off post effects in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Turn off shadows in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Make sure you have the latest drivers for your graphics card!&lt;br /&gt;
&lt;br /&gt;
===None of these answers help me!===&lt;br /&gt;
Go to http://support.frictionalgames.com to get more information, but please keep in mind that offical support has long since ceased for these products.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modding==&lt;br /&gt;
&lt;br /&gt;
===Viewers not scaling===&lt;br /&gt;
The HPL1 viewer windows cannot be scaled with the mouse. When you first run one of the viewers HPL Helper will create a little file in your Penumbra root directory called &amp;lt;code&amp;gt;viewer_settings.cfg&amp;lt;/code&amp;gt; the file is in the XML format.&amp;lt;br&amp;gt;&lt;br /&gt;
You edit this file to change how the viewers behave. For example, you can change whether or not they will start in fullscreen or a certain resolution and whether or not the viewers framerate should synchronize to your monitor's refresh rate.&lt;br /&gt;
&lt;br /&gt;
Changing the settings affects the following programs:&lt;br /&gt;
*HudObjectEditor&lt;br /&gt;
*ModelViewer&lt;br /&gt;
*ParticleViewer&lt;br /&gt;
*SceneViewer&lt;br /&gt;
&lt;br /&gt;
===Game not executing scripts===&lt;br /&gt;
If you start the game with your custom map and script and nothing happens then you most likely have one too many errors in your script file that prevents it from being executed. Check the hpl.log file in your Penumbra root directory to see what errors are causing this fuss.&lt;br /&gt;
&lt;br /&gt;
===Custom assets crash the Model Viewer===&lt;br /&gt;
1. You most likely forgot to assign a proper material to the model or didn't create a Material (*.mat) file with the accompanying texture.&amp;lt;br&amp;gt;&lt;br /&gt;
2. The Entity (*.ent) file used lacks a collider. All entities must have a body of some kind in order to function in-game.&amp;lt;br&amp;gt;&lt;br /&gt;
3. You're most likely trying to use a modern version of either Maya, 3D Studio or Blender. Unfortunately no modern alternative seems to work as the game uses a very old Collada specification for its models.&amp;lt;br&amp;gt;&lt;br /&gt;
4. You didn't specify the file path for your model. Use the [[HPL1/Content_Creation_Chapter_5#5.2.1_Resource_Directories|HPL Helper]] program to define the paths and write them to the &amp;lt;code&amp;gt;resources.cfg&amp;lt;/code&amp;gt; file.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6393</id>
		<title>HPL1/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6393"/>
		<updated>2023-03-30T09:23:39Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* Custom assets crash the Model Viewer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't expect them to work error free under anything higher than Windows Vista either.}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Before troubleshooting==&lt;br /&gt;
Make sure you meet the minimum requirements and that all of your drivers are up-to-date.&lt;br /&gt;
&lt;br /&gt;
'''MINIMUM SYSTEM REQUIREMENTS'''&amp;lt;br&amp;gt;&lt;br /&gt;
Windows XP/2000 or Vista&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows 95/NT not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Ghz CPU&amp;lt;br&amp;gt;&lt;br /&gt;
512 Mb RAM&amp;lt;br&amp;gt;&lt;br /&gt;
1GB Disk Space&amp;lt;br&amp;gt;&lt;br /&gt;
CD-ROM&amp;lt;br&amp;gt;&lt;br /&gt;
ATI Radeon 8500/NVidia GeForce3 Ti&amp;lt;br&amp;gt;&lt;br /&gt;
(Geforce 4MX not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
Keyboard and mouse&lt;br /&gt;
&lt;br /&gt;
==Main game issues==&lt;br /&gt;
&lt;br /&gt;
===The game will not start, what is happening?===&lt;br /&gt;
1. Check that you meet the minimum requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Make sure that you have the latest drivers for your graphics card.&lt;br /&gt;
&lt;br /&gt;
===The graphics have strange artefacts or look weird in some other way.===&lt;br /&gt;
1. Make sure that you have the latest drivers for your graphics card.&amp;lt;br&amp;gt;&lt;br /&gt;
2. If you have an ATI card try turning off the A.I. optimisation option in Catalyst Center.&amp;lt;br&amp;gt;&lt;br /&gt;
3. If you have [http://www.stardock.com/products/windowblinds/wb5/ StarDock WindowBlinds 5] installed, try turning it off.&lt;br /&gt;
&lt;br /&gt;
===Why is there no audio?===&lt;br /&gt;
1. Make sure you have the latest drivers for your soundcard.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try resetting the audio settings in the control panel.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Check and make sure your speakers are turned on.&lt;br /&gt;
&lt;br /&gt;
===The game is very slow. How can I make it faster?===&lt;br /&gt;
1. Choose a lower resolution in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try choosing a lower shader quality in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Turn off post effects in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Turn off shadows in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Make sure you have the latest drivers for your graphics card!&lt;br /&gt;
&lt;br /&gt;
===None of these answers help me!===&lt;br /&gt;
Go to http://support.frictionalgames.com to get more information, but please keep in mind that offical support has long since ceased for these products.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modding==&lt;br /&gt;
&lt;br /&gt;
===Viewers not scaling===&lt;br /&gt;
The HPL1 viewer windows cannot be scaled with the mouse. When you first run one of the viewers HPL Helper will create a little file in your Penumbra root directory called &amp;lt;code&amp;gt;viewer_settings.cfg&amp;lt;/code&amp;gt; the file is in the XML format.&amp;lt;br&amp;gt;&lt;br /&gt;
You edit this file to change how the viewers behave. For example, you can change whether or not they will start in fullscreen or a certain resolution and whether or not the viewers framerate should synchronize to your monitor's refresh rate.&lt;br /&gt;
&lt;br /&gt;
Changing the settings affects the following programs:&lt;br /&gt;
*HudObjectEditor&lt;br /&gt;
*ModelViewer&lt;br /&gt;
*ParticleViewer&lt;br /&gt;
*SceneViewer&lt;br /&gt;
&lt;br /&gt;
===Game not executing scripts===&lt;br /&gt;
If you start the game with your custom map and script and nothing happens then you most likely have one too many errors in your script file that prevents it from being executed. Check the hpl.log file in your Penumbra root directory to see what errors are causing this fuss.&lt;br /&gt;
&lt;br /&gt;
===Custom assets crash the Model Viewer===&lt;br /&gt;
1. You most likely forgot to assign a proper material to the model or didn't create a Material (*.mat) file with the accompanying texture.&amp;lt;br&amp;gt;&lt;br /&gt;
2. The Entity (*.ent) file used lacks a collider. All entities must have a body of some kind in order to function in-game.&amp;lt;br&amp;gt;&lt;br /&gt;
3. You're most likely trying to use a modern version of either Maya, 3D Studio or Blender. Unfortunately no modern alternative seems to work as the game uses a very old Collada specification for its models.&amp;lt;br&amp;gt;&lt;br /&gt;
4. You didn't specify the file path your model. use the [[HPL1/Content_Creation_Chapter_5#5.2.1_Resource_Directories|HPL Helper]] program to define the paths and write them to the &amp;lt;code&amp;gt;resources.cfg&amp;lt;/code&amp;gt; file.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6392</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6392"/>
		<updated>2023-03-29T20:27:54Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 1.3 File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Lets you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&lt;br /&gt;
The large Save and View Particle System button displays your particle how it will look in-game.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Tools&amp;diff=6391</id>
		<title>HPL1/Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Tools&amp;diff=6391"/>
		<updated>2023-03-29T20:15:07Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: Created page with &amp;quot;{{note|The HPL1 engine did not have a dedicated editor for creating custom maps, you have to create them with a 3D editor like Maya or 3D Studio MAX.}}&amp;lt;br&amp;gt; {| class=&amp;quot;wikitable...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|The HPL1 engine did not have a dedicated editor for creating custom maps, you have to create them with a 3D editor like Maya or 3D Studio MAX.}}&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; scope=&amp;quot;row&amp;quot; |Editors&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_9|Hud Object Editor]]'''||Should the player weld a glowstick? Or perhaps a lantern? Why not a pickaxe or a crowbar to defend yourself?&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sounds]]'''||What's that sound? Oh, it's just the vending machine.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle_Editor|Particle Editor]]'''||Create Particle Systems to give your levels some life.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_4|Materials]]'''||Defines how a texture should look and sound.&lt;br /&gt;
|-&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|'''Translation''']]||Helper tool to build, edit, and translate language files.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; scope=&amp;quot;row&amp;quot; |Viewers&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_5#5.4_Scenes|Scene Viewer]]'''||See how your level will look in-game without having to constantly run the game. A useful tool for checking portal optimization.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_5#5.3_Models|Model Viewer]]'''||Play around with your custom entities and get basic in-game interaction with them.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle_Editor|Particle Viewer]]'''||Lets you view your Particle Systems.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6390</id>
		<title>HPL1</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6390"/>
		<updated>2023-03-29T19:58:16Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''Welcome to the HPL1 documentation hub.'''&amp;lt;br&amp;gt;Here you can find extensive documentation about the engine, including downloads for various tools and tutorials on how to create your own [[HPL1/Getting_started|mods]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|It's difficult to do anything with Penumbra: Overture and Penumbra: Black Plague as it requires using old software and learning a great deal before anything useful can be made. Take the time to read through the documentation and familiarize yourself with the tools.}}&lt;br /&gt;
{{note|Overture and Black plague are identical scripting-wise but differ with enemy types. Black Plague introduced the infected character whereas Overture can't load those in-game.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em auto 0; text-align:center; width:400px;&amp;quot;&amp;gt;[[File:Hpl1:Hpl1_logo_retro.png|250px|link=|HPL1]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em;&amp;quot;&amp;gt;'''[[HPL1/Tools|Development Tools]] | [[HPL1/Troubleshooting|Troubleshooting]]'''&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=&amp;quot;250&amp;quot; heights=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
File:overture-header.jpg&lt;br /&gt;
File:BP-header.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|'''[[HPL1/Getting_started|&amp;lt;center&amp;gt;Getting started&amp;lt;/center&amp;gt;]]''' &lt;br /&gt;
|Start here, you must also download some important files before anything useful can be made&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation|&amp;lt;center&amp;gt;Modding&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create various different things, from entities to materials.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Script_Reference|&amp;lt;center&amp;gt;Script Functions&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|See a list of all available script functions for the Penumbra games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_2|&amp;lt;center&amp;gt;Modeling&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Import, export, add and modify 3D models for the game&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_6|&amp;lt;center&amp;gt;Entities&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own entity files with the power of Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_4|&amp;lt;center&amp;gt;Materials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Use the Material Editor to combine texture maps to create materials&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle Editor|&amp;lt;center&amp;gt;Effects&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own visual effects with the HPL1 Particle Editor&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Tutorials|&amp;lt;center&amp;gt;Tutorials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Official step-by-step guides on a variety of topics, created by Frictional Games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Third party tools|&amp;lt;center&amp;gt;Third-Party Tools&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Useful developer tools&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Glossary|&amp;lt;center&amp;gt;Glossary&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Explanations for terms you may encounter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
__NOTOC____NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6389</id>
		<title>HPL1/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6389"/>
		<updated>2023-03-29T19:21:58Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't expect them to work error free under anything higher than Windows Vista either.}}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Before troubleshooting==&lt;br /&gt;
Make sure you meet the minimum requirements and that all of your drivers are up-to-date.&lt;br /&gt;
&lt;br /&gt;
'''MINIMUM SYSTEM REQUIREMENTS'''&amp;lt;br&amp;gt;&lt;br /&gt;
Windows XP/2000 or Vista&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows 95/NT not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Ghz CPU&amp;lt;br&amp;gt;&lt;br /&gt;
512 Mb RAM&amp;lt;br&amp;gt;&lt;br /&gt;
1GB Disk Space&amp;lt;br&amp;gt;&lt;br /&gt;
CD-ROM&amp;lt;br&amp;gt;&lt;br /&gt;
ATI Radeon 8500/NVidia GeForce3 Ti&amp;lt;br&amp;gt;&lt;br /&gt;
(Geforce 4MX not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
Keyboard and mouse&lt;br /&gt;
&lt;br /&gt;
==Main game issues==&lt;br /&gt;
&lt;br /&gt;
===The game will not start, what is happening?===&lt;br /&gt;
1. Check that you meet the minimum requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Make sure that you have the latest drivers for your graphics card.&lt;br /&gt;
&lt;br /&gt;
===The graphics have strange artefacts or look weird in some other way.===&lt;br /&gt;
1. Make sure that you have the latest drivers for your graphics card.&amp;lt;br&amp;gt;&lt;br /&gt;
2. If you have an ATI card try turning off the A.I. optimisation option in Catalyst Center.&amp;lt;br&amp;gt;&lt;br /&gt;
3. If you have [http://www.stardock.com/products/windowblinds/wb5/ StarDock WindowBlinds 5] installed, try turning it off.&lt;br /&gt;
&lt;br /&gt;
===Why is there no audio?===&lt;br /&gt;
1. Make sure you have the latest drivers for your soundcard.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try resetting the audio settings in the control panel.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Check and make sure your speakers are turned on.&lt;br /&gt;
&lt;br /&gt;
===The game is very slow. How can I make it faster?===&lt;br /&gt;
1. Choose a lower resolution in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try choosing a lower shader quality in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Turn off post effects in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Turn off shadows in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Make sure you have the latest drivers for your graphics card!&lt;br /&gt;
&lt;br /&gt;
===None of these answers help me!===&lt;br /&gt;
Go to http://support.frictionalgames.com to get more information, but please keep in mind that offical support has long since ceased for these products.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modding==&lt;br /&gt;
&lt;br /&gt;
===Viewers not scaling===&lt;br /&gt;
The HPL1 viewer windows cannot be scaled with the mouse. When you first run one of the viewers HPL Helper will create a little file in your Penumbra root directory called &amp;lt;code&amp;gt;viewer_settings.cfg&amp;lt;/code&amp;gt; the file is in the XML format.&amp;lt;br&amp;gt;&lt;br /&gt;
You edit this file to change how the viewers behave. For example, you can change whether or not they will start in fullscreen or a certain resolution and whether or not the viewers framerate should synchronize to your monitor's refresh rate.&lt;br /&gt;
&lt;br /&gt;
Changing the settings affects the following programs:&lt;br /&gt;
*HudObjectEditor&lt;br /&gt;
*ModelViewer&lt;br /&gt;
*ParticleViewer&lt;br /&gt;
*SceneViewer&lt;br /&gt;
&lt;br /&gt;
===Game not executing scripts===&lt;br /&gt;
If you start the game with your custom map and script and nothing happens then you most likely have one too many errors in your script file that prevents it from being executed. Check the hpl.log file in your Penumbra root directory to see what errors are causing this fuss.&lt;br /&gt;
&lt;br /&gt;
===Custom assets crash the Model Viewer===&lt;br /&gt;
1. You most likely forgot to assign a proper material to the model or didn't create a Material (*.mat) file with the accompanying texture.&amp;lt;br&amp;gt;&lt;br /&gt;
2. The Entity (*.ent) file used lacks a collider. All entities must have a body of some kind in order to function in-game.&amp;lt;br&amp;gt;&lt;br /&gt;
3. You're most likely trying to use a modern version of either Maya, 3D Studio or Blender. Unfortunately no modern alternative seems to work as the game uses a very old Collada specification for its models.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6388</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6388"/>
		<updated>2023-03-29T19:18:54Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 2.9 Life */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Let's you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&lt;br /&gt;
The large Save and View Particle System button displays your particle how it will look in-game.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6387</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6387"/>
		<updated>2023-03-29T19:18:35Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 2.9 Life */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Let's you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&lt;br /&gt;
The large Save and View Particle System button displays your particle how it will look in-game.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_3&amp;diff=6386</id>
		<title>HPL1/Content Creation Chapter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_3&amp;diff=6386"/>
		<updated>2023-03-29T18:53:08Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 3.13 Beams */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==3. Creating maps==&lt;br /&gt;
&lt;br /&gt;
Maps in the HPL-Engine are created using rooms and portals to limit the amount of objects being rendered and the system works something like this:&lt;br /&gt;
&lt;br /&gt;
1. First it is check what rooms the camera (player) is in. This is checked by using the bounding boxes of the rooms. A bounding box is generated by the engine by the making an axis aligned box that exactly covers all the vertices of the main room geometry. Axis aligned means that the height is parallel to the y-axis, width to the x-axis and depth to the z-axis. The boxes are '''not''' rotated in any way. The bounding boxes can be seen when pressing 2 in the sceneviewer. The rooms camera are in a placed in a render list.&lt;br /&gt;
&lt;br /&gt;
2. When the engine has determined what rooms the camera is in then it starts checking what portals can be seen in these rooms. This checking only checks the field of view and cannot see if any object is blocking a portal.&lt;br /&gt;
&lt;br /&gt;
3. For each portal that can be seen, the engine checks what room the portal connects to and then it places this room in a render list (if the room is all ready in the list, it is skipped).&lt;br /&gt;
&lt;br /&gt;
4. In the connected room the engine checks what portals the portal that lead to this room can see, then checks if they are in the field of view of the camera. If a portal is claimed visible then it is looped from point 3. This continues until no portals are left to check.&lt;br /&gt;
&lt;br /&gt;
===3.1 Rooms===&lt;br /&gt;
&lt;br /&gt;
When making maps you must divide the entire map into rooms. A room can be an outdoor area, a corridor, several rooms, a room (off course), etc. To make a room in Maya all the main objects (more on this later) in the room should be grouped in a “_room#” group, # being a string of characters, for example: “_room1C”, “_room3F4”,”_roomDeath”, etc. Note that the “_” character is '''forbidden to use in the name except as a starting character, which is a must.'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to do this is to create all the main geometry for the room with the prefix “room” + room number + “_” (i.e. room1_pBox22) and then place all these under a “_room#” node in the hyper graph editor. '''Do not''' name the objects with the prefix “_room”. All names starting with “_” are special objects and the importer deals with these in a special way.&lt;br /&gt;
&lt;br /&gt;
If all object names in a room has the same prefix it is easy to see in the hyper graph editor if some objects are placed under the wrong node and so on. So do it like this to avoid confusion and more work then needed. In the hyper graph nodes can just be placed under the right room by dragging them with the middle mouse button.&lt;br /&gt;
&lt;br /&gt;
To make this as simple as possible the only things that are needed to be in a room is the '''geometry''' (no lights allowed) defining the room. This means most likely the walls in the room. All other stuff (except the portals) do '''NOT''' have to be placed in the “_room#” group. They will be added to the rooms they are in at load time. ''See below for example.''&lt;br /&gt;
[[File:Room example.jpg|alt=Room illustration|none|thumb|259x259px|Illustrates separation of rooms]]&lt;br /&gt;
&amp;lt;br /&amp;gt;Note that objects that are in two or more rooms at the same time demand some extra cpu power at runtime so avoid this when it is not needed. Note that static geometry can be placed either in a “_room#” group or not (it does not have to be considered main geometry). However, lights and references are '''forbidden''' in room groups!&amp;lt;br /&amp;gt;Another '''very''' important thing is that the bounding boxes of the rooms should not overlap and if it is must then the boxes should overlap as little as possible. Overlapping bounding boxes = major speed loss. ''See below for example.''&lt;br /&gt;
[[File:Bounding example.jpg|alt=Bounding example|none|thumb|318x318px|Bounding example]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.2 Portals===&lt;br /&gt;
&lt;br /&gt;
A Portal is a rectangle that defines the connection between two rooms. A portal must be a one-sided rectangle and cover the hole between two rooms completely. It is not a problem if the portal is bigger than the hole, but it should fit a good as possible. This means that a hole between two rooms can be a round, triangular or any arbitrary form. A rectangle must still be used even if the hole is not rectangular and the hole must be covered 100% even if the fit does not get perfect.&lt;br /&gt;
[[File:Portal01.jpg|alt=Portal01|none|thumb|Portal01]]&lt;br /&gt;
&amp;lt;br /&amp;gt;The portal must be placed in the “_room#” group that it belongs to. The normal of the rectangle must be facing the center of the room it belongs to and '''not''' the room it connects to.&lt;br /&gt;
[[File:Portal02.jpg|none|thumb]]&lt;br /&gt;
&amp;lt;br /&amp;gt;Portals are named “_portal#_room#” + “_#” for each portal that can be seen from this portal.&lt;br /&gt;
&lt;br /&gt;
The first # is the number of the portal; this must be exclusive inside the room the portal is in (i.e. there cannot be two “_portal55” under “_room4”). Two or more rooms may have portals with the same number though (i.e. There may be a “_portal4” under “_room4”, “_room2” and “_room1”).&lt;br /&gt;
&lt;br /&gt;
The next # is the number of the room that the portal connect to, so a portal name could be “_portal2_room4”. This is a portal with the number 2 that connects to “_room4”.&lt;br /&gt;
[[File:Portal03.jpg|none|thumb]]&lt;br /&gt;
The following optional texts are numbers of portals which can be seen from this portal. I.e.: “_portal4_room3_2_34” connects to “_room3” and in room 3 the portals 2 and 34 can be seen. “Can be seen” means that if you where to peak through the portal there is someway that these portals could be visible.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the image above the circumstances are as follows:&lt;br /&gt;
&lt;br /&gt;
*Room 2 - Portal 1 can see portal 2.&lt;br /&gt;
*Room 3 - Portal 1 can see portal 1 and 3.&lt;br /&gt;
*Room 4 - Portal 1 can see portal 2.&lt;br /&gt;
*The portals in room 1 can see no other portals.&lt;br /&gt;
&lt;br /&gt;
The names for the portals will be the following:&lt;br /&gt;
&lt;br /&gt;
*'''Room 2 - Portal 1:'''  “_portal1_room1_2”&lt;br /&gt;
*'''Room 3 - Portal 1:'''  “_portal1_room1_1_3”&lt;br /&gt;
*'''Room 4 - Portal 1:'''  “_portal1_room1_2”&lt;br /&gt;
&lt;br /&gt;
The portals in room 1 will have the following names:&lt;br /&gt;
&lt;br /&gt;
*'''Portal 1:'''  _portal1_room2&lt;br /&gt;
*'''Portal 2:'''  _portal2_room3&lt;br /&gt;
*'''Portal 3:'''  _portal3_room4&lt;br /&gt;
&lt;br /&gt;
Note that the sketch of the portal connections does not have a good design since the bounding boxes of the rooms overlap! This should be avoided if possible (and in the currently version overlapping bounding boxes will probably lead to bugs.)&lt;br /&gt;
[[File:Portal04.jpg|none|thumb]]&lt;br /&gt;
When placing portals it is important that they are that the edge of the room or where two or more room bounding boxes overlap. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Portal05.jpg|none|thumb]]&lt;br /&gt;
The red rectangle above marks where the portals for both rooms should be placed when two rooms lies side by side. Not that the portals are much thicker then what they are in the engine. The reason for this is that player should not be able to be in for example Room 1, be looking at Room 2 and not see the portal belonging to Room1. This means that Room 2 will not be rendered. &amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:Portal06.jpg|none|thumb]]&lt;br /&gt;
As seen in the image above the player is symbolized by the black dot and has sight into the purple room; however the portal is behind the player so the purple room cannot be seen. However if the two rooms overlap so that the edge of the purple room is close to the portal then it is okay! &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As seen in the image above the player is inside the bounding box of the purple room as well so it doesn’t have to have to see the portal. The dark yellow rectangle is where the portal in the purple would be placed.&lt;br /&gt;
&lt;br /&gt;
Note that that the three images above all show bounding boxes and '''not'''  room geometry! Another thing to note is that overlapping bounding boxes should be avoided when possible since it can result in a lot of unnecessary rooms being rendered. When creating maps remember to press 2 in the map viewer to debug and optimize portals and rooms.&lt;br /&gt;
&lt;br /&gt;
===3.3 Lights===&lt;br /&gt;
&lt;br /&gt;
====3.3.1 General====&lt;br /&gt;
&lt;br /&gt;
If the light should be dynamic (this means attenuation, angle or position changes, NOT color change), use the prefix “dynamic” on the light name. I.e.: “dynamic_PointLight1” will be a dynamic light.&lt;br /&gt;
&lt;br /&gt;
Note that lights should not be part of room group hierarchy.&lt;br /&gt;
&lt;br /&gt;
====3.3.2 Point Lights====&lt;br /&gt;
&lt;br /&gt;
Point Lights have the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Attenuation'''||The range of the light.&lt;br /&gt;
|-&lt;br /&gt;
|'''Color'''||The color it casts.&lt;br /&gt;
|-&lt;br /&gt;
|'''Specular'''||How much specular light it emits. 0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''CastsShadow'''||If the light casts shadows or not.&lt;br /&gt;
|-&lt;br /&gt;
|'''FalloffImage'''||The rate at which the light goes from full color to black. Default = linear. This is represented as a 1D image (meaning height is 1). The far left is the max light intensity and the far right is the lowest (should be black). The width must be a power of 2.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Color is set as normally in the 3D editor, but because the collada exporter handles light very badly, attenuation and specular has to be set using the '''scale'''  of the light. This means scale X = attenuation and scale Y = specular. Attenuation has a value from 0 to eternity specular has a value from 0 to 1.&lt;br /&gt;
&lt;br /&gt;
If the light casts shadows or not is also set by the scale. Scale Z 0 means no shadows are cast and 1 means the light casts shadows.&lt;br /&gt;
&lt;br /&gt;
Falloff is set in the light entity file ([[HPL1/Content Creation Chapter 6|light]]).&lt;br /&gt;
&lt;br /&gt;
====3.3.3 Spot Lights====&lt;br /&gt;
&lt;br /&gt;
Spot lights have a few more properties than point lights, these are all of point light’s plus:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''FieldOfView'''||The size in degrees of the cone that casts the light. 0 – 180.&lt;br /&gt;
|-&lt;br /&gt;
|'''Aspect'''||How much larger /smaller the width of the cone is when compared to it’s height. 1 = same size, 0.5 = half size, 2 = double size, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''NearClipPlane'''||Objects under this distance will not be lit. 0 – inf. Normally around 0.1.&lt;br /&gt;
|-&lt;br /&gt;
|'''ProjectionImage'''||This is the image that the light projects, RGB channel represent color of the light and it must have an alpha channel that decides the specular influence. The borders of this must be 100% black and it must have power of 2 size.&lt;br /&gt;
|-&lt;br /&gt;
|'''ProjectionAnimMode'''||If the projection image is an animation and if so the mode used. If it is an animation then the syntax for image is: &amp;lt;br /&amp;gt;[name].[ext]. And then the textures in the animation must be named [name]01.[ext], [name]02.[ext], etc. &amp;lt;br /&amp;gt;Values can be “None”, “Loop” and “Oscillate”.&lt;br /&gt;
|-&lt;br /&gt;
|'''ProjectionFrameTime'''||The time in seconds each frame is shown if it is an animation.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Color and Field of View are set as normal. Attenuation is set using scale X. The rest of the attributes are set in the light entity file, [[HPL1/Content Creation Chapter 6|light]].&lt;br /&gt;
&lt;br /&gt;
'''MAYA TIP:'''  In the light’s locator scale to 55.5 and then set all the scale directions when setting attenuation. Now the arrow of the locator will show the length that light reaches.&lt;br /&gt;
&lt;br /&gt;
====3.3.4 Light Entity file====&lt;br /&gt;
&lt;br /&gt;
Light entity file lets you set some general properties for a light. The syntax is like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;LIGHTENTITY&amp;gt;&lt;br /&gt;
&amp;lt;MAIN&lt;br /&gt;
ProjectionImage = &amp;quot;my_image.ext&amp;quot;&lt;br /&gt;
    [other variables with the same names as above]&lt;br /&gt;
&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/LIGHTENTITY&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extension of these files must be “lnt”.&lt;br /&gt;
&lt;br /&gt;
The properties in the file will over-write previous values (such as those set in the editor). All of the properties, except ProjectionImage, can be excluded and will then be given default values.&lt;br /&gt;
&lt;br /&gt;
To set a light entity file to a light use the following syntax when naming the light in the editor:&lt;br /&gt;
&lt;br /&gt;
'''[dynamic (optional)] [ _ ] [entityfile] [ _ ] [lightname]'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''dynamic'''||Add “dynamic” infront of the name if the light is going to cross other portals other than the one it starts in.&lt;br /&gt;
|-&lt;br /&gt;
|'''entityfile'''||The name of the light entity file. May contain “_” in the file name.&lt;br /&gt;
|-&lt;br /&gt;
|'''lightname'''||The name of the light.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples: &amp;lt;br /&amp;gt;'''dynamic_mylight''' &amp;lt;br /&amp;gt;Will create a light that is going to move and does not have any entity file.&lt;br /&gt;
&lt;br /&gt;
'''dynamic_my_light_file_mylight''' &amp;lt;br /&amp;gt;This is a dynamic light that loads data from “my_light_file.lnt” and is named “mylight”.&lt;br /&gt;
&lt;br /&gt;
'''my_light_file_mylight''' &amp;lt;br /&amp;gt;This is a static light that loads data from “my_light_file.lnt” and is named “mylight”.&lt;br /&gt;
&lt;br /&gt;
===3.4 References===&lt;br /&gt;
&lt;br /&gt;
References are used to add external objects to the map.&lt;br /&gt;
&lt;br /&gt;
When referencing to an object you '''must''' use a special reference file and it is '''very important''' that the file only contains '''one''' object. If not the referencing will fail. This special reference file will be called '''reference object''' (and nothing else) for the duration of this chapter.&lt;br /&gt;
&lt;br /&gt;
Another extremely important thing is that the reference object looks exactly the same in size and placement as the file you want to reference to. It may not contain any rotation, scale or translation and if the model needs to have an offset the it is very important that the pivot is at (0,0,0) in the reference object. When you reference to a file the engine will place the referenced file with its origo at the reference object’s pivot. This is one reason why you should always try to center your object in the model file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;'''Maya references'''&amp;lt;/u&amp;gt; &amp;lt;br /&amp;gt;In the options for “create reference” lock and group must be unchecked. When creating further copies of the reference remember to have set to instancing in “duplicate” options. Also turn off namespaces and be sure to name the node in the reference object correctly and with a unique name!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;'''Max Xref'''&amp;lt;/u&amp;gt; &amp;lt;br /&amp;gt;Simply create an xref to the reference object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;'''Naming'''&amp;lt;/u&amp;gt; &amp;lt;br /&amp;gt;NOTE: When naming the several grouped objects, it is the group that must be named! You can also create references by just importing normal geometry and naming it correctly (note that the imported geometry only should be one object or several objects in group). The syntax is the following:&amp;lt;br /&amp;gt;'''_ref_[file]_[name]'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''file'''||The entity file to load. This may contain “_” and must not contain any extension (i.e. “.ent”).&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||The name of the object in the game world.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;'''_ref_wooden_box01_Box01''' &amp;lt;br /&amp;gt;This will create an entity for the file “wooden_box01.ent” and it will have the name “Box01”.&lt;br /&gt;
&lt;br /&gt;
Below are descriptions of the different reference types. (Read this as if there is only one type of object you can reference to and that is the '''entity'''.)&lt;br /&gt;
&lt;br /&gt;
'''''See the [[HPL1/Tutorials/Introduction|following tutorial]] for an explanation of entities, how they work and why.'' '''&lt;br /&gt;
&lt;br /&gt;
====3.4.1 Static models====&lt;br /&gt;
&lt;br /&gt;
'''Do not read this! This is only for the programmer’s reference. Ignore as if it didn’t exist!''' &amp;lt;br /&amp;gt;''The name of the reference has the prefix “static_”. This should only be used for animated static geometry on the map such as fans, machinery, etc. For non animated static geometry normal geometry should be used. The animation for these models must not change during run time and they must be placed in such a way that they never touch more rooms during animation then they do in bind pose. The referenced Maya .mb file must have the same name as the model file (.msh, .dae, etc) that you want added to the map.''&lt;br /&gt;
====3.4.2 Entities====&lt;br /&gt;
&lt;br /&gt;
The name of the reference doesn’t need any prefix. Any name will do. These are things like monsters, item, etc. It is what ever the game wants them to be. These references (the referenced .mb file name) do not refer to model files but rather an entity file. The entity has the extension “.ent” and is a simple text XML file. This xml file can contain info that is mostly game specific.&lt;br /&gt;
&lt;br /&gt;
''As an example'', a _ref_my_woodbox01_box01 reference added in the 3D editor does '''not''' point to a model file named my_woodbox01.dae/.mb/.3ds etc, it points to a .ent file named my_woodbox01.ent and this file contains the properties, special functions AND also contains information on what model file to use for the reference!&lt;br /&gt;
&lt;br /&gt;
More on this in [[HPL1/Content Creation Chapter 6|entity files]].&lt;br /&gt;
&lt;br /&gt;
===3.5 Name parameters===&lt;br /&gt;
&lt;br /&gt;
Because some options are unavailable (or unexportable) in 3D editors, some settings have to be set by adding certain text to the names of objects. A parameter is written with a “_” in front of it and '''can not''' be the first text in the name. For example:&lt;br /&gt;
&lt;br /&gt;
“Ball04_noshadow_nocollide”&amp;lt;br /&amp;gt;“Ball04_noshadow_”&amp;lt;br /&amp;gt;are both legal.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;“_nocollide_Ball04” is '''not legal!''' But you can write ““nocollide_Ball04” by '''exluding the _'''.&amp;lt;br /&amp;gt;The following is a list of the parameters all objects types can have.&lt;br /&gt;
&lt;br /&gt;
Geometry / References:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''noshadow'''||No shadows are cast from this object.&lt;br /&gt;
|-&lt;br /&gt;
|'''nodraw'''||The object will not be visible but it's mesh will be used as a collider.&lt;br /&gt;
|-&lt;br /&gt;
|'''nocollide'''||Nothing will collide with this object.&lt;br /&gt;
|-&lt;br /&gt;
|'''nocharcollide'''||Objects will collide with it but not the player.&lt;br /&gt;
|-&lt;br /&gt;
|'''nosoundblock'''||Sound will be unaltered through this object&lt;br /&gt;
|-&lt;br /&gt;
|'''soundblock'''||Sound will be lower through this object.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Colliders:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''soundblock'''||Sound will be lower through this collider, example: _collider_box_collider1_soundblock.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===3.6 Animations===&lt;br /&gt;
&lt;br /&gt;
Never use animations directly in maps, instead reference to static object or to entities with animations.&lt;br /&gt;
&lt;br /&gt;
===3.7 Colliders===&lt;br /&gt;
&lt;br /&gt;
Colliders are added in exactly the same way as described in [[HPL1/Content Creation Chapter 2|chapter 2.4]]. There are some differences though. One is that all geometry will be turned in to collideable meshes unless the “nocollide” parameter is specified, so if you want to simplify, for example, a statue mesh, the statue mesh must have the “nocollide” argument.&lt;br /&gt;
&lt;br /&gt;
Another difference is that colliders in a scene (static, imported models) are not linked with any entity like ones in a model file (referenced models) and therefore do not have any physics material linked to them. This means that if you want the collider to have a physics material other than “Default” you '''must'''  assign a material (a material with texture and stuff) to it. This material should then have the physics material you want to use. For example if you want to make a simplified collider for a statue (or maybe several colliders) you should assign the same material as the statue to the collider(s).&lt;br /&gt;
&lt;br /&gt;
When creating maps there is an '''additional collider called “_charcollider”'''  that can be used. This collider will collide only with the player character, which can be useful if you want to block the players path but not have objects bounce of something invisible.&lt;br /&gt;
&lt;br /&gt;
===3.8 Sound Entities===&lt;br /&gt;
&lt;br /&gt;
Sound entities are use to place sounds on the map. To palce one is really easy. Just name any node (geometry or dummy object):&lt;br /&gt;
&lt;br /&gt;
'''_sound_[entity file]_[name]'''&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''entity file'''||An “snt”-file containing data for the sound. More about this in the [[HPL1/Content Creation|| HPLHelper chapter]]. Note that this name may have “_” in it! And DO NOT specify the extension (.snt).&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||This is what the sound entity will be called in game.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Examples: &amp;lt;br /&amp;gt;'''_sound_test_drops_mysound1'''&lt;br /&gt;
&lt;br /&gt;
This will create a sound entity named “mysound1” that uses the file “test_drops.snt”.&lt;br /&gt;
&lt;br /&gt;
===3.9 Sound blockers===&lt;br /&gt;
&lt;br /&gt;
Sound is blocked by certain bodies in the world. When the sound is blocked by something it gets lower just like in the real world. These are the “rules” that apply for sound blockers:&lt;br /&gt;
&lt;br /&gt;
*All geometry that is collideable and part of a room group is automatically set as a sound blocker. This is all the geometry that defines a rooms bounding box. If one of these objects should not be a sound blocker then the parameter “nosoundblock” must be used!&lt;br /&gt;
*All other objects and entities that are not apart of the room group are automatically assigned as '''none'''  sound blocking. If you want one of these object to block sound you must use the “soundblock” parameter or set “BlocksSound” in the entity file to “true”.&lt;br /&gt;
*As default Scene colliders (not colliders in models) are '''none'''  sound blocking. Setting the parameter “soundblock” will turn sound blocking on.&lt;br /&gt;
&lt;br /&gt;
===3.10 Start positions===&lt;br /&gt;
&lt;br /&gt;
These are used to set where in the world the player/camera should start. Any object can be used to specify a start position the only important thing is the naming which has to be:&lt;br /&gt;
&lt;br /&gt;
'''_start_[name]'''&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''name'''||The in game name of the start position. May contain “_”.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example: '''_start_my_start1'''&lt;br /&gt;
&lt;br /&gt;
This creates a start position with the name “my_start1”.&lt;br /&gt;
&lt;br /&gt;
To specify direction just rotate the object, scale may not be used! If no rotation is set the player/camera will look down the negative z-axis (y-axis for 3ds users).&lt;br /&gt;
&lt;br /&gt;
===3.11 Areas===&lt;br /&gt;
&lt;br /&gt;
Areas can be used for several engine and game specific tasks. The syntax is:&lt;br /&gt;
&lt;br /&gt;
'''_area_[type (optional)]_[name]'''&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''type'''||This is game specific information, should be “script” mostly though. See [[HPL1/Script Reference|| script reference]] for scripts that uses specific types.&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||This is the area the start will have when you try to access it.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Types'''&lt;br /&gt;
&lt;br /&gt;
*script - The regular area type for most scripts.&lt;br /&gt;
*damage - Specfic area to be used with certain scripts dealing with damage to player, entites and objects. Properties set by script.&lt;br /&gt;
*liquid - Specific area for setting up liquids(water and so on). Properties set by script.&lt;br /&gt;
*stick - An area that will let other objects “stick” to it, used for specific stick scripts. Properties set by script.&lt;br /&gt;
*force - An area that will apply a force to the player, entities and objects in it. Properties set by script.&lt;br /&gt;
*link - An area that will trigger the loading of a new level/same level with a new starting point.&lt;br /&gt;
*save - Will save the game when the player interacts with it.&lt;br /&gt;
*ladder - Attaches the player when he interacts with it, the positioning, size and rotation gives the ladder it's main functions. Specific sounds and such is set by script.&lt;br /&gt;
*mess - An area that displays an examination message. This can also be done by script on a normal area/entity.&lt;br /&gt;
&lt;br /&gt;
special syntax for this area: '''_area_mess_cat_entry_name'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
cat = translation file category.&lt;br /&gt;
entry = translation file entry.&lt;br /&gt;
name = optional, for uses of scripting &amp;quot;cat_entry_name&amp;quot; is used.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An area is created in exactly the same way as you would create a box collider. Mostly the area doesn’t need the material though.&lt;br /&gt;
&lt;br /&gt;
If the area does not have a type then it is only considered an engine area and will not have any game specific propose.&lt;br /&gt;
&lt;br /&gt;
===3.12 Billboards===&lt;br /&gt;
&lt;br /&gt;
Billboards are rectangles that always faces the camera, these can be used for a lot of things like light flares, grass, etc. The syntax for placing a billboard is the following:&lt;br /&gt;
&lt;br /&gt;
'''_bb_[entity file]_[name]'''&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''entity file'''||Entity file containing data about the billboard, may contain “_”.&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||The name that will be used in game.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Scale x is width, scale y height and scale z offset (might help to use a 1,1,1 box has place holder to get a hunch in the editor how it will look in game). The orientation (rotation) defines the axis of the billboard (this is only used for Axis-billboards).&lt;br /&gt;
&lt;br /&gt;
The entity file looks like this and is a file with the extension “.bnt”:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BILLBOARD&amp;gt;&lt;br /&gt;
&amp;lt;MAIN&lt;br /&gt;
Material = &amp;quot;my material.mat&amp;quot;&lt;br /&gt;
    [other variables with the same names as below]&lt;br /&gt;
&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/BILLBOARD&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It may contain the following variables:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Material'''||The material (.mat file) that the billboard has. ''String''&lt;br /&gt;
|-&lt;br /&gt;
|'''Type'''||The type of billboard. “Point” or “Axis”. Point means the billboard is rotated around its center and axis means that it is rotated round its axis. ''String''&lt;br /&gt;
|-&lt;br /&gt;
|'''UseOffset'''||If the billboard should be offset closer to the camera when rendering. ''Boolean''.&lt;br /&gt;
|-&lt;br /&gt;
|'''IsHalo'''||If the billboards is a halo. This means that it will loose strength if the source is blocked from view. ''Boolean''&lt;br /&gt;
|-&lt;br /&gt;
|'''HaloSourceIsParent'''||If the parent entity of the billboard (must be a submesh) will act as light halo source. ''Boolean''&lt;br /&gt;
|-&lt;br /&gt;
|'''HaloSourceSize'''||If the parent is not source then this will use as size of the source. Center of the source is the position of the billboard. ''Vector3''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important halo information: There can only be '''one'''  billboard attached per submesh!&lt;br /&gt;
&lt;br /&gt;
===3.13 Beams===&lt;br /&gt;
&lt;br /&gt;
Beams is a flat image that is repeated from a start to an end point creating for example a laser beam. The syntax for placing a beam is the following:&lt;br /&gt;
&lt;br /&gt;
'''_beam_[file]_[name]'''  &amp;lt;br /&amp;gt;'''_beamend_[name]'''&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''file'''||The entity file containing data about the beam, may contain “_” in the name.&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||The name that will be used in game.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A beam is made up of two parts in the editor, one _beam for the start position and one _beamend for the end position. It's important that the beamend has the same name as the beam.&lt;br /&gt;
&lt;br /&gt;
The entity file looks like this and is a file with the extension “.beam”:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BEAM&amp;gt;&lt;br /&gt;
&amp;lt;MAIN&lt;br /&gt;
Material = &amp;quot;my material.mat&amp;quot;&lt;br /&gt;
    [other variables with the same names as below]&lt;br /&gt;
&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/BEAM&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It may contain the following variables:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Material'''||The material (.mat file) that the beam has. ''String''&lt;br /&gt;
|-&lt;br /&gt;
|'''Size'''||“X Y” X = the thickness of the line, width of texture used. Y = the length that one texture height takes. ''Vector2''&lt;br /&gt;
|-&lt;br /&gt;
|'''TileHeight'''||If Size X should be used and texture tiled. ''Boolean''&lt;br /&gt;
|-&lt;br /&gt;
|'''MultiplyAlphaWithColor'''||If the color should be multiplied by alpha. Makes some things simpler. ''Boolean''&lt;br /&gt;
|-&lt;br /&gt;
|'''StartColor'''||“R G B A” Color at start. ''Vector4''&lt;br /&gt;
|-&lt;br /&gt;
|'''EndColor'''||“R G B A” Color at end. ''Vector4''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===3.14 Particle systems===&lt;br /&gt;
&lt;br /&gt;
Particle systems are used for effect such as fire, smoke, etc. The syntax for placing a particle system is:&lt;br /&gt;
&lt;br /&gt;
'''_ps_[particle system name]_[name]'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''particle system name'''||Entity file containing data about the billboard, may contain “_”.&lt;br /&gt;
|-&lt;br /&gt;
|'''name'''||The name that will be used in game.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Particle systems are created with the Particle Editor, which is [[HPL1/Editors/Particle Editor|documented here]] and a tutorial is [[HPL1/Tutorials/Particles|available here]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===3.15 Workflow===&lt;br /&gt;
&lt;br /&gt;
What follows is a suggestion on the workflow used when creating a map for the HPL engine.&lt;br /&gt;
&lt;br /&gt;
[MORE ON THIS LATER]&lt;br /&gt;
&lt;br /&gt;
===3.16 Optimizations===&lt;br /&gt;
&lt;br /&gt;
The following “tips” are very important to follow as good as possible since they can improve the framerate quite a lot.&lt;br /&gt;
&lt;br /&gt;
*Set small objects to “noshadow”, since shadows on smaller objects are not noticeable.&lt;br /&gt;
*Set “noshadow” on objects that cannot cast a shadow on anything. This is for example a floofor  if there is no floor below. Think about this when designing maps and quite some framerate can be gained.&lt;br /&gt;
*Do not let several large objects that are not close together be apart of the same mesh object. This is for example the 4 walls in a room. Separate these so they are 4 individual objects instead of '''one'''.&lt;br /&gt;
*While it is bad to put many BIG objects together. It is really good to put many small together. If you have 20 static cans spread over the floor in a room it is a lot better to collapse them all together to a single object ('''beware''': grouping is '''not'''  the same as collapsing, Maya word for this is unify). However do not collapse several small objects that are spread over an entire level. The objects should be close together (like on the same floor in a room.&lt;br /&gt;
*The number of lights is not the biggest problem. The biggest problem is '''overlapping'''  lights. Overlapping means that the bounding boxes from 2 lights intersect. Try to have at most 3 overlapping lights and mostly 2 lights overlapping. If the lights don’t cast shadows it is okay if more lights overlap.&lt;br /&gt;
*Highpoly meshes should have collisions turned off and use colliders to simulate the shape.&lt;br /&gt;
&lt;br /&gt;
===3.17 Issues===&lt;br /&gt;
&lt;br /&gt;
*If a room is totally self contained (like a cube with the sides inverted) then the shadows will be messed up. You can fix this by detaching one of the walls or just turn off shadows for the room. Since no shadows will be visible from the room turning of the shadows is the best bet.&lt;br /&gt;
*Two faces in the same object may '''not'''  share the same vertices, even if the order is inverted! This means that double sided polygons are not supported! This only applies to geometry that cast shadows though.&lt;br /&gt;
*An edge may only have '''one'''  or '''two'''  faces! If this is not followed shadows will be messed up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6385</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6385"/>
		<updated>2023-03-29T18:33:07Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 1 Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Let's you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&lt;br /&gt;
The large Save and View Particle System button displays your particle how it will look in-game.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6384</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6384"/>
		<updated>2023-03-29T18:32:42Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 1 Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Let's you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.4 Emitters===&lt;br /&gt;
This section allows you to view a list of all the currently available emitters in your particle file as well as Add, Copy and remove emitters.&lt;br /&gt;
The large Save and View Particle System button displays your particle how it will look in-game.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.5 Room===&lt;br /&gt;
*Show Room - Here you can choose whether or not the Particle Viewer program should render a small room around the particle that you're currently viewing.&lt;br /&gt;
*Room size - This defines how large said room should be. Default settings are 6x6x6&lt;br /&gt;
&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6383</id>
		<title>HPL1/Editors/Particle Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Editors/Particle_Editor&amp;diff=6383"/>
		<updated>2023-03-29T18:22:54Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL1/Content Creation Chapter 6 HPL Particle Editor=&lt;br /&gt;
&lt;br /&gt;
==1 Introduction==&lt;br /&gt;
This is the guide for the HPL-Particle editor which is a tool for creating various particle effects.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.1 Min and Max values===&lt;br /&gt;
A lot of values in the editor have both a min and max. This means that when the value is set to a particle a value between min and max is randomly selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.3 File===&lt;br /&gt;
*New - Creates a new particle system and resets all the settings to default.&lt;br /&gt;
*Save - Saves your settings to the currently opened Particle System (*.ps) file.&lt;br /&gt;
*Save as... - Allows you to save your particle under a different name.&lt;br /&gt;
*Open - Let's you open particle files.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
==2 Parameters==&lt;br /&gt;
===2.1. General===&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;The name of the emitter currently selected.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Max Particles'''&amp;lt;br /&amp;gt;The maximum number of particles that can be alive at once. When this limit is reached no more particles willl be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particles per Second'''&amp;lt;br /&amp;gt;The number of particles per second that will be created.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Start time offset'''&amp;lt;br /&amp;gt;Time offset in seconds before the emitter starts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Respawn dead particles'''&amp;lt;br /&amp;gt;If dead particles should be respawned.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Warm up time'''&amp;lt;br /&amp;gt;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”.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause'''&amp;lt;br /&amp;gt;A pause is a break during which no particles are created. Particles are updated though.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Length'''&amp;lt;br /&amp;gt;The length of the pauses, 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Pause Interval'''&amp;lt;br /&amp;gt;The length between pauses. 0 and 0 means that there are no pauses.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset position'''&amp;lt;br /&amp;gt;How the emitter is offset relative to its starting positon.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Offset angle'''&amp;lt;br /&amp;gt;How to particle system is offset relative to its start angles.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.2 Rendering===&lt;br /&gt;
'''Draw Type'''&amp;lt;br /&amp;gt;The different ways in which the particles can be draw to screen.&amp;lt;br /&amp;gt;Point: The particle is a point and will always be pointing towards the camera.&amp;lt;br /&amp;gt;Line: The particle is aligned in the direction in which the particle is travelling.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Multiply RGB with Alpha'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size'''&amp;lt;br /&amp;gt;The size of the particle. This is the value used in the fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Size Fading'''&amp;lt;br /&amp;gt;See 1.2 for instructions on fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.3 Collision===&lt;br /&gt;
'''Use Collision'''&amp;lt;br /&amp;gt;If collision detection should be used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Update Rate'''&amp;lt;br /&amp;gt;How many times a second collision is check for each particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum Collisions'''&amp;lt;br /&amp;gt;The maximum amount of collions can have before dying.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Bounce Amount'''&amp;lt;br /&amp;gt;How much of the speed is retained when bouncing. 0.5 means half of the speed. 2 means that the speed doubles when bouncing.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.4 Beam Specific===&lt;br /&gt;
This was meant to create and handle [[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]] files, never implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.5 Rotation===&lt;br /&gt;
'''Use Particle Spinning'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around themselves.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spin Type'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Type for the particle spinning. Can be:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Constant'''&amp;lt;br /&amp;gt;&lt;br /&gt;
A value will be picked from the spin velocity range at random.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Movement'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The rotation will be linked to how fast the particle is moving.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Particle spin velocity range (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Spin velocity for constant spin type. About 6.283 radians is a single spin.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Use Revolution'''&amp;lt;br /&amp;gt;&lt;br /&gt;
If enabled, particles will rotate around some axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Revolution Velocity (rad/s)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
3D Vector that will determine the axis and rotation speed for particles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.6 Start===&lt;br /&gt;
'''Start type'''&amp;lt;br /&amp;gt;Sets what method to use to generate the start position of the particles in the emitter.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere start'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;[[File:spherestart.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.7 Color===&lt;br /&gt;
''NOTE: all of the colour channels have values from 0 -1.''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Color'''&amp;lt;br /&amp;gt;This sets the colour of the particle.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Fading'''&amp;lt;br /&amp;gt;Settings for fading the colour. See chapter 1.2 for fading.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.8 Movement===&lt;br /&gt;
'''Velocity type'''&amp;lt;br /&amp;gt;The way in which the starting velocity is generated.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Box velocity'''&amp;lt;br /&amp;gt;The same as box start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sphere Velocity'''&amp;lt;br /&amp;gt;The same as sphere start but with velocity instead.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Coord system'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Uses direction'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Type'''&amp;lt;br /&amp;gt;The type of gravity being applied to the particles.&amp;lt;br /&amp;gt;None: No gravity it applied.&amp;lt;br /&amp;gt;Vector: The gravity acceleration is applied.&amp;lt;br /&amp;gt;Centre: The particles are drawn towards the centre of the particle system with Gravity Acceleration Y as acceleration.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Gravity Acceleration'''&amp;lt;br /&amp;gt;Used differently according by the gravity type.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Acceleration'''&amp;lt;br /&amp;gt;Accleration applied to all bodies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Speed multiplier'''&amp;lt;br /&amp;gt;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.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Maximum speed'''&amp;lt;br /&amp;gt;The maximum speed that the particles can reach.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===2.9 Life===&lt;br /&gt;
'''Lifespan'''&amp;lt;br /&amp;gt;Time in seconds that the particle will live.&lt;br /&gt;
'''Death Type'''&amp;lt;br /&amp;gt;Type of death for the particles. Only Age can be selected.&lt;br /&gt;
'''PS created at death'''&amp;lt;br /&amp;gt;Particle System to be spawned when the particle dies. Could be used to loop particle creations.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.10 Material===&lt;br /&gt;
'''File'''&amp;lt;br /&amp;gt;The material file to use.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Number of Files'''&amp;lt;br /&amp;gt;The number of material files used. Normally this should just be one, but in some cases an animation needed is spread out over several material files. When using several material files these must be name “[name]01.mat”, “[name]02.mat”, etc. Also the file text must be just “[name]”. So if the files are called “test01.mat”, “test02.mat”, etc it must say “test” in the file field.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Animation length'''&amp;lt;br /&amp;gt;The number of seconds the animation lasts, if the particle lives longer than this time, the animation is looped.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division'''&amp;lt;br /&amp;gt;This is used in order to animate individual particles (when using several files, the material for all particles are changed at the same time). It can also be used for more variety among particles. The sub divisoion is set up by specifying how the texture is to be split and then setting how the particles will be assigned to a sub division. The splitting is like this:&amp;lt;br /&amp;gt;[[File:subdiv.jpg]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Amount'''&amp;lt;br /&amp;gt;The number of divisons on each axis.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Sub Division Type'''&amp;lt;br /&amp;gt;How the subdivisions are assigned to the particles.&amp;lt;br /&amp;gt;Random: A division is randomly picked.&amp;lt;br /&amp;gt;Animation: During the life time of an object it has all the subdivisions. Starting in the upper left corning and ending in the lower right.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==3 Tutorials==&lt;br /&gt;
[[HPL1/Tutorials/Particles|See tutorial 4]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6382</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6382"/>
		<updated>2023-03-29T15:24:10Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D:'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse:'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7:'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8:'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9:'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.4.1 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though. You have 32 audio channels to work with.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.8 Translation===&lt;br /&gt;
This section allows you to create and edit your language files. A language file is an XML file that contains text that should appear in-game as well as other places throughout. Depending on the entries and categories, this could be the text used in the main menu or for describing various objects in the game world. These descriptions are usually called via script.&lt;br /&gt;
&lt;br /&gt;
'''Translation File:'''&amp;lt;br /&amp;gt;This allows you to save and open a language (*.lang) file, prior to editing make sure that you click the &amp;quot;Save As&amp;quot; button first before any work is to be done!&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&amp;lt;br /&amp;gt;Allows you to add, rename or remove a text category. It can be anything like MainMenu, Notebook, Global, Items, etc.&lt;br /&gt;
&lt;br /&gt;
'''Entry:'''&amp;lt;br /&amp;gt;The entry is used to name your text depending on how it will be used (I.E AlkoholDesc), categories are used a way to organize these entries without losing track. You can add, remove and rename entries.&lt;br /&gt;
&lt;br /&gt;
'''Text Entry:'''&amp;lt;br /&amp;gt;You type words into this big white box, this defines the actual text to be displayed in-game.&lt;br /&gt;
&lt;br /&gt;
'''Name:'''&amp;lt;br /&amp;gt;Allows you to change the name of a text entry if you're not happy with it or made a typo somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6381</id>
		<title>HPL1/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Troubleshooting&amp;diff=6381"/>
		<updated>2023-03-29T15:09:57Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: Created page with &amp;quot;Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please keep in mind that these games are VERY old (2007/2008) and official support has long since ceased, if you need help with the games please refer to the FAQ below. Don't expect them to work error free under anything higher than Windows Vista either.&lt;br /&gt;
&lt;br /&gt;
==Before troubleshooting==&lt;br /&gt;
Make sure you meet the minimum requirements and that all of your drivers are up-to-date.&lt;br /&gt;
&lt;br /&gt;
'''MINIMUM SYSTEM REQUIREMENTS'''&amp;lt;br&amp;gt;&lt;br /&gt;
Windows XP/2000 or Vista&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows 95/NT not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Ghz CPU&amp;lt;br&amp;gt;&lt;br /&gt;
512 Mb RAM&amp;lt;br&amp;gt;&lt;br /&gt;
1GB Disk Space&amp;lt;br&amp;gt;&lt;br /&gt;
CD-ROM&amp;lt;br&amp;gt;&lt;br /&gt;
ATI Radeon 8500/NVidia GeForce3 Ti&amp;lt;br&amp;gt;&lt;br /&gt;
(Geforce 4MX not supported)&amp;lt;br&amp;gt;&lt;br /&gt;
Keyboard and mouse&lt;br /&gt;
&lt;br /&gt;
==Main game issues==&lt;br /&gt;
&lt;br /&gt;
===The game will not start, what is happening?===&lt;br /&gt;
1. Check that you meet the minimum requirements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Make sure that you have the latest drivers for your graphics card.&lt;br /&gt;
&lt;br /&gt;
===The graphics have strange artefacts or look weird in some other way.===&lt;br /&gt;
1. Make sure that you have the latest drivers for your graphics card.&amp;lt;br&amp;gt;&lt;br /&gt;
2. If you have an ATI card try turning off the A.I. optimisation option in Catalyst Center.&amp;lt;br&amp;gt;&lt;br /&gt;
3. If you have [http://www.stardock.com/products/windowblinds/wb5/ StarDock WindowBlinds 5] installed, try turning it off.&lt;br /&gt;
&lt;br /&gt;
===Why is there no audio?===&lt;br /&gt;
1. Make sure you have the latest drivers for your soundcard.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try resetting the audio settings in the control panel.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Check and make sure your speakers are turned on.&lt;br /&gt;
&lt;br /&gt;
===The game is very slow. How can I make it faster?===&lt;br /&gt;
1. Choose a lower resolution in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Try choosing a lower shader quality in graphics.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Turn off post effects in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Turn off shadows in graphics/advanced.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Make sure you have the latest drivers for your graphics card!&lt;br /&gt;
&lt;br /&gt;
===None of these answers help me!===&lt;br /&gt;
Go to http://support.frictionalgames.com to get more information, but please keep in mind that offical support has long since ceased for these products.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modding==&lt;br /&gt;
&lt;br /&gt;
===Viewers not scaling===&lt;br /&gt;
The HPL1 viewer windows cannot be scaled with the mouse. When you first run one of the viewers HPL Helper will create a little file in your Penumbra root directory called &amp;lt;code&amp;gt;viewer_settings.cfg&amp;lt;/code&amp;gt; the file is in the XML format.&amp;lt;br&amp;gt;&lt;br /&gt;
You edit this file to change how the viewers behave. For example, you can change whether or not they will start in fullscreen or a certain resolution and whether or not the viewers framerate should synchronize to your monitor's refresh rate.&lt;br /&gt;
&lt;br /&gt;
Changing the settings affects the following programs:&lt;br /&gt;
*HudObjectEditor&lt;br /&gt;
*ModelViewer&lt;br /&gt;
*ParticleViewer&lt;br /&gt;
*SceneViewer&lt;br /&gt;
&lt;br /&gt;
===Game not executing scripts===&lt;br /&gt;
If you start the game with your custom map and script and nothing happens then you most likely have one too many errors in your script file that prevents it from being executed. Check the hpl.log file in your Penumbra root directory to see what errors are causing this fuss.&lt;br /&gt;
&lt;br /&gt;
===Custom assets crash the Model Viewer===&lt;br /&gt;
1. You most likely forgot to assign a proper material to the model or didn't create a Material (*.mat) file with the accompanying texture.&amp;lt;br&amp;gt;&lt;br /&gt;
2. The Entity (*.ent) file used lacks a collider. All entities must have a body of some kind in order to function in-game.&amp;lt;br&amp;gt;&lt;br /&gt;
3. You're most likely trying to use a modern version of either Maya, 3D Studio or Blender. Unfortunately no modern alternative seems to work as the game uses a very old Collada specification for its models.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6380</id>
		<title>HPL1</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6380"/>
		<updated>2023-03-29T13:34:19Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''Welcome to the HPL1 documentation hub.'''&amp;lt;br&amp;gt;Here you can find extensive documentation about the engine, including downloads for various tools and tutorials on how to create your own [[HPL1/Getting_started|mods]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|It's difficult to do anything with Penumbra: Overture and Penumbra: Black Plague as it requires using old software and learning a great deal before anything useful can be made. Take the time to read through the documentation and familiarize yourself with the tools.}}&lt;br /&gt;
{{note|Overture and Black plague are identical scripting-wise but differ with enemy types. Black Plague introduced the infected character whereas Overture can't load those in-game.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em auto 0; text-align:center; width:400px;&amp;quot;&amp;gt;[[File:Hpl1:Hpl1_logo_retro.png|250px|link=|HPL1]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em;&amp;quot;&amp;gt;'''[[HPL1/Getting_started|Development Tools]] | [[HPL1/Troubleshooting|Troubleshooting]]'''&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=&amp;quot;250&amp;quot; heights=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
File:overture-header.jpg&lt;br /&gt;
File:BP-header.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|'''[[HPL1/Getting_started|&amp;lt;center&amp;gt;Getting started&amp;lt;/center&amp;gt;]]''' &lt;br /&gt;
|Start here, you must also download some important files before anything useful can be made&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation|&amp;lt;center&amp;gt;Modding&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create various different things, from entities to materials.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Script_Reference|&amp;lt;center&amp;gt;Script Functions&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|See a list of all available script functions for the Penumbra games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_2|&amp;lt;center&amp;gt;Modeling&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Import, export, add and modify 3D models for the game&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_6|&amp;lt;center&amp;gt;Entities&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own entity files with the power of Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_4|&amp;lt;center&amp;gt;Materials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Use the Material Editor to combine texture maps to create materials&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle Editor|&amp;lt;center&amp;gt;Effects&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own visual effects with the HPL1 Particle Editor&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Tutorials|&amp;lt;center&amp;gt;Tutorials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Official step-by-step guides on a variety of topics, created by Frictional Games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Third party tools|&amp;lt;center&amp;gt;Third-Party Tools&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Useful developer tools&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Glossary|&amp;lt;center&amp;gt;Glossary&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Explanations for terms you may encounter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
__NOTOC____NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Getting_started&amp;diff=6379</id>
		<title>HPL1/Getting started</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Getting_started&amp;diff=6379"/>
		<updated>2023-03-29T11:05:45Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* What you need */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting started document=&lt;br /&gt;
&lt;br /&gt;
{{warning|This stuff is old, mainly all 3D editing needs to be done in an editor version release at the time of the games creation in 2006/2007 and same goes for the Collada plugins. It will not work with modern releases.}}&lt;br /&gt;
&lt;br /&gt;
==Before you begin==&lt;br /&gt;
*Remember that to work with the engine you will need experience with using a 3D editor, if you have none or little it is recommended you start learning one before trying to use the HPL engine.&lt;br /&gt;
*All game specific files that gives objects specific behavior is based on XML files, it's good to have some very basic knowledge of how XML files are structured and function.&lt;br /&gt;
*The HPL engine uses a C/C++ like script language called Angel Script, as such it is a good idea to have some basic programing experience, no more than having done an introduction course or similar is required.&lt;br /&gt;
*You must have a 3D Accelerator as the engine and editors rely heavily on those, Integrated graphics do not work.&lt;br /&gt;
&lt;br /&gt;
==What you need==&lt;br /&gt;
&lt;br /&gt;
# [http://www.penumbragame.com/ Penumbra]&lt;br /&gt;
# [https://fricpub.s3.amazonaws.com/tools/hpl1/mod_tools.zip Download The Tools]&lt;br /&gt;
# [https://www.dropbox.com/s/dbtwlerpznkwivv/verktyg.zip?dl=0 Prerequisite files] in order to enable and use the Hud Object Editor program&lt;br /&gt;
# [https://www.microsoft.com/en-us/download/details.aspx?id=6041 Download .NET] 1.1 and 2.0 should both work fine.&lt;br /&gt;
# [https://notepad-plus-plus.org/downloads/ Notepad++] for scripting and editing the Entity and HUD files.&lt;br /&gt;
# You will need COLLADA for your 3D editor. [https://fricpub.s3.amazonaws.com/tools/hpl1/colladamaya_088.zip Get Maya here] and [https://fricpub.s3.amazonaws.com/tools/hpl1/colladamax_106.zip 3DS Max here].&lt;br /&gt;
# A 3D editor like Maya, 3D Studio or Blender.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
# Install Penumbra&lt;br /&gt;
# Extract the tools archive, you should see the following files:&lt;br /&gt;
#* '''HplHelper.exe'''&lt;br /&gt;
#* '''HudObjectEditor.exe'''&lt;br /&gt;
#* '''ModelViewer.exe'''&lt;br /&gt;
#* '''ParticleEditor.exe'''&lt;br /&gt;
#* '''ParticleViewer.exe'''&lt;br /&gt;
#* '''SceneViewer.exe'''&lt;br /&gt;
# Place all the files directly in the &amp;quot;penumbra install directory\redist&amp;quot; folder&lt;br /&gt;
# Install .NET&lt;br /&gt;
# Install a COLLADA import/export plugin for your 3D editor if it's not built-in&lt;br /&gt;
#* Make sure your editor is set to unit = meter&lt;br /&gt;
#* Make sure COLLADA is set to &amp;quot;export polygons as triangles&amp;quot; under export settings&lt;br /&gt;
&lt;br /&gt;
==Taking your first baby steps==&lt;br /&gt;
&lt;br /&gt;
# Read through the [[HPL1/Content Creation|HPL-Engine© Content Creation]]&lt;br /&gt;
# Use the [[HPL1/Tutorials|Tutorials]] to get the basic skills&lt;br /&gt;
# Make your first level, make it really simple and create a basic scenario based on what you learned in the [[HPL1/Tutorials|Tutorials]]&lt;br /&gt;
# Look at the Penumbra levels, objects and scripts for reference, use the documentation as a lexicon and you should be OK.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_9&amp;diff=6378</id>
		<title>HPL1/Content Creation Chapter 9</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_9&amp;diff=6378"/>
		<updated>2023-03-29T10:30:09Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 9 Heads-Up Display files ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 9.1 Intro ===&lt;br /&gt;
Heads-Up Display files are XML files and before editing them it is suggested to read some quick tutorial on XML files. Only very basic XML understanding is needed to edit these files.&lt;br /&gt;
&lt;br /&gt;
The files are divided into different sections, some sections are in all hud files and some are only present in certain hud types.&lt;br /&gt;
&lt;br /&gt;
Prior to editing Heads-Up Display (*.hud) files make sure that the language is set to XML in Notepad++.&lt;br /&gt;
&lt;br /&gt;
The following values are used, note that all types have &amp;quot;&amp;quot; around the value:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
| '''String'''	 || A string of letters. &amp;quot;MyName&amp;quot; or &amp;quot;My_Name&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Float'''     || A decimal number. &amp;quot;1.04&amp;quot; or &amp;quot;1.04f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Integer'''	 || A number without decimals &amp;quot;-15&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| '''Vector3'''	 || Three numbers in a row separated by space: &amp;quot;1 1 1&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| '''Boolean'''	 || A data type using &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot; values.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 9.1.1 Prerequisite ====&lt;br /&gt;
In order to use the Hud Object Editor you need the fmod library and the Verdana font. You can download these things from the [[HPL1/Getting_started|Getting Started]] page. The prerequisites archive also contains an offline version of this document as well as some other last minute information, should the wiki ever go down for whatever reason.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Toss the fmod Dynamic Library Link (*.dll) into the redistributable directory of Penumbra and the Verdana TrueType Font into the fonts folder.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Depending on where you installed Penumbra the Drive letter and directory might differ from the following example:&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The fmod.dll file goes into&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;C:\penumbra2\redist&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
And the TrueType Font goes into&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;C:\penumbra2\redist\fonts&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The program can only be called via Windows' Command Prompt. Grip never made a GUI for the program, you must also be in the redistributable directory when calling the program.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
==== 9.1.2 Invocation ====&lt;br /&gt;
In the Windows Command Prompt, change the directory to the folder and drive where you have penumbra installed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;cd C:\penumbra2\redist&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Then, load the Collada file (*.dae) while invoking the program. File extension isn't necessary.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;hudobjecteditor my_model&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The program will then fire up while using the HPL engines resource configuration file to search and index all directories currently written to it.&lt;br /&gt;
Your model file and the accompanying materials for it can be placed anywhere you like so long as it's within the reach of the resource.cfg file.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Use the [[HPL1/Content_Creation_Chapter_5|HPL Helper]] program to add new directories or type them out manually with something like Notepad++.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Hud Object Editor ===&lt;br /&gt;
When you first fire up the program, you'll notice that it's very similar to the Model Viewer program. The controls are the same asides from a few minor changes.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Left Mouse Button:'''||Dolly around.&lt;br /&gt;
|-&lt;br /&gt;
|'''Middle Mouse Button:'''||Zoom in/out.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Switch to viewer camera.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Switch to Player camera.&lt;br /&gt;
|-&lt;br /&gt;
|'''A and Z:'''||Rotate models along the X axis. (A rotates up Z rotates down)&lt;br /&gt;
|-&lt;br /&gt;
|'''S and X:'''||Rotate models along the Y axis. (S rotates counter-clockwise X rotates clockwise)&lt;br /&gt;
|-&lt;br /&gt;
|'''D and C:'''||Rotate models along the Z axis. (D rotates left C rotates right)&lt;br /&gt;
|-&lt;br /&gt;
|'''P:'''||Prints the axis information to the Hud Object Editor log file to be used when creating the Heads-up Display (*.hud) file.&lt;br /&gt;
|-&lt;br /&gt;
|'''Arrow keys:'''||Moves the model in the respective directions. (Up, Left, Right, Down etc.)&lt;br /&gt;
|-&lt;br /&gt;
|'''Page Up:'''||Move item forward.&lt;br /&gt;
|-&lt;br /&gt;
|'''Page Down:'''||Move item backward.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== 9.2.1 Heads-Up Display reference file ====&lt;br /&gt;
Below you will find a sample that will help you define a HUD file.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Use the Hud Object Editor to print the XYZ axis position and rotation values and then paste it to the Equip and Unequip roations and positions.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can print multiple axis values without having to close the program down each time.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The Sound Entity (*.snt), Particle System (*.ps) and Entity (*.ent) files don't need their extensions when being referenced.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
MAIN must always be present to define and reference the items to be used.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
THROW is used for items with the Throw type.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
MELEE is used for miscellanous stuff, not needed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
ATTACK is only used for WeaponMelee types. It defines various weapon information like how much damage it can deal, starting position and so forth.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
For example: if the item is a &amp;quot;Throw&amp;quot; type, you get rid of the ATTACK tags.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When you're finished, create a new text file and rename the extension from .txt to .hud and then copypaste the stuff below into it to be used in-game.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;HUD_MODEL&amp;gt;&lt;br /&gt;
	&amp;lt;MAIN&lt;br /&gt;
		Name = &amp;quot;String, name of the item (for example: Meat, Lantern)&amp;quot;&lt;br /&gt;
		Type = &amp;quot;Valid types are Throw and WeaponMelee, remove this line if object is neither&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ModelFile = &amp;quot;String, name of a valid Collada (*.dae) file to be used, must include extension as well when referencing (I.E banana.dae)&amp;quot;&lt;br /&gt;
		EquipTime = Float, how long it takes to draw the item.&lt;br /&gt;
		UnequipTime = Float, how long it takes to holster the item.&lt;br /&gt;
&lt;br /&gt;
		EquipPose_Pos = &amp;quot;Vector3, XYZ position of the item when drawn&amp;quot;&lt;br /&gt;
		EquipPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when drawn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		UnequipPose_Pos = &amp;quot;Vector3, XYZ position of the item when holstered&amp;quot;&lt;br /&gt;
		UnequipPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when holstered&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		EquipSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when drawing the item&amp;quot;&lt;br /&gt;
		UnequipSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when holstering the item&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;MELEE&lt;br /&gt;
	 	DrawDebug = &amp;quot;Boolean, whether or not to display debug information for the Haptic hardware&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	 	HapticSize = &amp;quot;Vector3, this was meant to be utilized by the Novint Falcon controller with Reachin Technologies' HaptX API but remains unused&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;ATTACK&lt;br /&gt;
	 	Name = &amp;quot;String, name of the item (for example: SwingLeft, SwingRight, Poke)&amp;quot;&lt;br /&gt;
	 	&lt;br /&gt;
	 	StartPose_Pos = &amp;quot;Vector3, XYZ position of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		StartPose_Rot =	&amp;quot;Vector3, XYZ rotation of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		EndPose_Pos = &amp;quot;Vector3, XYZ position of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		EndPose_Rot = &amp;quot;Vector3, XYZ rotation of the item when being positioned to strike&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackLength = &amp;quot;Float, how fast or slow the attack animation should play&amp;quot;&lt;br /&gt;
		ChargeLength = &amp;quot;Float, how fast or slow the charge animation should play&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		TimeOfAttack = &amp;quot;Float, how long it takes before the attack begins&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MaxImpulse = &amp;quot;Integer, maximum impulse&amp;quot;&lt;br /&gt;
		MinImpulse = &amp;quot;Integer, minimum impulse&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinMass = &amp;quot;Integer, minimum mass&amp;quot;&lt;br /&gt;
		MaxMass = &amp;quot;Integer, maximum mass&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
		MinDamage = &amp;quot;Integer, minimum damage dealt&amp;quot;&lt;br /&gt;
		MaxDamage = &amp;quot;Integer, maximum damage dealt&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		SpinMul = &amp;quot;Vector3, If the weapon spinning should be multiplied to the forward/backward force when moving the mouse up/down&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		DamageRange = &amp;quot;Float, how far the damage can be dealt&amp;quot;&lt;br /&gt;
		DamageSize = &amp;quot;Vector3, how large the damage area is in XYZ axis format (0 0 0)&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackRange = &amp;quot;Float, how far the attack range is&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		AttackSpeed = &amp;quot;Integer, speed of the attack&amp;quot;&lt;br /&gt;
		AttackStrength = &amp;quot;Integer, strength of the attack&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		HitPS = &amp;quot;String, the Particle System (*.ps) file to be used when the weapon hits something&amp;quot;&lt;br /&gt;
		HitPSPrio = Integer, set Particle priority&lt;br /&gt;
		&lt;br /&gt;
		SwingSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when swinging the weapon&amp;quot;&lt;br /&gt;
		ChargeSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when charging the weapon&amp;quot;&lt;br /&gt;
		HitSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when the weapon hits something&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
	&amp;lt;THROW&lt;br /&gt;
	 	ChargePose_Pos = &amp;quot;Vector3, XYZ position of the item when being prepared to be thrown&amp;quot;&lt;br /&gt;
	 	ChargePose_Rot = &amp;quot;Vector3, XYZ rotation of the item when being prepared to be thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ChargeTime = &amp;quot;Integer, how long it takes to prepare the item to be thrown&amp;quot;&lt;br /&gt;
		MinImpulse = &amp;quot;Integer, minimum impulse given when thrown&amp;quot;&lt;br /&gt;
		MaxImpulse = &amp;quot;Integer, maximum impulse given when thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ReloadTime = &amp;quot;Float, how fast it takes to draw another batch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Torque = &amp;quot;Vector3, set rotation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ThrowEntity = &amp;quot;String, the entity (*.ent) file to be used when the item is thrown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		ChargeSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when charging the item&amp;quot;&lt;br /&gt;
		ThrowSound = &amp;quot;String, name of the Sound Entity (*.snt) file to be used when throwing the item&amp;quot;&lt;br /&gt;
	/&amp;gt;&lt;br /&gt;
&amp;lt;/HUD_MODEL&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6377</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6377"/>
		<updated>2023-03-29T10:26:39Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a unique meaning to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static object'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6376</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6376"/>
		<updated>2023-03-29T10:00:55Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* File extensions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a meaning unique to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static object'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|[[HPL1/Script_Reference|Howard Phillip Script]], this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_6|Entity]], objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_9|Heads-Up Display]], defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|[[HPL1/Editors/Particle_Editor|Particle System]], displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.12_Billboards|Billboard Entity]], gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.7_Sound|Sound Entity]], stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_5#5.8_Translation|Language]], contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.13_Beams|Beam]], defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_7|Configuration]], used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_4|Material]], contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lnt'''&lt;br /&gt;
|[[HPL1/Content_Creation_Chapter_3#3.3.4_Light_Entity_file|Light Entity]], an XML file that displys an image file to be casted by a spotlight in the game world.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6375</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6375"/>
		<updated>2023-03-29T09:48:34Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5. HPL Helper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1.'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2.'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3.'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4.'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5.'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6.'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7.'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8.'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9.'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.4.1 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though. You have 32 audio channels to work with.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.8 Translation===&lt;br /&gt;
This section allows you to create and edit your language files. A language file is an XML file that contains text that should appear in-game as well as other places throughout. Depending on the entries and categories, this could be the text used in the main menu or for describing various objects in the game world. These descriptions are usually called via script.&lt;br /&gt;
&lt;br /&gt;
'''Translation File:'''&amp;lt;br /&amp;gt;This allows you to save and open a language (*.lang) file, prior to editing make sure that you click the &amp;quot;Save As&amp;quot; button first before any work is to be done!&lt;br /&gt;
&lt;br /&gt;
'''Category:'''&amp;lt;br /&amp;gt;Allows you to add, rename or remove a text category. It can be anything like MainMenu, Notebook, Global, Items, etc.&lt;br /&gt;
&lt;br /&gt;
'''Entry:'''&amp;lt;br /&amp;gt;The entry is used to name your text depending on how it will be used (I.E AlkoholDesc), categories are used a way to organize these entries without losing track. You can add and remove entries.&lt;br /&gt;
&lt;br /&gt;
'''Text Entry:'''&amp;lt;br /&amp;gt;This defines the actual text to be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Name:'''&amp;lt;br /&amp;gt;Allows you to change the name of a text entry if you're not happy with it or made a typo somewhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6374</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6374"/>
		<updated>2023-03-29T09:13:21Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5.7 Sound */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1.'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2.'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3.'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4.'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5.'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6.'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7.'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8.'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9.'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.4.1 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though. You have 32 audio channels to work with.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation&amp;diff=6373</id>
		<title>HPL1/Content Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation&amp;diff=6373"/>
		<updated>2023-03-28T21:08:48Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 1.2 Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=HPL-Engine© Content Creation=&lt;br /&gt;
&lt;br /&gt;
==Table of Contents==&lt;br /&gt;
&lt;br /&gt;
==1. Introduction==&lt;br /&gt;
&lt;br /&gt;
===1.1 Some forewords===&lt;br /&gt;
Welcome dear content creator to the HPL-Engine.&lt;br /&gt;
&lt;br /&gt;
In some parts of the doc naming conventions are described. This are described something like this:&amp;lt;br /&amp;gt;'''_thing_[name]_[stuff]'''&lt;br /&gt;
&lt;br /&gt;
This means that “[name]” and “[stuff]” are variables and are to be replaced with other text. The above example could be translated to:&amp;lt;br /&amp;gt;'''_thing_thomas_lighter'''&lt;br /&gt;
&lt;br /&gt;
Or something else depending on what the variables should describe.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===1.2 Setup===&lt;br /&gt;
Below are just some general rules and settings.&lt;br /&gt;
&lt;br /&gt;
'''Units:'''&amp;lt;br /&amp;gt;The game will use SI-units for measurements. This means that 1 length unit equals 1 meter, 1 time unit equals 1 second, 1 mass unit equals 1 kg and so on.&lt;br /&gt;
&lt;br /&gt;
'''National Settings'''&amp;lt;br /&amp;gt;All the tools for the engine uses a dot “.” as a decimal separator. If you are Swedish or something this might not be how your computer is set up. Open the ''control panel-&amp;gt;national settings'' and check so that this is correct! Also don’t forget to write decimals with dot and '''not comma.'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Good:||1.00||1.23||234.3&lt;br /&gt;
|-&lt;br /&gt;
|Bad:||1,00||1,23||234,3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===1.3 Exporter used===&lt;br /&gt;
Collada is used to export models and maps. The exporter can be used for most major 3d packages, however HPL cannot load all of the files created from the different exporters. Currently Maya is the most supported package.&lt;br /&gt;
&lt;br /&gt;
More information is found at:&amp;lt;br /&amp;gt;http://collada.org/public_forum/&amp;lt;br /&amp;gt;Maya specific information is found at:&amp;lt;br /&amp;gt;http://colladamaya.sourceforge.net/&amp;lt;br /&amp;gt;&lt;br /&gt;
Exporters known to work properly with current HPL release can be found in [[HPL1/Getting started]].&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2. Creating Models==&lt;br /&gt;
[[HPL1/Content Creation Chapter 2|2. Creating Models]]&lt;br /&gt;
&lt;br /&gt;
==3. Creating maps==&lt;br /&gt;
[[HPL1/Content Creation Chapter 3|3. Creating maps]]&lt;br /&gt;
&lt;br /&gt;
==4. Creating Materials==&lt;br /&gt;
[[HPL1/Content Creation Chapter 4|4. Creating Materials]]&lt;br /&gt;
&lt;br /&gt;
==5. HPL Helper==&lt;br /&gt;
[[HPL1/Content Creation Chapter 5|5. HPL Helper]]&lt;br /&gt;
&lt;br /&gt;
==6. Entity files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 6|6. Entity files]]&lt;br /&gt;
&lt;br /&gt;
==7. Configuration files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 7|7. Configuration files]]&lt;br /&gt;
&lt;br /&gt;
==8. Naming and structure==&lt;br /&gt;
[[HPL1/Content Creation Chapter 8|8. Naming and structure]]&lt;br /&gt;
&lt;br /&gt;
==9. Heads-Up Display files==&lt;br /&gt;
[[HPL1/Content Creation Chapter 9|9. HUD files]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6372</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6372"/>
		<updated>2023-03-28T21:06:41Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5.1 General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|Getting started]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1.'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2.'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3.'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4.'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5.'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6.'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7.'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8.'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9.'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.4.1 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6371</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6371"/>
		<updated>2023-03-28T20:45:29Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|HPL1/Content Creation Chapter 6]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.3.3 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
The View button allows you to see your map exactly how it will look in the game.&lt;br /&gt;
&lt;br /&gt;
The StartPos box was meant to be used to define the starting position for the viewer camera, if one of your start areas was called something like &amp;quot;link02&amp;quot; you would input that and the viewer would start from that position. The functionality was never implemented and does nothing no matter what you put into the box.&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1.'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2.'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3.'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4.'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5.'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6.'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7.'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8.'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9.'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====5.4.1 Convert====&lt;br /&gt;
Does nothing.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6370</id>
		<title>HPL1/Content Creation Chapter 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Content_Creation_Chapter_5&amp;diff=6370"/>
		<updated>2023-03-28T19:50:42Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 5.3.2 View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==5. HPL Helper==&lt;br /&gt;
&lt;br /&gt;
===5.1 General===&lt;br /&gt;
HPL-Helper is a front-end for various programs and an editing tool for various engine purposes. Latest version of the .Net Framework must be installed to get it working. See [[HPL1/Getting started|HPL1/Content Creation Chapter 6]] for details and download location.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.2 Settings===&lt;br /&gt;
Under this tab various settings can be altered.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
====5.2.1 Resource Directories====&lt;br /&gt;
The HPL-Engine doesn’t use paths when searching for files, it only searches after specific filename. The option lets you set what directories the engine will search for the files in. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Add:'''||Adds  a new directory to the list. This MUST be a subdirectory of the folder that HPL Helper is in!&lt;br /&gt;
|-&lt;br /&gt;
|'''Remove:'''||Simply just removes a directory from the list.&lt;br /&gt;
|-&lt;br /&gt;
|'''Save To File:'''||Saves all the directories to a file, this button must be pressed for the resource directories to be used by the applications.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
===5.3 Models===&lt;br /&gt;
This part of the program is used to view and convert model files. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.1 Model File====&lt;br /&gt;
Click browse and choose the file you want to work with. ''You can open a .dae file directly or you can use a .ent file to get some/most of the ingame functionality for the model.''&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====5.3.2 View====&lt;br /&gt;
Click this button to open the model viewer. Inside the viewer hold the left mouse button and move the mouse around to change the view. Press middle button and move the mouse up and down to zoom in and out. If the model has colliders use the right mouse button to hook onto the model and then move the mouse while holding the button down to drag it around.&lt;br /&gt;
&lt;br /&gt;
For the time being there are no nice menus so one has to deal with using keys to toggle features.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Up arrow:'''||Move camera up.&lt;br /&gt;
|-&lt;br /&gt;
|'''Down arrow:'''||Move camera down.&lt;br /&gt;
|-&lt;br /&gt;
|'''1:'''||Turn shadows on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''2:'''||Show/hide colliders.&lt;br /&gt;
|-&lt;br /&gt;
|'''3:'''||Turn physics on /off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4:'''||Change animation.&lt;br /&gt;
|-&lt;br /&gt;
|'''5:'''||Start/stop spinning lights.&lt;br /&gt;
|-&lt;br /&gt;
|'''6:'''||Show/hide bounding box.&lt;br /&gt;
|-&lt;br /&gt;
|'''B:'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|'''R:'''||Turn ragdoll on/off if present.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.4 Scenes===&lt;br /&gt;
Under this tab a scene can be loaded and viewed. This works exactly the same way as with models (described the previous chapter) apart from a few small things. &lt;br /&gt;
&lt;br /&gt;
Beside the View button you can fill in the start pos. This will specify at what start point the camera will start at, you are using the _start entities for this, if you have a &amp;quot;_start_location1&amp;quot; entity in you map you enter &amp;quot;location1&amp;quot; to make that your starting point. If this is blank or the start position doesn’t exist the camera will be placed at (0,0,0).&lt;br /&gt;
&lt;br /&gt;
The following keys are used in side the viewer:&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''W,A,S,D'''||Movement.&lt;br /&gt;
|-&lt;br /&gt;
|'''Mouse'''||Look around.&lt;br /&gt;
|-&lt;br /&gt;
|'''1.'''||Toggles shadow modes, on, static only, off&lt;br /&gt;
|-&lt;br /&gt;
|'''2.'''||Turn room/portal debug graphics on and off. In this mode the rooms are randomly colored according to the order they where created. The portals are colored red and have a normal in the same color to witch the room it belongs to. At the end of the portal normal is a sphere in the same color as the room the portal connects to.&lt;br /&gt;
|-&lt;br /&gt;
|'''3.'''||Turns light bounding boxes on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''4.'''||Turns collision geometry on/off.&lt;br /&gt;
|-&lt;br /&gt;
|'''5.'''||Turns bounding boxes for entities on and off.&lt;br /&gt;
|-&lt;br /&gt;
|'''6.'''||Turns sound colliders on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''7.'''||Turns line rendering on / off. This is useful for optimizing portals.&lt;br /&gt;
|-&lt;br /&gt;
|'''8.'''||Turns show areas on / off.&lt;br /&gt;
|-&lt;br /&gt;
|'''9.'''||Displays Object names.&lt;br /&gt;
|-&lt;br /&gt;
|'''B'''||Bloom on / off&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===5.5 Materials===&lt;br /&gt;
There shouldn’t be anything strange in this part, the different settings are all explained in [[HPL1/Content Creation Chapter 4|chapter 4]].&lt;br /&gt;
&lt;br /&gt;
Just remember that the changes aren’t updated until the file is saved!&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.6 Physics Materials===&lt;br /&gt;
''Later on there should be an editor for physical material, right now one has to write by hand. In the redist folder you'll find the '''materials.cfg''' file which you can edit and add materials to.''&lt;br /&gt;
&lt;br /&gt;
Physics materials are different from normal materials in that they describe physical properties of a surface/object rather can the visual. They describe what sounds are heard when two objects hit each other, how much they bounce, etc. If no material is set “Default” is used.&lt;br /&gt;
&lt;br /&gt;
There are several properties that need some explanation:&lt;br /&gt;
&lt;br /&gt;
'''Name'''&amp;lt;br /&amp;gt;Simply the name of the material, entities and texture refer to this.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Elasticity'''&amp;lt;br /&amp;gt;How much of the energy that is conserved when the object hits another object. 0 = all is lost and 1 = no energy loss. This means 1 creates a bouncy surface or object and 0 creates a something that just stops at impact.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StaticFriction'''&amp;lt;br /&amp;gt;The amount of energy required to get an object moving. The value can be between 0 and 1 (even up to 2 in special cases) and MUST be larger or equal to kinetic friction.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;Gives materials different priorities, materials with the same priority will blend together while a higher priority for one material will make it dominant and the only one used.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''KineticFriction'''&amp;lt;br /&amp;gt;How fast the object stops sliding once it is moving (static describes how hard it is to get it start moving). This is a value between 0 and 1.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ElasticityMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the elasticity values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''FrictionMode'''&amp;lt;br /&amp;gt;When two objects collide this describes how the friction values blend. See BlendMode for more information.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''BlendModes:'''&amp;lt;br /&amp;gt;Each blendmode have a weight and when two objects collide the mode with the highest weight is used. Weight is written in front of the mode.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''0. Average:'''||The average of the two values is used (r = (x+y)/2&lt;br /&gt;
|-&lt;br /&gt;
|'''1. Min:'''||The smaller of the two values is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''2. Multiply'''||The two values are multiplied together. (r = x * y)&lt;br /&gt;
|-&lt;br /&gt;
|'''3. Max'''||The largest value is used.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''StepType'''&amp;lt;br /&amp;gt;A game specific string meant to help specify what step sound to use. There are 3 kinds of steps: sneaking, walking and running. Make sure to name the sound entity files you want to use with the same ending, for example:player_step_sneak_dirt.snt,player_step_walk_dirt.snt,player_step_run_dirt.snt. &lt;br /&gt;
&lt;br /&gt;
This way the game will know what sound to use for the different kinds of steps. In the materials.cfg file make StepType = Last word in the name, meaning StepType = &amp;quot;dirt&amp;quot;. This will point the game to the player_step_xxx_dirt.snt files and automatically load them all 3.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Scrape sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object slides against some other object. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinScrapeSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreq'''||The minimum frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreq'''||The maximum frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxScrapeFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleScrapeSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''MinScrapeContacts'''||The minimum number of contacts for a the scrape sound to play.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''ScrapeSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Roll sound properties'''&amp;lt;br /&amp;gt;The following properties are used to set what sound is played when an object rolls. &lt;br /&gt;
&lt;br /&gt;
Speed is in m/s and frequency is in percent / 100. This means that if frequency is 1 then the sound is played at normal (100%) speed. If it is 0.5 then the sound is played at half speed and 2 means double speed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinRollSpeed'''||The minimum speed at which the sound is played.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreq'''||The minimum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollVolume'''||The minimum volume the sound will have.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MinRollFreqSpeed'''||The object speed at which the minimum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes lower once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreq'''||The maximum pitch frequency the sound will have.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollVolume'''||The volume the sound will have at maximum.&amp;lt;br /&amp;gt;0 – 1.&lt;br /&gt;
|-&lt;br /&gt;
|'''MaxRollFreqSpeed'''||The object speed at which the maximum frequency will be used.&amp;lt;br /&amp;gt;Frequency never goes higher once this speed is reached.&amp;lt;br /&amp;gt;0 – infinity.&lt;br /&gt;
|-&lt;br /&gt;
|'''MiddleRollSpeed'''||The object speed at which normal frequency (1) is used&lt;br /&gt;
|-&lt;br /&gt;
|'''RollSoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''RollAxis'''||Along which axis the roll is for, ''X,Y,Z''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Impact properties'''&amp;lt;br /&amp;gt;The impact properties are used to define effects at impact. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;2.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Impact MinSpeed=&amp;quot;1.1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The impacts must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Hit properties'''&amp;lt;br /&amp;gt;The hit properties are used to define effects from hitting on an object. They are written like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;3&amp;quot; […] /&amp;gt;&lt;br /&gt;
&amp;lt;Hit MinSpeed=&amp;quot;1&amp;quot; […] /&amp;gt;&lt;br /&gt;
[…]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hits must be written with the highest minimum speed first and then in dropping order.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''MinSpeed'''||The minimum object speed at which this effect is used.&lt;br /&gt;
|-&lt;br /&gt;
|'''SoundName'''||The name of the sound entity played.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSName'''||The name of the particle effect to use.&lt;br /&gt;
|-&lt;br /&gt;
|'''PSPrio'''||What priority to use on the effect, the same uses all effects for all involved materials and higher uses only the highest.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In closing a physical material entry looks somewhat like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Material&lt;br /&gt;
		Name = &amp;quot;Name_Of_Material&amp;quot;&lt;br /&gt;
		Elasticity = &amp;quot;0&amp;quot;&lt;br /&gt;
		KineticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		StaticFriction = &amp;quot;0.2&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		Priority=&amp;quot;0&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		ElasticityMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		FrictionMode = &amp;quot;Min&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		StepType=&amp;quot;The_Sound_For_Steps&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinScrapeSpeed = &amp;quot;0.04&amp;quot;&lt;br /&gt;
		MinScrapeFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinScrapeFreqSpeed = &amp;quot;0.7&amp;quot;&lt;br /&gt;
		MaxScrapeFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxScrapeFreqSpeed = &amp;quot;2.5&amp;quot;&lt;br /&gt;
		MiddleScrapeSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MinScrapeContacts = &amp;quot;3&amp;quot;&lt;br /&gt;
		ScrapeSoundName = &amp;quot;The_Sound_For_Scrape&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		MinRollSpeed = &amp;quot;0.05&amp;quot;&lt;br /&gt;
		MinRollFreq = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MinRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MinRollFreqSpeed = &amp;quot;0.5&amp;quot;&lt;br /&gt;
		MaxRollFreq = &amp;quot;0.8&amp;quot;&lt;br /&gt;
		MaxRollVolume = &amp;quot;1&amp;quot;&lt;br /&gt;
		MaxRollFreqSpeed = &amp;quot;1.5&amp;quot;&lt;br /&gt;
		MiddleRollSpeed = &amp;quot;1&amp;quot;&lt;br /&gt;
		RollSoundName = &amp;quot;The_Sound_For_Rolling&amp;quot;&lt;br /&gt;
		RollAxis = &amp;quot;y&amp;quot;&lt;br /&gt;
	&amp;gt;	&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;30&amp;quot; SoundName=&amp;quot;Hardest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;20&amp;quot; SoundName=&amp;quot;Medium_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;Impact  MinSpeed=&amp;quot;10&amp;quot; SoundName=&amp;quot;Softest_Impact_Sound&amp;quot;/&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;3&amp;quot; SoundName=&amp;quot;Hit_Sound_Hard&amp;quot; PSName=&amp;quot;Hit_Particle_Effect_Hard&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;Hit  MinSpeed=&amp;quot;1&amp;quot; SoundName=&amp;quot;Hit_Sound_Soft&amp;quot;  PSName=&amp;quot;Hit_Particle_Effect_Soft&amp;quot; PSPrio=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5.7 Sound===&lt;br /&gt;
This will allow you to create sound entity files, .snt. A sound entity file is a XML file that contains properties for a sound you want to play, for example if it should loop, at what volume, the radius and so on. It also contains information of what sound file to actually use, a valid sound file is in either .wav or .ogg.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT:&amp;lt;br /&amp;gt;Sound names must be written in special way. The files must be named&lt;br /&gt;
[name][number].[extension], for example: “mysound1.wav” and “test_sound1.ogg”. If you have several sounds that you want randomized you name them the same and with an increasing number (9 is maximum though). Example: “testsound1.wav”, “testsound2.wav” and so on.&lt;br /&gt;
&lt;br /&gt;
The names above are written '''without''' the extension and number. So if you have a sound called “testsound1.wav” you would write “testsound”. If there are more sounds named testsound with increasing number then writing “testsound” will take one of these at random.&lt;br /&gt;
This part functions pretty much like Material. Below is an overview of the settings:&lt;br /&gt;
&lt;br /&gt;
'''Main Sound'''&amp;lt;br /&amp;gt;The main sound played. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Start Sound'''&amp;lt;br /&amp;gt;If the sound is looping and interval is set to 0, then this will be played before main sounds start playing. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Stop Sound'''&amp;lt;br /&amp;gt;Just like start sound but will be played after the main sound stops. ''Remember delete the number and extension from the sound you choose, &amp;quot;testsound1.wav&amp;quot; should be entered &amp;quot;testsound&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
'''Fade Start / Stop'''&amp;lt;br /&amp;gt;If the main sound should fade in/out when start / stop sound is playing. (Not implemented yet).&lt;br /&gt;
&lt;br /&gt;
'''Loop'''&amp;lt;br /&amp;gt;If the sound should looped.&lt;br /&gt;
&lt;br /&gt;
'''Use3D'''&amp;lt;br /&amp;gt;If the sound is heard in 3d or not affected by the player moving. Example: A sound coming from a leaking steam pipe should Use3D, but the ambient rumble in a level should not Use3D.&lt;br /&gt;
&lt;br /&gt;
'''Stream'''&amp;lt;br /&amp;gt;If the sound is streamed.&lt;br /&gt;
&lt;br /&gt;
'''Volume'''&amp;lt;br /&amp;gt;The volume of the sound. Valid values are 0 -1.&lt;br /&gt;
&lt;br /&gt;
'''Min Distance'''&amp;lt;br /&amp;gt;The distance at which the sound starts getting lower. Valid values are 0 - infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Max Distance'''&amp;lt;br /&amp;gt;The distance at which the sound is quiet. Must be larger than min distance.&lt;br /&gt;
&lt;br /&gt;
'''Interval'''&amp;lt;br /&amp;gt;If looped the sound is played in intervals. The interval is in seconds. Valid values are 0 -infinitive.&lt;br /&gt;
&lt;br /&gt;
'''Random'''&amp;lt;br /&amp;gt;The chance of the sound playing at each interval. Valid values are 0 – 1.&lt;br /&gt;
&lt;br /&gt;
'''Blockable'''&amp;lt;br /&amp;gt;This determines if the sound is blocked by sound blockers. &lt;br /&gt;
&lt;br /&gt;
'''Block Volume'''&amp;lt;br /&amp;gt;This is the amount the volume is lowered when behind a sound blocker. Valid values are 0 – 1. 1 will not affect the sound and 0 will kill it completely, usually a value of about 0.5 to 0.8 gives a nice result.&lt;br /&gt;
&lt;br /&gt;
'''Priority'''&amp;lt;br /&amp;gt;This sets what priority the sounds has in the game. The engine sets it’s own priority depending on where the sounds is.&amp;lt;br /&amp;gt;Outside max distance: 	0&amp;lt;br /&amp;gt;Outside min distance: 	10&amp;lt;br /&amp;gt;Inside min distance:	100&amp;lt;br /&amp;gt;&lt;br /&gt;
The priority property is then added to this value. To make some collision sound more important then other collision sound the priority should be set to 0 – 100 depending on you want it to go before sounds inside min dist if it the sound itself is outside. If you have for example a radio message that must be heard and cannot be started over then set the prio to above 200.&lt;br /&gt;
&lt;br /&gt;
Valid values are 0 – 255. Higher value means higher priority.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When looped sounds are overridden by another, the looped sound is started over once a channel gets free. This shouldn’t be any problem for most sounds though.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;\\&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Getting_started&amp;diff=6369</id>
		<title>HPL1/Getting started</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Getting_started&amp;diff=6369"/>
		<updated>2023-03-28T16:38:49Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Getting started document=&lt;br /&gt;
&lt;br /&gt;
{{warning|This stuff is old, mainly all 3D editing needs to be done in an editor version release at the time of the games creation in 2006/2007 and same goes for the Collada plugins. It will not work with modern releases.}}&lt;br /&gt;
&lt;br /&gt;
==Before you begin==&lt;br /&gt;
*Remember that to work with the engine you will need experience with using a 3D editor, if you have none or little it is recommended you start learning one before trying to use the HPL engine.&lt;br /&gt;
*All game specific files that gives objects specific behavior is based on XML files, it's good to have some very basic knowledge of how XML files are structured and function.&lt;br /&gt;
*The HPL engine uses a C/C++ like script language called Angel Script, as such it is a good idea to have some basic programing experience, no more than having done an introduction course or similar is required.&lt;br /&gt;
*You must have a 3D Accelerator as the engine and editors rely heavily on those, Integrated graphics do not work.&lt;br /&gt;
&lt;br /&gt;
==What you need==&lt;br /&gt;
&lt;br /&gt;
# [http://www.penumbragame.com/ Penumbra]&lt;br /&gt;
# [https://fricpub.s3.amazonaws.com/tools/hpl1/mod_tools.zip Download The Tools]&lt;br /&gt;
# [https://www.dropbox.com/s/sefssfkkqgiykxc/verktyg.zip?dl=0 Prerequisite files] in order to enable and use the Hud Object Editor program&lt;br /&gt;
# [https://www.microsoft.com/en-us/download/details.aspx?id=6041 Download .NET] 1.1 and 2.0 should both work fine.&lt;br /&gt;
# [https://notepad-plus-plus.org/downloads/ Notepad++] for scripting and editing the Entity and HUD files.&lt;br /&gt;
# You will need COLLADA for your 3D editor. [https://fricpub.s3.amazonaws.com/tools/hpl1/colladamaya_088.zip Get Maya here] and [https://fricpub.s3.amazonaws.com/tools/hpl1/colladamax_106.zip 3DS Max here].&lt;br /&gt;
# A 3D editor like Maya, 3D Studio or Blender.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
# Install Penumbra&lt;br /&gt;
# Extract the tools archive, you should see the following files:&lt;br /&gt;
#* '''HplHelper.exe'''&lt;br /&gt;
#* '''HudObjectEditor.exe'''&lt;br /&gt;
#* '''ModelViewer.exe'''&lt;br /&gt;
#* '''ParticleEditor.exe'''&lt;br /&gt;
#* '''ParticleViewer.exe'''&lt;br /&gt;
#* '''SceneViewer.exe'''&lt;br /&gt;
# Place all the files directly in the &amp;quot;penumbra install directory\redist&amp;quot; folder&lt;br /&gt;
# Install .NET&lt;br /&gt;
# Install a COLLADA import/export plugin for your 3D editor if it's not built-in&lt;br /&gt;
#* Make sure your editor is set to unit = meter&lt;br /&gt;
#* Make sure COLLADA is set to &amp;quot;export polygons as triangles&amp;quot; under export settings&lt;br /&gt;
&lt;br /&gt;
==Taking your first baby steps==&lt;br /&gt;
&lt;br /&gt;
# Read through the [[HPL1/Content Creation|HPL-Engine© Content Creation]]&lt;br /&gt;
# Use the [[HPL1/Tutorials|Tutorials]] to get the basic skills&lt;br /&gt;
# Make your first level, make it really simple and create a basic scenario based on what you learned in the [[HPL1/Tutorials|Tutorials]]&lt;br /&gt;
# Look at the Penumbra levels, objects and scripts for reference, use the documentation as a lexicon and you should be OK.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6368</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6368"/>
		<updated>2023-03-28T15:42:08Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* File extensiosn */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a meaning unique to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static object'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensions==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|Howard Phillip Script, this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|Entity, objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|Heads-Up Display, defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|Particle System, displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bb'''&lt;br /&gt;
|Billboard, gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|Sound Entity, stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|Language, contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|Beam, defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|Configuration, used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|Material, contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6367</id>
		<title>HPL1/Third party tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6367"/>
		<updated>2023-03-28T15:07:47Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 2D Programs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Third Party Tools=&lt;br /&gt;
&lt;br /&gt;
Here you will find some useful links and tutorials on how to work with the HPL1 engine in terms of modeling, audio editing and even animation.&lt;br /&gt;
&lt;br /&gt;
==COLLADA==&lt;br /&gt;
&lt;br /&gt;
All 3D modeling packages require the option to export in the [http://collada.org/ Collada] format, regardless what program is used.&lt;br /&gt;
&lt;br /&gt;
==3D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.autodesk.com/products/maya/overview?term=1-YEAR&amp;amp;tab=subscription Alias Maya] - The world's most powerful integrated 3D modeling, animation &amp;amp; rendering solution.&lt;br /&gt;
#[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&amp;amp;tab=subscription Autodesk 3D Studio Max] - A professional 3D computer graphics program for making 3D animations, models, games and images.&lt;br /&gt;
#[https://download.blender.org/release/Blender2.49/ Blender] - Open-source 3D modeling program that comes with built-in support for Collada.&lt;br /&gt;
&lt;br /&gt;
==2D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.adobe.com/products/photoshop.html Adobe Photoshop] - Professional image editing software.&lt;br /&gt;
#[https://www.gimp.org/ GIMP] - Open-source 2D '''G'''NU '''I'''mage '''M'''anipulation '''P'''rogram.&lt;br /&gt;
#[https://www.getpaint.net/ Paint.NET] - Closed-source free image editor comparable to GIMP but easier, smaller, faster&lt;br /&gt;
&lt;br /&gt;
==Audio Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.audacityteam.org/ Audacity] - Multi-channel sound editor. &lt;br /&gt;
#[https://www.rarewares.org/ogg-oggdropxpd.php OggDropXPD] - Drag'n Drop your audio files to convert them to .ogg.&lt;br /&gt;
&lt;br /&gt;
==Text/Script coding programs==&lt;br /&gt;
&lt;br /&gt;
#[https://notepad-plus-plus.org/downloads/ notepad++] - Advanced text editor, crucial for script writing.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6366</id>
		<title>HPL1</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6366"/>
		<updated>2023-03-28T15:06:59Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''Welcome to the HPL1 documentation hub.'''&amp;lt;br&amp;gt;Here you can find extensive documentation about the engine, including downloads for various tools and tutorials on how to create your own [[HPL1/Getting_started|mods]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|It's difficult to do anything with Penumbra: Overture and Penumbra: Black Plague as it requires using old software and learning a great deal before anything useful can be made. Take the time to read through the documentation and familiarize yourself with the tools.}}&lt;br /&gt;
{{note|Overture and Black plague are identical scripting-wise but differ with enemy types. Black Plague introduced the infected character whereas Overture can't load those in-game.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em auto 0; text-align:center; width:400px;&amp;quot;&amp;gt;[[File:Hpl1:Hpl1_logo_retro.png|250px|link=|HPL1]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em;&amp;quot;&amp;gt;'''[[HPL1/Getting_started|Development Tools]]'''&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=&amp;quot;250&amp;quot; heights=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
File:overture-header.jpg&lt;br /&gt;
File:BP-header.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|'''[[HPL1/Getting_started|&amp;lt;center&amp;gt;Getting started&amp;lt;/center&amp;gt;]]''' &lt;br /&gt;
|Start here, you must also download some important files before anything useful can be made&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation|&amp;lt;center&amp;gt;Modding&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create various different things, from entities to materials.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Script_Reference|&amp;lt;center&amp;gt;Script Functions&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|See a list of all available script functions for the Penumbra games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_2|&amp;lt;center&amp;gt;Modeling&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Import, export, add and modify 3D models for the game&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_6|&amp;lt;center&amp;gt;Entities&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own entity files with the power of Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_4|&amp;lt;center&amp;gt;Materials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Use the Material Editor to combine texture maps to create materials&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle Editor|&amp;lt;center&amp;gt;Effects&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own visual effects with the HPL1 Particle Editor&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Tutorials|&amp;lt;center&amp;gt;Tutorials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Official step-by-step guides on a variety of topics, created by Frictional Games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Third party tools|&amp;lt;center&amp;gt;Third-Party Tools&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Useful developer tools&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Glossary|&amp;lt;center&amp;gt;Glossary&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Explanations for terms you may encounter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
__NOTOC____NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6365</id>
		<title>HPL1</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1&amp;diff=6365"/>
		<updated>2023-03-28T15:04:17Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
'''Welcome to the HPL1 documentation hub.'''&amp;lt;br&amp;gt;Here you can find extensive documentation about the engine, including downloads for various tools and tutorials on how to create your own [[HPL1/Getting_started|mods]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|It's difficult to do anything with Penumbra: Overture and Penumbra: Black Plague as it requires using old software and learning a great deal before anything useful can be made. Take the time to read through the documentation and familiarize yourself with the tools.}}&lt;br /&gt;
{{note|Overture and Black plague are identical scripting-wise but differ with enemy types. Black Plague introduced the infected character whereas Overture can't load those in-game.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em auto 0; text-align:center; width:400px;&amp;quot;&amp;gt;[[File:Hpl1:Hpl1_logo_retro.png|250px|link=|HPL1]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;margin:1em;&amp;quot;&amp;gt;'''[[HPL1/Tools|Development Tools]] | [[HPL2/Troubleshooting|Troubleshooting]]'''&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=&amp;quot;250&amp;quot; heights=&amp;quot;250&amp;quot;&amp;gt;&lt;br /&gt;
File:overture-header.jpg&lt;br /&gt;
File:BP-header.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|'''[[HPL1/Getting_started|&amp;lt;center&amp;gt;Getting started&amp;lt;/center&amp;gt;]]''' &lt;br /&gt;
|Start here, you must also download some important files before anything useful can be made&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation|&amp;lt;center&amp;gt;Modding&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create various different things, from entities to materials.&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Script_Reference|&amp;lt;center&amp;gt;Script Functions&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|See a list of all available script functions for the Penumbra games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_2|&amp;lt;center&amp;gt;Modeling&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Import, export, add and modify 3D models for the game&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_6|&amp;lt;center&amp;gt;Entities&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own entity files with the power of Notepad++&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Content_Creation_Chapter_4|&amp;lt;center&amp;gt;Materials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Use the Material Editor to combine texture maps to create materials&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Editors/Particle Editor|&amp;lt;center&amp;gt;Effects&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Create your own visual effects with the HPL1 Particle Editor&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Tutorials|&amp;lt;center&amp;gt;Tutorials&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Official step-by-step guides on a variety of topics, created by Frictional Games&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Third party tools|&amp;lt;center&amp;gt;Third-Party Tools&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Useful developer tools&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HPL1/Glossary|&amp;lt;center&amp;gt;Glossary&amp;lt;/center&amp;gt;]]'''&lt;br /&gt;
|Explanations for terms you may encounter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
__NOTOC____NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
[[Category:Entry pages]]&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6364</id>
		<title>HPL1/Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Glossary&amp;diff=6364"/>
		<updated>2023-03-28T15:00:49Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: Created page with &amp;quot;This page explains words and terms which have a meaning unique to the engine. ==General== {| class=&amp;quot;wikitable&amp;quot; |'''Static object''' |An in-game object which is used only for p...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains words and terms which have a meaning unique to the engine.&lt;br /&gt;
==General==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Static object'''&lt;br /&gt;
|An in-game object which is used only for physics collissions. They can't be influenced by scripts nor be interacted with.&lt;br /&gt;
|-&lt;br /&gt;
|'''Entity'''&lt;br /&gt;
|An in-game object with configurable parameters and custom physics bodies.&lt;br /&gt;
|-&lt;br /&gt;
|'''Item'''&lt;br /&gt;
|A type of entity which can be collected and added to the player's inventory.&lt;br /&gt;
|-&lt;br /&gt;
|'''Area'''&lt;br /&gt;
|Invisible in-game cuboid which marks 3D space. Used for a variety of things based on the type.&lt;br /&gt;
|-&lt;br /&gt;
|'''Script'''&lt;br /&gt;
|Written code which determines what happens in a map. This includes events, puzzles, music, and more.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==File extensiosn==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''*.hps'''&lt;br /&gt;
|Howard Phillip Script, this is where you make the magic happen with the help of AngelScript.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ent'''&lt;br /&gt;
|Entity, objects that can be interacted with, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.hud'''&lt;br /&gt;
|Heads-Up Display, defines items that the player can wield and holster, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.ps'''&lt;br /&gt;
|Particle System, displays cool little effects like fog and electrical sparking etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.bb'''&lt;br /&gt;
|Billboard, gives your map a little more life with some lightrays and whatnot, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.snt'''&lt;br /&gt;
|Sound Entity, stores information on what audio file to play, how many audio files to play and whether or not they loop and so forth.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.lang'''&lt;br /&gt;
|Language, contains in-game messages, item descriptions, etc.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.beam'''&lt;br /&gt;
|Beam, defines things such as laser beams, these files can only be created manually.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.cfg'''&lt;br /&gt;
|Configuration, used to define various settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''*.mat'''&lt;br /&gt;
|Material, contains information on texture as well as the type used for it including transparency information.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6363</id>
		<title>HPL1/Third party tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6363"/>
		<updated>2023-03-28T14:42:13Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 3D Programs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Third Party Tools=&lt;br /&gt;
&lt;br /&gt;
Here you will find some useful links and tutorials on how to work with the HPL1 engine in terms of modeling, audio editing and even animation.&lt;br /&gt;
&lt;br /&gt;
==COLLADA==&lt;br /&gt;
&lt;br /&gt;
All 3D modeling packages require the option to export in the [http://collada.org/ Collada] format, regardless what program is used.&lt;br /&gt;
&lt;br /&gt;
==3D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.autodesk.com/products/maya/overview?term=1-YEAR&amp;amp;tab=subscription Alias Maya] - The world's most powerful integrated 3D modeling, animation &amp;amp; rendering solution.&lt;br /&gt;
#[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&amp;amp;tab=subscription Autodesk 3D Studio Max] - A professional 3D computer graphics program for making 3D animations, models, games and images.&lt;br /&gt;
#[https://download.blender.org/release/Blender2.49/ Blender] - Open-source 3D modeling program that comes with built-in support for Collada.&lt;br /&gt;
&lt;br /&gt;
==2D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.adobe.com/products/photoshop.html Adobe Photoshop] - Professional image editing software.&lt;br /&gt;
#[https://www.gimp.org/ GIMP] - Open-source 2D '''G'''NU '''I'''mage '''M'''anipulation '''P'''rogram.&lt;br /&gt;
#[https://www.getpaint.net/ Paint.NET] - Closed-source free image editor comparable to GIMP but easier, smaller, faster ]&lt;br /&gt;
&lt;br /&gt;
==Audio Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.audacityteam.org/ Audacity] - Multi-channel sound editor. &lt;br /&gt;
#[https://www.rarewares.org/ogg-oggdropxpd.php OggDropXPD] - Drag'n Drop your audio files to convert them to .ogg.&lt;br /&gt;
&lt;br /&gt;
==Text/Script coding programs==&lt;br /&gt;
&lt;br /&gt;
#[https://notepad-plus-plus.org/downloads/ notepad++] - Advanced text editor, crucial for script writing.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6362</id>
		<title>HPL1/Third party tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6362"/>
		<updated>2023-03-28T14:41:54Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: /* 2D Programs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Third Party Tools=&lt;br /&gt;
&lt;br /&gt;
Here you will find some useful links and tutorials on how to work with the HPL1 engine in terms of modeling, audio editing and even animation.&lt;br /&gt;
&lt;br /&gt;
==COLLADA==&lt;br /&gt;
&lt;br /&gt;
All 3D modeling packages require the option to export in the [http://collada.org/ Collada] format, regardless what program is used.&lt;br /&gt;
&lt;br /&gt;
==3D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.autodesk.com/products/maya/overview?term=1-YEAR&amp;amp;tab=subscription Alias Maya] - The world's most powerful integrated 3D modeling, animation &amp;amp; rendering solution.&lt;br /&gt;
#[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&amp;amp;tab=subscription Autodesk 3D Studio Max] - A professional 3D computer graphics program for making 3D animations, models, games and images.&lt;br /&gt;
#[https://download.blender.org/release/Blender2.49/ Blender - Open-source 3D modeling program that comes with built-in support for Collada.]&lt;br /&gt;
&lt;br /&gt;
==2D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.adobe.com/products/photoshop.html Adobe Photoshop] - Professional image editing software.&lt;br /&gt;
#[https://www.gimp.org/ GIMP] - Open-source 2D '''G'''NU '''I'''mage '''M'''anipulation '''P'''rogram.&lt;br /&gt;
#[https://www.getpaint.net/ Paint.NET] - Closed-source free image editor comparable to GIMP but easier, smaller, faster ]&lt;br /&gt;
&lt;br /&gt;
==Audio Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.audacityteam.org/ Audacity] - Multi-channel sound editor. &lt;br /&gt;
#[https://www.rarewares.org/ogg-oggdropxpd.php OggDropXPD] - Drag'n Drop your audio files to convert them to .ogg.&lt;br /&gt;
&lt;br /&gt;
==Text/Script coding programs==&lt;br /&gt;
&lt;br /&gt;
#[https://notepad-plus-plus.org/downloads/ notepad++] - Advanced text editor, crucial for script writing.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6361</id>
		<title>HPL1/Third party tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL1/Third_party_tools&amp;diff=6361"/>
		<updated>2023-03-28T14:40:50Z</updated>

		<summary type="html">&lt;p&gt;Iamrealife: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Third Party Tools=&lt;br /&gt;
&lt;br /&gt;
Here you will find some useful links and tutorials on how to work with the HPL1 engine in terms of modeling, audio editing and even animation.&lt;br /&gt;
&lt;br /&gt;
==COLLADA==&lt;br /&gt;
&lt;br /&gt;
All 3D modeling packages require the option to export in the [http://collada.org/ Collada] format, regardless what program is used.&lt;br /&gt;
&lt;br /&gt;
==3D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.autodesk.com/products/maya/overview?term=1-YEAR&amp;amp;tab=subscription Alias Maya] - The world's most powerful integrated 3D modeling, animation &amp;amp; rendering solution.&lt;br /&gt;
#[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&amp;amp;tab=subscription Autodesk 3D Studio Max] - A professional 3D computer graphics program for making 3D animations, models, games and images.&lt;br /&gt;
#[https://download.blender.org/release/Blender2.49/ Blender - Open-source 3D modeling program that comes with built-in support for Collada.]&lt;br /&gt;
&lt;br /&gt;
==2D Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.adobe.com/products/photoshop.html Adobe Photoshop] - Professional image editing software.&lt;br /&gt;
#[https://www.gimp.org/ GIMP] - Open-source 2D '''G'''NU '''I'''mage '''M'''anipulation '''P'''rogram.&lt;br /&gt;
#[https://www.getpaint.net/ - Closed-source free image editor comparable to GIMP but easier, smaller, faster ]&lt;br /&gt;
&lt;br /&gt;
==Audio Programs==&lt;br /&gt;
&lt;br /&gt;
#[https://www.audacityteam.org/ Audacity] - Multi-channel sound editor. &lt;br /&gt;
#[https://www.rarewares.org/ogg-oggdropxpd.php OggDropXPD] - Drag'n Drop your audio files to convert them to .ogg.&lt;br /&gt;
&lt;br /&gt;
==Text/Script coding programs==&lt;br /&gt;
&lt;br /&gt;
#[https://notepad-plus-plus.org/downloads/ notepad++] - Advanced text editor, crucial for script writing.&lt;/div&gt;</summary>
		<author><name>Iamrealife</name></author>
		
	</entry>
</feed>