http://wiki.wolfire.com/api.php?action=feedcontributions&user=Silverfish&feedformat=atomWolfire Games Wiki - User contributions [en]2024-03-29T05:30:44ZUser contributionsMediaWiki 1.30.0http://wiki.wolfire.com/index.php?title=How_To_Report_a_Bug_in_Overgrowth&diff=6041How To Report a Bug in Overgrowth2018-06-05T06:58:18Z<p>Silverfish: /* General Information */ Removed assumption that the bug is a crash</p>
<hr />
<div>To report a bug you've found in Overgrowth, send an email to [mailto:bugs@wolfire.com bugs@wolfire.com]. To ensure that we get as much relevant information as possible, follow the instructions on this page.<br />
<br />
== General Information ==<br />
<br />
To fix a bug, it's usually important that we are able to reproduce the problem. To help us do that we appreciate the following information in your mail.<br />
<br />
* What version of the game you're running, including where you downloaded the game and if you're running the stable release or some other test version.<br />
* If the game crashed, what you were doing when it crashed, including how long the game had been running, what levels you've been playing and what in-game features have been used in the editor (if any).<br />
* What operating system you are running, and what version.<br />
<br />
== Files we are interested in ==<br />
<br />
While running, the game writes multiple files into a local cache directory, in those there is information that is useful to us when solving your issue.<br />
<br />
Depending on your operating system (Windows, Linux or Mac) the local cache directory will be in a different place, following are the directories for the respective operating system.<br />
<br />
* Mac: <code>Macintosh HD/Users/~/Library/Application Support/Overgrowth/</code>. Where '~' is your username.<br />
* Windows: <code>My Documents\Wolfire\Overgrowth\</code><br />
* Linux: <code>~/.local/share/Overgrowth/</code><br />
<br />
In the cache directory there are primarily two files we are interested in.<br />
<br />
* '''Data/hwreport.txt''' - Contains information about what hardware your computer contains.<br />
* '''logfile.txt''' - Logfile of the games execution.<br />
<br />
If the problem occurred in relation to a crash, you will have gotten a '''.dmp''' file, please include it, it will be in a folder with the name crash and the date of the crash. Send all the contents.<br />
<br />
== Finally ==<br />
<br />
Note that we get multiple bug reports daily and we have a limited staff. This means we can't follow up on all bug reports, even less solve all of them. So don't feel offended if you don't get a response.<br />
<br />
We might call back on you to give us additional information, if so we'll contact you on the same email you initially reported from.<br />
<br />
And finally, thank you for taking the time to report bugs. It goes a long way to ensure Overgrowth is as stable as possible.<br />
<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6040Custom Characters2018-05-28T05:53:26Z<p>Silverfish: /* TODOs */ Added todo for custom sounds</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]])<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has unaltered translation, scale and rotation]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== See also ==<br />
* [[Custom Animations]]<br />
* [[Custom Attacks]]<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Custom Sounds ===<br />
'''TODO''': Links to or doocs on how to use custom character sounds for attacks/deaths etc.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Weapons_%26_Items&diff=6038Custom Weapons & Items2018-05-17T14:46:43Z<p>Silverfish: Rewrote some things and added a coulpe of todos</p>
<hr />
<div>This article tells you how items in Overgrowth are built. Here the word "item" is being used as a technical term for an object that can be picked up by a character. The most common and most advanced use case for items in Overgrowth is to create weapons with them, so that's what this article focuses on. Whenever the words "weapon xml" is used, we're talking about an item xml file configured as a weapon.<br />
<br />
== Overview ==<br />
An item xml file is the file you load in the editor to spawn an item, such as a weapon. The item xml files that come with the game can be found in ../Overgrowth/Data/Items/.<br />
<br />
== Weapon XML Details ==<br />
So what does a weapon xml file look like? Here is the item xml file for the flint_knife weapon that comes with the game:<br />
<pre><br />
<?xml version="1.0" ?><br />
<item><br />
<type>weapon</type><br />
<appearance obj_path = "Data/Objects/Weapons/flint_knife.xml"/><br />
<grip ik_attach = "rightarm"<br />
anim = "Data/Animations/r_dogweapongrip.anm"<br />
hands = "1"/><br />
<sheathe ik_attach = "hip"<br />
anim = "Data/Animations/r_dogweaponsheathed.anm"/><br />
<physics mass = "0.4 kg"/><br />
<points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points><br />
<label>knife</label><br />
<lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines><br />
<anim_override idle = "Data/Animations/r_knifestancerear.xml"<br />
movement = "Data/Animations/r_weaponmovestance.xml"/><br />
<attack_override moving = "Data/Attacks/knifeslash.xml"<br />
moving_close = "Data/Attacks/knifeslash.xml"<br />
stationary = "Data/Attacks/knifeslash.xml"<br />
stationary_close = "Data/Attacks/knifeslash.xml"/><br />
<range multiply = "0.8"/><br />
</item><br />
</pre><br />
<br />
Let's go through what each tag in this file does:<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! type<br />
|<br />
<pre><type>weapon</type></pre><br />
|| Defines what kind of item the object is. Can be ''weapon'', ''collectible'' or ''misc''. '''TODO''': What does each type do?<br />
|-<br />
! appearance <br />
|<br />
<pre><appearance<br />
obj_path="Data/Objects/Weapons/MyWeapon.xml"/></pre><br />
|| Path to the object xml file to use as a visual representation of this item. To find out how to make one of these, read the [[3D_Objects]] article.<br />
|-<br />
! grip<br />
|<br />
<pre><grip<br />
ik_attach="rightarm"<br />
anim="Data/Animations/r_dogweapongrip.anm"/></pre><br />
|| ik_attach defines what bone the object is attached to when it's held. Anim is the place where the weapon will be held at. You create these in blender using one of the existing rigs that comes with the game (preferably the rabbit_rig). '''TODO:''' Check if "Anim is the place where the weapon will be held at" is correct<br />
|-<br />
! sheathe<br />
|<br />
<pre><sheathe<br />
ik_attach="hip"<br />
anim="Data/Animations/r_dogweaponsheathed.anm"/></pre><br />
|| ik_attach defines where to attach the object when sheathed. Anim is the place where the weapon will be sheathed at. You create these in Blender using one of the existing rigs that the game comes with (preferably the rabbit_rig). '''TODO:''' Check if "Anim is the place where the weapon will be sheathed at" is correct<br />
|-<br />
! physics<br />
|<br />
<pre><physics mass="1 kg"/></pre><br />
|| Changes the pitch of the sound made by the object hitting things. Also changes how overall heavy it is.<br />
|-<br />
! points<br />
|<br />
<pre><points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points></pre><br />
|| Defines a number of points on the weapon that can be used with the ''lines'' element to define what material a part of the weapon has.<br />
|-<br />
! lines<br />
|<br />
<pre><lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines></pre><br />
|| Defines what materials go between what points that are defined in the points tag.<br />
|-<br />
! anim_blend<br />
|<br />
<pre><anim_blend<br />
idle = "Data/Animations/r_bigdogsword.xml"/></pre><br />
|| Override the animation for part of a character holding the item. Animation keywords that can be overridden are idle and movement. This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! anim_override<br />
|<br />
<pre><anim_override<br />
idle="Data/Animations/r_weaponidlestance.xml"/></pre><br />
|| Overrides animations of a character holding the item. Animation keywords that can be overridden are idle, movement, medleftblock, medrightblock, blockflinch and more.<br />
(See [[Custom_Characters#File_3|Custom Characters: File 3]] for the keywords.) This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! attack_override<br />
|<br />
<pre><attack_override<br />
moving="Data/Attacks/knifeslash.xml"<br />
moving_close="Data/Attacks/knifeslash.xml"<br />
stationary="Data/Attacks/knifeslash.xml"<br />
stationary_close="Data/Attacks/knifeslash.xml"/></pre><br />
|| What attacks should be used with this weapon in different contexts.<br />
|-<br />
! range<br />
|<br />
<pre><range multiply="0.8"/></pre><br />
|| Multiply multiplies the range with the specified value to make a weapon reach further or shorter.<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Weapons_%26_Items&diff=6037Custom Weapons & Items2018-05-17T14:09:13Z<p>Silverfish: Added an introduction and an overview heading</p>
<hr />
<div>This article tells you how weapons and items in Overgrowth are built. After reading it you should be well on your way to creating your own.<br />
<br />
== Overview ==<br />
Items are things that a character can pick up in the game, a large part of the items in the game are weapons. An item .xml file is needed to make an object into an item. The item .xml files that come with the game can be found in ../Overgrowth/Data/Items/. Items are picked up by their center point. <br />
<br />
As an example, here is the item .xml file for the flint_knife weapon that comes with the game:<br />
<pre><br />
<?xml version="1.0" ?><br />
<item><br />
<type>weapon</type><br />
<appearance obj_path = "Data/Objects/Weapons/flint_knife.xml"/><br />
<grip ik_attach = "rightarm"<br />
anim = "Data/Animations/r_dogweapongrip.anm"<br />
hands = "1"/><br />
<sheathe ik_attach = "hip"<br />
anim = "Data/Animations/r_dogweaponsheathed.anm"/><br />
<physics mass = "0.4 kg"/><br />
<points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points><br />
<label>knife</label><br />
<lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines><br />
<anim_override idle = "Data/Animations/r_knifestancerear.xml"<br />
movement = "Data/Animations/r_weaponmovestance.xml"/><br />
<attack_override moving = "Data/Attacks/knifeslash.xml"<br />
moving_close = "Data/Attacks/knifeslash.xml"<br />
stationary = "Data/Attacks/knifeslash.xml"<br />
stationary_close = "Data/Attacks/knifeslash.xml"/><br />
<range multiply = "0.8"/><br />
</item><br />
</pre><br />
<br />
===Tags===<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! type<br />
|<br />
<pre><type>weapon</type></pre><br />
|| Defines what kind of item the object is. Can be ''weapon'', ''collectible'' or ''misc''. '''TODO''': What does each type do?<br />
|-<br />
! appearance <br />
|<br />
<pre><appearance<br />
obj_path="Data/Objects/Weapons/MyWeapon.xml"/></pre><br />
|| Path to the object .xml file to use as a visual representation of this item.<br />
|-<br />
! grip<br />
|<br />
<pre><grip<br />
ik_attach="rightarm"<br />
anim="Data/Animations/r_dogweapongrip.anm"/></pre><br />
|| ik_attach defines what bone the object is attached to when it's held. Anim is the place where the weapon will be held at. You create these in blender using one of the existing rigs that comes with the game (preferably the rabbit_rig). <br />
|-<br />
! sheathe<br />
|<br />
<pre><sheathe<br />
ik_attach="hip"<br />
anim="Data/Animations/r_dogweaponsheathed.anm"/></pre><br />
|| ik_attach defines where to attach the object when sheathed. Anim is the place where the weapon will be sheathed at. You create these in Blender using one of the existing rigs that the game comes with (preferably the rabbit_rig).<br />
|-<br />
! physics<br />
|<br />
<pre><physics mass="1 kg"/></pre><br />
|| Changes the pitch of the sound made by the object hitting things. Also changes how overall heavy it is.<br />
|-<br />
! points<br />
|<br />
<pre><points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points></pre><br />
|| Defines a number of points on the weapon that can be used with the ''lines'' element to define what material a part of the weapon has.<br />
|-<br />
! lines<br />
|<br />
<pre><lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines></pre><br />
|| Defines what materials go between what points that are defined in the points tag.<br />
|-<br />
! anim_blend<br />
|<br />
<pre><anim_blend<br />
idle = "Data/Animations/r_bigdogsword.xml"/></pre><br />
|| Override the animation for part of a character holding the item. Animation keywords that can be overridden are idle and movement. This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! anim_override<br />
|<br />
<pre><anim_override<br />
idle="Data/Animations/r_weaponidlestance.xml"/></pre><br />
|| Overrides animations of a character holding the item. Animation keywords that can be overridden are idle, movement, medleftblock, medrightblock, blockflinch and more.<br />
(See [[Custom_Characters#File_3|Custom Characters: File 3]] for the keywords.) This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! attack_override<br />
|<br />
<pre><attack_override<br />
moving="Data/Attacks/knifeslash.xml"<br />
moving_close="Data/Attacks/knifeslash.xml"<br />
stationary="Data/Attacks/knifeslash.xml"<br />
stationary_close="Data/Attacks/knifeslash.xml"/></pre><br />
|| What attacks should be used with this weapon in different contexts.<br />
|-<br />
! range<br />
|<br />
<pre><range multiply="0.8"/></pre><br />
|| Multiply multiplies the range with the specified value to make a weapon reach further or shorter.<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Animations&diff=6036Custom Animations2018-05-07T13:06:43Z<p>Silverfish: /* Event Keyframes */ Removed double-newline</p>
<hr />
<div>==Overview==<br />
Animations for rigged objects in Overgrowth are stored with one of the Phoenix Engine's custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXANM|PHXANM (Phoenix Animation) format]]. To export an animation to a PHXANM (File mask: .anm) file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addon and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here].<br />
<br />
===Exporting an animation===<br />
<br />
# Create your custom animation in Blender<br />
# Set the metadata for your animation in the properties sidebar of the skeleton '''TODO: ADD IMAGE'''<br />
#* Click the '''From Timeline''' button to set the timeline's start & end frames as the start & end points of your animation; '''Note:''' Keyframes outside of this time frame won't be exported.<br />
#* Set the '''Looping''' value to 0 if you don't want your animation to loop. Set it to 1 if you want it to loop. '''Todo: If the value is higher, will it do sth different, like play the animation n times?'''<br />
# With the skeleton selected('''TODO: Is that important?'''), press '''File > Export > Phoenix Animation (.anm)'''<br />
<br />
==Event Keyframes==<br />
Event keyframes are used to tell the game at which moment of an animation an event is going to happen. This is used to trigger attack impacts and footstep sounds among other things.<br />
An event is saved as a ''Custom Property'' of a bone in the Blender files shipped with the game.<br />
'''TODO: Maybe a list with event keyframes could be helpful? <br />
{| class="wikitable"<br />
|-<br />
! Event !! Applyable to !! Value !! Description<br />
|-<br />
| attackimpact || every bone || Doesn't matter ? || Will trigger the actual impact while attacking a character<br />
|-<br />
| rightrunstep || every bone || Doesn't matter ? Sound volume ?|| Will trigger footstepsound, particles and IK ?<br />
|}<br />
<br />
===Adding an event Keyframe to your animation===<br />
# Select the 3rd of the rig's layers from the bottom right.'''TODO: ADD IMAGE''' The bones should be named <code>DEF-<Bonename></code><br />
# Select the appropriate bone for the event you want to trigger while being in pose mode<br />
# Set the playhead in the timeline to the moment you want the event to happen<br />
# In the '''Properties''' "editor type", ('''TODO: Better name for this? If not, remove''') press '''Bone''' and scroll down to '''Custom Properties'''<br />
# Hover over the property that corresponds to the event you want to trigger and press '''I''' to add a keyframe. (Value doesn't matter '''TODO: is this true for every event keyframe? Or at all?''')<br />
<br />
==Animating Morph Targets==<br />
'''Todo: Add this section'''<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6035Overgrowth FAQ2018-05-07T13:01:26Z<p>Silverfish: /* How do I suggest a new feature or a change to the game? */ removed errant "the"</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" reinstall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we prioritize our team's well-being over announcing and attempting to meet public deadlines. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to [mailto:bugs@wolfire.com bugs@wolfire.com].<br />
<br />
Title the email so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6034Overgrowth FAQ2018-05-07T13:00:46Z<p>Silverfish: /* How do I suggest a new feature or a change to the game? */ Turned email address into mailto link</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" reinstall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we prioritize our team's well-being over announcing and attempting to meet public deadlines. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to [mailto:bugs@wolfire.com bugs@wolfire.com].<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6033Overgrowth FAQ2018-05-07T12:59:39Z<p>Silverfish: /* Suggestions FAQ */ Reworded a sentence.</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" reinstall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we prioritize our team's well-being over announcing and attempting to meet public deadlines. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6032Overgrowth FAQ2018-05-07T12:55:50Z<p>Silverfish: /* How do I make the game run faster? */ an SSD is not a hard drive, so removed "hard drive" after "SSD"</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" reinstall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6031Overgrowth FAQ2018-05-07T12:53:05Z<p>Silverfish: /* How do I make the game run faster? */ typo fix</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" reinstall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD hard drive, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6030Overgrowth FAQ2018-05-07T12:51:49Z<p>Silverfish: /* How do I make the game run faster? */ turned aboslute link to an internal wiki link, also removed errant period</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug<br />
* Clear the game's temp files - [[how to clear the game's cache]]<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" resintall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD hard drive, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6029Overgrowth FAQ2018-05-07T12:49:54Z<p>Silverfish: /* How do I make the game run faster? */ improved wording</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Some GPU drivers have bugs that slow down games, rebooting your computer might solve the bug.<br />
* Clear the game's temp files - http://wiki.wolfire.com/index.php/How_to_clear_the_game's_cache<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" resintall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD hard drive, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6028Overgrowth FAQ2018-05-07T12:46:24Z<p>Silverfish: /* Email/forum post guidelines */ spelling fix</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue as quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Try rebooting your computer. Some GPU drivers have bugs that slow down games that are solved by rebooting.<br />
* Clear the game's temp files - http://wiki.wolfire.com/index.php/How_to_clear_the_game's_cache<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" resintall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD hard drive, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Overgrowth_FAQ&diff=6027Overgrowth FAQ2018-05-07T12:41:47Z<p>Silverfish: /* Accessing internal_testing on Steam */ improved wording</p>
<hr />
<div>[[Category:FAQs]]<br />
[[Category:Overgrowth]]<br />
[[Category:SPF]]<br />
<br />
Welcome to the Overgrowth FAQ! Please feel free to contribute to this FAQ as well as the wiki as a whole!<br />
<br />
== General FAQ ==<br />
<br />
=== Is this game still being updated? ===<br />
You bet!<br />
<br />
=== Do devs read the forums? ===<br />
Constantly, both the Steam and Wolfire forums. We also sometimes reply when it seems fruitful, or when we might be able to shed light on things.<br />
<br />
=== I just purchased the game, what's next? ===<br />
<br />
After purchasing Overgrowth you can do several things:<br />
<br />
* Access the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forums] (referred to as SPF), follow this guide to gain access: http://forums.wolfire.com/viewtopic.php?f=2&t=16422<br />
* Access to the game from the store you purchased it from<br />
<br />
'''If you purchased it from the Humble Bundle store you get some extras''':<br />
<br />
* Access to Receiver<br />
* Access to Low Light Combat<br />
* A Steam key for Overgrowth<br />
<br />
All of these extras can be accessed through your Humble Bundle library.<br />
<br />
'''If you purchased it directly from Steam you get these extras''':<br />
<br />
* Access to Receiver<br />
<br />
Receiver will appear automatically in your game library.<br />
<br />
=== How do I create content for Overgrowth? ===<br />
<br />
Overgrowth comes with a level-editor. For more info about modding, check out the rest of this wiki and the [http://forums.wolfire.com/viewforum.php?f=13 Secret Preorder Forum]. To install community-created content, visit Overgrowth's Steam Workshop if you're on Steam, or [http://blog.wolfire.com/2013/04/Introducing-SUMLauncher-3 SUMLauncher] if you're not.<br />
<br />
=== What do I do if I encounter a Bug? ===<br />
Read the [[How To Report a Bug in Overgrowth]] article.<br />
<br />
=== How do i clear my game cache? ===<br />
In the top menu bar, press "Settings → Debug → Clear local write cache (dangerous)".<br />
<br />
=== Common Platform-Specific Problems ===<br />
==== Mac ====<br />
===== Where is the Data folder? =====<br />
With the Mac version of Overgrowth, the Data folder is located within the application package.<br />
You can access it by right clicking the "Overgrowth" application and choosing 'Show Contents", and then browsing to <code>Contents/MacOS/Data</code><br />
*Note - For some users, "Show Package Contents" may not appear in the right-click menu. A workaround should be posted as soon as a more Mac-savvy user edits this entry.<br />
<br />
To make future access easier right click 'Data' and choose 'Make Alias'. Now drag this alias out of the application, somewhere easy to find, on your Desktop for example.<br />
<br />
Then, next time you need to open a file from within the Overgrowth package, simply navigate to the alias and you should have access to the Contents of the Data folder.<br />
<br />
===== I can't right click =====<br />
The right shift button is bound to right click by default, so if you can't right click as desired with your mouse or trackpad, try using right shift instead.<br />
<br />
=== Accessing internal_testing on Steam ===<br />
<br />
The development of Overgrowth is quite transparent, as such we allow our players to access the latest nightly build of our games via Steam, containing the latest changes. This build is often unstable and breaks all the time, but can be useful in sneak peeking at new content and features or for checking if an upcoming patch fixes a problem you're having.<br />
<br />
To access the build, do the following.<br />
<br />
# Locate Overgrowth in your games list<br />
# Right click on Overgrowth and select properties<br />
# Go to "BETA" tab<br />
# Click the drop-down list and select internal_testing<br />
# Press Ok to close the properties window<br />
<br />
After making this change, steam should immediately start updating the game. Wait for the download to finish before launching the game.<br />
<br />
To switch back to the latest released version, just go back into the same menu and switch back to default.<br />
<br />
== Technical FAQ ==<br />
=== The game is broken - how do I fix it? ===<br />
# Search for a solution to the problem in the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
# If you can't find a solution you can ask in the [http://discord.gg/wolfire Discord #tech_support chat] if you want, and/or do '''one''' of the following:<br />
#* Create a forum post on the [http://steamcommunity.com/app/25000/discussions/ Steam forums]<br />
#* Create a forum post on the [https://forums.wolfire.com/ Wolfire forums]<br />
#* [[How_To_Report_a_Bug_in_Overgrowth|Send an email]]<br />
<br />
=== Email/forum post guidelines ===<br />
To get help as quickly as possible it's important that you make it as easy as possible for people to help you. So no matter if you're writing an email to [mailto:contact@wolfire.com contact@wolfire.com] or a post asking for help on the forums you should:<br />
<br />
* Use a title/subject that concisely describes the specific problem you're having<br />
* If you get an error message, post the full error message, on Windows you can press ctrl+C when the error message is active to copy it so you can paste it into your message<br />
* Include step-by-step instructions on how to reproduce the error you're getting<br />
* Include screenshots if applicable<br />
<br />
If you're having technical issues it's almost always fastest to email us, because we'll often need extra files. So to make sure we can handle your issue has quickly as possible it's a good idea to attach those extra files right in the first email. The [http://wiki.wolfire.com/index.php/How_To_Report_a_Bug_in_Overgrowth How To Report a Bug in Overgrowth] article gives all the information you need when emailing us about technical issues.<br />
<br />
=== Recommended system specs ===<br />
Make sure you have a decent computer that is built for gaming (has a good CPU and a discrete GPU) and that is reasonably up to date. If you have an integrated GPU you might be able to play the game by turning down all the graphics options, but it might not be optimal.<br />
<br />
* Windows - GeForce 660 or Radeon 7850, 8GB RAM<br />
* Mac - Radeon R9 M395 or Radeon Pro 560, 8GB RAM. For a Macbook Pro, this means you need the top end 2017 model with all the options. For iMac, you need a 2016 or 2017 4k or 5k model, with an upgraded GPU (Radeon R9 M395/Radeon Pro 560). With an iMac, you might be able to manually upgrade your GPU/CPU. See here for which models come with which GPU - https://support.apple.com/en-us/HT202823<br />
* Linux - GeForce 660 or Radeon 7850, 8GB RAM<br />
<br />
Note that these are the 'minimum' specs to run popular AAA titles, and if you're building a PC from scratch it isn't a super expensive system.<br />
<br />
=== How do I make the game run faster? ===<br />
* Try rebooting your computer. Some GPU drivers have bugs that slow down games that are solved by rebooting.<br />
* Clear the game's temp files - http://wiki.wolfire.com/index.php/How_to_clear_the_game's_cache<br />
* Disable all mods<br />
* Close all programs running in the background. The worst offenders are antivirus, and anything that shows an in-game overlay or does screen capture/screen recording. Game "speed boosters" also often conflict with games and can cause things to run slowly. It's best to just shut off everything.<br />
* Try quitting out of steam (not just closing it) and running the game from its install directory. It is installed to '''C:\Program Files (x86)\Steam\steamapps\common\Overgrowth''' by default on Windows<br />
* Try verifying that your game install is completely clean - https://support.steampowered.com/kb_article.php?ref=2037-QEUH-3335<br />
* Try updating your GPU drivers. If your drivers are out of date they might cause performance problems. You might also try a "clean" resintall of these drivers, because they can sometimes become corrupt (especially for OpenGL games)<br />
* If you have an SSD hard drive, make sure you have at least 20% free space. SSDs go very slow if they don't have enough free space for their load-balancing algorithms. This causes slowdowns with all programs and games, not just ours!<br />
<br />
If none of this helps, check out this guide: http://steamcommunity.com/sharedfiles/filedetails/?id=940734324 '''TODO:''' Move the guide at this link to the wiki and update it<br />
<br />
== Suggestions FAQ ==<br />
Our wishlist and your wishlist stretches past the moon, and we have only a few people working on the game at this time. We are happy to talk about what we're currently working on and give rough estimates of when we might get them done. We don't promise specific timeframes, because we like to actually have weekends with our families and sleep at least 6 hours a night. However, you're free to suggest anything!<br />
<br />
=== How do I suggest a new feature or a change to the game? ===<br />
Please email requests (one at a time) to bugs@wolfire.com.<br />
<br />
Title the email the so you could find it 6 months later in a pile of 10,000 similar emails. Make the title as specific and short as you can. Try to be concise with the body too, so we can read it in 30s or less.<br />
<br />
Bad titles: "Suggestions for Overgrowth" (too vague), "Pls nerf leg cannon" (not specific enough), "Hello" (pointless), "Halp".<br />
<br />
Good titles: "Add stamp-collecting game mode", "Suggestion: support Klingon language", "Make it easier to <do specific thing> in editor", "Bad perf in level <xyz> in 2nd encounter", "Add support for Google Home" (no, but at least the title is right!).<br />
<br />
=== Common Suggestions ===<br />
==== Multiplayer ====<br />
Maybe someday. It's hard to do, but it would be very cool. Also see the [http://steamcommunity.com/sharedfiles/filedetails/?id=915583394 Overgrowth Multiplayer Mod].<br />
<br />
==== Dismemberment/gibbing/moar blood ====<br />
Maybe someday. It's not a high priority compared to other things we are working on right now. If you want help modding it in yourself, we're happy to help you figure it out. If not, then please be patient. Once we get through the list of must-have stuff, then we might get to this.<br />
<br />
=== When will a feature you're working on be released? ===<br />
In the next patch. See below for when the next release is, and how to try things out early.<br />
<br />
=== When is the next release? ===<br />
When it is ready. We try to make them take less than 3 months, and usually try to bite off a 1-month chunk at a time. This usually turns into 2 months, because releases take a long time.<br />
<br />
If you want to try out new things early, then you can switch to the internal_testing branch (or advanced_testing, if the patch is close). Game library -> Right click on Overgrowth -> Properties -> Betas tab -> switch from "NONE" to "internal_testing" -> click OK -> wait for the update to finish installing.<br />
<br />
Warning: internal_testing is our nightly automatic build, and we can't test it all the time. It can often be unstable. It also won't work with many of the scripting mods. Use at your own risk, and please report bugs using the "tech support" instructions above!</div>Silverfishhttp://wiki.wolfire.com/index.php?title=NPC_Navigation&diff=6026NPC Navigation2018-05-07T09:42:50Z<p>Silverfish: Turned all h1 into h2 because h1 is used for the title of the article, and so should never be used in the body of the article</p>
<hr />
<div>Overgrowth will automatically make sure that there is a navigation mesh for a level when you start it. However, this mesh might not be like you want it. For instance, maybe the NPCs can run up places they shouldn't, or they can't access some place of the level because they don't know where to jump since there are no jump nodes. This article goes through the tools you can use improve the way NPCs navigate through your levels.<br />
<br />
== Visualizing Navigation ==<br />
[[Image:Nav_mesh_vis.jpg|right|thumb|caption|Nav mesh visualization]]<br />
<br />
There are a number of useful visualizations you can use to see what's going on with the nav mesh and jump nodes. These are all available in the top menu bar under ''View''.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Option !! Description<br />
|-<br />
! Nav mesh<br />
| The areas that are considered walkable<br />
|-<br />
! Collision<br />
| What geometry the nav mesh generator took into consideration when the current nav mesh was generated<br />
|-<br />
! Nav hints<br />
| Display [[#Nav_Hints|nav hints]]<br />
|-<br />
! Nav regions<br />
| Display [[#Nav_Regions|nav regions]]<br />
|-<br />
! Jump nodes<br />
| Display [[#Jump_Nodes|jump nodes]]<br />
|}<br />
<br />
== Generating The Nav Mesh ==<br />
In the editor, in the menu bar under ''Nav Mesh'' you have a button to create, save and load the nav mesh, as well as a number of parameters that decides how the nav mesh is generated.<br />
<br />
In the ''Settings'' -> ''Debug'' menu is an option to ''Disable Auto Navmesh Regen'', which prevents the game from automatically generating nav meshes when levels are loaded. This is useful if a nav mesh is taking too long to generate.<br />
<br />
Overgrowth uses the Recast navigation mesh construction toolset to create it's nav meshes. The first step Recast takes when constructing the nav mesh is to create a voxel representation of the level geometry. It then uses that to figure out where a character should be able to walk.<br />
<br />
All distance values in the nav mesh parameters refer to meters.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Nav Mesh Parameter !! Description !! Default value<br />
|-<br />
! Cell Size<br />
| The width and depth of each voxel in the voxel step, a smaller number results in a more detailed and accurate nav mesh, but also increases generation time<br />
| 0.30<br />
|-<br />
! Cell Height<br />
| The height of each voxel in the voxel step, a smaller number results in a more detailed and accurate nav mesh, but also increases generation time<br />
| 0.20<br />
|-<br />
! Agent Height<br />
| How much ceiling height the characters in the game need<br />
| 1.70<br />
|-<br />
! Agent Radius<br />
| How wide the characters in the game are, this value higher than the characters in the game actually are (they are not actually 0.8m wide), because movement in OG has so much momentum that there needs to be some extra margin to ensure characters can navigate well<br />
| 0.40<br />
|-<br />
! Agent Max Climb<br />
| The tallest "stair" characters should be able to walk up, this is quite high by default to ensure the AI can get around easily by default, but once you start working on the nav mesh and jump nodes you can turn this down to around 0.70 and just make sure you handle all navigation issues that arise<br />
| 1.50<br />
|-<br />
! Agent Max Slope<br />
| The steepest angle that should be considered walkable<br />
| 60.00<br />
|}<br />
<br />
== Nav Hints ==<br />
[[Image:nav_hint.jpg|right|thumb|caption|Left side: nav hint and the resulting nav mesh, right side: what the nav generator sees]]<br />
<br />
Sometimes you want to stop the nav generator from creating a walkable area somewhere, like if you don't want your NPCs to think they can walk under water. Other times the nav generator doesn't create a walkable area somewhere where NPCs should clearly be able to walk, maybe because there is some complicated geometry there. These types of issues can be solved using nav hints.<br />
<br />
Nav hints are blocks that are only seen by the nav generator. So in the game they are invisible and passable, they ONLY matter when the nav mesh is generated.<br />
<br />
Create a nav hint by going to ''Load → Utility → nav hint'' in the top menu bar. Once you click to place it you'll see a purple wireframe box that you can translate, rotate and scale. When the nav mesh is being generated it will regard this wirefram box as a solid block, so use it to block off or bridge over problematic areas.<br />
<br />
Note that as with any box, navigation will still be generated inside the box, since Recast only considers the walls of any object solid.<br />
<br />
If you want to see exactly what the nav generator sees, generate the nav mesh and then activate ''View → Collision''. This shows the collision the nav generator used the last time it generated the nav mesh.<br />
<br />
== Nav Regions ==<br />
[[Image:nav_region.jpg|right|thumb|caption|The nav region limits the nav mesh area, improving the nav mesh generation times significantly]]<br />
<br />
If you have a really big level, you might not want to generate navigation for all of it. Maybe the outer parts are an inaccessible backdrop or won't ever have any NPCs in it. This is where using a nav region is useful.<br />
<br />
Once a nav region is placed, the nav mesh will only be generated inside that region. This can cut down on nav generation times a lot, and so can also be used to temporarliy get quicker nav generation times while working on a specific part of a level. Keep in mind though that moving the nav region can slightly change how the mesh is generated.<br />
<br />
To create a nav region, go to ''Load → Utility → nav region'' in the top menu bar. It looks like a purple box, and can only be scaled and translated, not rotated. Simply scale and position the box so that all of the area you want to have nav mesh is covered.<br />
<br />
A level can only have one nav region, any extra nav regions are ignored.<br />
<br />
== Jump Nodes ==<br />
[[Image:jump_nodes.jpg|right|thumb|caption|Some connected jump nodes]]<br />
<br />
To tell NPCs to where they can jump you need to place jump nodes and connect them to each other.<br />
<br />
To create a jump connection, create a jump node via ''Load → Utility → nav connection'' in the top menu bar. Once you have two jump nodes, slect one of them and hold alt while left clicking on the other to connect them to each other. When you generate the nav mesh the next time, these nodes will be positions that NPCs can jump to and from.<br />
<br />
One jump node can have more than one connection.<br />
<br />
Keep in mind that almost all jump nodes need to work both ways. If you make a really tall jump connection for instance, NPCs will be able to jump down, but since it's so tall, they will not be able to jump up. Since the connection is there, they will still try to jump up if it would be the fastest route. However, when they realize they can't jump that high, they will just stand on the jump node instead of trying to find anoter way. This is why you need to manually test your jump nodes to make sure they actually work both ways.<br />
<br />
There are some cases when jump nodes do not need to work both ways. For instance, if an NPC is spawned outside of the playable area, quite far up, where it will never have any possible reason to return, it could make sense to have a jump connection that only works in one direction. This is because then the NPC will never get stuck on the bottom jump node, because there will never be a case where the NPC would need to use it.<br />
<br />
== Testing Navigation ==<br />
[[Image:nav_testing.jpg|right|thumb|caption|AI path and jump visualization]]<br />
<br />
To ensure that your jump nodes and nav mesh works as you expect you'll want to test it using debug tools.<br />
<br />
To test navigation, in the top menu bar, press ''Settings → Debug → AI'' and activate ''Show AI Path'' to see where NPCs are going, ''Show AI Jump'' to see a visualization of where they are trying to jump, and ''AI Mouse Path Testing'' to be able to tell AI where to go.<br />
<br />
Once you've activated the debug settings, select a character spawn point, point with the cursor where you want the character to go and press G.<br />
<br />
This allows you to easily test if your navigation is working as expected. This is an especially useful method to test jump connections with.<br />
<br />
You might want to deactivate the AI when doing this by pressing C. Otherwise the character you are testing with might get killed by some enemies in the level.<br />
<br />
Keeping the ''AI Mouse Path Testing'' setting activated can degrade performance in the editor quite a bit, so make sure to turn it off after you're done testing your nav mesh.<br />
<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=NPC_Navigation&diff=6025NPC Navigation2018-05-07T09:41:04Z<p>Silverfish: /* Generating The Nav Mesh */ improved information on disabling auto navmesh regen</p>
<hr />
<div>Overgrowth will automatically make sure that there is a navigation mesh for a level when you start it. However, this mesh might not be like you want it. For instance, maybe the NPCs can run up places they shouldn't, or they can't access some place of the level because they don't know where to jump since there are no jump nodes. This article goes through the tools you can use improve the way NPCs navigate through your levels.<br />
<br />
= Visualizing Navigation =<br />
[[Image:Nav_mesh_vis.jpg|right|thumb|caption|Nav mesh visualization]]<br />
<br />
There are a number of useful visualizations you can use to see what's going on with the nav mesh and jump nodes. These are all available in the top menu bar under ''View''.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Option !! Description<br />
|-<br />
! Nav mesh<br />
| The areas that are considered walkable<br />
|-<br />
! Collision<br />
| What geometry the nav mesh generator took into consideration when the current nav mesh was generated<br />
|-<br />
! Nav hints<br />
| Display [[#Nav_Hints|nav hints]]<br />
|-<br />
! Nav regions<br />
| Display [[#Nav_Regions|nav regions]]<br />
|-<br />
! Jump nodes<br />
| Display [[#Jump_Nodes|jump nodes]]<br />
|}<br />
<br />
= Generating The Nav Mesh =<br />
In the editor, in the menu bar under ''Nav Mesh'' you have a button to create, save and load the nav mesh, as well as a number of parameters that decides how the nav mesh is generated.<br />
<br />
In the ''Settings'' -> ''Debug'' menu is an option to ''Disable Auto Navmesh Regen'', which prevents the game from automatically generating nav meshes when levels are loaded. This is useful if a nav mesh is taking too long to generate.<br />
<br />
Overgrowth uses the Recast navigation mesh construction toolset to create it's nav meshes. The first step Recast takes when constructing the nav mesh is to create a voxel representation of the level geometry. It then uses that to figure out where a character should be able to walk.<br />
<br />
All distance values in the nav mesh parameters refer to meters.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Nav Mesh Parameter !! Description !! Default value<br />
|-<br />
! Cell Size<br />
| The width and depth of each voxel in the voxel step, a smaller number results in a more detailed and accurate nav mesh, but also increases generation time<br />
| 0.30<br />
|-<br />
! Cell Height<br />
| The height of each voxel in the voxel step, a smaller number results in a more detailed and accurate nav mesh, but also increases generation time<br />
| 0.20<br />
|-<br />
! Agent Height<br />
| How much ceiling height the characters in the game need<br />
| 1.70<br />
|-<br />
! Agent Radius<br />
| How wide the characters in the game are, this value higher than the characters in the game actually are (they are not actually 0.8m wide), because movement in OG has so much momentum that there needs to be some extra margin to ensure characters can navigate well<br />
| 0.40<br />
|-<br />
! Agent Max Climb<br />
| The tallest "stair" characters should be able to walk up, this is quite high by default to ensure the AI can get around easily by default, but once you start working on the nav mesh and jump nodes you can turn this down to around 0.70 and just make sure you handle all navigation issues that arise<br />
| 1.50<br />
|-<br />
! Agent Max Slope<br />
| The steepest angle that should be considered walkable<br />
| 60.00<br />
|}<br />
<br />
= Nav Hints =<br />
[[Image:nav_hint.jpg|right|thumb|caption|Left side: nav hint and the resulting nav mesh, right side: what the nav generator sees]]<br />
<br />
Sometimes you want to stop the nav generator from creating a walkable area somewhere, like if you don't want your NPCs to think they can walk under water. Other times the nav generator doesn't create a walkable area somewhere where NPCs should clearly be able to walk, maybe because there is some complicated geometry there. These types of issues can be solved using nav hints.<br />
<br />
Nav hints are blocks that are only seen by the nav generator. So in the game they are invisible and passable, they ONLY matter when the nav mesh is generated.<br />
<br />
Create a nav hint by going to ''Load → Utility → nav hint'' in the top menu bar. Once you click to place it you'll see a purple wireframe box that you can translate, rotate and scale. When the nav mesh is being generated it will regard this wirefram box as a solid block, so use it to block off or bridge over problematic areas.<br />
<br />
Note that as with any box, navigation will still be generated inside the box, since Recast only considers the walls of any object solid.<br />
<br />
If you want to see exactly what the nav generator sees, generate the nav mesh and then activate ''View → Collision''. This shows the collision the nav generator used the last time it generated the nav mesh.<br />
<br />
= Nav Regions =<br />
[[Image:nav_region.jpg|right|thumb|caption|The nav region limits the nav mesh area, improving the nav mesh generation times significantly]]<br />
<br />
If you have a really big level, you might not want to generate navigation for all of it. Maybe the outer parts are an inaccessible backdrop or won't ever have any NPCs in it. This is where using a nav region is useful.<br />
<br />
Once a nav region is placed, the nav mesh will only be generated inside that region. This can cut down on nav generation times a lot, and so can also be used to temporarliy get quicker nav generation times while working on a specific part of a level. Keep in mind though that moving the nav region can slightly change how the mesh is generated.<br />
<br />
To create a nav region, go to ''Load → Utility → nav region'' in the top menu bar. It looks like a purple box, and can only be scaled and translated, not rotated. Simply scale and position the box so that all of the area you want to have nav mesh is covered.<br />
<br />
A level can only have one nav region, any extra nav regions are ignored.<br />
<br />
= Jump Nodes =<br />
[[Image:jump_nodes.jpg|right|thumb|caption|Some connected jump nodes]]<br />
<br />
To tell NPCs to where they can jump you need to place jump nodes and connect them to each other.<br />
<br />
To create a jump connection, create a jump node via ''Load → Utility → nav connection'' in the top menu bar. Once you have two jump nodes, slect one of them and hold alt while left clicking on the other to connect them to each other. When you generate the nav mesh the next time, these nodes will be positions that NPCs can jump to and from.<br />
<br />
One jump node can have more than one connection.<br />
<br />
Keep in mind that almost all jump nodes need to work both ways. If you make a really tall jump connection for instance, NPCs will be able to jump down, but since it's so tall, they will not be able to jump up. Since the connection is there, they will still try to jump up if it would be the fastest route. However, when they realize they can't jump that high, they will just stand on the jump node instead of trying to find anoter way. This is why you need to manually test your jump nodes to make sure they actually work both ways.<br />
<br />
There are some cases when jump nodes do not need to work both ways. For instance, if an NPC is spawned outside of the playable area, quite far up, where it will never have any possible reason to return, it could make sense to have a jump connection that only works in one direction. This is because then the NPC will never get stuck on the bottom jump node, because there will never be a case where the NPC would need to use it.<br />
<br />
= Testing Navigation =<br />
[[Image:nav_testing.jpg|right|thumb|caption|AI path and jump visualization]]<br />
<br />
To ensure that your jump nodes and nav mesh works as you expect you'll want to test it using debug tools.<br />
<br />
To test navigation, in the top menu bar, press ''Settings → Debug → AI'' and activate ''Show AI Path'' to see where NPCs are going, ''Show AI Jump'' to see a visualization of where they are trying to jump, and ''AI Mouse Path Testing'' to be able to tell AI where to go.<br />
<br />
Once you've activated the debug settings, select a character spawn point, point with the cursor where you want the character to go and press G.<br />
<br />
This allows you to easily test if your navigation is working as expected. This is an especially useful method to test jump connections with.<br />
<br />
You might want to deactivate the AI when doing this by pressing C. Otherwise the character you are testing with might get killed by some enemies in the level.<br />
<br />
Keeping the ''AI Mouse Path Testing'' setting activated can degrade performance in the editor quite a bit, so make sure to turn it off after you're done testing your nav mesh.<br />
<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Script_Parameters&diff=6024Script Parameters2018-05-07T09:36:08Z<p>Silverfish: /* Reflection Capture */ Added link to more info about reflection capture objects</p>
<hr />
<div>:''This page covers non-hotspot object script parameters only. For hotspot specific script parameters, see [[Hotspots]]. ''<br />
<br />
Script parameters can be set per object (and Level) and are used to pass parameters to an underlying script.<br />
<br />
The script parameters for the selected object can be most easily changed using the [[Editor_Interface#Selected_Window|selected window]].<br />
<br />
Some parameters might not exist by default. If that's the case you simply need to press the "New parameter" button and type in the exact same name (including big/small letters).<br />
<br />
== Character ==<br />
=== Stats ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Attack Damage<br />
| float<br />
| The higher this is, the more health is taken from attacked characters.<br />
|-<br />
! Attack Knockback<br />
| float<br />
| The higher this is, the more physics force is applied to attacked characters.<br />
|-<br />
! Attack Speed<br />
| float<br />
| The higher this is, the faster attack animations play.<br />
|-<br />
! Damage Resistance<br />
| float<br />
| The higher this is, less health this character loses when it takes damage.<br />
|-<br />
! Knockout shield<br />
| int<br />
| How many times the character needs to lose their footing before they start taking real damage.<br />
|-<br />
! Movement Speed<br />
| float<br />
| How fast the character moves when running.<br />
|}<br />
<br />
=== AI ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Aggression<br />
| float<br />
| How often this AI should attempt to attack.<br />
|-<br />
! Block Follow-up<br />
| float<br />
| How often this AI should attempt a shoulder throw after blocking an attack.<br />
|-<br />
! Block Skill<br />
| float<br />
| How often this AI should block attacks.<br />
|-<br />
! Focus FOV distance<br />
| float<br />
| How far the AI can see, in meters.<br />
|-<br />
! Focus FOV horizontal<br />
| float<br />
| How wide the AI's field of view is, in degrees.<br />
|-<br />
! Focus FOV vertical<br />
| float<br />
| How tall the AI's field of view is, in degrees.<br />
|-<br />
! Peripheral FOV distance<br />
| float<br />
| How far the AI can see in its close proximity, in meters.<br />
|-<br />
! Peripheral FOV horizontal<br />
| float<br />
| How wide the AI's near field of view is, in degrees.<br />
|-<br />
! Peripheral FOV vertical<br />
| float<br />
| How tall the AI's near field of view is, in degrees.<br />
|-<br />
! Ground Aggression<br />
| float<br />
| How often the AI should attack an opponent that's ragdolled.<br />
|-<br />
! Hearing Modifier<br />
| float<br />
| A multiplier for the distance at which that sounds can be heard.<br />
|-<br />
! scared<br />
| -<br />
| Makes the AI run away from enemies.<br />
|-<br />
! Stick To Nav Mesh<br />
| -<br />
| Removes physics calculations for this NPC's movement to ensure they do not fall off cliffs etc.<br />
|-<br />
! Throw Counter Probability<br />
| float<br />
| Disables this NPC's ability to block shoulder throws.<br />
|-<br />
! Throw Trainer<br />
| -<br />
| Changes sound when shoulder throwing this character. If tutorials are on, it also makes the character invulnerable to jump kicks, makes them block all attacks, and sets their health really low when their KO shield is gone. This is used on the first enemy in the "Slaver Path" level in the Overgrowth story.<br />
|-<br />
! Weapon Catch Skill<br />
| float<br />
| Changes the NPC's ability to grab thrown weapons in the air.<br />
|}<br />
<br />
'''TODO: Exactly how does focus/peripheral FOV work?<br />
<br />
=== Visual ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Character Scale<br />
| float<br />
| The higher this is, the bigger the character is.<br />
|-<br />
! Ear Size<br />
| float<br />
| How big the ears are.<br />
|-<br />
! Fat<br />
| float<br />
| How heavy the character is.<br />
|-<br />
! Left handed<br />
| bool<br />
| If checked, the character uses weapons in their left hand instead of their right hand.<br />
|-<br />
! Muscle<br />
| float<br />
| How bulky the character is.<br />
|}<br />
<br />
=== Other ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Cannot Be Disarmed<br />
| bool<br />
| If checked, this character cannot have its weapon taken away.<br />
|-<br />
! Static<br />
| bool<br />
| If checked, this character can't move and has no AI.<br />
|-<br />
! Teams<br />
| string<br />
| All characters that share at least one team can't attack each other. A character can be on more than one team if you just separate them by commas, for example <code>team1, team2, team3</code><br />
|}<br />
<br />
== Level ==<br />
The level parameters can be accessed by bringing up the scenegraph window, expanding "Level" at the top, and then "Script Params".<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Achievements<br />
| string<br />
| Decide which challenges you can complete on the level, they appear on the level end screen.<br />
|-<br />
! Custom Shader<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#TEST_CLOUDS_2 #SNOW_EVERYWHERE'''</code> - [[Shader_And_Weather_Effects#Weather_Effects.2FWorld_Shaders|full list here]]) to change how the level is rendered.<br />
|-<br />
! Fog amount<br />
| float<br />
| Sets the thicknoess of the atmosphere and thus how far you can see.<br />
|-<br />
! GPU Particle Field<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#SNOW #MED'''</code> - [[Shader_And_Weather_Effects#Particles|full list here]]) to add global particle effects.<br />
|-<br />
! HDR Black point<br />
| float<br />
| Sets what brightness should be regarded as black.<br />
|-<br />
! HDR Bloom multiplier<br />
| float<br />
| Decides how much light pixels bleed.<br />
|-<br />
! HDR White point<br />
| float<br />
| Sets what brightness should be regarded as white.<br />
|-<br />
! Level Boundaries<br />
| bool<br />
| If this is checked characters will be pushed back into the level when they try to go past a certain point.<br />
|-<br />
! Objectives<br />
| string<br />
| Set the goal of the level.<br />
|-<br />
! Sky Brightness<br />
| float<br />
| Adjust how bright the sky should be.<br />
|-<br />
! Sky Rotation<br />
| int<br />
| Move the sky around.<br />
|-<br />
! Sky Tint<br />
| RGB<br />
| Makes the sky have a specified color.<br />
|}<br />
<br />
== Reflection Capture ==<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Global<br />
| int<br />
| If 1, the reflection capture is global and will affect the entire level, if it's not 1, it's local<br />
|}<br />
<br />
For more information about Reflection Capture objects, see the [[Lighting#Reflection_Capture|lighting]] article.<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Lighting&diff=6023Lighting2018-05-07T09:33:34Z<p>Silverfish: Added Reflection Capture section</p>
<hr />
<div>{{stub}}<br />
<br />
'''TODO''': Cover other level parameters, such as HDR points, saturation, and sky brightness. These parameters are covered in the [[Script Parameters]] page, so might want to take care to not duplicate too much of the information and maybe include a link to that page<br><br />
'''TODO''': Expand sun section to say how to get a "sun" and a "moon" effect<br />
<br />
== Sunlight ==<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
<br clear=all><br />
[[Image:Sun_editor.jpg|left|thumb|The sun editor]]<br />
{{#ev:youtube<br />
|DUaBoNEUcVI<br />
|<br />
|right<br />
|Editing the sun and sky<br />
|frame<br />
|start=267<br />
}}<br />
<br />
<br clear=all><br />
=== How to adjust the sun ===<br />
* Select the sun in the sky (double click it)<br />
* Move it by clicking on the middle and dragging it around<br />
* Change the color by dragging the dot around the outer ring<br />
* Change the intensity by clicking ''just'' outside the outer ring and dragging it<br />
<br />
To deselect the sun, double click well outside of the sun editor ('''Note''': the normal Q for "deselect all" isn't working right now)<br />
<br />
=== How to edit the parameters directly ===<br />
If you have problems clicking it, or would prefer a numeric editor:<br />
* Press the <kbd>'''Y'''</kbd> key to open the Scenegraph<br />
* Expand '''level''' to find the Sun parameters<br />
<br />
<br clear=all><br />
<br />
== Reflection Capture ==<br />
<br />
Reflection capture objects are used for ambient lighting, reflections, and the color of the fog in each direction.<br />
<br />
There are two kinds of reflection capture objects, ''Global Reflection'' and ''Local Reflection''. Both can be found under '''Load''' -> '''Lighting'''. A global reflection capture can be turned into a local one and vice versa by setting its ''Global'' script parameter to 1 or not.<br />
<br />
=== Gotchas ===<br />
Reflection captures are updated when moved, and each new result builds on the results of the previous reflection capture. This can be used to achieve some desired effect, but can also make it harder to get what you want sometimes. Try playing around with changing the brightness of the sky, amount of fog etc. to get different effects.<br />
<br />
=== Global reflection ===<br />
Global reflection captures are used for the entire level, and each level should have exactly one. Since it affects the entire level it is often placed in a location that represents some sort of "average" lighting for the level.<br />
<br />
=== Local reflection ===<br />
Local reflection captures are used to change what the reflections look like in a specific region of the level. These are useful if there are caves or other types of areas where the ambient lighting changes significantly from the rest of the level. Move, rotate and scale the object to decide what part of the level should be affected.<br />
<br />
== Point lights ==<br />
Point lights allow you to cast omni-directional light from a point in the level.<br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing point lights<br />
|frame<br />
|start=64<br />
}}<br />
<br />
=== Adding a dynamic light: ===<br />
* '''Top Bar''' -> '''Load''' -> '''Lighting''' -> '''Dynamic Light'''<br />
* The cursor will turn into a plus symbol<br />
* Click in level to place the dynamic light<br />
<br />
=== Changing the size of a dynamic light ===<br />
* Select the light - <code>'''double click'''</code><br />
* Hold <code>'''E'''</code> while clicking and dragging on its bounding box.<br />
<br />
Note that this only changes the light's area of influence, not how much light it outputs.<br><br />
<br />
=== Making a dynamic light brighter ===<br />
* Select the light - <code>'''double click'''</code><br />
* Open the color picker - <code>'''Ctrl + P'''</code> (<code>'''Command + P'''</code> on mac)<br />
* Change the <code>'''Overbright'''</code> setting<br />
<br />
=== Adjusting dynamic light color: ===<br />
* Select the light<br />
* Hit <code>'''CTRL + P'''</code> (<code>'''command + P'''</code> on mac) to open the '''Color Picker'''.<br />
* Adjust the color with the color selector, or '''RGB''' at the bottom.<br />
<br />
=== Shaping the dynamic light ===<br />
Dynamic lights are always spherical right now.<br />
If you need an "area light" effect that isn't a sphere, there are a few options:<br />
* Use [[Lighting#Shadow_decals|Shadow Decals]] to shape the light (you have to enable this in the level first. See [[Lighting#Dynamic_lights_and_shadows|this section below]])<br />
* Place multiple dynamic light objects<br />
* Some combination of both of the above<br />
<br />
Be careful to both look at how the lights affect static objects in the scene, and how they affect characters that walk through them.<br />
<br />
<br clear=all><br />
<br />
== Shadow decals ==<br />
Shadows from sunlight are taken care of automatically.<br />
<br />
However this only allows one level of shadowing. This doesn't handle ambient occlusion (shadowing of indirect light reflections).<br />
<br />
Shadow [[Custom Decals|decals]] ("Ambient Shadows") allow you to manually place decals which simulate this ambient occlusion effect.<br><br />
This can help you visually anchor objects more realistically in the scene, and replicate effects like darkening around corners, and inside cubbyholes.<br />
<br />
<br clear=all><br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing ambient shadows<br />
|frame<br />
|start=15<br />
}}<br />
<br />
[[File:Ambient shadow decals.png|600px|Ambient Shadow Decals's effect on light]]<br />
<br />
<br clear=all><br />
=== Adding a shadow decal: ===<br />
<br />
* ''Top Bar -> Load -> Lighting -> Ambient Shadow''.<br><br />
* The cursor will turn into a plus symbol.<br><br />
* Now click in level to place the ambient shadow decal.<br />
<br />
=== Resizing a shadow decal: ===<br />
<br />
Double click the ambient shadow decal, and hold E while clicking and dragging on its bounding box (or while shift + right-clicking and dragging on a side to only stretch in that direction).<br><br />
This will let you increase the spread of its effect.<br />
<br />
'''Note''': Ambient shadow decals will not create shadows if they in direct light. This is because they're for simulating indirect shadowing. Direct shadowing is already handled by placing objects in the world.<br />
<br />
<br clear=all><br />
<br />
== Dynamic lights and shadows ==<br />
<br />
By default, no objects cast shadows from dynamic point lights (besides the sun). This is for performance reasons.<br />
<br />
Normally ambient shadow decals also will not create shadow from dynamic point lights, because that would be shading direct light, and they don't work that way.<br />
<br />
However you can use the <code>'''#SHADOW_POINT_LIGHTS'''</code> level Custom Shader to make it so shadow decals can shape point lights, so you can manually simulate this shadowing.<br />
<br />
<br clear=all><br />
[[File:Shadow point lights shader disabled.png|400px|without #SHADOW_POINT_LIGHTS]]<br />
[[File:Shadow_point_lights_shader.png|400px|#SHADOW_POINT_LIGHTS Custom Shader setting]]<br />
[[File:Shadow_point_lights_shader_enabled.png|400px|with #SHADOW_POINT_LIGHTS]]<br />
<br />
<br clear=all><br />
=== Making shadow decals affect dynamic lights: ===<br />
<br />
* Hit <kbd>'''Y'''</kbd> to open the level's scenegraph<br />
* Expand Script Params<br />
* Add a <code>'''Custom Shader'''</code> param<br />
* Hit <code>Enter</code> (not <code>tab</code>!)<br />
* Type <code>'''#SHADOW_POINT_LIGHTS'''</code> in the value column and hit enter<br />
<br />
This will make ambient shadows affect the direct light from dynamic lights, an let you sculpt the light they cast, or let you create manual shadows.<br />
<br />
[[Category: Tutorials]]<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Script_Parameters&diff=6022Script Parameters2018-05-07T09:31:10Z<p>Silverfish: Sorted headings alphabetically</p>
<hr />
<div>:''This page covers non-hotspot object script parameters only. For hotspot specific script parameters, see [[Hotspots]]. ''<br />
<br />
Script parameters can be set per object (and Level) and are used to pass parameters to an underlying script.<br />
<br />
The script parameters for the selected object can be most easily changed using the [[Editor_Interface#Selected_Window|selected window]].<br />
<br />
Some parameters might not exist by default. If that's the case you simply need to press the "New parameter" button and type in the exact same name (including big/small letters).<br />
<br />
== Character ==<br />
=== Stats ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Attack Damage<br />
| float<br />
| The higher this is, the more health is taken from attacked characters.<br />
|-<br />
! Attack Knockback<br />
| float<br />
| The higher this is, the more physics force is applied to attacked characters.<br />
|-<br />
! Attack Speed<br />
| float<br />
| The higher this is, the faster attack animations play.<br />
|-<br />
! Damage Resistance<br />
| float<br />
| The higher this is, less health this character loses when it takes damage.<br />
|-<br />
! Knockout shield<br />
| int<br />
| How many times the character needs to lose their footing before they start taking real damage.<br />
|-<br />
! Movement Speed<br />
| float<br />
| How fast the character moves when running.<br />
|}<br />
<br />
=== AI ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Aggression<br />
| float<br />
| How often this AI should attempt to attack.<br />
|-<br />
! Block Follow-up<br />
| float<br />
| How often this AI should attempt a shoulder throw after blocking an attack.<br />
|-<br />
! Block Skill<br />
| float<br />
| How often this AI should block attacks.<br />
|-<br />
! Focus FOV distance<br />
| float<br />
| How far the AI can see, in meters.<br />
|-<br />
! Focus FOV horizontal<br />
| float<br />
| How wide the AI's field of view is, in degrees.<br />
|-<br />
! Focus FOV vertical<br />
| float<br />
| How tall the AI's field of view is, in degrees.<br />
|-<br />
! Peripheral FOV distance<br />
| float<br />
| How far the AI can see in its close proximity, in meters.<br />
|-<br />
! Peripheral FOV horizontal<br />
| float<br />
| How wide the AI's near field of view is, in degrees.<br />
|-<br />
! Peripheral FOV vertical<br />
| float<br />
| How tall the AI's near field of view is, in degrees.<br />
|-<br />
! Ground Aggression<br />
| float<br />
| How often the AI should attack an opponent that's ragdolled.<br />
|-<br />
! Hearing Modifier<br />
| float<br />
| A multiplier for the distance at which that sounds can be heard.<br />
|-<br />
! scared<br />
| -<br />
| Makes the AI run away from enemies.<br />
|-<br />
! Stick To Nav Mesh<br />
| -<br />
| Removes physics calculations for this NPC's movement to ensure they do not fall off cliffs etc.<br />
|-<br />
! Throw Counter Probability<br />
| float<br />
| Disables this NPC's ability to block shoulder throws.<br />
|-<br />
! Throw Trainer<br />
| -<br />
| Changes sound when shoulder throwing this character. If tutorials are on, it also makes the character invulnerable to jump kicks, makes them block all attacks, and sets their health really low when their KO shield is gone. This is used on the first enemy in the "Slaver Path" level in the Overgrowth story.<br />
|-<br />
! Weapon Catch Skill<br />
| float<br />
| Changes the NPC's ability to grab thrown weapons in the air.<br />
|}<br />
<br />
'''TODO: Exactly how does focus/peripheral FOV work?<br />
<br />
=== Visual ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Character Scale<br />
| float<br />
| The higher this is, the bigger the character is.<br />
|-<br />
! Ear Size<br />
| float<br />
| How big the ears are.<br />
|-<br />
! Fat<br />
| float<br />
| How heavy the character is.<br />
|-<br />
! Left handed<br />
| bool<br />
| If checked, the character uses weapons in their left hand instead of their right hand.<br />
|-<br />
! Muscle<br />
| float<br />
| How bulky the character is.<br />
|}<br />
<br />
=== Other ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Cannot Be Disarmed<br />
| bool<br />
| If checked, this character cannot have its weapon taken away.<br />
|-<br />
! Static<br />
| bool<br />
| If checked, this character can't move and has no AI.<br />
|-<br />
! Teams<br />
| string<br />
| All characters that share at least one team can't attack each other. A character can be on more than one team if you just separate them by commas, for example <code>team1, team2, team3</code><br />
|}<br />
<br />
== Level ==<br />
The level parameters can be accessed by bringing up the scenegraph window, expanding "Level" at the top, and then "Script Params".<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Achievements<br />
| string<br />
| Decide which challenges you can complete on the level, they appear on the level end screen.<br />
|-<br />
! Custom Shader<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#TEST_CLOUDS_2 #SNOW_EVERYWHERE'''</code> - [[Shader_And_Weather_Effects#Weather_Effects.2FWorld_Shaders|full list here]]) to change how the level is rendered.<br />
|-<br />
! Fog amount<br />
| float<br />
| Sets the thicknoess of the atmosphere and thus how far you can see.<br />
|-<br />
! GPU Particle Field<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#SNOW #MED'''</code> - [[Shader_And_Weather_Effects#Particles|full list here]]) to add global particle effects.<br />
|-<br />
! HDR Black point<br />
| float<br />
| Sets what brightness should be regarded as black.<br />
|-<br />
! HDR Bloom multiplier<br />
| float<br />
| Decides how much light pixels bleed.<br />
|-<br />
! HDR White point<br />
| float<br />
| Sets what brightness should be regarded as white.<br />
|-<br />
! Level Boundaries<br />
| bool<br />
| If this is checked characters will be pushed back into the level when they try to go past a certain point.<br />
|-<br />
! Objectives<br />
| string<br />
| Set the goal of the level.<br />
|-<br />
! Sky Brightness<br />
| float<br />
| Adjust how bright the sky should be.<br />
|-<br />
! Sky Rotation<br />
| int<br />
| Move the sky around.<br />
|-<br />
! Sky Tint<br />
| RGB<br />
| Makes the sky have a specified color.<br />
|}<br />
<br />
== Reflection Capture ==<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Global<br />
| int<br />
| If 1, the reflection capture is global and will affect the entire level, if it's not 1, it's local<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Script_Parameters&diff=6021Script Parameters2018-05-07T09:30:27Z<p>Silverfish: Added reflection capture script parameters</p>
<hr />
<div>:''This page covers non-hotspot object script parameters only. For hotspot specific script parameters, see [[Hotspots]]. ''<br />
<br />
Script parameters can be set per object (and Level) and are used to pass parameters to an underlying script.<br />
<br />
The script parameters for the selected object can be most easily changed using the [[Editor_Interface#Selected_Window|selected window]].<br />
<br />
Some parameters might not exist by default. If that's the case you simply need to press the "New parameter" button and type in the exact same name (including big/small letters).<br />
<br />
<br />
== Level ==<br />
The level parameters can be accessed by bringing up the scenegraph window, expanding "Level" at the top, and then "Script Params".<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Achievements<br />
| string<br />
| Decide which challenges you can complete on the level, they appear on the level end screen.<br />
|-<br />
! Custom Shader<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#TEST_CLOUDS_2 #SNOW_EVERYWHERE'''</code> - [[Shader_And_Weather_Effects#Weather_Effects.2FWorld_Shaders|full list here]]) to change how the level is rendered.<br />
|-<br />
! Fog amount<br />
| float<br />
| Sets the thicknoess of the atmosphere and thus how far you can see.<br />
|-<br />
! GPU Particle Field<br />
| string<br />
| Here you can specify a list of shader defines (e.g. <code>'''#SNOW #MED'''</code> - [[Shader_And_Weather_Effects#Particles|full list here]]) to add global particle effects.<br />
|-<br />
! HDR Black point<br />
| float<br />
| Sets what brightness should be regarded as black.<br />
|-<br />
! HDR Bloom multiplier<br />
| float<br />
| Decides how much light pixels bleed.<br />
|-<br />
! HDR White point<br />
| float<br />
| Sets what brightness should be regarded as white.<br />
|-<br />
! Level Boundaries<br />
| bool<br />
| If this is checked characters will be pushed back into the level when they try to go past a certain point.<br />
|-<br />
! Objectives<br />
| string<br />
| Set the goal of the level.<br />
|-<br />
! Sky Brightness<br />
| float<br />
| Adjust how bright the sky should be.<br />
|-<br />
! Sky Rotation<br />
| int<br />
| Move the sky around.<br />
|-<br />
! Sky Tint<br />
| RGB<br />
| Makes the sky have a specified color.<br />
|}<br />
<br />
== Character ==<br />
=== Stats ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Attack Damage<br />
| float<br />
| The higher this is, the more health is taken from attacked characters.<br />
|-<br />
! Attack Knockback<br />
| float<br />
| The higher this is, the more physics force is applied to attacked characters.<br />
|-<br />
! Attack Speed<br />
| float<br />
| The higher this is, the faster attack animations play.<br />
|-<br />
! Damage Resistance<br />
| float<br />
| The higher this is, less health this character loses when it takes damage.<br />
|-<br />
! Knockout shield<br />
| int<br />
| How many times the character needs to lose their footing before they start taking real damage.<br />
|-<br />
! Movement Speed<br />
| float<br />
| How fast the character moves when running.<br />
|}<br />
<br />
=== AI ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Aggression<br />
| float<br />
| How often this AI should attempt to attack.<br />
|-<br />
! Block Follow-up<br />
| float<br />
| How often this AI should attempt a shoulder throw after blocking an attack.<br />
|-<br />
! Block Skill<br />
| float<br />
| How often this AI should block attacks.<br />
|-<br />
! Focus FOV distance<br />
| float<br />
| How far the AI can see, in meters.<br />
|-<br />
! Focus FOV horizontal<br />
| float<br />
| How wide the AI's field of view is, in degrees.<br />
|-<br />
! Focus FOV vertical<br />
| float<br />
| How tall the AI's field of view is, in degrees.<br />
|-<br />
! Peripheral FOV distance<br />
| float<br />
| How far the AI can see in its close proximity, in meters.<br />
|-<br />
! Peripheral FOV horizontal<br />
| float<br />
| How wide the AI's near field of view is, in degrees.<br />
|-<br />
! Peripheral FOV vertical<br />
| float<br />
| How tall the AI's near field of view is, in degrees.<br />
|-<br />
! Ground Aggression<br />
| float<br />
| How often the AI should attack an opponent that's ragdolled.<br />
|-<br />
! Hearing Modifier<br />
| float<br />
| A multiplier for the distance at which that sounds can be heard.<br />
|-<br />
! scared<br />
| -<br />
| Makes the AI run away from enemies.<br />
|-<br />
! Stick To Nav Mesh<br />
| -<br />
| Removes physics calculations for this NPC's movement to ensure they do not fall off cliffs etc.<br />
|-<br />
! Throw Counter Probability<br />
| float<br />
| Disables this NPC's ability to block shoulder throws.<br />
|-<br />
! Throw Trainer<br />
| -<br />
| Changes sound when shoulder throwing this character. If tutorials are on, it also makes the character invulnerable to jump kicks, makes them block all attacks, and sets their health really low when their KO shield is gone. This is used on the first enemy in the "Slaver Path" level in the Overgrowth story.<br />
|-<br />
! Weapon Catch Skill<br />
| float<br />
| Changes the NPC's ability to grab thrown weapons in the air.<br />
|}<br />
<br />
'''TODO: Exactly how does focus/peripheral FOV work?<br />
<br />
=== Visual ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Character Scale<br />
| float<br />
| The higher this is, the bigger the character is.<br />
|-<br />
! Ear Size<br />
| float<br />
| How big the ears are.<br />
|-<br />
! Fat<br />
| float<br />
| How heavy the character is.<br />
|-<br />
! Left handed<br />
| bool<br />
| If checked, the character uses weapons in their left hand instead of their right hand.<br />
|-<br />
! Muscle<br />
| float<br />
| How bulky the character is.<br />
|}<br />
<br />
=== Other ===<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Cannot Be Disarmed<br />
| bool<br />
| If checked, this character cannot have its weapon taken away.<br />
|-<br />
! Static<br />
| bool<br />
| If checked, this character can't move and has no AI.<br />
|-<br />
! Teams<br />
| string<br />
| All characters that share at least one team can't attack each other. A character can be on more than one team if you just separate them by commas, for example <code>team1, team2, team3</code><br />
|}<br />
<br />
== Reflection Capture ==<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Global<br />
| int<br />
| If 1, the reflection capture is global and will affect the entire level, if it's not 1, it's local<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Lighting&diff=6020Lighting2018-05-07T09:19:26Z<p>Silverfish: Made all h4 headings to h3 headings so h3 is not skipped in the heading hierarchy</p>
<hr />
<div>{{stub}}<br />
<br />
'''TODO''': Cover other level parameters, such as HDR points, saturation, and sky brightness. These parameters are covered in the [[Script Parameters]] page, so might want to take care to not duplicate too much of the information and maybe include a link to that page<br><br />
'''TODO''': Expand sun section to say how to get a "sun" and a "moon" effect<br />
<br />
== Sunlight ==<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
<br clear=all><br />
[[Image:Sun_editor.jpg|left|thumb|The sun editor]]<br />
{{#ev:youtube<br />
|DUaBoNEUcVI<br />
|<br />
|right<br />
|Editing the sun and sky<br />
|frame<br />
|start=267<br />
}}<br />
<br />
<br clear=all><br />
=== How to adjust the sun ===<br />
* Select the sun in the sky (double click it)<br />
* Move it by clicking on the middle and dragging it around<br />
* Change the color by dragging the dot around the outer ring<br />
* Change the intensity by clicking ''just'' outside the outer ring and dragging it<br />
<br />
To deselect the sun, double click well outside of the sun editor ('''Note''': the normal Q for "deselect all" isn't working right now)<br />
<br />
=== How to edit the parameters directly ===<br />
If you have problems clicking it, or would prefer a numeric editor:<br />
* Press the <kbd>'''Y'''</kbd> key to open the Scenegraph<br />
* Expand '''level''' to find the Sun parameters<br />
<br />
<br clear=all><br />
<br />
== Point lights ==<br />
Point lights allow you to cast omni-directional light from a point in the level.<br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing point lights<br />
|frame<br />
|start=64<br />
}}<br />
<br />
=== Adding a dynamic light: ===<br />
* '''Top Bar''' -> '''Load''' -> '''Lighting''' -> '''Dynamic Light'''<br />
* The cursor will turn into a plus symbol<br />
* Click in level to place the dynamic light<br />
<br />
=== Changing the size of a dynamic light ===<br />
* Select the light - <code>'''double click'''</code><br />
* Hold <code>'''E'''</code> while clicking and dragging on its bounding box.<br />
<br />
Note that this only changes the light's area of influence, not how much light it outputs.<br><br />
<br />
=== Making a dynamic light brighter ===<br />
* Select the light - <code>'''double click'''</code><br />
* Open the color picker - <code>'''Ctrl + P'''</code> (<code>'''Command + P'''</code> on mac)<br />
* Change the <code>'''Overbright'''</code> setting<br />
<br />
=== Adjusting dynamic light color: ===<br />
* Select the light<br />
* Hit <code>'''CTRL + P'''</code> (<code>'''command + P'''</code> on mac) to open the '''Color Picker'''.<br />
* Adjust the color with the color selector, or '''RGB''' at the bottom.<br />
<br />
=== Shaping the dynamic light ===<br />
Dynamic lights are always spherical right now.<br />
If you need an "area light" effect that isn't a sphere, there are a few options:<br />
* Use [[Lighting#Shadow_decals|Shadow Decals]] to shape the light (you have to enable this in the level first. See [[Lighting#Dynamic_lights_and_shadows|this section below]])<br />
* Place multiple dynamic light objects<br />
* Some combination of both of the above<br />
<br />
Be careful to both look at how the lights affect static objects in the scene, and how they affect characters that walk through them.<br />
<br />
<br clear=all><br />
<br />
== Shadow decals ==<br />
Shadows from sunlight are taken care of automatically.<br />
<br />
However this only allows one level of shadowing. This doesn't handle ambient occlusion (shadowing of indirect light reflections).<br />
<br />
Shadow [[Custom Decals|decals]] ("Ambient Shadows") allow you to manually place decals which simulate this ambient occlusion effect.<br><br />
This can help you visually anchor objects more realistically in the scene, and replicate effects like darkening around corners, and inside cubbyholes.<br />
<br />
<br clear=all><br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing ambient shadows<br />
|frame<br />
|start=15<br />
}}<br />
<br />
[[File:Ambient shadow decals.png|600px|Ambient Shadow Decals's effect on light]]<br />
<br />
<br clear=all><br />
=== Adding a shadow decal: ===<br />
<br />
* ''Top Bar -> Load -> Lighting -> Ambient Shadow''.<br><br />
* The cursor will turn into a plus symbol.<br><br />
* Now click in level to place the ambient shadow decal.<br />
<br />
=== Resizing a shadow decal: ===<br />
<br />
Double click the ambient shadow decal, and hold E while clicking and dragging on its bounding box (or while shift + right-clicking and dragging on a side to only stretch in that direction).<br><br />
This will let you increase the spread of its effect.<br />
<br />
'''Note''': Ambient shadow decals will not create shadows if they in direct light. This is because they're for simulating indirect shadowing. Direct shadowing is already handled by placing objects in the world.<br />
<br />
<br clear=all><br />
<br />
== Dynamic lights and shadows ==<br />
<br />
By default, no objects cast shadows from dynamic point lights (besides the sun). This is for performance reasons.<br />
<br />
Normally ambient shadow decals also will not create shadow from dynamic point lights, because that would be shading direct light, and they don't work that way.<br />
<br />
However you can use the <code>'''#SHADOW_POINT_LIGHTS'''</code> level Custom Shader to make it so shadow decals can shape point lights, so you can manually simulate this shadowing.<br />
<br />
<br clear=all><br />
[[File:Shadow point lights shader disabled.png|400px|without #SHADOW_POINT_LIGHTS]]<br />
[[File:Shadow_point_lights_shader.png|400px|#SHADOW_POINT_LIGHTS Custom Shader setting]]<br />
[[File:Shadow_point_lights_shader_enabled.png|400px|with #SHADOW_POINT_LIGHTS]]<br />
<br />
<br clear=all><br />
=== Making shadow decals affect dynamic lights: ===<br />
<br />
* Hit <kbd>'''Y'''</kbd> to open the level's scenegraph<br />
* Expand Script Params<br />
* Add a <code>'''Custom Shader'''</code> param<br />
* Hit <code>Enter</code> (not <code>tab</code>!)<br />
* Type <code>'''#SHADOW_POINT_LIGHTS'''</code> in the value column and hit enter<br />
<br />
This will make ambient shadows affect the direct light from dynamic lights, an let you sculpt the light they cast, or let you create manual shadows.<br />
<br />
[[Category: Tutorials]]<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6018Custom Characters2018-04-30T09:23:34Z<p>Silverfish: /* Overview */ Added missing parenthesis</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]])<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has unaltered translation, scale and rotation]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== See also ==<br />
* [[Custom Animations]]<br />
* [[Custom Attacks]]<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6017Custom Characters2018-04-30T09:22:55Z<p>Silverfish: /* Overview */ Removed FZX todo because Akazi confirmed that the description was correct</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]]<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has unaltered translation, scale and rotation]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== See also ==<br />
* [[Custom Animations]]<br />
* [[Custom Attacks]]<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Weapons_%26_Items&diff=6016Custom Weapons & Items2018-04-27T12:24:24Z<p>Silverfish: /* Tags */ added todo</p>
<hr />
<div>Items are things that a character can pick up in the game, a large part of the items in the game are weapons. An item .xml file is needed to make an object into an item. The item .xml files that come with the game can be found in ../Overgrowth/Data/Items/. Items are picked up by their center point. <br />
<br />
As an example, here is the item .xml file for the flint_knife weapon that comes with the game:<br />
<pre><br />
<?xml version="1.0" ?><br />
<item><br />
<type>weapon</type><br />
<appearance obj_path = "Data/Objects/Weapons/flint_knife.xml"/><br />
<grip ik_attach = "rightarm"<br />
anim = "Data/Animations/r_dogweapongrip.anm"<br />
hands = "1"/><br />
<sheathe ik_attach = "hip"<br />
anim = "Data/Animations/r_dogweaponsheathed.anm"/><br />
<physics mass = "0.4 kg"/><br />
<points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points><br />
<label>knife</label><br />
<lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines><br />
<anim_override idle = "Data/Animations/r_knifestancerear.xml"<br />
movement = "Data/Animations/r_weaponmovestance.xml"/><br />
<attack_override moving = "Data/Attacks/knifeslash.xml"<br />
moving_close = "Data/Attacks/knifeslash.xml"<br />
stationary = "Data/Attacks/knifeslash.xml"<br />
stationary_close = "Data/Attacks/knifeslash.xml"/><br />
<range multiply = "0.8"/><br />
</item><br />
</pre><br />
<br />
===Tags===<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! type<br />
|<br />
<pre><type>weapon</type></pre><br />
|| Defines what kind of item the object is. Can be ''weapon'', ''collectible'' or ''misc''. '''TODO''': What does each type do?<br />
|-<br />
! appearance <br />
|<br />
<pre><appearance<br />
obj_path="Data/Objects/Weapons/MyWeapon.xml"/></pre><br />
|| Path to the object .xml file to use as a visual representation of this item.<br />
|-<br />
! grip<br />
|<br />
<pre><grip<br />
ik_attach="rightarm"<br />
anim="Data/Animations/r_dogweapongrip.anm"/></pre><br />
|| ik_attach defines what bone the object is attached to when it's held. Anim is the place where the weapon will be held at. You create these in blender using one of the existing rigs that comes with the game (preferably the rabbit_rig). <br />
|-<br />
! sheathe<br />
|<br />
<pre><sheathe<br />
ik_attach="hip"<br />
anim="Data/Animations/r_dogweaponsheathed.anm"/></pre><br />
|| ik_attach defines where to attach the object when sheathed. Anim is the place where the weapon will be sheathed at. You create these in Blender using one of the existing rigs that the game comes with (preferably the rabbit_rig).<br />
|-<br />
! physics<br />
|<br />
<pre><physics mass="1 kg"/></pre><br />
|| Changes the pitch of the sound made by the object hitting things. Also changes how overall heavy it is.<br />
|-<br />
! points<br />
|<br />
<pre><points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points></pre><br />
|| Defines a number of points on the weapon that can be used with the ''lines'' element to define what material a part of the weapon has.<br />
|-<br />
! lines<br />
|<br />
<pre><lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines></pre><br />
|| Defines what materials go between what points that are defined in the points tag.<br />
|-<br />
! anim_blend<br />
|<br />
<pre><anim_blend<br />
idle = "Data/Animations/r_bigdogsword.xml"/></pre><br />
|| Override the animation for part of a character holding the item. Animation keywords that can be overridden are idle and movement. This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! anim_override<br />
|<br />
<pre><anim_override<br />
idle="Data/Animations/r_weaponidlestance.xml"/></pre><br />
|| Overrides animations of a character holding the item. Animation keywords that can be overridden are idle, movement, medleftblock, medrightblock, blockflinch and more.<br />
(See [[Custom_Characters#File_3|Custom Characters: File 3]] for the keywords.) This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! attack_override<br />
|<br />
<pre><attack_override<br />
moving="Data/Attacks/knifeslash.xml"<br />
moving_close="Data/Attacks/knifeslash.xml"<br />
stationary="Data/Attacks/knifeslash.xml"<br />
stationary_close="Data/Attacks/knifeslash.xml"/></pre><br />
|| What attacks should be used with this weapon in different contexts.<br />
|-<br />
! range<br />
|<br />
<pre><range multiply="0.8"/></pre><br />
|| Multiply multiplies the range with the specified value to make a weapon reach further or shorter.<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=3D_Objects&diff=60153D Objects2018-04-27T11:40:24Z<p>Silverfish: Added "See also" section with two articles linked</p>
<hr />
<div>== Introduction ==<br />
Phoenix uses .xml files to store information about what textures a certain model should use as well as other information such as what shader it should use. This is the file you choose when loading an object. Here is an example object .xml file:<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Object><br />
<Model>Data/Mods/example_mod/Data/Models/SimpleObject.obj</Model><br />
<ColorMap>Data/Mods/example_mod/Data/Textures/SimpleObject_Color.tga</ColorMap><br />
<NormalMap>Data/Mods/example_mod/Data/Textures/Blank_Norm.tga</NormalMap><br />
<ShaderName>envobject #TANGENT</ShaderName><br />
<MaterialPath>Data/Materials/default.xml</MaterialPath><br />
</Object><br />
</pre><br />
<br />
All object .xml files that ship with the game are located in ../Overgrowth/Data/Objects/.<br />
<br />
=== Model and Texture Requirements ===<br />
* Only triangles in models<br />
* Models use the Wavefront .obj format<br />
* Textures need to be square<br />
* Texture resolution need to be a power of two (32x32, 64x64, 128x128 and so on)<br />
* The .tga format is recommended for textures, but .png and .tif work also.<br />
<br />
==== Converting normal maps ====<br />
The normal maps that you get from some applications might not be instantly usable in the Phoenix engine without some edits. For instance, if you are using an object space normal map from Substance Designer you need to do this:<br />
<br />
# Invert the blue channel<br />
# Swap blue and green channels<br />
<br />
You can do this in Photoshop, Substance Designer, [http://orsvarn.com/entry/channel-shuffle/ Channel Shuffle] or similar. Note that Gimp does not work well with alpha channels. So if your alpha channel is anything but solid white, using Gimp to convert the normal map will change your normal map in undesirable ways.<br />
<br />
== Object .xml File ==<br />
The object .xml files contain all information about a single object (model) that can be spawned in the engine. This aims to be a full reference over all tags and flags that can be used in an object .xml.<br />
<br />
=== Tags ===<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! Model<br />
| <pre><Model>Data/Models/MyModel.obj</Model></pre><br />
|| path to the model file (.obj)<br />
|-<br />
! ColorMap<br />
| <pre><ColorMap>Data/Textures/MyColorMap.tga</ColorMap></pre><br />
|| path to the color texture file (.tga, .tif or .png)<br />
|-<br />
! NormalMap<br />
| <pre><NormalMap>Data/Textures/MyNormalMap.tga</NormalMap></pre><br />
|| Path to the normal map texture file (.tga, .tif or .png)<br />
|-<br />
! ShaderName<br />
| <pre><ShaderName>envobject #TANGENT #KEEP_SPEC</ShaderName></pre><br />
|| What shader to use, see [[#Shaders|shaders]] for more information<br />
|-<br />
! MaterialPath<br />
| <pre><MaterialPath>Data/Materials/DirtyRock.xml</MaterialPath></pre><br />
|| Path to the material to use, see [[#Materials|materials]] for more information.<br />
|-<br />
! WeightMap<br />
| <pre><WeightMap>Data/Textures/Environments/Rocks/granite_vine_rocks/granite_vine_boulder_overgrown_w.tga</WeightMap></pre><br />
|| Path to a black and white texture used for determining where each detail texture should be used. Required when using the detailmap4 [[#Shaders|shader]].<br />
|-<br />
! TranslucencyMap<br />
| <pre><TranslucencyMap>Data/Textures/Environments/cat_props/banner_t.tga</TranslucencyMap></pre><br />
|| Path to a color texture used for translucency, meaning light that shines through the object. Adds its color to the surface multiplied by the amount of light it receives, this effect ignores the normal of the surface, so if one side receives light from for instance the sun, the other side will also get the color added. If unspecified it defaults to 0.0 (no translucency) across the entire surface. Optional when using the plant [[#Shaders|shader]].<br />
|-<br />
! WindMap<br />
| <pre><WindMap>Data/Textures/Environments/cat_props/banner_w.tga</WindMap></pre><br />
|| Path to a black and white texture used to define the intensity of a vertex wind effect. If unspecified it defaults to 1.0 (active) across the entire surface. Optional when using the plant [[#Shaders|shader]].<br />
|-<br />
! DetailMaps<br />
| <pre><DetailMaps><br />
<DetailMap colorpath="Data/Textures/Terrain/DetailTextures/gray_rock.tga" normalpath="Data/Textures/Terrain/DetailTextures/gray_rock_normal.tga" materialpath="Data/Materials/rocks.xml" /><br />
...<br />
</DetailMaps></pre><br />
|| Contains exactly 4 <DetailMap> tags describing textures and materials that will be tiled across the model using the <WeightMap> tag's texture. Required when using the detailmap4 [[#Shaders|shader]].<br />
|-<br />
! DetailObjects<br />
| <pre><DetailObjects><br />
<DetailObject obj_path="Data/Objects/Plants/Groundcover/Groundcover1.xml" weight_path="Data/Textures/Environments/Rocks/granite_vine_rocks/granite_vine_boulder_overgrown_vine_mask.tga" normal_conform="0.9" density="10" min_embed="0" max_embed="0.4" min_scale="0.7" max_scale="2" view_distance="40" jitter_degrees="10" overbright="0" /><br />
</DetailObjects></pre><br />
|| Contains one or more <DetailObject> tags, each describing how to randomly distribute some object across the surface. Can be used for grass, small rocks etc.<br />
|-<br />
! flags<br />
| <pre><flags no_collision=true double_sided=true/></pre><br />
|| Used to set boolean values on the object (see [[#Flags|flags]])<br />
|-<br />
! GroundOffset<br />
| <pre><GroundOffset>0.5</GroundOffset></pre><br />
|| Moves the object up/down by the set amount when the object is created<br />
|}<br />
<br />
==== Deprecated tags ====<br />
These tags are deprecated and should not be used.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! ShaderPath<br />
| <pre><ShaderPath>Data/GLSL/cubemapobj</ShaderPath></pre><br />
|| path to the shader to use (.frag & .vert), replaced by ShaderName<br />
|}<br />
<br />
==== Materials ====<br />
These are the materials that can be assigned to objects using the <code><MaterialPath></code> [[#Tags|tag]]. You can find the materials in <code>../Overgrowth/Data/Materials/</code>. The material affects what particles spawn when a character runs on the surface, what sound footsteps make on the surface, how easily weapons stick in the surface, and more.<br />
<br />
* default<br />
* dirt<br />
* dirtytock<br />
* drygrass<br />
* grass<br />
* gravel<br />
* ice<br />
* rock<br />
* rocks<br />
* sand<br />
* snow<br />
* wood<br />
<br />
=== Flags ===<br />
Flags are entered as boolean attributes ("true" or "false") in a [[#Tags|tag]] called "flags" under the "Object" tag. All flags have a default value of false.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Flag !! Description<br />
|-<br />
! no_collision<br />
| Disables physics collisions with this object.<br />
|-<br />
! double_sided<br />
| The backsides of the object gets rendered as well.<br />
|-<br />
! bush_collision<br />
| Makes the object give some resistance when passed through while the object wobbles a bit and generates leaf particles.<br />
|}<br />
<br />
==Collision/Physics Objects==<br />
The engine automatically generates a simplified physics object from your model but this can be overridden by providing an alternative .OBJ file. The file is placed in the same folder and shares the same name as the original .OBJ file with a suffix:<br />
<br />
===Suffixes===<br />
[[Image:PhysicsObject.jpg|thumb|Physics mesh should be in the same place as the render mesh]]<br />
[[Image:HullObject.jpg|thumb|Hull mesh should be in the same place as the render mesh]]<br />
{| class="wikitable"<br />
|-<br />
! Suffix !! Description<br />
|-<br />
! <span style="color: gray">YourObject</span>_COL.obj<br />
| Contains simplified geometry for physics calculations.<br />
|-<br />
! <span style="color: gray">YourObject</span>HULL.obj<br />
| Same as _COL but has extra info, used for weapons.<br />
|}<br />
<br />
Note that HULL doesn’t have an underscore to separate it from the file name!<br />
<br />
===Physics objects (_COL)=== <br />
Simplified geometry such as boxes and cylinders which are used for collision detection, they are aligned to your object based on “relative position” in your 3D program so you should place the physics mesh on top of your render mesh upon export.<br />
<br />
===Hull objects (HULL)=== <br />
They are very similar to physics objects but are used for items and weapons, the only difference is that they contain a free-floating triangle which defines the object’s center of gravity.<br />
<br />
== Shaders ==<br />
Overgrowth uses an "uber shader" approach to shader management, which means that there is one huge shader that almost everything in the game uses. So instead of choosing a shader for your object, you can set "flags" with your object that the game will use to change how it's rendered.<br />
<br />
The flags are put in the <ShaderName> tag after the shader name. Here is an example:<br />
<br />
<ShaderName>envobject #TANGENT #KEEP_SPEC</ShaderName><br />
<br />
"#TANGENT" and "#KEEP_SPEC" in this example are flags.<br />
<br />
There are two texture maps that are required for an object to be loaded in the engine. Those are the '''ColorMap''' and the '''NormalMap''' textures. Some flags allow you to use more than these two required textures, and some flags change how the required textures are used. '''TODO:''' Are there any default textures that can be used and what are they?<br />
<br />
Here is the channel designations of the ColorMap and NormalMap textures:<br />
<br />
<u>'''ColorMap'''</u><br /><br />
'''RGB''' - Color<br /><br />
'''A''' - Reflectivity<br />
<br />
<u>'''NormalMap'''</u><br /><br />
'''RGB''' - Normal<br /><br />
'''A''' - Color tint mask<br />
<br />
Any deviation from these designations or new textures caused by any flag in the table below can be seen in the ''Channel/Texture Changes'' column.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Channel/Texture Changes !! Description<br />
|-<br />
! #TANGENT<br />
|<br />
|| The normal map is used as an object space normal map by default, with this flag it's used as a tangent space normal map instead.<br />
|-<br />
! #KEEP_SPEC<br />
|<br />
<u>'''NormalMap'''</u><br /><br />
'''A''' - Smoothness<br />
|| Instead of using the alpha channel of the normal map as a color tint mask, as is the default, that channel is used as a smoothness map. The object can still be tinted, you just can't control what parts get tinted.<br />
|-<br />
! #DETAILMAP4<br />
|<br />
<u>'''WeightMap'''</u><br /><br />
'''R''' - The first detail texture<br /><br />
'''G''' - The second detail texture<br /><br />
'''B''' - The third detail texture<br />
<br />
<u>'''DetailMap colorpath'''</u><br /><br />
'''RGB''' - Color<br />
<br />
<u>'''DetailMap normalpath'''</u><br /><br />
'''RGB''' - Normal<br />
|| Allows for repeating up to 4 different textures over a model so it looks more detailed up close. This also means you can scale the model up or down with less obvious texture stretching.<br />
<br />
* The WeightMap is used to decide which DetailMap texture to put where on the object<br />
* Each DetailMap has its own color texture, normal texture and material<br />
* See the [[#Tags|tags]] heading for information about how to specify the DetailMaps<br />
|-<br />
! #BASE_TANGENT<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #AXIS_UV<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #AXIS_BLEND<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #NO_DECALS<br />
|<br />
|| No decals shows up on this object.<br />
|-<br />
! #WHY_DOES_THIS_WORK<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #INVISIBLE<br />
|<br />
|| This object will not be rendered.<br />
|-<br />
! #ALPHA<br />
| <br />
<u>'''ColorMap'''</u><br /><br />
'''A''' - Transparency<br />
|| [[Image:CubemapAlpha.jpg|thumb|#ALPHA flag in action]]<br />
Makes the alpha channel of the ColorMap work as transparency instead of reflectivity<br />
|-<br />
! #PLANT<br />
|<br />
<u>'''ColorMap'''</u><br /><br />
'''A (reflectivity)''' - No effect<br />
<br />
<u>'''NormalMap'''</u><br /><br />
'''A (color tint mask)''' - No effect<br />
<br />
<u>'''WindMap'''</u><br /><br />
'''R''' - Wind intensity<br /><br />
<br />
<u>'''TranslucencyMap'''</u><br /><br />
'''RGB''' - Translucency color<br /><br />
|| [[Image:Translucency.jpg|thumb|#PLANT flag in action together with the #ALPHA flag]]<br />
* Enables use of a WindMap which makes the object move in the wind<br />
* Enables use of a TranslucencyMap which makes it look like light can shine through the surface<br />
* Disables reflectivity<br />
* Disables color tint mask<br />
|-<br />
! #WATER<br />
|<br />
|| '''TODO:''' What does this do?<br />
|}<br />
<br />
=== Color Tint Mask ===<br />
This mask is located in the alpha channel of the normal map, and determines what parts of the object should be tinted when using the [[Editor_Interface#Color_Picker|color picker]]. Black parts are not affected, the brighter the texel the more it is affected by tinting.<br />
<br />
== See also==<br />
* [[Custom Characters]]<br />
* [[Custom Weapons & Items]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=3D_Objects&diff=60143D Objects2018-04-27T11:38:28Z<p>Silverfish: /* Items */ moved this section to the Custom Weapons & Items article</p>
<hr />
<div>== Introduction ==<br />
Phoenix uses .xml files to store information about what textures a certain model should use as well as other information such as what shader it should use. This is the file you choose when loading an object. Here is an example object .xml file:<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Object><br />
<Model>Data/Mods/example_mod/Data/Models/SimpleObject.obj</Model><br />
<ColorMap>Data/Mods/example_mod/Data/Textures/SimpleObject_Color.tga</ColorMap><br />
<NormalMap>Data/Mods/example_mod/Data/Textures/Blank_Norm.tga</NormalMap><br />
<ShaderName>envobject #TANGENT</ShaderName><br />
<MaterialPath>Data/Materials/default.xml</MaterialPath><br />
</Object><br />
</pre><br />
<br />
All object .xml files that ship with the game are located in ../Overgrowth/Data/Objects/.<br />
<br />
=== Model and Texture Requirements ===<br />
* Only triangles in models<br />
* Models use the Wavefront .obj format<br />
* Textures need to be square<br />
* Texture resolution need to be a power of two (32x32, 64x64, 128x128 and so on)<br />
* The .tga format is recommended for textures, but .png and .tif work also.<br />
<br />
==== Converting normal maps ====<br />
The normal maps that you get from some applications might not be instantly usable in the Phoenix engine without some edits. For instance, if you are using an object space normal map from Substance Designer you need to do this:<br />
<br />
# Invert the blue channel<br />
# Swap blue and green channels<br />
<br />
You can do this in Photoshop, Substance Designer, [http://orsvarn.com/entry/channel-shuffle/ Channel Shuffle] or similar. Note that Gimp does not work well with alpha channels. So if your alpha channel is anything but solid white, using Gimp to convert the normal map will change your normal map in undesirable ways.<br />
<br />
== Object .xml File ==<br />
The object .xml files contain all information about a single object (model) that can be spawned in the engine. This aims to be a full reference over all tags and flags that can be used in an object .xml.<br />
<br />
=== Tags ===<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! Model<br />
| <pre><Model>Data/Models/MyModel.obj</Model></pre><br />
|| path to the model file (.obj)<br />
|-<br />
! ColorMap<br />
| <pre><ColorMap>Data/Textures/MyColorMap.tga</ColorMap></pre><br />
|| path to the color texture file (.tga, .tif or .png)<br />
|-<br />
! NormalMap<br />
| <pre><NormalMap>Data/Textures/MyNormalMap.tga</NormalMap></pre><br />
|| Path to the normal map texture file (.tga, .tif or .png)<br />
|-<br />
! ShaderName<br />
| <pre><ShaderName>envobject #TANGENT #KEEP_SPEC</ShaderName></pre><br />
|| What shader to use, see [[#Shaders|shaders]] for more information<br />
|-<br />
! MaterialPath<br />
| <pre><MaterialPath>Data/Materials/DirtyRock.xml</MaterialPath></pre><br />
|| Path to the material to use, see [[#Materials|materials]] for more information.<br />
|-<br />
! WeightMap<br />
| <pre><WeightMap>Data/Textures/Environments/Rocks/granite_vine_rocks/granite_vine_boulder_overgrown_w.tga</WeightMap></pre><br />
|| Path to a black and white texture used for determining where each detail texture should be used. Required when using the detailmap4 [[#Shaders|shader]].<br />
|-<br />
! TranslucencyMap<br />
| <pre><TranslucencyMap>Data/Textures/Environments/cat_props/banner_t.tga</TranslucencyMap></pre><br />
|| Path to a color texture used for translucency, meaning light that shines through the object. Adds its color to the surface multiplied by the amount of light it receives, this effect ignores the normal of the surface, so if one side receives light from for instance the sun, the other side will also get the color added. If unspecified it defaults to 0.0 (no translucency) across the entire surface. Optional when using the plant [[#Shaders|shader]].<br />
|-<br />
! WindMap<br />
| <pre><WindMap>Data/Textures/Environments/cat_props/banner_w.tga</WindMap></pre><br />
|| Path to a black and white texture used to define the intensity of a vertex wind effect. If unspecified it defaults to 1.0 (active) across the entire surface. Optional when using the plant [[#Shaders|shader]].<br />
|-<br />
! DetailMaps<br />
| <pre><DetailMaps><br />
<DetailMap colorpath="Data/Textures/Terrain/DetailTextures/gray_rock.tga" normalpath="Data/Textures/Terrain/DetailTextures/gray_rock_normal.tga" materialpath="Data/Materials/rocks.xml" /><br />
...<br />
</DetailMaps></pre><br />
|| Contains exactly 4 <DetailMap> tags describing textures and materials that will be tiled across the model using the <WeightMap> tag's texture. Required when using the detailmap4 [[#Shaders|shader]].<br />
|-<br />
! DetailObjects<br />
| <pre><DetailObjects><br />
<DetailObject obj_path="Data/Objects/Plants/Groundcover/Groundcover1.xml" weight_path="Data/Textures/Environments/Rocks/granite_vine_rocks/granite_vine_boulder_overgrown_vine_mask.tga" normal_conform="0.9" density="10" min_embed="0" max_embed="0.4" min_scale="0.7" max_scale="2" view_distance="40" jitter_degrees="10" overbright="0" /><br />
</DetailObjects></pre><br />
|| Contains one or more <DetailObject> tags, each describing how to randomly distribute some object across the surface. Can be used for grass, small rocks etc.<br />
|-<br />
! flags<br />
| <pre><flags no_collision=true double_sided=true/></pre><br />
|| Used to set boolean values on the object (see [[#Flags|flags]])<br />
|-<br />
! GroundOffset<br />
| <pre><GroundOffset>0.5</GroundOffset></pre><br />
|| Moves the object up/down by the set amount when the object is created<br />
|}<br />
<br />
==== Deprecated tags ====<br />
These tags are deprecated and should not be used.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! ShaderPath<br />
| <pre><ShaderPath>Data/GLSL/cubemapobj</ShaderPath></pre><br />
|| path to the shader to use (.frag & .vert), replaced by ShaderName<br />
|}<br />
<br />
==== Materials ====<br />
These are the materials that can be assigned to objects using the <code><MaterialPath></code> [[#Tags|tag]]. You can find the materials in <code>../Overgrowth/Data/Materials/</code>. The material affects what particles spawn when a character runs on the surface, what sound footsteps make on the surface, how easily weapons stick in the surface, and more.<br />
<br />
* default<br />
* dirt<br />
* dirtytock<br />
* drygrass<br />
* grass<br />
* gravel<br />
* ice<br />
* rock<br />
* rocks<br />
* sand<br />
* snow<br />
* wood<br />
<br />
=== Flags ===<br />
Flags are entered as boolean attributes ("true" or "false") in a [[#Tags|tag]] called "flags" under the "Object" tag. All flags have a default value of false.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Flag !! Description<br />
|-<br />
! no_collision<br />
| Disables physics collisions with this object.<br />
|-<br />
! double_sided<br />
| The backsides of the object gets rendered as well.<br />
|-<br />
! bush_collision<br />
| Makes the object give some resistance when passed through while the object wobbles a bit and generates leaf particles.<br />
|}<br />
<br />
==Collision/Physics Objects==<br />
The engine automatically generates a simplified physics object from your model but this can be overridden by providing an alternative .OBJ file. The file is placed in the same folder and shares the same name as the original .OBJ file with a suffix:<br />
<br />
===Suffixes===<br />
[[Image:PhysicsObject.jpg|thumb|Physics mesh should be in the same place as the render mesh]]<br />
[[Image:HullObject.jpg|thumb|Hull mesh should be in the same place as the render mesh]]<br />
{| class="wikitable"<br />
|-<br />
! Suffix !! Description<br />
|-<br />
! <span style="color: gray">YourObject</span>_COL.obj<br />
| Contains simplified geometry for physics calculations.<br />
|-<br />
! <span style="color: gray">YourObject</span>HULL.obj<br />
| Same as _COL but has extra info, used for weapons.<br />
|}<br />
<br />
Note that HULL doesn’t have an underscore to separate it from the file name!<br />
<br />
===Physics objects (_COL)=== <br />
Simplified geometry such as boxes and cylinders which are used for collision detection, they are aligned to your object based on “relative position” in your 3D program so you should place the physics mesh on top of your render mesh upon export.<br />
<br />
===Hull objects (HULL)=== <br />
They are very similar to physics objects but are used for items and weapons, the only difference is that they contain a free-floating triangle which defines the object’s center of gravity.<br />
<br />
== Shaders ==<br />
Overgrowth uses an "uber shader" approach to shader management, which means that there is one huge shader that almost everything in the game uses. So instead of choosing a shader for your object, you can set "flags" with your object that the game will use to change how it's rendered.<br />
<br />
The flags are put in the <ShaderName> tag after the shader name. Here is an example:<br />
<br />
<ShaderName>envobject #TANGENT #KEEP_SPEC</ShaderName><br />
<br />
"#TANGENT" and "#KEEP_SPEC" in this example are flags.<br />
<br />
There are two texture maps that are required for an object to be loaded in the engine. Those are the '''ColorMap''' and the '''NormalMap''' textures. Some flags allow you to use more than these two required textures, and some flags change how the required textures are used. '''TODO:''' Are there any default textures that can be used and what are they?<br />
<br />
Here is the channel designations of the ColorMap and NormalMap textures:<br />
<br />
<u>'''ColorMap'''</u><br /><br />
'''RGB''' - Color<br /><br />
'''A''' - Reflectivity<br />
<br />
<u>'''NormalMap'''</u><br /><br />
'''RGB''' - Normal<br /><br />
'''A''' - Color tint mask<br />
<br />
Any deviation from these designations or new textures caused by any flag in the table below can be seen in the ''Channel/Texture Changes'' column.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Channel/Texture Changes !! Description<br />
|-<br />
! #TANGENT<br />
|<br />
|| The normal map is used as an object space normal map by default, with this flag it's used as a tangent space normal map instead.<br />
|-<br />
! #KEEP_SPEC<br />
|<br />
<u>'''NormalMap'''</u><br /><br />
'''A''' - Smoothness<br />
|| Instead of using the alpha channel of the normal map as a color tint mask, as is the default, that channel is used as a smoothness map. The object can still be tinted, you just can't control what parts get tinted.<br />
|-<br />
! #DETAILMAP4<br />
|<br />
<u>'''WeightMap'''</u><br /><br />
'''R''' - The first detail texture<br /><br />
'''G''' - The second detail texture<br /><br />
'''B''' - The third detail texture<br />
<br />
<u>'''DetailMap colorpath'''</u><br /><br />
'''RGB''' - Color<br />
<br />
<u>'''DetailMap normalpath'''</u><br /><br />
'''RGB''' - Normal<br />
|| Allows for repeating up to 4 different textures over a model so it looks more detailed up close. This also means you can scale the model up or down with less obvious texture stretching.<br />
<br />
* The WeightMap is used to decide which DetailMap texture to put where on the object<br />
* Each DetailMap has its own color texture, normal texture and material<br />
* See the [[#Tags|tags]] heading for information about how to specify the DetailMaps<br />
|-<br />
! #BASE_TANGENT<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #AXIS_UV<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #AXIS_BLEND<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #NO_DECALS<br />
|<br />
|| No decals shows up on this object.<br />
|-<br />
! #WHY_DOES_THIS_WORK<br />
|<br />
|| '''TODO:''' What does this do?<br />
|-<br />
! #INVISIBLE<br />
|<br />
|| This object will not be rendered.<br />
|-<br />
! #ALPHA<br />
| <br />
<u>'''ColorMap'''</u><br /><br />
'''A''' - Transparency<br />
|| [[Image:CubemapAlpha.jpg|thumb|#ALPHA flag in action]]<br />
Makes the alpha channel of the ColorMap work as transparency instead of reflectivity<br />
|-<br />
! #PLANT<br />
|<br />
<u>'''ColorMap'''</u><br /><br />
'''A (reflectivity)''' - No effect<br />
<br />
<u>'''NormalMap'''</u><br /><br />
'''A (color tint mask)''' - No effect<br />
<br />
<u>'''WindMap'''</u><br /><br />
'''R''' - Wind intensity<br /><br />
<br />
<u>'''TranslucencyMap'''</u><br /><br />
'''RGB''' - Translucency color<br /><br />
|| [[Image:Translucency.jpg|thumb|#PLANT flag in action together with the #ALPHA flag]]<br />
* Enables use of a WindMap which makes the object move in the wind<br />
* Enables use of a TranslucencyMap which makes it look like light can shine through the surface<br />
* Disables reflectivity<br />
* Disables color tint mask<br />
|-<br />
! #WATER<br />
|<br />
|| '''TODO:''' What does this do?<br />
|}<br />
<br />
=== Color Tint Mask ===<br />
This mask is located in the alpha channel of the normal map, and determines what parts of the object should be tinted when using the [[Editor_Interface#Color_Picker|color picker]]. Black parts are not affected, the brighter the texel the more it is affected by tinting.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Weapons_%26_Items&diff=6013Custom Weapons & Items2018-04-27T11:37:55Z<p>Silverfish: Initial version, moved here from the 3D Objects article</p>
<hr />
<div>Items are things that a character can pick up in the game, a large part of the items in the game are weapons. An item .xml file is needed to make an object into an item. The item .xml files that come with the game can be found in ../Overgrowth/Data/Items/. Items are picked up by their center point. <br />
<br />
As an example, here is the item .xml file for the flint_knife weapon that comes with the game:<br />
<pre><br />
<?xml version="1.0" ?><br />
<item><br />
<type>weapon</type><br />
<appearance obj_path = "Data/Objects/Weapons/flint_knife.xml"/><br />
<grip ik_attach = "rightarm"<br />
anim = "Data/Animations/r_dogweapongrip.anm"<br />
hands = "1"/><br />
<sheathe ik_attach = "hip"<br />
anim = "Data/Animations/r_dogweaponsheathed.anm"/><br />
<physics mass = "0.4 kg"/><br />
<points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points><br />
<label>knife</label><br />
<lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines><br />
<anim_override idle = "Data/Animations/r_knifestancerear.xml"<br />
movement = "Data/Animations/r_weaponmovestance.xml"/><br />
<attack_override moving = "Data/Attacks/knifeslash.xml"<br />
moving_close = "Data/Attacks/knifeslash.xml"<br />
stationary = "Data/Attacks/knifeslash.xml"<br />
stationary_close = "Data/Attacks/knifeslash.xml"/><br />
<range multiply = "0.8"/><br />
</item><br />
</pre><br />
<br />
===Tags===<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Example use !! Description<br />
|-<br />
! type<br />
|<br />
<pre><type>weapon</type></pre><br />
|| Defines what kind of item the object is. Can be ''weapon'', ''collectible'' or ''misc''.<br />
|-<br />
! appearance <br />
|<br />
<pre><appearance<br />
obj_path="Data/Objects/Weapons/MyWeapon.xml"/></pre><br />
|| Path to the object .xml file to use as a visual representation of this item.<br />
|-<br />
! grip<br />
|<br />
<pre><grip<br />
ik_attach="rightarm"<br />
anim="Data/Animations/r_dogweapongrip.anm"/></pre><br />
|| ik_attach defines what bone the object is attached to when it's held. Anim is the place where the weapon will be held at. You create these in blender using one of the existing rigs that comes with the game (preferably the rabbit_rig). <br />
|-<br />
! sheathe<br />
|<br />
<pre><sheathe<br />
ik_attach="hip"<br />
anim="Data/Animations/r_dogweaponsheathed.anm"/></pre><br />
|| ik_attach defines where to attach the object when sheathed. Anim is the place where the weapon will be sheathed at. You create these in Blender using one of the existing rigs that the game comes with (preferably the rabbit_rig).<br />
|-<br />
! physics<br />
|<br />
<pre><physics mass="1 kg"/></pre><br />
|| Changes the pitch of the sound made by the object hitting things. Also changes how overall heavy it is.<br />
|-<br />
! points<br />
|<br />
<pre><points><br />
<pommel x="0" y="-0.081" z="0"/><br />
<guard x="0" y="0.10" z="0"/><br />
<tip x="0" y="0.33" z="0"/><br />
</points></pre><br />
|| Defines a number of points on the weapon that can be used with the ''lines'' element to define what material a part of the weapon has.<br />
|-<br />
! lines<br />
|<br />
<pre><lines><br />
<wood start="pommel" end="guard"/><br />
<metal start="guard" end="tip"/><br />
</lines></pre><br />
|| Defines what materials go between what points that are defined in the points tag.<br />
|-<br />
! anim_blend<br />
|<br />
<pre><anim_blend<br />
idle = "Data/Animations/r_bigdogsword.xml"/></pre><br />
|| Override the animation for part of a character holding the item. Animation keywords that can be overridden are idle and movement. This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! anim_override<br />
|<br />
<pre><anim_override<br />
idle="Data/Animations/r_weaponidlestance.xml"/></pre><br />
|| Overrides animations of a character holding the item. Animation keywords that can be overridden are idle, movement, medleftblock, medrightblock, blockflinch and more.<br />
(See [[Custom_Characters#File_3|Custom Characters: File 3]] for the keywords.) This is used for for instance two handed weapons, spears and so on, where the default animations don't fit.<br />
|-<br />
! attack_override<br />
|<br />
<pre><attack_override<br />
moving="Data/Attacks/knifeslash.xml"<br />
moving_close="Data/Attacks/knifeslash.xml"<br />
stationary="Data/Attacks/knifeslash.xml"<br />
stationary_close="Data/Attacks/knifeslash.xml"/></pre><br />
|| What attacks should be used with this weapon in different contexts.<br />
|-<br />
! range<br />
|<br />
<pre><range multiply="0.8"/></pre><br />
|| Multiply multiplies the range with the specified value to make a weapon reach further or shorter.<br />
|}<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6012Custom Characters2018-04-27T11:26:45Z<p>Silverfish: /* Model and Texture Considerations */ finished writing image description</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics '''TODO''': Is this correct?<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]]<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has unaltered translation, scale and rotation]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== See also ==<br />
* [[Custom Animations]]<br />
* [[Custom Attacks]]<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6011Custom Characters2018-04-27T10:01:15Z<p>Silverfish: Solved two todos by supplying links to existing articles</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics '''TODO''': Is this correct?<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]]<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== See also ==<br />
* [[Custom Animations]]<br />
* [[Custom Attacks]]<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=6010Custom Characters2018-04-27T09:03:18Z<p>Silverfish: Big update adding a full workflow and a few todos</p>
<hr />
<div>{{About||custom character scripts|Character_Scripting}}<br />
'''TODO''': Put this link graciously provided by Markuss in its appropriate section:<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO''': Write introduction<br />
<br />
== Overview ==<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hulls<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics '''TODO''': Is this correct?<br />
|}<br />
<br />
To create a character for Overgrowth you need to...<br />
# Model and texture the character ([[#Model_and_Texture_Considerations|Guidelines]])<br />
# Create an ''object XML'' linking the model and the texture ([[#Object_XML|Instructions]])<br />
# Rig the character using one of the included skeletons and export ''.phxbn'', ''.fzx'' and ''.obj'' ([[#Rigging_the_Character|Instructions]])<br />
# Create a ''rigging data XML'' linking the model and the skeleton ([[#Rigging_data_XML|Instructions]])<br />
# Create a ''character XML'' linking the rigging data XML and the object XML with a set of attacks and animations the character should use ([[#Character_XML|Instructions]]<br />
# Create a script XML linking the character XML with an AI script ([[#Script_XML|Instructions]])<br />
# Create a _hulls.obj model to allow for thrown weapons to hit the character<br />
<br />
The script XML file is the file that's loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
Once you have created this file for your character it's a good idea to see if everything is working so far by loading the ''object XML'' in the editor.<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses one of the custom [[Binary_File_Formats|binary file formats]], namely the [[Binary_File_Formats#PHXBN|PHXBN (Phoenix Bones) format]] to store skeletons. To export a skeleton to a PHXBN file you need to use Wolfire's custom export addon for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO''': How do you set this up yourself, if you're not using Windows for instance?<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the .phxbn, .fzx and .obj files:<br />
<br />
# Open '''Data\BlendFiles\rabbit_rig.blend''' in Blender 2.55 with the PHXBN-add-on installed<br />
:::'''Note:''' If you download Blender from the link provided at the top of this page, the right file is already loaded.<br />
# Replace the rabbit model in the scene with your own character<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the rig<br />
## Select the mesh, then shift-select the rig to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on how you want<br />
##* It's recommended to test your character in engine with automatic weights to check that you have no other errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on how the character is going to work in the engine<br />
## Unassign all vertices in your model from any bone in the rig that doesn't have ''DEF'' in the name<br />
### Go into editor mode on the model and select all vertices<br />
### In the ''Properties editor'', go to the ''Object Data'' tab and expand the ''Vertex Groups'' menu<br />
### Select a vertex group that doesn't have ''DEF'' in its name, click ''Remove'', then select the next vertex group that doesn't have ''DEF'' in its name, click ''Remove'' again and so on until there are no groups assigned that doesn't have ''DEF'' in their name<br />
## Edit the weight painting for your character if you need to<br />
# Export your files<br />
#* With rig selected and in rest mode in object mode, export as .PHXBN<br />
#* With mesh selected in object mode and with the rig in rest mode, export as .OBJ, replace the .OBJ you imported if you want, since it's no longer needed<br />
#* '''TODO''': how to create and export FZX? What is FZX actually used for? Is FZX required?<br />
<br />
As long as everything went smoothly your character is now ready to be integrated into the game engine! The next step is to create the rigging data XML.<br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
'''TODO''': How do you decide what animations to use?<br />
'''TODO''': How do you decide what attacks to use?<br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
Now you have everything you need to load the character into the game, so try loading this ''script XML'' file in the editor and see if it works!<br />
<br />
At this point the character loads, but we are not finished yet! For the character to be able to be hit by thrown weapons you need to create a _hulls.obj model. This is covered in the next section.<br />
<br />
=== Hulls ===<br />
To enable your character to be hit by thrown objects you need to create a _hulls.obj file for it. The _hulls.obj file is a simplified collision representationis used for checking when thrown weapons hit the character.<br />
<br />
You might want to use one of the existing _hulls.obj files as a base for creating your own. These can be found in the same folder as the model they are for, so for instance, in "Overgrowth/Data/Models/Characters/IGF_Turner" there is a IGF_Turner_hulls.obj file that you can use.<br />
<br />
Here are the steps for creating your _hulls.obj file:<br />
<br />
# Import or create a single mesh object in Blender with several individual convex hulls in it, you might want to keep your model in the same scene to see how everything overlaps<br />
# '''TODO''': Do the convex hulls need to be weight painted to the bones?<br />
# Export the object as an .obj file into the same folder as the character's obj file, with the following naming convention: model_hulls.obj<br />
<br />
So if the name of the character's model is "rabbit.obj", then the hulls.obj file needs to be named "rabbit_hulls.obj" to work.<br />
<br />
To test out if your hull works, load up your character in the game and try throwing some weapons into them.<br />
<br />
If you want to add your character to the spawner menu to make it easier for others to access, read the next section.<br />
<br />
== Adding Characters to the spawner menu ==<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
'''TODO''': Make these paths more specific to characters<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspot_Scripting#File_path_conventions]]<br />
<br />
=== Animations ===<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Talk:Custom_Characters&diff=6009Talk:Custom Characters2018-04-27T07:25:42Z<p>Silverfish: Is a custom .phxbn file required?</p>
<hr />
<div>Is it possible to use an included .phxbn file, or does it need to be a new one?<br />
<br />
[[User:Silverfish|Lukas Orsvärn]] ([[User talk:Silverfish|talk]]) 07:25, 27 April 2018 (UTC)</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Shader_And_Weather_Effects&diff=5987Shader And Weather Effects2018-04-07T07:41:30Z<p>Silverfish: /* Set the value of Custom Shader to some of these tags */ Added #CAVE flag</p>
<hr />
<div>[[Category: Modding]]<br />
[[Category: Overgrowth]]<br />
<br />
==Particles==<br />
<br />
===Create and set the <code>GPU Particle Field</code> level script parameter===<br />
<br />
# Open a level<br />
# Launch the editor (<kbd>F1</kbd> key. You may have to hold the <kbd>FN</kbd> and/or <kbd>SHIFT</kbd> key to get this to work)<br />
# Open the Scenegraph properties ('''Windows''' -> '''Scenegraph''' or the <kbd>Y</kbd> key)<br />
# Expand <code>Level</code><br />
# Expand <code>Script Params</code><br />
# If you do not see <code>GPU Particle Field</code> in the list, click the '''New parameter''' button<br />
# Double click where it says <code>Untitled parameter</code><br />
# Type <code>GPU Particle Field</code> and hit <kbd>ENTER</kbd><br />
<br />
Make sure to remove this parameter if you're not using it, or you'll see a bunch of non-moving particles floating throughout the world.<br />
<br />
===Set the value of <code>GPU Particle Field</code> to some of these tags===<br />
<br />
Separate multiple tags using spaces.<br />
<br />
'''Note''': These parameters are '''case sensitive'''. They must be in upper case, or they will not work!<br />
<br />
: <code>#ASH</code> - Falling ash, rising smoke, and flying ember particles<br><br />
: <code>#BUGS</code> - Flying bug particles<br><br />
:: <code>#MOREBUGS</code> - Increase the amount of bugs (must also define #BUGS to use this)<br><br />
:: <code>#FIREFLY</code> - Flying glowing bug particles (must also define #BUGS to use this)<br><br />
::: <code>#WATER_DELETE</code> - Make fireflies not appear under water (must also define #FIREFLY to use this)<br><br />
: <code>#RAIN</code> - Falling rain particles (see [[RainWeatherEffects|these instructions for how to make this effect more dramatic]])<br><br />
: <code>#SNOW</code> - Falling snow particles<br><br />
:: <code>#MED</code> - Decrease the amount of snow particles (must also define #SNOW to use this)<br><br />
<br />
==Weather Effects/World Shaders==<br />
<br />
===Create and set the <code>Custom Shader</code> level script parameter===<br />
<br />
# Open a level<br />
# Launch the editor (<kbd>F1</kbd> key. You may have to hold the <kbd>FN</kbd> and/or <kbd>SHIFT</kbd> key to get this to work)<br />
# Open the Scenegraph properties ('''Windows''' -> '''Scenegraph''' or the <kbd>Y</kbd> key)<br />
# Expand <code>Level</code><br />
# Expand <code>Script Params</code><br />
# If you do not see <code>Custom Shader</code> in the list, click the '''New parameter''' button<br />
# Double click where it says <code>Untitled parameter</code><br />
# Type <code>Custom Shader</code> and hit <kbd>ENTER</kbd><br />
<br />
===Set the value of <code>Custom Shader</code> to some of these tags===<br />
<br />
Separate multiple tags using spaces.<br />
<br />
'''Note''': These parameters are '''case sensitive'''. They must be in upper case, or they will not work!<br />
<br />
: <code>#ADD_MOON</code> - Adds glowing orb into sky (sky must be dark enough for you to see it, and can be obscured by a "sun" with a visible intensity)<br><br />
: <code>#ADD_STARS</code> - Adds twinkling dots into sky (sky must be dark enough for you to see them)<br><br />
: <code>#BEACH</code> - Adds glistening wetness to ground, and water caustics<br><br />
: <code>#CAVE</code> - Adds a haze effect, similar to what is seen in <code>#MISTY</code>, <code>MISTY2</code>, and <code>SKY_ARK</code><br><br />
: <code>#DAMP_FOG</code> - Adds full screen rolling effect modifier to fog (must have some fog set in order to see this)<br><br />
: <code>#DIRECTED_WATER_DECALS</code> - Adds the ability to make the <code>Objects/Decals/water_froth.xml</code> water decal scroll, when modifying its green tint parameter (with <code>CTRL + P</code>)<br><br />
: <code>#EMISSIVE</code> - Makes the world fully bright (probably not great to keep in level, might be useful for detail work. Not guaranteed to not cause errors)<br><br />
: <code>#MISTY</code> - Adds a volumetric steamy haze effect (can see it even without fog, but fog makes it more visible, and the effect while there's no fog is not very realistic)<br><br />
: <code>#MISTY2</code> - Adds a volumetric rolling steamy haze effect (can see it even without fog, but fog makes it more visible, and the effect while there's no fog is not very realistic)<br><br />
: <code>#RAINY</code> - Makes characters appear wet, and adds a misty animated haze rain effect (see [[RainWeatherEffects|these instructions for how to make this effect more dramatic]])<br><br />
: <code>#SCROLL_VERY_SLOW</code> - Uhhh creepy stuff!<br><br />
: <code>#SKY_ARK</code> - Adds glistening wetness to ground, and adds a volumetric steamy haze effect<br><br />
: <code>#SNOW_EVERYWHERE</code> - Adds a thin frost cap all over objects, a thick snow cap on the very top of them, and a thin snow cap on characters (most useful if a level is already "snowy")<br><br />
: <code>#SNOW_EVERYWHERE2</code> - Adds a thick snow cap all over objects, a thin snow cap on characters, and turns the sky into a colorful gradient (can turn a non-snowy level into a snowy one)<br><br />
: <code>#SNOW_EVERYWHERE3</code> - Adds a thick directional snow cap partially covering objects, and a thin snow cap on characters (can turn a non-snowy level into a snowy one)<br><br />
: <code>#SWAMP</code> - Adds a slimy coating to everything, and makes rainbows appear<br><br />
: <code>#TEST_CLOUDS_2</code> - Switches the sky box to a moving cloud texture, and projects cloud shadows onto the ground/objects<br><br />
:: <code>#MORECLOUDS</code> - Increases the density of the clouds (must also define #TEST_CLOUDS_2 to use this)<br><br />
:: <code>#CLOUDS_DO_NOT_TINT_SKY</code> - Uses the skybox behind the clouds, instead of tinting the sky with a solid color (must also define #TEST_CLOUDS_2 to use this)<br><br />
:: <code>#CLOUDS_ALPHA</code> - Makes clouds do alpha blending against the sky map, instead of an opaque overlay (must also define #TEST_CLOUDS_2 to use this)<br><br />
:: <code>#CLOUDS_BELOW_HORIZON</code> - Makes clouds appear below the horizon instead of above it - level is "over the clouds" (must also define #TEST_CLOUDS_2 to use this)<br><br />
:: <code>#CLOUDS_DO_NOT_CAST_SHADOWS</code> - Gets rid of cloud shadows that are cast on the world - useful if clouds are below horizon (must also define #TEST_CLOUDS_2 to use this)<br><br />
:: <code>#CLOUDS_VORTEX</code> - Makes the clouds swirl into a point in the center of the level, like the eye of a storm (must also define #TEST_CLOUDS_2 to use this)<br><br />
: <code>#VOLCANO</code> - Adds a red underglow shader on the world and objects, and adds a heat haze effect<br><br />
:: <code>#LESS_SHIMMER</code> - Reduces the heat haze effect slightly (must also define #VOLCANO to use this)<br><br />
: <code>#WATER_HORIZON</code> - Makes ground and objects above a certain level appear wet, and adds distant fog to make water appear to extend off all the way to the horizon<br><br />
:: <code>#ALT</code> - Raises the water level, and extends the fog/horizon distance<br><br />
: <code>#WATERFALL_ARENA</code> - Makes foam texture scroll, adds foggy haze, and makes rainbows appear. Use <code>#CAVE</code> at the same time to remove the rainbows and change the fog a bit<br></div>Silverfishhttp://wiki.wolfire.com/index.php?title=LevelScripts&diff=5986LevelScripts2018-04-07T07:31:00Z<p>Silverfish: /* Global level script */ Added todo for level messages</p>
<hr />
<div>== Overview ==<br />
[[Category: Modding]]<br />
[[Category:Overgrowth]]<br />
Level scripts allow you to set up level-wide code that will get run, regardless of what characters, items, and hotspots exist in that level.<br />
<br />
Generally you should prefer to put your script logic in hotspots or character controller scripts.<br />
<br />
However, sometimes a level script is the right tool for the job. This is especially true when you need to intercept messages that are only passed to level scripts, and that are not (by default) sent to smaller objects in the scene.<br />
<br />
== Script Tiers ==<br />
<br />
The order that the engine calls into level scripts is as follows:<br />
<br />
==== Global level script ====<br />
This script file is located in <code>../Overgrowth/Data/Scripts/level.as</code>.<br />
<br />
Only one of these scripts is ever active at a time, since it is either defined by the base game, or by a mod, and only one mod is allowed to be active at the same time that changes this file. The game will tell you "File Collision" if you try to activate a second mod that overrides the file.<br />
<br />
The engine will call into this script for every level in the game. You can override this script in mods, but it is best to only do this as a last resort, since this can make your mod incompatible with other script mods that also override the same file.<br />
<br />
'''TODO:''' These level messages are handled in this script, this should be documented somewhere:<br />
<pre><br />
"clearhud"<br />
"cleartext"<br />
"disable_retry"<br />
"displaygui"<br />
"displayhud"<br />
"displaytext"<br />
"dispose_level"<br />
"go_to_main_menu"<br />
"loadlevel"<br />
"make_all_aware"<br />
"manual_reset"<br />
"open_menu"<br />
"reset"<br />
"screen_message"<br />
"start_dialogue"<br />
"start_dialogue_fade"<br />
"tutorial"<br />
</pre><br />
<br />
==== Per-level script ====<br />
Only one of these scripts is ever active at a time, since it is defined per-level, and you cannot have more than one level running at the same time.<br />
<br />
The specific path for this script is found in the <code><script></code> XML tag inside each level XML file. This can be changed in the top bar in the editor under ''Edit -> Set Level Script...''.<br />
<br />
You can override this script in your mods, but that requires you to override it for each individual level. Only one such script can be active for a given level, so this is another place where mod collisions might occur.<br />
<br />
==== Per-mod Level Script ====<br />
Many of these scripts can be active at the same time, but each mod can only have one.<br />
<br />
To use this script file you have to manually add the following XML tag the mod.xml that you make for your mod: <code><LevelHookFile>some_dir/something.as</LevelHookFile></code><br />
<br />
Functions in this script are run for every level in the game, and every mod can add their own level hook script.<br />
<br />
The disadvantage to it is that you can't as easily override default level script behavior. For the most part, changes in this file are limited to adding on additional behavior, rather than altering existing behavior in the base level script.<br />
<br />
== Which level scripts to use in mods, and where to put files ==<br />
<br />
In mods, you should always strive to do the least impacting change possible. Prefer modifying level scripts in this order:<br />
<br />
# [[#Per-mod_Level_Script|Per-mod level script]]<br />
# [[#Per-level script|Per-level script]]<br />
# [[#Global level script|Global level script]]<br />
If you're creating a [[#Per-mod_Level_Script|per-mod level script]], then you have the most flexibility of where to put your script files. Still, it is best to follow a standard convention so that it is easier to find the scripts in other people's mods. The recommended location is <code>../Data/Mods/your_mod_name/Data/Scripts/your_mod_name/level_hook.as</code>.<br />
<br />
If you're trying to alter existing script files, then you'll need to place your modified script files in more specific locations.<br />
<br />
To override a [[#Per-level script|per-level script]] you must put your script file in <code>../Data/Mods/your_mod_dir/Data/Scripts/</code>, as this is the root directory for the <code><script></code> tag. To avoid accidentally overshadowing another mod's or one of the main game's script files, it is recommended that you create a directory in the <code>Scripts</code> directory with the name of your mod, and then put the script file in there. '''WARNING''': Right now there is a bug when setting a level script from the editor menu, if your script is in a <code>.../Data/Scripts/your_mod_name/</code> folder. You have to manually edit the <code>your_level.xml</code> file to change the script tag to <code><Script>your_mod_name/your_script_name.as</Script></code><br />
<br />
To overshadow the [[#Global level script|Global level script]], create your script file with the following directory and name: <code>../Data/Mods/your_mod_dir/Data/Scripts/level.as</code>.<br />
<br />
== Documentation ==<br />
<br />
A list of functions, data, etc, is created automatically whenever you run the game, in a file on your hard drive. This lists what external code you get "for free" and can call from inside a custom level script.<br />
<br />
* '''Windows''': <code>My Documents\Wolfire\Overgrowth\aslevel_docs.h</code><br />
* '''Mac''': <code>~/Library/Application Support/Overgrowth/aslevel_docs.h</code><br />
* '''Linux''': <code>~/.local/share/Overgrowth/aslevel_docs.h</code><br />
<br />
This list is can change with each version of the game, so keep checking back on this <code>aslevel_docs.h</code> file to see the most up to date information.<br />
<br />
There are also wiki pages which have more detailed documentation many of these functions. These pages have a danger of going out of date, but give more detailed documentation on some of the code:<br />
<br />
* [[Level Script External Code|These functions are unique to level scripts]]<br />
* [[Common Script External Code|These functions are shared with other script types]]<br />
<br />
== List of level script hook functions ==<br />
<br />
These functions are '''required'''. You must include all of these functions in a level script:<br />
<br />
* [[#Init function|<code>void Init(string level_name) { }</code>]]<br />
<br />
These functions are '''optional'''. These functions do not have to be added to a level script, but will be called if they are present:<br />
<br />
* [[#Update function|<code>void Update(int is_paused) { }</code>]]<br />
* [[#Update function|<code>void Update() { } // Deprecated: Only called if previous function doesn't exist, and only when paused</code>]]<br />
* [[#ReceiveMessage function|<code>void ReceiveMessage(string message) { }</code>]]<br />
* [[#HotspotExit function|<code>void HotspotExit(string str, MovementObject @mo) { }</code>]]<br />
* [[#HotspotEnter function|<code>void HotspotEnter(string str, MovementObject @mo) { }</code>]]<br />
* [[#DrawGUI function|<code>void DrawGUI() { }</code>]]<br />
* [[#HasFocus function|<code>bool HasFocus() { return false; }</code>]]<br />
* [[#SetWindowDimensions function|<code>void SetWindowDimensions(int width, int height) { }</code>]]<br />
* [[#SaveHistoryState function|<code>void SaveHistoryState(SavedChunk@ chunk) { }</code>]]<br />
* [[#ReadChunk function|<code>void ReadChunk(SavedChunk@ chunk) { }</code>]]<br />
* [[#IncomingTCPData function|<code>void IncomingTCPData(uint socket, array<uint8>@ data) { }</code>]]<br />
* [[#DrawGUI2 function|<code>void DrawGUI2() { }</code>]]<br />
* [[#DrawGUI3 function|<code>void DrawGUI3() { }</code>]]<br />
* [[#DialogueCameraControl function|<code>bool DialogueCameraControl() { return false; }</code>]]<br />
<br />
== Documentation for level script hook functions ==<br />
<br />
=== Init function ===<br />
<br />
<pre style="white-space: pre-wrap;">void Init(string level_name) { }</pre><br />
<br />
[[#List of level script hook functions|Required]]<br />
<br />
'''TODO''': Is level_name a filename, or a string description?<br />
<br />
Called when the level is first loaded. '''TODO''': Is it called at any other time?<br />
<br />
Be careful, this may be (often is) called before some objects or script params are present in the level!<br />
<br />
It is most useful for setting initial values for file-scope angelscript state. '''TODO''': Good example of something that should be <code>Init</code> instead of just defined with a file-scope initializer?<br />
----<br />
<br />
=== Update function ===<br />
<br />
<pre style="white-space: pre-wrap;">void Update(int is_paused) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Called regularly by the engine so you can perform work, or detect that the game is paused. '''TODO''': Make example and add it here, or link to it.<br />
<br />
It may be useful to do initialization once in this function, which is safer than doing it in Init if you need objects or level script params to be present. TODO: Make example and add it here, or link to it.<br />
<br />
'''Note''': If <code>void Update(int is_paused) { }</code> is not present in the level script, then <code>void Update() { }</code> will be called instead (if present, but only if the game is paused). This is a deprecated fallback function, and it is recommended to always use the '''is_paused''' variant.<br />
----<br />
<br />
=== ReceiveMessage function ===<br />
<br />
<pre style="white-space: pre-wrap;">void ReceiveMessage(string message) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Called when level-wide messages have been sent by the engine, or by objects in levels.<br />
<br />
Objects in levels (such as characters or hotspots) can send this using '''level.SendMessage("some message string");'''.<br />
<br />
Parameters can be sent by separating them with spaces, and putting quotes around parameters that might contain spaces, then using the '''TokenIterator''' object.<br />
<br />
'''TODO''': Make a good example and add it here, or link to it.<br />
----<br />
=== HotspotExit function ===<br />
<br />
<pre style="white-space: pre-wrap;">void HotspotExit(string str, MovementObject @mo) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Triggered when any hotspot is exited by a movement object (such as a character, but not items).<br />
<br />
'''TODO''': Make a good example and add it here, or link to it.<br />
----<br />
=== HotspotEnter function ===<br />
<br />
<pre style="white-space: pre-wrap;">void HotspotEnter(string str, MovementObject @mo) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Triggered when any hotspot is entered by a movement object (such as a character, but not items).<br />
<br />
'''TODO''': Make a good example and add it here, or link to it.<br />
----<br />
=== DrawGUI function ===<br />
<br />
<pre style="white-space: pre-wrap;">void DrawGUI() { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
An update function for script-defined GUIs and graphics/text overlays.<br />
<br />
<code>DrawGUI</code> is called after the main game scene is drawn. If you need to draw on top of other UIs that are drawn with <code>DrawGUI</code>, then see the <code>DrawGUI2</code> and <code>DrawGUI3</code> functions.<br />
<br />
All level scripts will have their <code>DrawGUI</code> functions called before any level script's <code>DrawGUI2</code> or <code>DrawGUI3</code> function is called.<br />
----<br />
=== HasFocus function ===<br />
<br />
<pre style="white-space: pre-wrap;">bool HasFocus() { return false; }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Return true from this function if you are going to handle mouse input in this level script. This is particularly useful for menus that you draw yourself, such as the challenge level UI.<br />
<br />
'''TODO''': Is this necessary with all types of UIs? How about Dear ImGui?<br />
----<br />
=== SetWindowDimensions function ===<br />
<br />
<pre style="white-space: pre-wrap;">void SetWindowDimensions(int width, int height) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Allows a script-defined GUI to resize itself when the window gets resized.<br />
----<br />
=== SaveHistoryState function ===<br />
<br />
<pre style="white-space: pre-wrap;">void SaveHistoryState(SavedChunk@ chunk) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Allows the level script to save extra undo state.<br />
<br />
'''TODO''': Document how this works and why it is useful.<br />
----<br />
=== ReadChunk function ===<br />
<br />
<pre style="white-space: pre-wrap;">void ReadChunk(SavedChunk@ chunk) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Allows the level script to retrieve extra redo state.<br />
<br />
'''TODO''': Document how this works and why it is useful.<br />
----<br />
=== IncomingTCPData function ===<br />
<br />
<pre style="white-space: pre-wrap;">void IncomingTCPData(uint socket, array<uint8>@ data) { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Networking hook function, for when network data comes in over a socket you've created.<br />
<br />
'''TODO''': Add better documentation for this function, or link to another page with better documentation.<br />
----<br />
<br />
=== DrawGUI2 function ===<br />
<br />
<pre style="white-space: pre-wrap;">void DrawGUI2() { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
A second pass for updating script-defined GUIs and graphics/text overlays, in case you need to do something with two passes (e.g. windows and text overlays that should always be on top of other windows/dialogues, etc).<br />
<br />
<code>DrawGUI2</code> is called after <code>DrawGUI</code>, in case you need to draw on top of other UIs at those levels.<br />
<br />
All level scripts will have their <code>DrawGUI</code> functions called before any level script's <code>DrawGUI2</code> function is called. All level script's <code>DrawGUI2</code> functions will be called before any level script's <code>DrawGUI3</code> gets called.<br />
----<br />
=== DrawGUI3 function ===<br />
<br />
<pre style="white-space: pre-wrap;">void DrawGUI3() { }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
A third pass for updating script-defined GUIs and graphics/text overlays, in case you need to do something with three passes (e.g. windows that are always top level, such as the pause menu).<br />
<br />
<code>DrawGUI3</code> is called after <code>DrawGUI2</code> and <code>DrawGUI</code>, in case you need to draw on top of other UIs at those levels.<br />
<br />
All level scripts will have their <code>DrawGUI</code> and <code>DrawGUI2</code> functions called before any level script's <code>DrawGUI3</code> function is called.<br />
----<br />
=== DialogueCameraControl function ===<br />
<br />
<pre style="white-space: pre-wrap;">bool DialogueCameraControl() { return false; }</pre><br />
<br />
[[#List of level script hook functions|Optional]]<br />
<br />
Called from character scripts, in order to determine if a dialogue rendered in a level script has camera control. That way character control scripts can avoid conflicts while they manipulate the camera.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Hotspots&diff=5985Hotspots2018-04-07T07:29:29Z<p>Silverfish: /* overgrowth_level */</p>
<hr />
<div>:''This Page doesn't cover creating self-made hotspots. To read about that, see [[Hotspot Scripting]].''<br />
<br />
Hotspots are objects that make things happen in the game in different ways. They can be used to make fire, water, kill boxes, objectives and much more.<br />
<br />
Several hotspots can be found in the top bar under ''Load → Hotspot'', however not all hotspots can be found there. All hotspots can be found by going to ''Load → Load item...'' and browsing to ''../Overgrowth/Data/Objects/Hotspots/''.<br />
<br />
This page lists all hotspots available in the game and what their use is.<br />
<br />
== Hotspots ==<br />
<br />
=== activate_characters ===<br />
When the player enters the hotspot some NPCs has their ''static'' flag set to false. This can be used to optimize a level by having enemies be ''static'' until the player gets close to them.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! characters<br />
| list of ints || A space-delimited list of IDs of characters which should have their ''static'' flag set to false when the player enters the hotspot<br />
|}<br />
<br />
Example: 5124 423 566<br />
<br />
=== ambient_sound ===<br />
Is used to play environment sounds, either in some specific part of the level, or in the entire level. It can be used to add creaky wood sounds only to a ship, wind sound only at the top of a mountain, rustling leaves sound only close to trees and so on.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Delay Max<br />
| int || The maximum random time in seconds until this sound triggers after having been triggered<br />
|-<br />
! Delay Min<br />
| int || Same as ''Delay Max'', except the minimum random time<br />
|-<br />
! Fade Distance<br />
| int || The distance in meters outside of the hotspot that the sound should start being audible, it fades in to full volume as the camera gets closer to the hotspot<br />
|-<br />
! Gain<br />
| float || How loud the sound should be<br />
|-<br />
! Global<br />
| bool || If the sound should play everywhere, and not only at the hotspot's location<br />
|-<br />
! Sound Path<br />
| string || The path to the sound to use, they can be found in Data/Sounds/<br />
|-<br />
! Wind Scale<br />
| bool || Makes the sound increase and decrease in volume to make it feel like it's being created by wind<br />
|}<br />
<br />
=== boundary ===<br />
When the player enters this hotspot's volume, they are pushed in a specific direction based on the rotation of the hotspot. Note that it only pushes horizontally, it can not push up or down. To know which direction it pushes in, simply test it by running into it.<br />
<br />
=== displayimage ===<br />
Renders an image in the middle of the screen when the player is inside the hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! [0] Display Image Path<br />
| string || Location on disk of image to show<br />
|-<br />
! [1] Scale<br />
| float || How large the image should be, in percent<br />
|-<br />
! [2a] Red Tint<br />
| int || Multiplier for image's red channel<br />
|-<br />
! [2b] Green Tint<br />
| int || Multiplier for image's green channel<br />
|-<br />
! [2c] Blue Tint<br />
| int || Multiplier for image's blue channel<br />
|-<br />
! [2d] Alpha Tint<br />
| int || Multiplier for image's alpha channel<br />
|}<br />
<br />
=== displaytext ===<br />
Shows some text on the screen while the player is in the hotspot. Does not support word wrap or line breaks.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Display Text<br />
| string || Text to show<br />
|}<br />
<br />
=== displayvideo ===<br />
Does not work.<br />
<br />
=== emitter ===<br />
Creates either smoke, fog or water splashes within the hotspot volume.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Type<br />
| string || Set it to either "Smoke", "Foggy" or "Falling Water" (without the quotes)<br />
|}<br />
<br />
=== eye_adjust ===<br />
Changes the HDR settings when the player character enters the hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! HDR Black point<br />
| float || Sets the low range of the dynamic range<br />
|-<br />
! HDR Bloom multiplier<br />
| float || Changes the intensity of the bloom effect<br />
|-<br />
! HDR White point<br />
| float || Sets the high range of the dynamic range<br />
|}<br />
<br />
=== fire_test ===<br />
Pretty looking fire composed of a number of textured ribbons and a light source. Can ignite characters when they touch it.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Fire Ribbons<br />
| int || The number of ribbons that should be used<br />
|-<br />
! Ignite Characters<br />
| bool || If checked, characters will ignite when they touch the fire, only works on NPCs if they are ragdolled<br />
|-<br />
! Light Amplify<br />
| float || The intensity of the light from the fire<br />
|-<br />
! Light Distance<br />
| float || How far away the light should reach '''TODO:''' What unit is this in?<br />
|}<br />
<br />
=== general_campaign_level ===<br />
'''TODO:''' How does this work?<br />
<br />
=== generic_kill ===<br />
Kills any character that enters the hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! KillNPC<br />
| bool || If checked, the hotspot is lethal to NPCs<br />
|-<br />
! KillPlayer<br />
| bool || If checked, the hotspot is lethal to the player<br />
|}<br />
<br />
=== lava_kill ===<br />
Ignites and instantly kills any character that comes into contact with the hotspot.<br />
<br />
=== levelwin ===<br />
Sends a global "levelwin" message when the player enters the hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! branch<br />
| string || After the "levelwin" message, a space is added and then this string<br />
|}<br />
<br />
=== loadlevel ===<br />
Loads a specified level when the player enters the hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Level to load<br />
| string || The path to the level you want to load, starting in ../Overgrowth/<br />
|}<br />
<br />
=== lugaru_hawk ===<br />
Adds a hawk that circles around the hotspot.<br />
<br />
=== new_checkpoint ===<br />
A checkpoint that's used together with the [[#respawn_at_checkpoint|respawn_at_checkpoint]] hotspot. Entering this hotspot makes this the current checkpoint. When touching a [[#respawn_at_checkpoint|respawn_at_checkpoint]] you get teleported to the center of the most recently touched ''new_checkpoint'' hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! LastEnteredTime<br />
| int || A timestamp for when this was most recently touched, this is used to determine which ''new_checkpoint'' hotspot to respawn at when touching a [[#respawn_at_checkpoint|respawn_at_checkpoint]] hotspot<br />
|}<br />
<br />
=== no_grab ===<br />
Any ledge within this hotspot can't be grabbed. You would usually use the [[Collision Painting|collision painting system]] to decide whether a ledge is grabbable, but if you want to for instance make a ledge in a [[Prefabs|prefab]] not grabbable you can't always do that, so you can then use this no_grab hotspot instead.<br />
<br />
=== object_disappear ===<br />
Deletes the specified object when the player enters the hotspot.<br />
<br />
Note that this hotspot does not use the actual name of the object. You need to manually add a script parameter on the object you want to delete called "Name", and write the same name you specify in "Object name to dissapear" parameter in the hotspot.<br />
<br />
Keep in mind that this hotspot actually ''deletes'' the objects from the level, as if you would have deleted them in the editor.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Object name to dissapear<br />
| string || Any object that has an added "Name" script parameter that is the same as the string in this parameter will be deleted<br />
|}<br />
<br />
=== overgrowth_level ===<br />
The hotspot used in the Overgrowth story to set goals and/or layered music within a level. All the Information for this Hotspot can be found on the ''[[Checkpoints]]'' page.<br />
<br />
'''TODO:''' Should another hotspot be used instead of this one?<br />
<br />
'''TODO:''' These level messages are handled in this hotspot, need to explain what that means:<br />
<pre><br />
"reset"<br />
"level_event music_layer_override"<br />
"level_event crowd_override"<br />
"level_event set_camera_dof"<br />
"level_event character_knocked_out"<br />
"level_event character_died"<br />
"player_entered_checkpoint_fall_death"<br />
"player_entered_checkpoint"<br />
</pre><br />
<br />
=== overgrowth_level_checkpoint ===<br />
The checkpoints used in the Overgrowth story to activate a ''"reach"'' goal. All the Information about this Hotspot can be found on the ''[[Checkpoints]]'' page.<br />
'''TODO:''' Should another hotspot be used instead of this one?<br />
<br />
=== portal ===<br />
Allows for traveling bwtween levels. Requires a [[#portal_manager|portal_manager]] hotspot to function properly.<br />
<br />
You can specify a light that gets brighter as a character approaches the portal.<br />
<br />
To be able to travel to this portal from another level you need to create a ''Load → Utility → Player Spawn'' object.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Level to load<br />
| string || The path to the level to load when entering this hotspot<br />
|-<br />
! light_id<br />
| int || The ID of the dynamic_light_object that should get brighter when a character gets closer to the hotspot<br />
|-<br />
! spawn_point<br />
| int || The ID of the ''Player Spawn'' object you want the player to spawn at when teleporting to this level<br />
|}<br />
<br />
=== portal_manager ===<br />
Required when using the portal hotspot.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Level to load<br />
| int list || The IDs of all portals in the level<br />
|}<br />
<br />
=== resetcharacter ===<br />
Resets any character that touches this hotspot to their spawn location.<br />
<br />
=== resetlevel ===<br />
Resets the level when the player touches it, as if you press L in the editor.<br />
<br />
=== respawn_at_checkpoint ===<br />
Used together with the [[#new_checkpoint|new_checkpoint]] hotspot. When the player touches this hotspot they get teleported to the center of the most recently touched [[#new_checkpoint|new_checkpoint]].<br />
<br />
=== soak_level ===<br />
After the player enters the hotspot, a new level is loaded after a set amount of time.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! next_level<br />
| string || The path to the level to load<br />
|-<br />
! time_to_next_level<br />
| int || Number of seconds to wait before loading the next level<br />
|}<br />
<br />
=== spike ===<br />
A spike that can impale characters.<br />
<br />
=== start_dialogue ===<br />
Allows for dialogues to be started in different ways when the player is in the hotspot. For more information about dialogues read the [[Dialogue]] article.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Automatic<br />
| bool || The dialogue starts automatically when the player enters the hotspot<br />
|-<br />
! Color<br />
| RGB floats || '''TODO:''' What does this do?<br />
|-<br />
! Dialogue<br />
| string || The name of the dialogue to start<br />
|-<br />
! Fade<br />
| bool || Fade to black when starting the dialogue, to make transition less jarring<br />
|-<br />
! Visible in game<br />
| bool || Keeps the signpost icon visible in the game<br />
|}<br />
<br />
=== StartRace ===<br />
'''TODO: Does it not work like [[#FinishRace|FinishRace]] ?'''<br />
Used to start a race similar to the one shown off in the video ''[https://www.youtube.com/watch?v=cc5L9sBF7D0|Building A Race Course In Overgrowth - Wolfire Games]''.<br />
<br />
=== tutorial ===<br />
Activates built-in tutorials when entered. ''Settings → Game → Tutorials'' needs to be on for the tutorials to trigger.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Type<br />
| string || Decides which tutorial to run, can be one of the following: stealth, basic, jump_climb, walljump, jump_higher, jump_long, combat, jumpkick, knife, throw, flip_roll<br />
|}<br />
<br />
=== victorytrigger ===<br />
'''TODO:''' Is this still usable? If so, how is it used?<br />
<br />
=== water_bob ===<br />
Makes the specified objects move as if they are on water.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Objects<br />
| list of ints || The IDs of the objects that should be affected<br />
|-<br />
! SavedTransform<br />
| Translation & rotation as floats || The original location of the objects<br />
|-<br />
! rotation_scale<br />
| float || Multiplier of rotation<br />
|-<br />
! time_scale<br />
| float || How fast the objects should move<br />
|-<br />
! translation_scale<br />
| float || Multiplier of translation<br />
|}<br />
<br />
=== water_bob_fast ===<br />
'''TODO:''' Is this simply a better optimized version of the "water_bob" hotspot?<br />
<br />
=== wet_cube ===<br />
A block of water with nice graphics that slows you down if you walk in it and drowns you if you're below the surface for too long.<br />
<br />
==== Script Params ====<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Type !! Description<br />
|-<br />
! Water Fog<br />
| float || How far down into the water you can see<br />
|-<br />
! Wave Density<br />
| float || How zoomed in the waves should be<br />
|-<br />
! Wave Height<br />
| float || How strong the waves should be<br />
|}<br />
<br />
== Deprecated and Component Hotspots ==<br />
These hotspots have either been replaced by a better alternative, have stopped working at some point during the development of the game, or can't be used on their own.<br />
<br />
=== announce_items ===<br />
Remnant from old tutorial level.<br />
<br />
=== Checkpoint ===<br />
No longer used, should use the new [[Checkpoints|checkpoint system]] instead.<br />
<br />
=== collectable_target ===<br />
Does not work anymore.<br />
<br />
=== dark_world_level ===<br />
Crashes the game.<br />
<br />
=== dark_world_trigger ===<br />
Function unknown.<br />
<br />
=== destination_trail ===<br />
Function unknown.<br />
<br />
=== FinishRace ===<br />
No longer works. Used in the Video ''[https://www.youtube.com/watch?v=cc5L9sBF7D0|Building A Race Course In Overgrowth - Wolfire Games]''.<br />
<br />
=== fixedragdollpart ===<br />
Not used on its own, used in aschar for impaling.<br />
<br />
=== kill ===<br />
Deprecated, use the [[#generic_kill|generic_kill]] or [[#lava_kill|lava_kill]] hotspots instead.<br />
<br />
=== lugaru_level ===<br />
The level hotspot used in the official Lugaru story.<br />
<br />
=== must_visit_trigger ===<br />
Old unused challenge hotspot.<br />
<br />
=== particle_foggy ===<br />
This is actually not a hotspot, it just creates an emitter hotspot that's pre-configured as fog.<br />
<br />
=== rain ===<br />
Particle based rain, use the [[Shader And Weather Effects|rain shaders]] instead.<br />
<br />
=== spike_tip ===<br />
Used by the spike hotspot.<br />
<br />
=== snow ===<br />
Particle based snow, use the [[Shader And Weather Effects|snow shaders]] instead.<br />
<br />
=== water ===<br />
Deprecated, use [[#wet_cube|wet_cube]] instead.<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Creating_a_new_Mod&diff=5984Creating a new Mod2018-04-07T07:19:49Z<p>Silverfish: /* Steam Workshop */ Reset to default size on video embed</p>
<hr />
<div>== Folder structure ==<br />
<br />
Overgrowth has a powerful and simple system to allow the creation of mods by both "overshadowing" existing files, and by creating new files.<br />
<br />
Mods that are installed via the Steam workshop end up in <code>../Steam/steamapps/workshop/content/25000/</code>. Each folder in there has a number assigned to it, so it can be hard to see which folder belongs to which mod. All other mods, such as manually installed ones, those from SUM Launcher and those you make yourself live in the <code>../Overgrowth/Data/Mods/</code> folder. There, each mod folder has a readable name.<br />
<br />
The folder for a mod must contain at least a mod.xml file. Other data may be present as well, such as scripts, shaders, models, textures or levels. All these folders are contained in a Data folder inside the mod's folder, resulting in the following structure<br />
<br />
Overgrowth/Data/Mods/<br />
└── my_mod/<br />
├── mod.xml<br />
└── Data/<br />
├── Scripts/<br />
├── Shaders/<br />
├── Models/<br />
├── Textures/<br />
└── Levels/<br />
<br />
Note that your mod can be set up and kept in either YourPC/Documents/Wolfire/Overgrowth/Data/Mods, or in the actual program files, in YourPC/(C:)/Program Files(x86)/Steam/steamapps/common/Overgrowth/Data/Mods - both of these "Mods" folder locations will work. The folder called my_mod in the tree structure above is what is compressed into a zip file and distributed when a mod is released. You can also release the mod on Steam Workshop, which is a different process that you can read about [[#Steam_Workshop|a bit further down]].<br />
<br />
== The mod.xml file ==<br />
<br />
The mod.xml file contains the mod's meta data. The game uses this file to understand how to use the mod with the game. XML files can be written and modified using programs like Notepad++ and Sublime Text. Here is a complete example:<br />
<br />
<? xml version="1.0" ?><br />
<Mod><br />
<!-- The ID is necessary and should never change between versions of the same mod --><br />
<Id>unique-name</Id> <br />
<!-- The human readable name is presented in UI's --><br />
<Name>Human Readable Name</Name> <br />
<!-- Version number, can have any formatting you wish. --><br />
<Version>1.2.5</Version><br />
<SupportedVersion>b4</SupportedVersion><br />
<ModDependency><br />
<Id>other-mod2</Id><br />
<Version>1.0.0</Version> <br />
</ModDependency><br />
</Mod><br />
<br />
You can find all available tags and their uses under the [[#mod.xml_tags|mod.xml_tags]] heading below.<br />
<br />
== mod.xml tags ==<br />
There are quite a few tags that can be used in the mod.xml file to set up your mod. Here we go through all of those tags.<br />
<br />
=== Id ===<br />
<br />
The unique ID for this mod that is not allowed to conflict with any other existing mod. One suggestion is to keep it the same as the folder name for the mod. The ID is not shown to the user, but it is used for instance when another mod wants to use this mod as a dependency. ID tag text must consist of letters and dashes only, with no uppercase.<br />
<br />
Example:<br />
<code><Id>my-mod</Id></code><br />
<br />
=== Name ===<br />
<br />
The name of the mod, shown in the mod menu.<br />
<br />
Example:<br />
<code><Name>My Mod</Name></code><br />
<br />
=== Category ===<br />
<br />
Required for a valid mod, but does not have any effect.<br />
<br />
Example:<br />
<code><Category>Campaign</Category></code><br />
<br />
=== Author ===<br />
<br />
Is shown in the user interface to tell the user who made the mod.<br />
<br />
Example:<br />
<code><Author>John Doe</Author></code><br />
<br />
=== Description ===<br />
<br />
Is shown in the user interface to tell the user what this mod does.<br />
<br />
Example:<br />
<code><Description>This is my really cool mod that adds some excellent functionality</Description></code><br />
<br />
=== Version ===<br />
<br />
The version of the mod. It is both shown in the user interface, and is used by other mods that depend on this mod to make sure that the user has the right version of your mod installed. Does not need to follow any specific pattern.<br />
<br />
Example:<br />
<code><Version>1.0.0</Version></code><br />
<br />
=== Thumbnail ===<br />
<br />
The path to an image to show in the user interface for your mod when the user is browsing their installed mods. Make sure you include the supplied image in the mod folder.<br />
<br />
Example:<br />
<code><Thumbnail>Data/Images/my-mod/thumb.jpg</Thumbnail></code><br />
<br />
=== PreviewImage ===<br />
<br />
This image is used in Steam Workshop to represent the mod in search results, when browsing mods and on the mod's page.<br />
<br />
Example:<br />
<code><PreviewImage>Data/Images/my-mod/preview-image.jpg</PreviewImage></code><br />
<br />
=== Tag ===<br />
<br />
Once the mod is uploaded to Steam Workshop, you can search for the tags to find the mod. You can have as many tags as you want.<br />
<br />
Example:<br />
<Tag>Campaign</Tag><br />
<Tag>Parkour</Tag><br />
<br />
=== SupportedVersion ===<br />
<br />
Which version of the game this mod can be used in. Can be something like <code>1.2.0</code>, or <code>*</code> to indicate that it can be used with any version. Using <code>*</code> is useful for mods that don't rely on the game code as much, such as assets, levels and so on.<br />
<br />
To find out which version of the game you're running, in the top menu bar, press <code>Help → About...</code>. Here you will see 4 lines of information, where the third line shows your version number. It starts with three numbers separated by periods, and this is the version you're running. It can for example be <code>1.2.0</code>.<br />
<br />
Example:<br />
<code><SupportedVersion>1.2.0</SupportedVersion></code><br />
<br />
=== LevelHookFile ===<br />
<br />
Specifies a path to a script file. Functions in this script are run for every level in the game when the mod is active. Every mod can add their own level hook script. [[LevelScripts#Per-mod_Level_Script|Read this]] for more information.<br />
<br />
Example:<br />
<code><LevelHookFile>Scripts/my_mod/level_script.as</LevelHookFile></code><br />
<br />
=== MenuItem ===<br />
Deprecated, no longer works.<br />
<br />
Adds a campaign button to the Play menu which runs a script. The script type is a [[Scriptable Menu]].<br />
<br />
Example:<br />
<code><MenuItem title="My Menu" category="My Category" thumbnail="Data/Images/my_mod/my_item.png" path="Data/Scripts/my_menu_script.as"/></code><br />
<br />
=== Campaign ===<br />
<br />
Describes a set of levels that belong together.<br />
<br />
Has a few attributes that describe the campaign:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! title<br />
| The name of the campaign, shown in the menu.<br />
|-<br />
! type<br />
| Deprecated, has no effect.<br />
|-<br />
! is_linear<br />
| Sets if you need to finish the first level to unlock access to the second and so on.<br />
|-<br />
! thumbnail<br />
| The path to the image to use for the campaign in the play menu.<br />
|}<br />
<br />
Inside the campaign tag there are two or more "Level" tags in the desired order that make up the campaign. For more information about what is included in the "Level" tag, see the "Level" heading just below.<br />
<br />
Example:<br />
<Campaign title="My Campaign"<br />
type="general"<br />
is_linear="true"><br />
<Level title="Intro" <br />
thumbnail="Images/MyMod/intro_thumb.jpg"><br />
MyMod/intro.xml<br />
</Level><br />
<Level title="Big Challenge" <br />
thumbnail="Images/MyMod/challenge_thumb.jpg"><br />
MyMod/challenge.xml<br />
</Level><br />
<Level title="Ending" <br />
thumbnail="Images/MyMod/end_cutscene_thumb.jpg"><br />
MyMod/end_cutscene.xml<br />
</Level><br />
</Campaign><br />
<br />
=== Level ===<br />
<br />
Can be placed in the root "Mod" tag to make the specified levels show up under the play menu in the game. You can also place them in a "Campaign" tag to put them into a campaign, for more information on that, see the "Campaign" tag above.<br />
<br />
Each level has two attributes, and between the start and end tags you write the path to the level. The root for the path is in the /Data/Levels/ folder, so leave everything up to the Levels folder out of the path, and make sure the level is stored inside the <code>../Overgrowth/Data/Mods/my_mod/Data/Levels/</code> folder.<br />
<br />
Attributes:<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! title<br />
| The name of the level, shown in the menu.<br />
|-<br />
! thumbnail<br />
| The path to the image to use for the level in the play menu. This attribute is not required.<br />
|}<br />
<br />
Example:<br />
<code><Level title="My Level" thumbnail="Images/MyMod/my_level_thumb.jpg">MyMod/my_level.xml</Level></code><br />
<br />
=== NeedsRestart ===<br />
<br />
This tag is used to determine if the game should let the user know that they need to restart the game in order for the mod to function properly.<br />
<br />
Can be <code>true</code> or <code>false</code>.<br />
<br />
You need to manually test for if your mod works properly without a game restart, and then put true or false depending on the outcome.<br />
<br />
Example:<br />
<code><NeedsRestart>false</NeedsRestart></code><br />
<br />
=== ModDependency ===<br />
<br />
This is a list of other mods that this mod depends on to work. Has two tags for each mod:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Purpose<br />
|-<br />
! Id<br />
| The unique ID for the other mod.<br />
|-<br />
! Version<br />
| The version of the other mod that this mod requires. Set to <code>*</code> to accept any version of the other mod.<br />
|}<br />
<br />
Example:<br />
<ModDependency><br />
<Id>other-mod</Id><br />
<Version>1.0.0</Version> <br />
</ModDependency><br />
<br />
=== Item ===<br />
<br />
Allows you to add entries to the "Load Item" list in the editor. This is useful if the mod adds weapons, characters, static objects, decals and similar things.<br />
<br />
Has a few attributes for each entry:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! category<br />
| Name of the sub-menu to add the item to. If the sub-menu does not exist it will automatically be created.<br />
|-<br />
! title<br />
| Name of the item to display in the list.<br />
|-<br />
! path<br />
| Path to the object file for this item.<br />
|-<br />
! thumbnail<br />
| Path to image to use as a preview image for this item.<br />
|}<br />
<br />
Example:<br />
<Item category="My Mod"<br />
title="My item"<br />
path="Data/Items/MyItem.xml"<br />
thumbnail="Data/UI/spawner/MyItem.png" /><br />
<br />
<br />
== Advanced mod menu ==<br />
<br />
[[File:Advanced_mod_menu.jpg|200px|thumb|right|The advanced mod menu]]<br />
<br />
To help modders validate their mods and upload them to the Steam Workshop there is a tool called the "Advanced mod menu". Access it by going to the main menu, then in the top menu bar, click <code>Windows -> Mods</code>. This brings up a simpler version of the mod menu. To activate the advanced mod menu, click <code>Menu -> Advanced</code>. Make sure to increase the size of the window to see all the new information in the window.<br />
<br />
This shows all the available information for the selected mod.<br />
<br />
== Steam Workshop ==<br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|How to upload a mod to the Steam Workshop<br />
|frame<br />
|start=702&end=873<br />
}}<br />
<br />
Overgrowth comes with built in tools for uploading your mods to the Steam Workshop.<br />
<br />
=== Uploading a Mod ===<br />
<br />
[[File:Steamworks_upload.jpg|200px|thumb|right|The Steamworks New Upload menu]]<br />
<br />
To release a mod on Steam Workshop, first create your mod and make sure it works as intended. Then open up the [[#Advanced_mod_menu|advanced mod menu]], make sure the "Valid" item says "Yes", press "Upload To Steamworks..." and follow the instructions at the bottom.<br />
<br />
If it says something about needing to accept an agreement when you've uploaded a mod, go to http://steamcommunity.com/sharedfiles/workshoplegalagreement, log in, read through and accept the agreement if you do.<br />
<br />
Any mod that has just been uploaded will be private. And before you make it public you should brush up the mod's page a bit. It's a good idea to add a video, some screenshots, a description that tells the user what makes the mod interesting, how to use it and so on.<br />
<br />
If the mod requires some other mod to work, make sure to specify that using the "Add/Remove Required Items" in the "Owner Controls".<br />
<br />
=== Updating a Mod ===<br />
<br />
To update a mod that you've already uploaded to Steam Workshop, start by opening up the [[#Advanced_mod_menu|advanced mod menu]]. Select the workshop mod you want to update under the "My Steam Workshop Mods" heading in the left column, and press "Upload Update..." under "Owner Controls" in the right column.<br />
<br />
This brings up a window where you can choose which local source mod to use as the updated version, you can control its visibility on the workshop and write an update message. After agreeing to the text at the bottom of the window you can upload the update.<br />
<br />
[[Category: Tutorials]]<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Editor_Interface&diff=5983Editor Interface2018-04-07T07:12:48Z<p>Silverfish: /* Activating the editor */ Set size of video embed to default value</p>
<hr />
<div>[[Category: Modding]]<br />
[[Category: Overgrowth]]<br />
<br />
[[Image:Editor_Overview.png|right|600px|thumb|caption|The Overgrowth level editor]]<br />
This page details all the interface elements and actions in the Overgrowth level editor.<br />
<br />
The level editor lets you create new levels or even whole campaigns. This is the same editor we used to make the Overgrowth and Lugaru stories.<br />
<br />
You can use the level editor to edit any existing level in the game.<br />
<br />
== Activating the editor ==<br />
{{#ev:youtube<br />
|eS3RujmDQ2M<br />
|<br />
|right<br />
|Level editor basics<br />
|frame<br />
|start=15<br />
}}<br />
<br />
==== To activate the editor: ====<br />
* Create a new level ('''File''' -> '''New''')<br />
* Open an existing level and press <kbd>'''F1'''</kbd><br />
<br />
If the editor is active while playing a level, you can open up the editor window again by pressing the <kbd>'''Esc'''</kbd> key.<br />
<br />
You can deactivate the editor by hitting <kbd>'''F1'''</kbd> a second time.<br />
<br />
==== Troubleshooting: ====<br />
If you can't get the editor to activate, there are a few things you can try:<br />
* If you have a laptop, try holding the <kbd>'''fn'''</kbd> key while pressing <kbd>'''F1'''</kbd><br />
* Mash all the modifier keys a few times to make sure they're not stuck down - <kbd>'''ctrl'''</kbd>, <kbd>'''alt'''</kbd>, <kbd>'''shift'''</kbd>, <kbd>'''command'''</kbd>, etc<br />
* Make sure you have all other programs closed, in case one of them is conflicting with the <kbd>'''F1'''</kbd> hotkey<br />
* If some "Help" program comes up when you hit <kbd>'''F1'''</kbd> (such as "HP Help"), edit its settings to disable the hotkey.<br>Or just ''uninstall it'' (because it is bloatware)<br />
<br clear=all><br />
<br />
== Camera Movement ==<br />
{| class="wikitable"<br />
|-<br />
! Control !! Behavior<br />
|-<br />
! W<br />
| Moves camera forward<br />
|-<br />
! S<br />
| Moves camera backward<br />
|-<br />
! A<br />
| Moves camera left<br />
|-<br />
! D<br />
| Moves camera right<br />
|-<br />
! Shift + W<br />
| Moves camera up<br />
|-<br />
! Shift + S<br />
| Moves camera down<br />
|-<br />
! Left click and drag<br />
| Rotates the camera<br />
|}<br />
<br />
== Object Selection ==<br />
<br />
Here are the different ways you can select objects.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Select single object<br />
| double-left-click on object || Selects clicked on object and deselects all other objects. If the object is part of a group, the whole group is selected. A box around the object indicates that it is selected.<br />
|-<br />
! Toggle-select objects<br />
| shift + double-left-click on objects || Toggles selection of clicked on object. Preserves existing selections.<br />
|-<br />
! Box select objects<br />
| left-click + right-click + drag, or left-click + 'b' + drag || Selects all objects whose centers lie within box drawn on screen. Deselects all other objects.<br />
|-<br />
! Box add to selection<br />
| shift + left-click + right-click + drag, or shift + left-click + 'b' + drag || Adds all objects whose centers lie within the drawn box to the selection. Preserves existing selection.<br />
|-<br />
! Select decal or object that is under another decal<br />
| mouse wheel up/down || When you have 2 or more objects or decals on top of each other, you can select at least 1 decal or object, put your mouse cursor on top of the one you want to select, then use the scroll wheel to switch your selection between the objects.<br />
|-<br />
! Select all<br />
| cmd-a || Selects all objects.<br />
|-<br />
! Deselect all<br />
| double-left-click away from all objects || Deselects all objects.<br />
|}<br />
<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
<br />
'''Note: ''' If the Debug window is open ('''Top Bar''' -> '''Windows''' -> '''Debug Window'''), then when you select an object some useful information will appear. It shows you what xml file the object is created from, its unique object id, and what type of object it is.<br />
<br />
<br clear=all><br />
<br />
== Transformations ==<br />
<br />
For all transformations:<br />
<br />
* In order to transform an object you must first select it.<br />
* Hold ctrl to make movements snap to half-meter increments.<br />
* Hold alt to clone and transform the selected objects, leaving the original objects behind.<br />
* Left-click transforms objects on all axis. Right-click transforms on the two axis that are perpendicular to the side of the bounding box you click on. Holding shift and right click locks the transformation to the axis parallel to the bounding box face you click on.<br />
* Groups are transformed around the group center. Ungrouped objects, even if multiple are selected and transformed at once, are transformed around their own individual centers.<br />
<br />
=== Translation ===<br />
<br />
Hover mouse over central region of a bounding box' face, or hold 't'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Camera relative<br />
| left-click + drag || Translates clicked on object along plane parallel to the screen.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Translates clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Translates clicked on object along normal of clicked on face.<br />
|-<br />
! force decal(s) to map only one object/group<br />
| hold i || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! force decal(s) to project only on selected objects<br />
| press o || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! projection box/angle<br />
| press p || to make projection box for decal<br />
|}<br />
<br />
=== Scale ===<br />
<br />
Hover mouse near bounding box corners, or hold 'e'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! All dimensions<br />
| left-click + drag || Scales clicked on object in all dimensions (x, y, and z) at once.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Extends clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Extrudes clicked on object along normal of clicked on face.<br />
|}<br />
<br />
=== Mirror ===<br />
<br />
Just use the right-click scale tool, and scale down the object until it flips and its mirror image begins scaling up!<br />
<br />
=== Rotation ===<br />
<br />
Hover mouse near bounding box edges but away from the corners, or hold 'r'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Free<br />
| left-click + drag || Rotates clicked on object as if you are pushing the surface of a ball.<br />
|-<br />
! Locked to axis<br />
| right-click + drag || Rotates clicked on object about normal of clicked on face.<br />
|}<br />
<br />
==Editor/Debug Keys==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Toggle editor mode<br />
| F1 || Enables level editor. Press again to exit.<br />
|-<br />
! Activate play mode<br />
| 8 || Spawns you in the level so you can play it. If there already is a player character you will control that, otherwise a player character spawn is created on the editor camera automatically.<br />
|-<br />
! Restore characters<br />
| X || Restores all characters on the level to full health, wakes up any "unconscious" ones, and removes all blood from the environment.<br />
|-<br />
! Reload level<br />
| L || Restarts the current level.<br />
|-<br />
! Change character<br />
| 1-7 || Changes the playable character into one of seven possible characters. 1 cycles through rabbit guard, bandit, and turner models, 2 cycles through civilian rabbit models, 3 cycles through cat models, 4 cycles through rat models, 5 cycles through wolves, 6 through dogs, and the seventh is Rabbot 2.0.<br />
|-<br />
! Active ragdoll<br />
| Z || Puts player character into active ragdoll mode where they will try to protect themselves as they fall. Is active as long as you hold the button.<br />
|-<br />
! Pain ragdoll<br />
| N || Makes the player fall to the ground in agony, until you let go of the button.<br />
|-<br />
! Floppy ragdoll<br />
| M || Makes the player fall to the ground, limp, until the button is released.<br />
|-<br />
! Voice Test<br />
| V || Plays a test voice.<br />
|-<br />
! Toggle combat AI<br />
| C || Toggles whether the characters in the level will attack each other if they are on different teams.<br />
|-<br />
! Slit throat<br />
| , || The controlled character suffers a neck wound with blood gushing from it.<br />
|-<br />
! Slow time<br />
| Tab || Slows down the whole game.<br />
|-<br />
! Freeze time<br />
| ` || Freezes the game. This is useful for posing characters for item placement. '''Note''': The game must be unfrozen to change between controlling the player and editor mode. <br />
|-<br />
! Insta-kill<br />
| F || Instantly kills and knocks back nearby NPC's with a death ray.<br />
|-<br />
! Experimental Key<br />
| B || Makes you invisible.<br />
|}<br />
<br />
== Debug Window ==<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
Just below the top bar menu, on the left side, is a space for debug information.<br />
<br />
This window is only visible if you have the Debug Window enabled ('''Top Bar''' -> '''Windows''' -> '''Debug Window''').<br />
<br />
It will tell you information about the selected object, checkpoint progress (if checkpoints are enabled in this level), and a warning if the nav mesh needs to be updated.<br />
<br />
<br clear=all><br />
<br />
== Editor menu ==<br />
The bar across the top of the window is the editor menu. Many editor functions can be found here, but some functions can only be reached via hotkeys for now.<br />
<br />
'Cmd' refers to the '⌘' key on Macs, and the 'ctrl' key on PCs.<br />
<br />
=== File menu ===<br />
Contains file operations for loading and saving levels.<br />
<br />
[[Image:Editor-file-menu.png|right|thumb|caption|The editor "file" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! New Level<br />
| - || Opens a new empty level in the editor.<br />
|-<br />
! Open Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in Data/Levels directory).<br />
|-<br />
! Open Local Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in last used directory).<br />
|-<br />
! Open Recent<br />
| - || Re-open one of the most recently opened levels in the editor.<br />
|-<br />
! Open Campaign Level<br />
| - || Open one of the levels from the main Overgrowth story mode.<br />
|-<br />
! Save Level<br />
| cmd+s || Overwrites the currently opened level file with any changes you made.<br />
|-<br />
! Save As...<br />
| - || Opens a file browser where you can pick a new or existing file to save the level to.<br />
|-<br />
! Back to main menu<br />
| - || Leave the editor and return to the main menu.<br />
|-<br />
! Quit<br />
| alt+f4 || Quit the game.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Edit menu ===<br />
Contains basic editing functions. Also contains properties for the level.<br />
<br />
[[Image:Editor-edit-menu.png|right|thumb|caption|The editor "edit" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Undo<br />
| cmd+z || Undo the most recent action.<br />
|-<br />
! Redo<br />
| cmd+shift+z || Redo the most recent action.<br />
|-<br />
! Cut<br />
| cmd+x || Puts the selection into the clipboard and removes the selected objects.<br />
|-<br />
! Copy<br />
| cmd+c || Puts the selection into the clipboard.<br />
|-<br />
! Paste<br />
| cmd+v || Pastes the clipboard on the cursor position.<br />
|-<br />
! Select All<br />
| cmd+a || Select all of the objects in the level.<br />
|-<br />
! Deselect All<br />
| q || Clear the current selection.<br />
|-<br />
! Reload All Prefabs<br />
| - || Force a reload of all prefab objects in the level.<br />
|-<br />
! Set Level Params...<br />
| - || Set global level parameters (sun settings, sky, fog, HDR, etc).<br />
|-<br />
! Set Level Script...<br />
| - || Select what script to use for this level.<br />
|-<br />
! Set Sky Texture...<br />
| - || Opens a file browser where you can pick what sky texture to use.<br />
|-<br />
! Edit static meshes<br />
| cmd+1 || Toggle ability to select non-moving objects (rocks, etc).<br />
|-<br />
! Edit decals<br />
| cmd+2 || Toggle ability to select decals.<br />
|-<br />
! Edit gameplay objects<br />
| cmd+3 || Toggle ability to select characters, hotspots, etc.<br />
|-<br />
! Edit lighting<br />
| - || Toggle ability to select lights.<br />
|-<br />
! Play level<br />
| 8 || Enter play mode.<br />
|-<br />
! Media mode<br />
| - || Enter a disembodied camera mode, for taking screenshots and videos.<br />
|}<br />
<br />
=== Selected menu ===<br />
Contains operations for working with the current selected objects.<br />
<br />
[[Image:Editor-selected-menu.png|right|thumb|caption|The editor "selected" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Go To Selected<br />
| f || Move the camera to frame the selected objects.<br />
|-<br />
! Delete<br />
| backspace || Delete the selected objects from the level.<br />
|-<br />
! Group<br />
| cmd+g || Merge the selected objects into a group.<br />
|-<br />
! Ungroup<br />
| cmd+shift+g || Break up all groups that are selected.<br />
|-<br />
! Set Selection Script Params...<br />
| - || Open up the selected object window, and expand the "Script Params" section for the selected objects.<br />
|-<br />
! Save Selection...<br />
| cmd+shift+s || Open up the file browser to save the selection as an object template.<br />
Object templates can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a template, it won't be updated in any level it is placed in.<br />
|-<br />
! Prefab Save<br />
| - || Save any changes to the selected prefab to a file, or create a new prefab file from the selection.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|-<br />
! Prefab Save As...<br />
| - || Open a file browser to save the selection as a new prefab file.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|}<br />
<br />
=== Load menu ===<br />
Contains operations for loading and spawning objects into the level.<br />
<br />
[[Image:Editor-load-menu.png|right|thumb|caption|The editor "load" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Load item...<br />
| - || Open a file browser to pick an item to spawn in. After loading, click in the level to spawn the object.<br />
|-<br />
! Open recent...<br />
| - || Pick an item you've recently spawned to spawn another instance. After loading, click in the level to spawn the object.<br />
|-<br />
! <Rest of menu><br />
| - || Search or click on an item from a list to spawn in. After loading, click in the level to spawn the object.<br />
Hover over an item to see a thumbnail preview of the item.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Nav Mesh menu ===<br />
Tools for nav mesh generation, loading, saving and viewing.<br />
<br />
[[Image:Editor-navmesh-menu.png|right|thumb|caption|The editor "nav mesh" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Create<br />
| - || Generates a new navigation mesh.<br />
|-<br />
! Save<br />
| - || Save the current nav mesh to disk.<br />
|-<br />
! Load<br />
| - || Load a previously saved nav mesh from disk.<br />
|-<br />
! View mesh<br />
| - || Toggle preview render of the nav mesh.<br />
|-<br />
! View collision<br />
| - || Toggle preview render of the collision mesh the nav mesh is based on.<br />
|-<br />
! View hints<br />
| - || Toggle preview render of navmesh_hint objects (which are collision that is only visible to the nav mesh generator).<br />
|-<br />
! View region<br />
| - || Toggle preview render of navmesh_region objects (which restricts mesh generation to within its volume).<br />
|-<br />
! View jump nodes<br />
| - || Toggle preview render of navmesh_connection objects (jump nodes).<br />
|-<br />
! Cell Size<br />
| - || Change the width of cells in the nav mesh<br />
smaller: handles smaller gaps, slower to build.<br />
|-<br />
! Cell Height<br />
| - || Change the height of cells in the nav mesh<br />
smaller: finer control on ramps, slower to build.<br />
|-<br />
! Agent Height<br />
| - || Change the height of fake player used to create nav mesh<br />
smaller: handles lower overhangs, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Radius<br />
| - || Change the width of fake player used to create nav mesh<br />
smaller: handles smaller gaps, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Max Climb<br />
| - || Change the max height of blocks that fake player will climb to create nav mesh<br />
too high: real characters can't climb it.<br />
|-<br />
! Agent Max Slope<br />
| - || Change the max angle of ramps that fake player will walk up to create nav mesh<br />
too high: real characters will go up steep hills.<br />
|}<br />
<br />
=== Dialogue menu ===<br />
Tools for [[dialogue]] editing.<br />
<br />
[[Image:Editor-dialogue-menu.png|right|thumb|caption|The editor "dialogue" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Edit Selected<br />
| - || Start editing the selected dialogue (make sure you select it first!).<br />
|-<br />
! Load Dialogue<br />
| - || Load a previously saved dialogue text file.<br />
|-<br />
! New Dialogue<br />
| - || Create a new dialogue object (click this, then click to place it in the level).<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Windows menu ===<br />
Launch various editor windows, color picker, and debug windows.<br />
<br />
[[Image:Editor-windows-menu.png|right|thumb|caption|The editor "windows" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Scenegraph<br />
| y || Open level properties, and a searchable list of items in the level.<br />
Hint: Click items in the list to select/deselect them, and hit F to view the selected items.<br />
|-<br />
! Selected<br />
| u || Open the properties for the selected objects.<br />
|-<br />
! Single Selected<br />
| i || Open the properties for a single selected object. This menu doesn't require you to drill down to edit properties.<br />
|-<br />
! [[#Color_Picker|Color Picker]]<br />
| cmd+p || Open the Color Picker to let you tint objects.<br />
|-<br />
! [[Collision Painting|Collision Paint]]<br />
| - || Open the Collision Paint menu to let you edit physics properties on objects or individual surfaces.<br />
|-<br />
! Performance<br />
| - || Open a window to monitor performance, and view a list of loaded file assets/loaded textures, for debugging.<br />
|-<br />
! Save<br />
| - || Open a window to view data in the save file, for debugging.<br />
|-<br />
! State<br />
| - || Open a window to view a hierarchy of loaded script contexts, for debugging.<br />
|-<br />
! Sound<br />
| - || Open a window to view a list of loaded sounds, for debugging.<br />
|-<br />
! Debug Window<br />
| - || Open a window to view debug text (shows various game and editor state).<br />
|}<br />
<br />
== Functions Without Buttons ==<br />
Some functions are only reachable via hotkeys, here are a list of those.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Make player-controlled<br />
| Shift+Cmd+P || Toggles whether a character is controlled by a human or by AI. A human-controlled character's spawn box has a green outline, an AI-controlled character's box has white outlines. If two characters are set to be human-controlled Overgrowth will start in split-screen mode the next time game-play is resumed from editor mode. The second player will be controllable via a USB controller.<br />
|-<br />
! [[#Spawn_Dead|Spawn Dead]]<br />
| Cmd+K or Ctrl+K (with character spawn selected) || Makes selected characters spawn dead. It will spawn at the point it went into ragdoll mode (which may cause it to spawn "dead" while standing up). If you want to update the pose for the dead body then move the body, select the spawn point, and hit the hotkey again to save its new position.<br />
|-<br />
! [[#Spawn_Alive|Spawn Alive]]<br />
| K (with character spawn selected) || Makes selected characters spawn alive.<br />
|}<br />
<br />
== Parameters ==<br />
Every object as well as the level itself has several parameters. The most basic ones that all objects have are '''Name''', '''Translation''', '''Scale''' and '''Rotation'''. Other parameters you might find on an object are color tints and [[Script Parameters]].<br />
<br />
There are several ways to edit these parameters for an object. The fastest and easiest way to do it for a single object is by using the '''Single Selected''' window (press I to open it), which shows all of the parameters for the most recently selected object.<br />
<br />
If you want to view or edit the parameters of several specific objects you can use the [[#Selected Window|Selected Window]].<br />
<br />
To view and edit parameters for all the objects in the level, as well as the parameters for the level itself, use the [[#Scenegraph Window|Scenegraph Window]].<br />
<br />
== Selected Window ==<br />
[[Image:Editor-selection-windows.png|right|thumb|caption|Selected Window (object parameters)]]<br />
<br />
The Selected Window (or parameter editor) lets you change different parameters depending on which objects you have selected.<br />
<br />
You can bring up the parameter editor for an object (or set of objects) by selecting them and pressing the U key, or clicking Top Bar -> Windows -> Selected.<br />
<br />
Here is a description of what each parameter does:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Name<br />
| Give an object a custom name, so you can find it in the scenegraph window (see below), or let a custom script find those objects so they can do special things to them.<br />
|-<br />
! Transform<br />
| Adjust the position, rotation, and scale of the objects manually. There is also a button to reset the rotation (which is useful when creating object prefabs).<br />
|-<br />
! Color Palette<br />
| Tint objects, or make them super bright. If the character provides a mutli-part color palette, set different colors on different parts.<br />
|-<br />
! Script Params<br />
| Custom parameters used by scripts. Each different object type can define their own script params. See [[Script Parameters]] page for descriptions of all parameters.<br />
|}<br />
<br />
<br clear=all><br />
<br />
== Scenegraph Window ==<br />
[[Image:Editor-scenegraph-window.png|right|thumb|caption|Scenegraph Window (level parameters)]]<br />
<br />
The Scenegraph Window (or parameter editor) lets you change global level parameters, as well as find objects in the level.<br />
<br />
Open up the Scenegraph for the current level by pressing the Y key, or clicking Top Bar -> Windows -> Scenegraph. Let's go through each part of the Scenegraph window from top to bottom.<br />
<br />
=== Level ===<br />
If you expand the '''Level''' entry at the very top of the window you will find some parameters that can be changed:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Loading Screen Image<br />
| A path to an image that's shown while loading the level<br />
|-<br />
! Sun Position<br />
| The position of the sun in the sky<br />
|-<br />
! Sun Color<br />
| Tints the color of the sun, useful for sunrises and sunsets<br />
|-<br />
! Sun Intensity<br />
| Controls how dark the shadows are<br />
|}<br />
<br />
For a description of the level script parameters, see the [[Script Parameters]] page.<br />
<br />
=== Search field ===<br />
Below the '''Level''' entry at the very top there is a search field. Write in this field to search for objects in the level. This searches in many of the objects' fields. You can for instance search for something written in the '''Name''' parameter of an object, object IDs, object paths, types and more.<br />
<br />
=== Flat ===<br />
The '''Flat''' checkbox controls how the Scenegraph list is displayed.<br />
<br />
If it's not checked you can expand groups to see the relations between objects in the graph.<br />
<br />
If it's checked you can no longer see group relationships, but you can instead expand each individual object to change any parameters associated with it.<br />
<br />
=== Named Only ===<br />
If this is checked the Scenegraph list with only display objects that have been named. You can name an object by selecting it, bringing up the '''Single Selected''' window by pressing I, and then writing something in the '''Name''' field.<br />
<br />
== Color Picker ==<br />
[[Image:Editor-new-color-picker.png|right|thumb|caption|A crete block with its color altered by the color picker.]]<br />
The Color Picker is used to tint the color of selected objects.<br />
<br />
It is opened by pressing cmd+p, or Top Bar -> Windows -> ColorPicker.<br />
<br />
The color picker consists of a color-gradient box, a rainbow slider, the RGB values, and an overbrightness slider. Increasing overbrightness makes the color brighter, and makes it glow in the dark.<br />
<br />
For characters, the color picker will let you set the color of different parts of the character. This is only available if the character was built to support a multi-color palette (not all of them do).<br />
<br />
'''TODO''': Update screenshot on the right<br />
<br />
<br clear=all><br />
<br />
== Sun Editor ==<br />
[[Image:Sun_editor.jpg|right|thumb|caption|The sun editor]]<br />
<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
See [[Lighting#Sunlight|the documentation on the lighting page]] for more information.<br />
<br />
<br clear=all><br />
<br />
== Dialogue Editor ==<br />
<br />
The [[Dialogue Editor]] is used to create scenes with different camera angles, text and poses. It is commonly used to give context and progress the story in a level.<br />
<br />
This is a big enough subject to warrant its own article, which can be found [[Dialogue Editor|here]].<br />
<br />
== Spawn Corpse ==<br />
Sometimes you want to have a dead character in your level. The obvious solution would be to export a new model of a dead character and place it in the level. However, that's a lot of work, and the character wouldn't be dynamic, and it would take a lot of work to make changes to it.<br />
<br />
Luckily there is a system in the engine for making any character spawn as a corpse. Here are instructions for how to use that system:<br />
<br />
[[Image:spawn_corpse.jpg|right|thumb|caption|Making a corpse]]<br />
# Spawn the character you want to spawn as a corpse.<br />
# Select its spawn box and press cmd+K to make it spawn as a corpse, which will kill it. At this point the corpse will spawn standing up when you restart the level with L, we'll fix that in the following steps.<br />
# Enter play mode by pressing 8, go close to the corpse and hold right click to drag it around until you're satisfied with the pose.<br />
# Now exit play mode by pressing escape, select the character's spawn box and press cmd+K again to update the pose of the corpse.<br />
# Press L to restart the level and verify that it worked.<br />
<br />
If you want to make a corpse to spawn alive again, select its spawn point and press K.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Lighting&diff=5982Lighting2018-04-07T07:12:20Z<p>Silverfish: Improved code formatting of all video embeds and added descriptions to them</p>
<hr />
<div>{{stub}}<br />
<br />
'''TODO''': Cover other level parameters, such as HDR points, saturation, and sky brightness. These parameters are covered in the [[Script Parameters]] page, so might want to take care to not duplicate too much of the information and maybe include a link to that page<br><br />
'''TODO''': Expand sun section to say how to get a "sun" and a "moon" effect<br />
<br />
== Sunlight ==<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
<br clear=all><br />
[[Image:Sun_editor.jpg|left|thumb|The sun editor]]<br />
{{#ev:youtube<br />
|DUaBoNEUcVI<br />
|<br />
|right<br />
|Editing the sun and sky<br />
|frame<br />
|start=267<br />
}}<br />
<br />
<br clear=all><br />
==== How to adjust the sun ====<br />
* Select the sun in the sky (double click it)<br />
* Move it by clicking on the middle and dragging it around<br />
* Change the color by dragging the dot around the outer ring<br />
* Change the intensity by clicking ''just'' outside the outer ring and dragging it<br />
<br />
To deselect the sun, double click well outside of the sun editor ('''Note''': the normal Q for "deselect all" isn't working right now)<br />
<br />
==== How to edit the parameters directly ====<br />
If you have problems clicking it, or would prefer a numeric editor:<br />
* Press the <kbd>'''Y'''</kbd> key to open the Scenegraph<br />
* Expand '''level''' to find the Sun parameters<br />
<br />
<br clear=all><br />
<br />
== Point lights ==<br />
Point lights allow you to cast omni-directional light from a point in the level.<br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing point lights<br />
|frame<br />
|start=64<br />
}}<br />
<br />
==== Adding a dynamic light: ====<br />
* '''Top Bar''' -> '''Load''' -> '''Lighting''' -> '''Dynamic Light'''<br />
* The cursor will turn into a plus symbol<br />
* Click in level to place the dynamic light<br />
<br />
==== Changing the size of a dynamic light ====<br />
* Select the light - <code>'''double click'''</code><br />
* Hold <code>'''E'''</code> while clicking and dragging on its bounding box.<br />
<br />
Note that this only changes the light's area of influence, not how much light it outputs.<br><br />
<br />
==== Making a dynamic light brighter ====<br />
* Select the light - <code>'''double click'''</code><br />
* Open the color picker - <code>'''Ctrl + P'''</code> (<code>'''Command + P'''</code> on mac)<br />
* Change the <code>'''Overbright'''</code> setting<br />
<br />
==== Adjusting dynamic light color: ====<br />
* Select the light<br />
* Hit <code>'''CTRL + P'''</code> (<code>'''command + P'''</code> on mac) to open the '''Color Picker'''.<br />
* Adjust the color with the color selector, or '''RGB''' at the bottom.<br />
<br />
==== Shaping the dynamic light ====<br />
Dynamic lights are always spherical right now.<br />
If you need an "area light" effect that isn't a sphere, there are a few options:<br />
* Use [[Lighting#Shadow_decals|Shadow Decals]] to shape the light (you have to enable this in the level first. See [[Lighting#Dynamic_lights_and_shadows|this section below]])<br />
* Place multiple dynamic light objects<br />
* Some combination of both of the above<br />
<br />
Be careful to both look at how the lights affect static objects in the scene, and how they affect characters that walk through them.<br />
<br />
<br clear=all><br />
<br />
== Shadow decals ==<br />
Shadows from sunlight are taken care of automatically.<br />
<br />
However this only allows one level of shadowing. This doesn't handle ambient occlusion (shadowing of indirect light reflections).<br />
<br />
Shadow [[Custom Decals|decals]] ("Ambient Shadows") allow you to manually place decals which simulate this ambient occlusion effect.<br><br />
This can help you visually anchor objects more realistically in the scene, and replicate effects like darkening around corners, and inside cubbyholes.<br />
<br />
<br clear=all><br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|<br />
|right<br />
|Adding and editing ambient shadows<br />
|frame<br />
|start=15<br />
}}<br />
<br />
[[File:Ambient shadow decals.png|600px|Ambient Shadow Decals's effect on light]]<br />
<br />
<br clear=all><br />
==== Adding a shadow decal: ====<br />
<br />
* ''Top Bar -> Load -> Lighting -> Ambient Shadow''.<br><br />
* The cursor will turn into a plus symbol.<br><br />
* Now click in level to place the ambient shadow decal.<br />
<br />
==== Resizing a shadow decal: ====<br />
<br />
Double click the ambient shadow decal, and hold E while clicking and dragging on its bounding box (or while shift + right-clicking and dragging on a side to only stretch in that direction).<br><br />
This will let you increase the spread of its effect.<br />
<br />
'''Note''': Ambient shadow decals will not create shadows if they in direct light. This is because they're for simulating indirect shadowing. Direct shadowing is already handled by placing objects in the world.<br />
<br />
<br clear=all><br />
<br />
== Dynamic lights and shadows ==<br />
<br />
By default, no objects cast shadows from dynamic point lights (besides the sun). This is for performance reasons.<br />
<br />
Normally ambient shadow decals also will not create shadow from dynamic point lights, because that would be shading direct light, and they don't work that way.<br />
<br />
However you can use the <code>'''#SHADOW_POINT_LIGHTS'''</code> level Custom Shader to make it so shadow decals can shape point lights, so you can manually simulate this shadowing.<br />
<br />
<br clear=all><br />
[[File:Shadow point lights shader disabled.png|400px|without #SHADOW_POINT_LIGHTS]]<br />
[[File:Shadow_point_lights_shader.png|400px|#SHADOW_POINT_LIGHTS Custom Shader setting]]<br />
[[File:Shadow_point_lights_shader_enabled.png|400px|with #SHADOW_POINT_LIGHTS]]<br />
<br />
<br clear=all><br />
==== Making shadow decals affect dynamic lights: ====<br />
<br />
* Hit <kbd>'''Y'''</kbd> to open the level's scenegraph<br />
* Expand Script Params<br />
* Add a <code>'''Custom Shader'''</code> param<br />
* Hit <code>Enter</code> (not <code>tab</code>!)<br />
* Type <code>'''#SHADOW_POINT_LIGHTS'''</code> in the value column and hit enter<br />
<br />
This will make ambient shadows affect the direct light from dynamic lights, an let you sculpt the light they cast, or let you create manual shadows.<br />
<br />
[[Category: Tutorials]]<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Editor_Interface&diff=5981Editor Interface2018-04-07T05:17:27Z<p>Silverfish: /* Activating the editor */ Changed video description</p>
<hr />
<div>[[Category: Modding]]<br />
[[Category: Overgrowth]]<br />
<br />
[[Image:Editor_Overview.png|right|600px|thumb|caption|The Overgrowth level editor]]<br />
This page details all the interface elements and actions in the Overgrowth level editor.<br />
<br />
The level editor lets you create new levels or even whole campaigns. This is the same editor we used to make the Overgrowth and Lugaru stories.<br />
<br />
You can use the level editor to edit any existing level in the game.<br />
<br />
== Activating the editor ==<br />
{{#ev:youtube<br />
|eS3RujmDQ2M<br />
|420<br />
|right<br />
|Level editor basics<br />
|frame<br />
|start=15<br />
}}<br />
<br />
==== To activate the editor: ====<br />
* Create a new level ('''File''' -> '''New''')<br />
* Open an existing level and press <kbd>'''F1'''</kbd><br />
<br />
If the editor is active while playing a level, you can open up the editor window again by pressing the <kbd>'''Esc'''</kbd> key.<br />
<br />
You can deactivate the editor by hitting <kbd>'''F1'''</kbd> a second time.<br />
<br />
==== Troubleshooting: ====<br />
If you can't get the editor to activate, there are a few things you can try:<br />
* If you have a laptop, try holding the <kbd>'''fn'''</kbd> key while pressing <kbd>'''F1'''</kbd><br />
* Mash all the modifier keys a few times to make sure they're not stuck down - <kbd>'''ctrl'''</kbd>, <kbd>'''alt'''</kbd>, <kbd>'''shift'''</kbd>, <kbd>'''command'''</kbd>, etc<br />
* Make sure you have all other programs closed, in case one of them is conflicting with the <kbd>'''F1'''</kbd> hotkey<br />
* If some "Help" program comes up when you hit <kbd>'''F1'''</kbd> (such as "HP Help"), edit its settings to disable the hotkey.<br>Or just ''uninstall it'' (because it is bloatware)<br />
<br clear=all><br />
<br />
== Camera Movement ==<br />
{| class="wikitable"<br />
|-<br />
! Control !! Behavior<br />
|-<br />
! W<br />
| Moves camera forward<br />
|-<br />
! S<br />
| Moves camera backward<br />
|-<br />
! A<br />
| Moves camera left<br />
|-<br />
! D<br />
| Moves camera right<br />
|-<br />
! Shift + W<br />
| Moves camera up<br />
|-<br />
! Shift + S<br />
| Moves camera down<br />
|-<br />
! Left click and drag<br />
| Rotates the camera<br />
|}<br />
<br />
== Object Selection ==<br />
<br />
Here are the different ways you can select objects.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Select single object<br />
| double-left-click on object || Selects clicked on object and deselects all other objects. If the object is part of a group, the whole group is selected. A box around the object indicates that it is selected.<br />
|-<br />
! Toggle-select objects<br />
| shift + double-left-click on objects || Toggles selection of clicked on object. Preserves existing selections.<br />
|-<br />
! Box select objects<br />
| left-click + right-click + drag, or left-click + 'b' + drag || Selects all objects whose centers lie within box drawn on screen. Deselects all other objects.<br />
|-<br />
! Box add to selection<br />
| shift + left-click + right-click + drag, or shift + left-click + 'b' + drag || Adds all objects whose centers lie within the drawn box to the selection. Preserves existing selection.<br />
|-<br />
! Select decal or object that is under another decal<br />
| mouse wheel up/down || When you have 2 or more objects or decals on top of each other, you can select at least 1 decal or object, put your mouse cursor on top of the one you want to select, then use the scroll wheel to switch your selection between the objects.<br />
|-<br />
! Select all<br />
| cmd-a || Selects all objects.<br />
|-<br />
! Deselect all<br />
| double-left-click away from all objects || Deselects all objects.<br />
|}<br />
<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
<br />
'''Note: ''' If the Debug window is open ('''Top Bar''' -> '''Windows''' -> '''Debug Window'''), then when you select an object some useful information will appear. It shows you what xml file the object is created from, its unique object id, and what type of object it is.<br />
<br />
<br clear=all><br />
<br />
== Transformations ==<br />
<br />
For all transformations:<br />
<br />
* In order to transform an object you must first select it.<br />
* Hold ctrl to make movements snap to half-meter increments.<br />
* Hold alt to clone and transform the selected objects, leaving the original objects behind.<br />
* Left-click transforms objects on all axis. Right-click transforms on the two axis that are perpendicular to the side of the bounding box you click on. Holding shift and right click locks the transformation to the axis parallel to the bounding box face you click on.<br />
* Groups are transformed around the group center. Ungrouped objects, even if multiple are selected and transformed at once, are transformed around their own individual centers.<br />
<br />
=== Translation ===<br />
<br />
Hover mouse over central region of a bounding box' face, or hold 't'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Camera relative<br />
| left-click + drag || Translates clicked on object along plane parallel to the screen.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Translates clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Translates clicked on object along normal of clicked on face.<br />
|-<br />
! force decal(s) to map only one object/group<br />
| hold i || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! force decal(s) to project only on selected objects<br />
| press o || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! projection box/angle<br />
| press p || to make projection box for decal<br />
|}<br />
<br />
=== Scale ===<br />
<br />
Hover mouse near bounding box corners, or hold 'e'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! All dimensions<br />
| left-click + drag || Scales clicked on object in all dimensions (x, y, and z) at once.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Extends clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Extrudes clicked on object along normal of clicked on face.<br />
|}<br />
<br />
=== Mirror ===<br />
<br />
Just use the right-click scale tool, and scale down the object until it flips and its mirror image begins scaling up!<br />
<br />
=== Rotation ===<br />
<br />
Hover mouse near bounding box edges but away from the corners, or hold 'r'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Free<br />
| left-click + drag || Rotates clicked on object as if you are pushing the surface of a ball.<br />
|-<br />
! Locked to axis<br />
| right-click + drag || Rotates clicked on object about normal of clicked on face.<br />
|}<br />
<br />
==Editor/Debug Keys==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Toggle editor mode<br />
| F1 || Enables level editor. Press again to exit.<br />
|-<br />
! Activate play mode<br />
| 8 || Spawns you in the level so you can play it. If there already is a player character you will control that, otherwise a player character spawn is created on the editor camera automatically.<br />
|-<br />
! Restore characters<br />
| X || Restores all characters on the level to full health, wakes up any "unconscious" ones, and removes all blood from the environment.<br />
|-<br />
! Reload level<br />
| L || Restarts the current level.<br />
|-<br />
! Change character<br />
| 1-7 || Changes the playable character into one of seven possible characters. 1 cycles through rabbit guard, bandit, and turner models, 2 cycles through civilian rabbit models, 3 cycles through cat models, 4 cycles through rat models, 5 cycles through wolves, 6 through dogs, and the seventh is Rabbot 2.0.<br />
|-<br />
! Active ragdoll<br />
| Z || Puts player character into active ragdoll mode where they will try to protect themselves as they fall. Is active as long as you hold the button.<br />
|-<br />
! Pain ragdoll<br />
| N || Makes the player fall to the ground in agony, until you let go of the button.<br />
|-<br />
! Floppy ragdoll<br />
| M || Makes the player fall to the ground, limp, until the button is released.<br />
|-<br />
! Voice Test<br />
| V || Plays a test voice.<br />
|-<br />
! Toggle combat AI<br />
| C || Toggles whether the characters in the level will attack each other if they are on different teams.<br />
|-<br />
! Slit throat<br />
| , || The controlled character suffers a neck wound with blood gushing from it.<br />
|-<br />
! Slow time<br />
| Tab || Slows down the whole game.<br />
|-<br />
! Freeze time<br />
| ` || Freezes the game. This is useful for posing characters for item placement. '''Note''': The game must be unfrozen to change between controlling the player and editor mode. <br />
|-<br />
! Insta-kill<br />
| F || Instantly kills and knocks back nearby NPC's with a death ray.<br />
|-<br />
! Experimental Key<br />
| B || Makes you invisible.<br />
|}<br />
<br />
== Debug Window ==<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
Just below the top bar menu, on the left side, is a space for debug information.<br />
<br />
This window is only visible if you have the Debug Window enabled ('''Top Bar''' -> '''Windows''' -> '''Debug Window''').<br />
<br />
It will tell you information about the selected object, checkpoint progress (if checkpoints are enabled in this level), and a warning if the nav mesh needs to be updated.<br />
<br />
<br clear=all><br />
<br />
== Editor menu ==<br />
The bar across the top of the window is the editor menu. Many editor functions can be found here, but some functions can only be reached via hotkeys for now.<br />
<br />
'Cmd' refers to the '⌘' key on Macs, and the 'ctrl' key on PCs.<br />
<br />
=== File menu ===<br />
Contains file operations for loading and saving levels.<br />
<br />
[[Image:Editor-file-menu.png|right|thumb|caption|The editor "file" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! New Level<br />
| - || Opens a new empty level in the editor.<br />
|-<br />
! Open Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in Data/Levels directory).<br />
|-<br />
! Open Local Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in last used directory).<br />
|-<br />
! Open Recent<br />
| - || Re-open one of the most recently opened levels in the editor.<br />
|-<br />
! Open Campaign Level<br />
| - || Open one of the levels from the main Overgrowth story mode.<br />
|-<br />
! Save Level<br />
| cmd+s || Overwrites the currently opened level file with any changes you made.<br />
|-<br />
! Save As...<br />
| - || Opens a file browser where you can pick a new or existing file to save the level to.<br />
|-<br />
! Back to main menu<br />
| - || Leave the editor and return to the main menu.<br />
|-<br />
! Quit<br />
| alt+f4 || Quit the game.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Edit menu ===<br />
Contains basic editing functions. Also contains properties for the level.<br />
<br />
[[Image:Editor-edit-menu.png|right|thumb|caption|The editor "edit" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Undo<br />
| cmd+z || Undo the most recent action.<br />
|-<br />
! Redo<br />
| cmd+shift+z || Redo the most recent action.<br />
|-<br />
! Cut<br />
| cmd+x || Puts the selection into the clipboard and removes the selected objects.<br />
|-<br />
! Copy<br />
| cmd+c || Puts the selection into the clipboard.<br />
|-<br />
! Paste<br />
| cmd+v || Pastes the clipboard on the cursor position.<br />
|-<br />
! Select All<br />
| cmd+a || Select all of the objects in the level.<br />
|-<br />
! Deselect All<br />
| q || Clear the current selection.<br />
|-<br />
! Reload All Prefabs<br />
| - || Force a reload of all prefab objects in the level.<br />
|-<br />
! Set Level Params...<br />
| - || Set global level parameters (sun settings, sky, fog, HDR, etc).<br />
|-<br />
! Set Level Script...<br />
| - || Select what script to use for this level.<br />
|-<br />
! Set Sky Texture...<br />
| - || Opens a file browser where you can pick what sky texture to use.<br />
|-<br />
! Edit static meshes<br />
| cmd+1 || Toggle ability to select non-moving objects (rocks, etc).<br />
|-<br />
! Edit decals<br />
| cmd+2 || Toggle ability to select decals.<br />
|-<br />
! Edit gameplay objects<br />
| cmd+3 || Toggle ability to select characters, hotspots, etc.<br />
|-<br />
! Edit lighting<br />
| - || Toggle ability to select lights.<br />
|-<br />
! Play level<br />
| 8 || Enter play mode.<br />
|-<br />
! Media mode<br />
| - || Enter a disembodied camera mode, for taking screenshots and videos.<br />
|}<br />
<br />
=== Selected menu ===<br />
Contains operations for working with the current selected objects.<br />
<br />
[[Image:Editor-selected-menu.png|right|thumb|caption|The editor "selected" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Go To Selected<br />
| f || Move the camera to frame the selected objects.<br />
|-<br />
! Delete<br />
| backspace || Delete the selected objects from the level.<br />
|-<br />
! Group<br />
| cmd+g || Merge the selected objects into a group.<br />
|-<br />
! Ungroup<br />
| cmd+shift+g || Break up all groups that are selected.<br />
|-<br />
! Set Selection Script Params...<br />
| - || Open up the selected object window, and expand the "Script Params" section for the selected objects.<br />
|-<br />
! Save Selection...<br />
| cmd+shift+s || Open up the file browser to save the selection as an object template.<br />
Object templates can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a template, it won't be updated in any level it is placed in.<br />
|-<br />
! Prefab Save<br />
| - || Save any changes to the selected prefab to a file, or create a new prefab file from the selection.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|-<br />
! Prefab Save As...<br />
| - || Open a file browser to save the selection as a new prefab file.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|}<br />
<br />
=== Load menu ===<br />
Contains operations for loading and spawning objects into the level.<br />
<br />
[[Image:Editor-load-menu.png|right|thumb|caption|The editor "load" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Load item...<br />
| - || Open a file browser to pick an item to spawn in. After loading, click in the level to spawn the object.<br />
|-<br />
! Open recent...<br />
| - || Pick an item you've recently spawned to spawn another instance. After loading, click in the level to spawn the object.<br />
|-<br />
! <Rest of menu><br />
| - || Search or click on an item from a list to spawn in. After loading, click in the level to spawn the object.<br />
Hover over an item to see a thumbnail preview of the item.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Nav Mesh menu ===<br />
Tools for nav mesh generation, loading, saving and viewing.<br />
<br />
[[Image:Editor-navmesh-menu.png|right|thumb|caption|The editor "nav mesh" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Create<br />
| - || Generates a new navigation mesh.<br />
|-<br />
! Save<br />
| - || Save the current nav mesh to disk.<br />
|-<br />
! Load<br />
| - || Load a previously saved nav mesh from disk.<br />
|-<br />
! View mesh<br />
| - || Toggle preview render of the nav mesh.<br />
|-<br />
! View collision<br />
| - || Toggle preview render of the collision mesh the nav mesh is based on.<br />
|-<br />
! View hints<br />
| - || Toggle preview render of navmesh_hint objects (which are collision that is only visible to the nav mesh generator).<br />
|-<br />
! View region<br />
| - || Toggle preview render of navmesh_region objects (which restricts mesh generation to within its volume).<br />
|-<br />
! View jump nodes<br />
| - || Toggle preview render of navmesh_connection objects (jump nodes).<br />
|-<br />
! Cell Size<br />
| - || Change the width of cells in the nav mesh<br />
smaller: handles smaller gaps, slower to build.<br />
|-<br />
! Cell Height<br />
| - || Change the height of cells in the nav mesh<br />
smaller: finer control on ramps, slower to build.<br />
|-<br />
! Agent Height<br />
| - || Change the height of fake player used to create nav mesh<br />
smaller: handles lower overhangs, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Radius<br />
| - || Change the width of fake player used to create nav mesh<br />
smaller: handles smaller gaps, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Max Climb<br />
| - || Change the max height of blocks that fake player will climb to create nav mesh<br />
too high: real characters can't climb it.<br />
|-<br />
! Agent Max Slope<br />
| - || Change the max angle of ramps that fake player will walk up to create nav mesh<br />
too high: real characters will go up steep hills.<br />
|}<br />
<br />
=== Dialogue menu ===<br />
Tools for [[dialogue]] editing.<br />
<br />
[[Image:Editor-dialogue-menu.png|right|thumb|caption|The editor "dialogue" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Edit Selected<br />
| - || Start editing the selected dialogue (make sure you select it first!).<br />
|-<br />
! Load Dialogue<br />
| - || Load a previously saved dialogue text file.<br />
|-<br />
! New Dialogue<br />
| - || Create a new dialogue object (click this, then click to place it in the level).<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Windows menu ===<br />
Launch various editor windows, color picker, and debug windows.<br />
<br />
[[Image:Editor-windows-menu.png|right|thumb|caption|The editor "windows" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Scenegraph<br />
| y || Open level properties, and a searchable list of items in the level.<br />
Hint: Click items in the list to select/deselect them, and hit F to view the selected items.<br />
|-<br />
! Selected<br />
| u || Open the properties for the selected objects.<br />
|-<br />
! Single Selected<br />
| i || Open the properties for a single selected object. This menu doesn't require you to drill down to edit properties.<br />
|-<br />
! [[#Color_Picker|Color Picker]]<br />
| cmd+p || Open the Color Picker to let you tint objects.<br />
|-<br />
! [[Collision Painting|Collision Paint]]<br />
| - || Open the Collision Paint menu to let you edit physics properties on objects or individual surfaces.<br />
|-<br />
! Performance<br />
| - || Open a window to monitor performance, and view a list of loaded file assets/loaded textures, for debugging.<br />
|-<br />
! Save<br />
| - || Open a window to view data in the save file, for debugging.<br />
|-<br />
! State<br />
| - || Open a window to view a hierarchy of loaded script contexts, for debugging.<br />
|-<br />
! Sound<br />
| - || Open a window to view a list of loaded sounds, for debugging.<br />
|-<br />
! Debug Window<br />
| - || Open a window to view debug text (shows various game and editor state).<br />
|}<br />
<br />
== Functions Without Buttons ==<br />
Some functions are only reachable via hotkeys, here are a list of those.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Make player-controlled<br />
| Shift+Cmd+P || Toggles whether a character is controlled by a human or by AI. A human-controlled character's spawn box has a green outline, an AI-controlled character's box has white outlines. If two characters are set to be human-controlled Overgrowth will start in split-screen mode the next time game-play is resumed from editor mode. The second player will be controllable via a USB controller.<br />
|-<br />
! [[#Spawn_Dead|Spawn Dead]]<br />
| Cmd+K or Ctrl+K (with character spawn selected) || Makes selected characters spawn dead. It will spawn at the point it went into ragdoll mode (which may cause it to spawn "dead" while standing up). If you want to update the pose for the dead body then move the body, select the spawn point, and hit the hotkey again to save its new position.<br />
|-<br />
! [[#Spawn_Alive|Spawn Alive]]<br />
| K (with character spawn selected) || Makes selected characters spawn alive.<br />
|}<br />
<br />
== Parameters ==<br />
Every object as well as the level itself has several parameters. The most basic ones that all objects have are '''Name''', '''Translation''', '''Scale''' and '''Rotation'''. Other parameters you might find on an object are color tints and [[Script Parameters]].<br />
<br />
There are several ways to edit these parameters for an object. The fastest and easiest way to do it for a single object is by using the '''Single Selected''' window (press I to open it), which shows all of the parameters for the most recently selected object.<br />
<br />
If you want to view or edit the parameters of several specific objects you can use the [[#Selected Window|Selected Window]].<br />
<br />
To view and edit parameters for all the objects in the level, as well as the parameters for the level itself, use the [[#Scenegraph Window|Scenegraph Window]].<br />
<br />
== Selected Window ==<br />
[[Image:Editor-selection-windows.png|right|thumb|caption|Selected Window (object parameters)]]<br />
<br />
The Selected Window (or parameter editor) lets you change different parameters depending on which objects you have selected.<br />
<br />
You can bring up the parameter editor for an object (or set of objects) by selecting them and pressing the U key, or clicking Top Bar -> Windows -> Selected.<br />
<br />
Here is a description of what each parameter does:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Name<br />
| Give an object a custom name, so you can find it in the scenegraph window (see below), or let a custom script find those objects so they can do special things to them.<br />
|-<br />
! Transform<br />
| Adjust the position, rotation, and scale of the objects manually. There is also a button to reset the rotation (which is useful when creating object prefabs).<br />
|-<br />
! Color Palette<br />
| Tint objects, or make them super bright. If the character provides a mutli-part color palette, set different colors on different parts.<br />
|-<br />
! Script Params<br />
| Custom parameters used by scripts. Each different object type can define their own script params. See [[Script Parameters]] page for descriptions of all parameters.<br />
|}<br />
<br />
<br clear=all><br />
<br />
== Scenegraph Window ==<br />
[[Image:Editor-scenegraph-window.png|right|thumb|caption|Scenegraph Window (level parameters)]]<br />
<br />
The Scenegraph Window (or parameter editor) lets you change global level parameters, as well as find objects in the level.<br />
<br />
Open up the Scenegraph for the current level by pressing the Y key, or clicking Top Bar -> Windows -> Scenegraph. Let's go through each part of the Scenegraph window from top to bottom.<br />
<br />
=== Level ===<br />
If you expand the '''Level''' entry at the very top of the window you will find some parameters that can be changed:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Loading Screen Image<br />
| A path to an image that's shown while loading the level<br />
|-<br />
! Sun Position<br />
| The position of the sun in the sky<br />
|-<br />
! Sun Color<br />
| Tints the color of the sun, useful for sunrises and sunsets<br />
|-<br />
! Sun Intensity<br />
| Controls how dark the shadows are<br />
|}<br />
<br />
For a description of the level script parameters, see the [[Script Parameters]] page.<br />
<br />
=== Search field ===<br />
Below the '''Level''' entry at the very top there is a search field. Write in this field to search for objects in the level. This searches in many of the objects' fields. You can for instance search for something written in the '''Name''' parameter of an object, object IDs, object paths, types and more.<br />
<br />
=== Flat ===<br />
The '''Flat''' checkbox controls how the Scenegraph list is displayed.<br />
<br />
If it's not checked you can expand groups to see the relations between objects in the graph.<br />
<br />
If it's checked you can no longer see group relationships, but you can instead expand each individual object to change any parameters associated with it.<br />
<br />
=== Named Only ===<br />
If this is checked the Scenegraph list with only display objects that have been named. You can name an object by selecting it, bringing up the '''Single Selected''' window by pressing I, and then writing something in the '''Name''' field.<br />
<br />
== Color Picker ==<br />
[[Image:Editor-new-color-picker.png|right|thumb|caption|A crete block with its color altered by the color picker.]]<br />
The Color Picker is used to tint the color of selected objects.<br />
<br />
It is opened by pressing cmd+p, or Top Bar -> Windows -> ColorPicker.<br />
<br />
The color picker consists of a color-gradient box, a rainbow slider, the RGB values, and an overbrightness slider. Increasing overbrightness makes the color brighter, and makes it glow in the dark.<br />
<br />
For characters, the color picker will let you set the color of different parts of the character. This is only available if the character was built to support a multi-color palette (not all of them do).<br />
<br />
'''TODO''': Update screenshot on the right<br />
<br />
<br clear=all><br />
<br />
== Sun Editor ==<br />
[[Image:Sun_editor.jpg|right|thumb|caption|The sun editor]]<br />
<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
See [[Lighting#Sunlight|the documentation on the lighting page]] for more information.<br />
<br />
<br clear=all><br />
<br />
== Dialogue Editor ==<br />
<br />
The [[Dialogue Editor]] is used to create scenes with different camera angles, text and poses. It is commonly used to give context and progress the story in a level.<br />
<br />
This is a big enough subject to warrant its own article, which can be found [[Dialogue Editor|here]].<br />
<br />
== Spawn Corpse ==<br />
Sometimes you want to have a dead character in your level. The obvious solution would be to export a new model of a dead character and place it in the level. However, that's a lot of work, and the character wouldn't be dynamic, and it would take a lot of work to make changes to it.<br />
<br />
Luckily there is a system in the engine for making any character spawn as a corpse. Here are instructions for how to use that system:<br />
<br />
[[Image:spawn_corpse.jpg|right|thumb|caption|Making a corpse]]<br />
# Spawn the character you want to spawn as a corpse.<br />
# Select its spawn box and press cmd+K to make it spawn as a corpse, which will kill it. At this point the corpse will spawn standing up when you restart the level with L, we'll fix that in the following steps.<br />
# Enter play mode by pressing 8, go close to the corpse and hold right click to drag it around until you're satisfied with the pose.<br />
# Now exit play mode by pressing escape, select the character's spawn box and press cmd+K again to update the pose of the corpse.<br />
# Press L to restart the level and verify that it worked.<br />
<br />
If you want to make a corpse to spawn alive again, select its spawn point and press K.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Editor_Interface&diff=5980Editor Interface2018-04-07T05:14:31Z<p>Silverfish: /* Activating the editor */ Removed end from video tutorial</p>
<hr />
<div>[[Category: Modding]]<br />
[[Category: Overgrowth]]<br />
<br />
[[Image:Editor_Overview.png|right|600px|thumb|caption|The Overgrowth level editor]]<br />
This page details all the interface elements and actions in the Overgrowth level editor.<br />
<br />
The level editor lets you create new levels or even whole campaigns. This is the same editor we used to make the Overgrowth and Lugaru stories.<br />
<br />
You can use the level editor to edit any existing level in the game.<br />
<br />
== Activating the editor ==<br />
{{#ev:youtube<br />
|eS3RujmDQ2M<br />
|420<br />
|right<br />
|How to upload a mod to the Steam Workshop<br />
|frame<br />
|start=15<br />
}}<br />
<br />
==== To activate the editor: ====<br />
* Create a new level ('''File''' -> '''New''')<br />
* Open an existing level and press <kbd>'''F1'''</kbd><br />
<br />
If the editor is active while playing a level, you can open up the editor window again by pressing the <kbd>'''Esc'''</kbd> key.<br />
<br />
You can deactivate the editor by hitting <kbd>'''F1'''</kbd> a second time.<br />
<br />
==== Troubleshooting: ====<br />
If you can't get the editor to activate, there are a few things you can try:<br />
* If you have a laptop, try holding the <kbd>'''fn'''</kbd> key while pressing <kbd>'''F1'''</kbd><br />
* Mash all the modifier keys a few times to make sure they're not stuck down - <kbd>'''ctrl'''</kbd>, <kbd>'''alt'''</kbd>, <kbd>'''shift'''</kbd>, <kbd>'''command'''</kbd>, etc<br />
* Make sure you have all other programs closed, in case one of them is conflicting with the <kbd>'''F1'''</kbd> hotkey<br />
* If some "Help" program comes up when you hit <kbd>'''F1'''</kbd> (such as "HP Help"), edit its settings to disable the hotkey.<br>Or just ''uninstall it'' (because it is bloatware)<br />
<br clear=all><br />
<br />
== Camera Movement ==<br />
{| class="wikitable"<br />
|-<br />
! Control !! Behavior<br />
|-<br />
! W<br />
| Moves camera forward<br />
|-<br />
! S<br />
| Moves camera backward<br />
|-<br />
! A<br />
| Moves camera left<br />
|-<br />
! D<br />
| Moves camera right<br />
|-<br />
! Shift + W<br />
| Moves camera up<br />
|-<br />
! Shift + S<br />
| Moves camera down<br />
|-<br />
! Left click and drag<br />
| Rotates the camera<br />
|}<br />
<br />
== Object Selection ==<br />
<br />
Here are the different ways you can select objects.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Select single object<br />
| double-left-click on object || Selects clicked on object and deselects all other objects. If the object is part of a group, the whole group is selected. A box around the object indicates that it is selected.<br />
|-<br />
! Toggle-select objects<br />
| shift + double-left-click on objects || Toggles selection of clicked on object. Preserves existing selections.<br />
|-<br />
! Box select objects<br />
| left-click + right-click + drag, or left-click + 'b' + drag || Selects all objects whose centers lie within box drawn on screen. Deselects all other objects.<br />
|-<br />
! Box add to selection<br />
| shift + left-click + right-click + drag, or shift + left-click + 'b' + drag || Adds all objects whose centers lie within the drawn box to the selection. Preserves existing selection.<br />
|-<br />
! Select decal or object that is under another decal<br />
| mouse wheel up/down || When you have 2 or more objects or decals on top of each other, you can select at least 1 decal or object, put your mouse cursor on top of the one you want to select, then use the scroll wheel to switch your selection between the objects.<br />
|-<br />
! Select all<br />
| cmd-a || Selects all objects.<br />
|-<br />
! Deselect all<br />
| double-left-click away from all objects || Deselects all objects.<br />
|}<br />
<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
<br />
'''Note: ''' If the Debug window is open ('''Top Bar''' -> '''Windows''' -> '''Debug Window'''), then when you select an object some useful information will appear. It shows you what xml file the object is created from, its unique object id, and what type of object it is.<br />
<br />
<br clear=all><br />
<br />
== Transformations ==<br />
<br />
For all transformations:<br />
<br />
* In order to transform an object you must first select it.<br />
* Hold ctrl to make movements snap to half-meter increments.<br />
* Hold alt to clone and transform the selected objects, leaving the original objects behind.<br />
* Left-click transforms objects on all axis. Right-click transforms on the two axis that are perpendicular to the side of the bounding box you click on. Holding shift and right click locks the transformation to the axis parallel to the bounding box face you click on.<br />
* Groups are transformed around the group center. Ungrouped objects, even if multiple are selected and transformed at once, are transformed around their own individual centers.<br />
<br />
=== Translation ===<br />
<br />
Hover mouse over central region of a bounding box' face, or hold 't'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Camera relative<br />
| left-click + drag || Translates clicked on object along plane parallel to the screen.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Translates clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Translates clicked on object along normal of clicked on face.<br />
|-<br />
! force decal(s) to map only one object/group<br />
| hold i || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! force decal(s) to project only on selected objects<br />
| press o || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! projection box/angle<br />
| press p || to make projection box for decal<br />
|}<br />
<br />
=== Scale ===<br />
<br />
Hover mouse near bounding box corners, or hold 'e'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! All dimensions<br />
| left-click + drag || Scales clicked on object in all dimensions (x, y, and z) at once.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Extends clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Extrudes clicked on object along normal of clicked on face.<br />
|}<br />
<br />
=== Mirror ===<br />
<br />
Just use the right-click scale tool, and scale down the object until it flips and its mirror image begins scaling up!<br />
<br />
=== Rotation ===<br />
<br />
Hover mouse near bounding box edges but away from the corners, or hold 'r'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Free<br />
| left-click + drag || Rotates clicked on object as if you are pushing the surface of a ball.<br />
|-<br />
! Locked to axis<br />
| right-click + drag || Rotates clicked on object about normal of clicked on face.<br />
|}<br />
<br />
==Editor/Debug Keys==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Toggle editor mode<br />
| F1 || Enables level editor. Press again to exit.<br />
|-<br />
! Activate play mode<br />
| 8 || Spawns you in the level so you can play it. If there already is a player character you will control that, otherwise a player character spawn is created on the editor camera automatically.<br />
|-<br />
! Restore characters<br />
| X || Restores all characters on the level to full health, wakes up any "unconscious" ones, and removes all blood from the environment.<br />
|-<br />
! Reload level<br />
| L || Restarts the current level.<br />
|-<br />
! Change character<br />
| 1-7 || Changes the playable character into one of seven possible characters. 1 cycles through rabbit guard, bandit, and turner models, 2 cycles through civilian rabbit models, 3 cycles through cat models, 4 cycles through rat models, 5 cycles through wolves, 6 through dogs, and the seventh is Rabbot 2.0.<br />
|-<br />
! Active ragdoll<br />
| Z || Puts player character into active ragdoll mode where they will try to protect themselves as they fall. Is active as long as you hold the button.<br />
|-<br />
! Pain ragdoll<br />
| N || Makes the player fall to the ground in agony, until you let go of the button.<br />
|-<br />
! Floppy ragdoll<br />
| M || Makes the player fall to the ground, limp, until the button is released.<br />
|-<br />
! Voice Test<br />
| V || Plays a test voice.<br />
|-<br />
! Toggle combat AI<br />
| C || Toggles whether the characters in the level will attack each other if they are on different teams.<br />
|-<br />
! Slit throat<br />
| , || The controlled character suffers a neck wound with blood gushing from it.<br />
|-<br />
! Slow time<br />
| Tab || Slows down the whole game.<br />
|-<br />
! Freeze time<br />
| ` || Freezes the game. This is useful for posing characters for item placement. '''Note''': The game must be unfrozen to change between controlling the player and editor mode. <br />
|-<br />
! Insta-kill<br />
| F || Instantly kills and knocks back nearby NPC's with a death ray.<br />
|-<br />
! Experimental Key<br />
| B || Makes you invisible.<br />
|}<br />
<br />
== Debug Window ==<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
Just below the top bar menu, on the left side, is a space for debug information.<br />
<br />
This window is only visible if you have the Debug Window enabled ('''Top Bar''' -> '''Windows''' -> '''Debug Window''').<br />
<br />
It will tell you information about the selected object, checkpoint progress (if checkpoints are enabled in this level), and a warning if the nav mesh needs to be updated.<br />
<br />
<br clear=all><br />
<br />
== Editor menu ==<br />
The bar across the top of the window is the editor menu. Many editor functions can be found here, but some functions can only be reached via hotkeys for now.<br />
<br />
'Cmd' refers to the '⌘' key on Macs, and the 'ctrl' key on PCs.<br />
<br />
=== File menu ===<br />
Contains file operations for loading and saving levels.<br />
<br />
[[Image:Editor-file-menu.png|right|thumb|caption|The editor "file" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! New Level<br />
| - || Opens a new empty level in the editor.<br />
|-<br />
! Open Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in Data/Levels directory).<br />
|-<br />
! Open Local Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in last used directory).<br />
|-<br />
! Open Recent<br />
| - || Re-open one of the most recently opened levels in the editor.<br />
|-<br />
! Open Campaign Level<br />
| - || Open one of the levels from the main Overgrowth story mode.<br />
|-<br />
! Save Level<br />
| cmd+s || Overwrites the currently opened level file with any changes you made.<br />
|-<br />
! Save As...<br />
| - || Opens a file browser where you can pick a new or existing file to save the level to.<br />
|-<br />
! Back to main menu<br />
| - || Leave the editor and return to the main menu.<br />
|-<br />
! Quit<br />
| alt+f4 || Quit the game.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Edit menu ===<br />
Contains basic editing functions. Also contains properties for the level.<br />
<br />
[[Image:Editor-edit-menu.png|right|thumb|caption|The editor "edit" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Undo<br />
| cmd+z || Undo the most recent action.<br />
|-<br />
! Redo<br />
| cmd+shift+z || Redo the most recent action.<br />
|-<br />
! Cut<br />
| cmd+x || Puts the selection into the clipboard and removes the selected objects.<br />
|-<br />
! Copy<br />
| cmd+c || Puts the selection into the clipboard.<br />
|-<br />
! Paste<br />
| cmd+v || Pastes the clipboard on the cursor position.<br />
|-<br />
! Select All<br />
| cmd+a || Select all of the objects in the level.<br />
|-<br />
! Deselect All<br />
| q || Clear the current selection.<br />
|-<br />
! Reload All Prefabs<br />
| - || Force a reload of all prefab objects in the level.<br />
|-<br />
! Set Level Params...<br />
| - || Set global level parameters (sun settings, sky, fog, HDR, etc).<br />
|-<br />
! Set Level Script...<br />
| - || Select what script to use for this level.<br />
|-<br />
! Set Sky Texture...<br />
| - || Opens a file browser where you can pick what sky texture to use.<br />
|-<br />
! Edit static meshes<br />
| cmd+1 || Toggle ability to select non-moving objects (rocks, etc).<br />
|-<br />
! Edit decals<br />
| cmd+2 || Toggle ability to select decals.<br />
|-<br />
! Edit gameplay objects<br />
| cmd+3 || Toggle ability to select characters, hotspots, etc.<br />
|-<br />
! Edit lighting<br />
| - || Toggle ability to select lights.<br />
|-<br />
! Play level<br />
| 8 || Enter play mode.<br />
|-<br />
! Media mode<br />
| - || Enter a disembodied camera mode, for taking screenshots and videos.<br />
|}<br />
<br />
=== Selected menu ===<br />
Contains operations for working with the current selected objects.<br />
<br />
[[Image:Editor-selected-menu.png|right|thumb|caption|The editor "selected" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Go To Selected<br />
| f || Move the camera to frame the selected objects.<br />
|-<br />
! Delete<br />
| backspace || Delete the selected objects from the level.<br />
|-<br />
! Group<br />
| cmd+g || Merge the selected objects into a group.<br />
|-<br />
! Ungroup<br />
| cmd+shift+g || Break up all groups that are selected.<br />
|-<br />
! Set Selection Script Params...<br />
| - || Open up the selected object window, and expand the "Script Params" section for the selected objects.<br />
|-<br />
! Save Selection...<br />
| cmd+shift+s || Open up the file browser to save the selection as an object template.<br />
Object templates can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a template, it won't be updated in any level it is placed in.<br />
|-<br />
! Prefab Save<br />
| - || Save any changes to the selected prefab to a file, or create a new prefab file from the selection.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|-<br />
! Prefab Save As...<br />
| - || Open a file browser to save the selection as a new prefab file.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|}<br />
<br />
=== Load menu ===<br />
Contains operations for loading and spawning objects into the level.<br />
<br />
[[Image:Editor-load-menu.png|right|thumb|caption|The editor "load" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Load item...<br />
| - || Open a file browser to pick an item to spawn in. After loading, click in the level to spawn the object.<br />
|-<br />
! Open recent...<br />
| - || Pick an item you've recently spawned to spawn another instance. After loading, click in the level to spawn the object.<br />
|-<br />
! <Rest of menu><br />
| - || Search or click on an item from a list to spawn in. After loading, click in the level to spawn the object.<br />
Hover over an item to see a thumbnail preview of the item.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Nav Mesh menu ===<br />
Tools for nav mesh generation, loading, saving and viewing.<br />
<br />
[[Image:Editor-navmesh-menu.png|right|thumb|caption|The editor "nav mesh" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Create<br />
| - || Generates a new navigation mesh.<br />
|-<br />
! Save<br />
| - || Save the current nav mesh to disk.<br />
|-<br />
! Load<br />
| - || Load a previously saved nav mesh from disk.<br />
|-<br />
! View mesh<br />
| - || Toggle preview render of the nav mesh.<br />
|-<br />
! View collision<br />
| - || Toggle preview render of the collision mesh the nav mesh is based on.<br />
|-<br />
! View hints<br />
| - || Toggle preview render of navmesh_hint objects (which are collision that is only visible to the nav mesh generator).<br />
|-<br />
! View region<br />
| - || Toggle preview render of navmesh_region objects (which restricts mesh generation to within its volume).<br />
|-<br />
! View jump nodes<br />
| - || Toggle preview render of navmesh_connection objects (jump nodes).<br />
|-<br />
! Cell Size<br />
| - || Change the width of cells in the nav mesh<br />
smaller: handles smaller gaps, slower to build.<br />
|-<br />
! Cell Height<br />
| - || Change the height of cells in the nav mesh<br />
smaller: finer control on ramps, slower to build.<br />
|-<br />
! Agent Height<br />
| - || Change the height of fake player used to create nav mesh<br />
smaller: handles lower overhangs, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Radius<br />
| - || Change the width of fake player used to create nav mesh<br />
smaller: handles smaller gaps, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Max Climb<br />
| - || Change the max height of blocks that fake player will climb to create nav mesh<br />
too high: real characters can't climb it.<br />
|-<br />
! Agent Max Slope<br />
| - || Change the max angle of ramps that fake player will walk up to create nav mesh<br />
too high: real characters will go up steep hills.<br />
|}<br />
<br />
=== Dialogue menu ===<br />
Tools for [[dialogue]] editing.<br />
<br />
[[Image:Editor-dialogue-menu.png|right|thumb|caption|The editor "dialogue" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Edit Selected<br />
| - || Start editing the selected dialogue (make sure you select it first!).<br />
|-<br />
! Load Dialogue<br />
| - || Load a previously saved dialogue text file.<br />
|-<br />
! New Dialogue<br />
| - || Create a new dialogue object (click this, then click to place it in the level).<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Windows menu ===<br />
Launch various editor windows, color picker, and debug windows.<br />
<br />
[[Image:Editor-windows-menu.png|right|thumb|caption|The editor "windows" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Scenegraph<br />
| y || Open level properties, and a searchable list of items in the level.<br />
Hint: Click items in the list to select/deselect them, and hit F to view the selected items.<br />
|-<br />
! Selected<br />
| u || Open the properties for the selected objects.<br />
|-<br />
! Single Selected<br />
| i || Open the properties for a single selected object. This menu doesn't require you to drill down to edit properties.<br />
|-<br />
! [[#Color_Picker|Color Picker]]<br />
| cmd+p || Open the Color Picker to let you tint objects.<br />
|-<br />
! [[Collision Painting|Collision Paint]]<br />
| - || Open the Collision Paint menu to let you edit physics properties on objects or individual surfaces.<br />
|-<br />
! Performance<br />
| - || Open a window to monitor performance, and view a list of loaded file assets/loaded textures, for debugging.<br />
|-<br />
! Save<br />
| - || Open a window to view data in the save file, for debugging.<br />
|-<br />
! State<br />
| - || Open a window to view a hierarchy of loaded script contexts, for debugging.<br />
|-<br />
! Sound<br />
| - || Open a window to view a list of loaded sounds, for debugging.<br />
|-<br />
! Debug Window<br />
| - || Open a window to view debug text (shows various game and editor state).<br />
|}<br />
<br />
== Functions Without Buttons ==<br />
Some functions are only reachable via hotkeys, here are a list of those.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Make player-controlled<br />
| Shift+Cmd+P || Toggles whether a character is controlled by a human or by AI. A human-controlled character's spawn box has a green outline, an AI-controlled character's box has white outlines. If two characters are set to be human-controlled Overgrowth will start in split-screen mode the next time game-play is resumed from editor mode. The second player will be controllable via a USB controller.<br />
|-<br />
! [[#Spawn_Dead|Spawn Dead]]<br />
| Cmd+K or Ctrl+K (with character spawn selected) || Makes selected characters spawn dead. It will spawn at the point it went into ragdoll mode (which may cause it to spawn "dead" while standing up). If you want to update the pose for the dead body then move the body, select the spawn point, and hit the hotkey again to save its new position.<br />
|-<br />
! [[#Spawn_Alive|Spawn Alive]]<br />
| K (with character spawn selected) || Makes selected characters spawn alive.<br />
|}<br />
<br />
== Parameters ==<br />
Every object as well as the level itself has several parameters. The most basic ones that all objects have are '''Name''', '''Translation''', '''Scale''' and '''Rotation'''. Other parameters you might find on an object are color tints and [[Script Parameters]].<br />
<br />
There are several ways to edit these parameters for an object. The fastest and easiest way to do it for a single object is by using the '''Single Selected''' window (press I to open it), which shows all of the parameters for the most recently selected object.<br />
<br />
If you want to view or edit the parameters of several specific objects you can use the [[#Selected Window|Selected Window]].<br />
<br />
To view and edit parameters for all the objects in the level, as well as the parameters for the level itself, use the [[#Scenegraph Window|Scenegraph Window]].<br />
<br />
== Selected Window ==<br />
[[Image:Editor-selection-windows.png|right|thumb|caption|Selected Window (object parameters)]]<br />
<br />
The Selected Window (or parameter editor) lets you change different parameters depending on which objects you have selected.<br />
<br />
You can bring up the parameter editor for an object (or set of objects) by selecting them and pressing the U key, or clicking Top Bar -> Windows -> Selected.<br />
<br />
Here is a description of what each parameter does:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Name<br />
| Give an object a custom name, so you can find it in the scenegraph window (see below), or let a custom script find those objects so they can do special things to them.<br />
|-<br />
! Transform<br />
| Adjust the position, rotation, and scale of the objects manually. There is also a button to reset the rotation (which is useful when creating object prefabs).<br />
|-<br />
! Color Palette<br />
| Tint objects, or make them super bright. If the character provides a mutli-part color palette, set different colors on different parts.<br />
|-<br />
! Script Params<br />
| Custom parameters used by scripts. Each different object type can define their own script params. See [[Script Parameters]] page for descriptions of all parameters.<br />
|}<br />
<br />
<br clear=all><br />
<br />
== Scenegraph Window ==<br />
[[Image:Editor-scenegraph-window.png|right|thumb|caption|Scenegraph Window (level parameters)]]<br />
<br />
The Scenegraph Window (or parameter editor) lets you change global level parameters, as well as find objects in the level.<br />
<br />
Open up the Scenegraph for the current level by pressing the Y key, or clicking Top Bar -> Windows -> Scenegraph. Let's go through each part of the Scenegraph window from top to bottom.<br />
<br />
=== Level ===<br />
If you expand the '''Level''' entry at the very top of the window you will find some parameters that can be changed:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Loading Screen Image<br />
| A path to an image that's shown while loading the level<br />
|-<br />
! Sun Position<br />
| The position of the sun in the sky<br />
|-<br />
! Sun Color<br />
| Tints the color of the sun, useful for sunrises and sunsets<br />
|-<br />
! Sun Intensity<br />
| Controls how dark the shadows are<br />
|}<br />
<br />
For a description of the level script parameters, see the [[Script Parameters]] page.<br />
<br />
=== Search field ===<br />
Below the '''Level''' entry at the very top there is a search field. Write in this field to search for objects in the level. This searches in many of the objects' fields. You can for instance search for something written in the '''Name''' parameter of an object, object IDs, object paths, types and more.<br />
<br />
=== Flat ===<br />
The '''Flat''' checkbox controls how the Scenegraph list is displayed.<br />
<br />
If it's not checked you can expand groups to see the relations between objects in the graph.<br />
<br />
If it's checked you can no longer see group relationships, but you can instead expand each individual object to change any parameters associated with it.<br />
<br />
=== Named Only ===<br />
If this is checked the Scenegraph list with only display objects that have been named. You can name an object by selecting it, bringing up the '''Single Selected''' window by pressing I, and then writing something in the '''Name''' field.<br />
<br />
== Color Picker ==<br />
[[Image:Editor-new-color-picker.png|right|thumb|caption|A crete block with its color altered by the color picker.]]<br />
The Color Picker is used to tint the color of selected objects.<br />
<br />
It is opened by pressing cmd+p, or Top Bar -> Windows -> ColorPicker.<br />
<br />
The color picker consists of a color-gradient box, a rainbow slider, the RGB values, and an overbrightness slider. Increasing overbrightness makes the color brighter, and makes it glow in the dark.<br />
<br />
For characters, the color picker will let you set the color of different parts of the character. This is only available if the character was built to support a multi-color palette (not all of them do).<br />
<br />
'''TODO''': Update screenshot on the right<br />
<br />
<br clear=all><br />
<br />
== Sun Editor ==<br />
[[Image:Sun_editor.jpg|right|thumb|caption|The sun editor]]<br />
<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
See [[Lighting#Sunlight|the documentation on the lighting page]] for more information.<br />
<br />
<br clear=all><br />
<br />
== Dialogue Editor ==<br />
<br />
The [[Dialogue Editor]] is used to create scenes with different camera angles, text and poses. It is commonly used to give context and progress the story in a level.<br />
<br />
This is a big enough subject to warrant its own article, which can be found [[Dialogue Editor|here]].<br />
<br />
== Spawn Corpse ==<br />
Sometimes you want to have a dead character in your level. The obvious solution would be to export a new model of a dead character and place it in the level. However, that's a lot of work, and the character wouldn't be dynamic, and it would take a lot of work to make changes to it.<br />
<br />
Luckily there is a system in the engine for making any character spawn as a corpse. Here are instructions for how to use that system:<br />
<br />
[[Image:spawn_corpse.jpg|right|thumb|caption|Making a corpse]]<br />
# Spawn the character you want to spawn as a corpse.<br />
# Select its spawn box and press cmd+K to make it spawn as a corpse, which will kill it. At this point the corpse will spawn standing up when you restart the level with L, we'll fix that in the following steps.<br />
# Enter play mode by pressing 8, go close to the corpse and hold right click to drag it around until you're satisfied with the pose.<br />
# Now exit play mode by pressing escape, select the character's spawn box and press cmd+K again to update the pose of the corpse.<br />
# Press L to restart the level and verify that it worked.<br />
<br />
If you want to make a corpse to spawn alive again, select its spawn point and press K.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Editor_Interface&diff=5979Editor Interface2018-04-07T05:13:54Z<p>Silverfish: /* Activating the editor */ Made video tutorial smaller and added end</p>
<hr />
<div>[[Category: Modding]]<br />
[[Category: Overgrowth]]<br />
<br />
[[Image:Editor_Overview.png|right|600px|thumb|caption|The Overgrowth level editor]]<br />
This page details all the interface elements and actions in the Overgrowth level editor.<br />
<br />
The level editor lets you create new levels or even whole campaigns. This is the same editor we used to make the Overgrowth and Lugaru stories.<br />
<br />
You can use the level editor to edit any existing level in the game.<br />
<br />
== Activating the editor ==<br />
{{#ev:youtube<br />
|eS3RujmDQ2M<br />
|420<br />
|right<br />
|How to upload a mod to the Steam Workshop<br />
|frame<br />
|start=15&end=43<br />
}}<br />
<br />
==== To activate the editor: ====<br />
* Create a new level ('''File''' -> '''New''')<br />
* Open an existing level and press <kbd>'''F1'''</kbd><br />
<br />
If the editor is active while playing a level, you can open up the editor window again by pressing the <kbd>'''Esc'''</kbd> key.<br />
<br />
You can deactivate the editor by hitting <kbd>'''F1'''</kbd> a second time.<br />
<br />
==== Troubleshooting: ====<br />
If you can't get the editor to activate, there are a few things you can try:<br />
* If you have a laptop, try holding the <kbd>'''fn'''</kbd> key while pressing <kbd>'''F1'''</kbd><br />
* Mash all the modifier keys a few times to make sure they're not stuck down - <kbd>'''ctrl'''</kbd>, <kbd>'''alt'''</kbd>, <kbd>'''shift'''</kbd>, <kbd>'''command'''</kbd>, etc<br />
* Make sure you have all other programs closed, in case one of them is conflicting with the <kbd>'''F1'''</kbd> hotkey<br />
* If some "Help" program comes up when you hit <kbd>'''F1'''</kbd> (such as "HP Help"), edit its settings to disable the hotkey.<br>Or just ''uninstall it'' (because it is bloatware)<br />
<br clear=all><br />
<br />
== Camera Movement ==<br />
{| class="wikitable"<br />
|-<br />
! Control !! Behavior<br />
|-<br />
! W<br />
| Moves camera forward<br />
|-<br />
! S<br />
| Moves camera backward<br />
|-<br />
! A<br />
| Moves camera left<br />
|-<br />
! D<br />
| Moves camera right<br />
|-<br />
! Shift + W<br />
| Moves camera up<br />
|-<br />
! Shift + S<br />
| Moves camera down<br />
|-<br />
! Left click and drag<br />
| Rotates the camera<br />
|}<br />
<br />
== Object Selection ==<br />
<br />
Here are the different ways you can select objects.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Select single object<br />
| double-left-click on object || Selects clicked on object and deselects all other objects. If the object is part of a group, the whole group is selected. A box around the object indicates that it is selected.<br />
|-<br />
! Toggle-select objects<br />
| shift + double-left-click on objects || Toggles selection of clicked on object. Preserves existing selections.<br />
|-<br />
! Box select objects<br />
| left-click + right-click + drag, or left-click + 'b' + drag || Selects all objects whose centers lie within box drawn on screen. Deselects all other objects.<br />
|-<br />
! Box add to selection<br />
| shift + left-click + right-click + drag, or shift + left-click + 'b' + drag || Adds all objects whose centers lie within the drawn box to the selection. Preserves existing selection.<br />
|-<br />
! Select decal or object that is under another decal<br />
| mouse wheel up/down || When you have 2 or more objects or decals on top of each other, you can select at least 1 decal or object, put your mouse cursor on top of the one you want to select, then use the scroll wheel to switch your selection between the objects.<br />
|-<br />
! Select all<br />
| cmd-a || Selects all objects.<br />
|-<br />
! Deselect all<br />
| double-left-click away from all objects || Deselects all objects.<br />
|}<br />
<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
<br />
'''Note: ''' If the Debug window is open ('''Top Bar''' -> '''Windows''' -> '''Debug Window'''), then when you select an object some useful information will appear. It shows you what xml file the object is created from, its unique object id, and what type of object it is.<br />
<br />
<br clear=all><br />
<br />
== Transformations ==<br />
<br />
For all transformations:<br />
<br />
* In order to transform an object you must first select it.<br />
* Hold ctrl to make movements snap to half-meter increments.<br />
* Hold alt to clone and transform the selected objects, leaving the original objects behind.<br />
* Left-click transforms objects on all axis. Right-click transforms on the two axis that are perpendicular to the side of the bounding box you click on. Holding shift and right click locks the transformation to the axis parallel to the bounding box face you click on.<br />
* Groups are transformed around the group center. Ungrouped objects, even if multiple are selected and transformed at once, are transformed around their own individual centers.<br />
<br />
=== Translation ===<br />
<br />
Hover mouse over central region of a bounding box' face, or hold 't'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Camera relative<br />
| left-click + drag || Translates clicked on object along plane parallel to the screen.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Translates clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Translates clicked on object along normal of clicked on face.<br />
|-<br />
! force decal(s) to map only one object/group<br />
| hold i || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! force decal(s) to project only on selected objects<br />
| press o || selected decal will only map with that object that is directly underneath your mouse<br />
|-<br />
! projection box/angle<br />
| press p || to make projection box for decal<br />
|}<br />
<br />
=== Scale ===<br />
<br />
Hover mouse near bounding box corners, or hold 'e'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! All dimensions<br />
| left-click + drag || Scales clicked on object in all dimensions (x, y, and z) at once.<br />
|-<br />
! Locked to plane<br />
| right-click + drag || Extends clicked on object along plane of clicked on face.<br />
|-<br />
! Locked to line<br />
| shift + right-click + drag || Extrudes clicked on object along normal of clicked on face.<br />
|}<br />
<br />
=== Mirror ===<br />
<br />
Just use the right-click scale tool, and scale down the object until it flips and its mirror image begins scaling up!<br />
<br />
=== Rotation ===<br />
<br />
Hover mouse near bounding box edges but away from the corners, or hold 'r'.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Free<br />
| left-click + drag || Rotates clicked on object as if you are pushing the surface of a ball.<br />
|-<br />
! Locked to axis<br />
| right-click + drag || Rotates clicked on object about normal of clicked on face.<br />
|}<br />
<br />
==Editor/Debug Keys==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Toggle editor mode<br />
| F1 || Enables level editor. Press again to exit.<br />
|-<br />
! Activate play mode<br />
| 8 || Spawns you in the level so you can play it. If there already is a player character you will control that, otherwise a player character spawn is created on the editor camera automatically.<br />
|-<br />
! Restore characters<br />
| X || Restores all characters on the level to full health, wakes up any "unconscious" ones, and removes all blood from the environment.<br />
|-<br />
! Reload level<br />
| L || Restarts the current level.<br />
|-<br />
! Change character<br />
| 1-7 || Changes the playable character into one of seven possible characters. 1 cycles through rabbit guard, bandit, and turner models, 2 cycles through civilian rabbit models, 3 cycles through cat models, 4 cycles through rat models, 5 cycles through wolves, 6 through dogs, and the seventh is Rabbot 2.0.<br />
|-<br />
! Active ragdoll<br />
| Z || Puts player character into active ragdoll mode where they will try to protect themselves as they fall. Is active as long as you hold the button.<br />
|-<br />
! Pain ragdoll<br />
| N || Makes the player fall to the ground in agony, until you let go of the button.<br />
|-<br />
! Floppy ragdoll<br />
| M || Makes the player fall to the ground, limp, until the button is released.<br />
|-<br />
! Voice Test<br />
| V || Plays a test voice.<br />
|-<br />
! Toggle combat AI<br />
| C || Toggles whether the characters in the level will attack each other if they are on different teams.<br />
|-<br />
! Slit throat<br />
| , || The controlled character suffers a neck wound with blood gushing from it.<br />
|-<br />
! Slow time<br />
| Tab || Slows down the whole game.<br />
|-<br />
! Freeze time<br />
| ` || Freezes the game. This is useful for posing characters for item placement. '''Note''': The game must be unfrozen to change between controlling the player and editor mode. <br />
|-<br />
! Insta-kill<br />
| F || Instantly kills and knocks back nearby NPC's with a death ray.<br />
|-<br />
! Experimental Key<br />
| B || Makes you invisible.<br />
|}<br />
<br />
== Debug Window ==<br />
[[Image:Editor-selection-debug-info.png|right|thumb|caption|Debug window]]<br />
Just below the top bar menu, on the left side, is a space for debug information.<br />
<br />
This window is only visible if you have the Debug Window enabled ('''Top Bar''' -> '''Windows''' -> '''Debug Window''').<br />
<br />
It will tell you information about the selected object, checkpoint progress (if checkpoints are enabled in this level), and a warning if the nav mesh needs to be updated.<br />
<br />
<br clear=all><br />
<br />
== Editor menu ==<br />
The bar across the top of the window is the editor menu. Many editor functions can be found here, but some functions can only be reached via hotkeys for now.<br />
<br />
'Cmd' refers to the '⌘' key on Macs, and the 'ctrl' key on PCs.<br />
<br />
=== File menu ===<br />
Contains file operations for loading and saving levels.<br />
<br />
[[Image:Editor-file-menu.png|right|thumb|caption|The editor "file" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! New Level<br />
| - || Opens a new empty level in the editor.<br />
|-<br />
! Open Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in Data/Levels directory).<br />
|-<br />
! Open Local Level...<br />
| - || Opens a file browser where you can pick what level to load (starts in last used directory).<br />
|-<br />
! Open Recent<br />
| - || Re-open one of the most recently opened levels in the editor.<br />
|-<br />
! Open Campaign Level<br />
| - || Open one of the levels from the main Overgrowth story mode.<br />
|-<br />
! Save Level<br />
| cmd+s || Overwrites the currently opened level file with any changes you made.<br />
|-<br />
! Save As...<br />
| - || Opens a file browser where you can pick a new or existing file to save the level to.<br />
|-<br />
! Back to main menu<br />
| - || Leave the editor and return to the main menu.<br />
|-<br />
! Quit<br />
| alt+f4 || Quit the game.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Edit menu ===<br />
Contains basic editing functions. Also contains properties for the level.<br />
<br />
[[Image:Editor-edit-menu.png|right|thumb|caption|The editor "edit" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Undo<br />
| cmd+z || Undo the most recent action.<br />
|-<br />
! Redo<br />
| cmd+shift+z || Redo the most recent action.<br />
|-<br />
! Cut<br />
| cmd+x || Puts the selection into the clipboard and removes the selected objects.<br />
|-<br />
! Copy<br />
| cmd+c || Puts the selection into the clipboard.<br />
|-<br />
! Paste<br />
| cmd+v || Pastes the clipboard on the cursor position.<br />
|-<br />
! Select All<br />
| cmd+a || Select all of the objects in the level.<br />
|-<br />
! Deselect All<br />
| q || Clear the current selection.<br />
|-<br />
! Reload All Prefabs<br />
| - || Force a reload of all prefab objects in the level.<br />
|-<br />
! Set Level Params...<br />
| - || Set global level parameters (sun settings, sky, fog, HDR, etc).<br />
|-<br />
! Set Level Script...<br />
| - || Select what script to use for this level.<br />
|-<br />
! Set Sky Texture...<br />
| - || Opens a file browser where you can pick what sky texture to use.<br />
|-<br />
! Edit static meshes<br />
| cmd+1 || Toggle ability to select non-moving objects (rocks, etc).<br />
|-<br />
! Edit decals<br />
| cmd+2 || Toggle ability to select decals.<br />
|-<br />
! Edit gameplay objects<br />
| cmd+3 || Toggle ability to select characters, hotspots, etc.<br />
|-<br />
! Edit lighting<br />
| - || Toggle ability to select lights.<br />
|-<br />
! Play level<br />
| 8 || Enter play mode.<br />
|-<br />
! Media mode<br />
| - || Enter a disembodied camera mode, for taking screenshots and videos.<br />
|}<br />
<br />
=== Selected menu ===<br />
Contains operations for working with the current selected objects.<br />
<br />
[[Image:Editor-selected-menu.png|right|thumb|caption|The editor "selected" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Go To Selected<br />
| f || Move the camera to frame the selected objects.<br />
|-<br />
! Delete<br />
| backspace || Delete the selected objects from the level.<br />
|-<br />
! Group<br />
| cmd+g || Merge the selected objects into a group.<br />
|-<br />
! Ungroup<br />
| cmd+shift+g || Break up all groups that are selected.<br />
|-<br />
! Set Selection Script Params...<br />
| - || Open up the selected object window, and expand the "Script Params" section for the selected objects.<br />
|-<br />
! Save Selection...<br />
| cmd+shift+s || Open up the file browser to save the selection as an object template.<br />
Object templates can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a template, it won't be updated in any level it is placed in.<br />
|-<br />
! Prefab Save<br />
| - || Save any changes to the selected prefab to a file, or create a new prefab file from the selection.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|-<br />
! Prefab Save As...<br />
| - || Open a file browser to save the selection as a new prefab file.<br />
Object prefabs can be loaded like any other object. Script params, transform, and connections are saved.<br />
If you save over a prefab, it will automatically be updated in all levels it is placed in.<br />
|}<br />
<br />
=== Load menu ===<br />
Contains operations for loading and spawning objects into the level.<br />
<br />
[[Image:Editor-load-menu.png|right|thumb|caption|The editor "load" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Load item...<br />
| - || Open a file browser to pick an item to spawn in. After loading, click in the level to spawn the object.<br />
|-<br />
! Open recent...<br />
| - || Pick an item you've recently spawned to spawn another instance. After loading, click in the level to spawn the object.<br />
|-<br />
! <Rest of menu><br />
| - || Search or click on an item from a list to spawn in. After loading, click in the level to spawn the object.<br />
Hover over an item to see a thumbnail preview of the item.<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Nav Mesh menu ===<br />
Tools for nav mesh generation, loading, saving and viewing.<br />
<br />
[[Image:Editor-navmesh-menu.png|right|thumb|caption|The editor "nav mesh" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Create<br />
| - || Generates a new navigation mesh.<br />
|-<br />
! Save<br />
| - || Save the current nav mesh to disk.<br />
|-<br />
! Load<br />
| - || Load a previously saved nav mesh from disk.<br />
|-<br />
! View mesh<br />
| - || Toggle preview render of the nav mesh.<br />
|-<br />
! View collision<br />
| - || Toggle preview render of the collision mesh the nav mesh is based on.<br />
|-<br />
! View hints<br />
| - || Toggle preview render of navmesh_hint objects (which are collision that is only visible to the nav mesh generator).<br />
|-<br />
! View region<br />
| - || Toggle preview render of navmesh_region objects (which restricts mesh generation to within its volume).<br />
|-<br />
! View jump nodes<br />
| - || Toggle preview render of navmesh_connection objects (jump nodes).<br />
|-<br />
! Cell Size<br />
| - || Change the width of cells in the nav mesh<br />
smaller: handles smaller gaps, slower to build.<br />
|-<br />
! Cell Height<br />
| - || Change the height of cells in the nav mesh<br />
smaller: finer control on ramps, slower to build.<br />
|-<br />
! Agent Height<br />
| - || Change the height of fake player used to create nav mesh<br />
smaller: handles lower overhangs, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Radius<br />
| - || Change the width of fake player used to create nav mesh<br />
smaller: handles smaller gaps, more likely to be unreachable by real characters.<br />
|-<br />
! Agent Max Climb<br />
| - || Change the max height of blocks that fake player will climb to create nav mesh<br />
too high: real characters can't climb it.<br />
|-<br />
! Agent Max Slope<br />
| - || Change the max angle of ramps that fake player will walk up to create nav mesh<br />
too high: real characters will go up steep hills.<br />
|}<br />
<br />
=== Dialogue menu ===<br />
Tools for [[dialogue]] editing.<br />
<br />
[[Image:Editor-dialogue-menu.png|right|thumb|caption|The editor "dialogue" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Edit Selected<br />
| - || Start editing the selected dialogue (make sure you select it first!).<br />
|-<br />
! Load Dialogue<br />
| - || Load a previously saved dialogue text file.<br />
|-<br />
! New Dialogue<br />
| - || Create a new dialogue object (click this, then click to place it in the level).<br />
|}<br />
<br />
<br clear=all><br />
<br />
=== Windows menu ===<br />
Launch various editor windows, color picker, and debug windows.<br />
<br />
[[Image:Editor-windows-menu.png|right|thumb|caption|The editor "windows" menu]]<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Hotkey !! Effect<br />
|-<br />
! Scenegraph<br />
| y || Open level properties, and a searchable list of items in the level.<br />
Hint: Click items in the list to select/deselect them, and hit F to view the selected items.<br />
|-<br />
! Selected<br />
| u || Open the properties for the selected objects.<br />
|-<br />
! Single Selected<br />
| i || Open the properties for a single selected object. This menu doesn't require you to drill down to edit properties.<br />
|-<br />
! [[#Color_Picker|Color Picker]]<br />
| cmd+p || Open the Color Picker to let you tint objects.<br />
|-<br />
! [[Collision Painting|Collision Paint]]<br />
| - || Open the Collision Paint menu to let you edit physics properties on objects or individual surfaces.<br />
|-<br />
! Performance<br />
| - || Open a window to monitor performance, and view a list of loaded file assets/loaded textures, for debugging.<br />
|-<br />
! Save<br />
| - || Open a window to view data in the save file, for debugging.<br />
|-<br />
! State<br />
| - || Open a window to view a hierarchy of loaded script contexts, for debugging.<br />
|-<br />
! Sound<br />
| - || Open a window to view a list of loaded sounds, for debugging.<br />
|-<br />
! Debug Window<br />
| - || Open a window to view debug text (shows various game and editor state).<br />
|}<br />
<br />
== Functions Without Buttons ==<br />
Some functions are only reachable via hotkeys, here are a list of those.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Action !! Control !! Behavior<br />
|-<br />
! Make player-controlled<br />
| Shift+Cmd+P || Toggles whether a character is controlled by a human or by AI. A human-controlled character's spawn box has a green outline, an AI-controlled character's box has white outlines. If two characters are set to be human-controlled Overgrowth will start in split-screen mode the next time game-play is resumed from editor mode. The second player will be controllable via a USB controller.<br />
|-<br />
! [[#Spawn_Dead|Spawn Dead]]<br />
| Cmd+K or Ctrl+K (with character spawn selected) || Makes selected characters spawn dead. It will spawn at the point it went into ragdoll mode (which may cause it to spawn "dead" while standing up). If you want to update the pose for the dead body then move the body, select the spawn point, and hit the hotkey again to save its new position.<br />
|-<br />
! [[#Spawn_Alive|Spawn Alive]]<br />
| K (with character spawn selected) || Makes selected characters spawn alive.<br />
|}<br />
<br />
== Parameters ==<br />
Every object as well as the level itself has several parameters. The most basic ones that all objects have are '''Name''', '''Translation''', '''Scale''' and '''Rotation'''. Other parameters you might find on an object are color tints and [[Script Parameters]].<br />
<br />
There are several ways to edit these parameters for an object. The fastest and easiest way to do it for a single object is by using the '''Single Selected''' window (press I to open it), which shows all of the parameters for the most recently selected object.<br />
<br />
If you want to view or edit the parameters of several specific objects you can use the [[#Selected Window|Selected Window]].<br />
<br />
To view and edit parameters for all the objects in the level, as well as the parameters for the level itself, use the [[#Scenegraph Window|Scenegraph Window]].<br />
<br />
== Selected Window ==<br />
[[Image:Editor-selection-windows.png|right|thumb|caption|Selected Window (object parameters)]]<br />
<br />
The Selected Window (or parameter editor) lets you change different parameters depending on which objects you have selected.<br />
<br />
You can bring up the parameter editor for an object (or set of objects) by selecting them and pressing the U key, or clicking Top Bar -> Windows -> Selected.<br />
<br />
Here is a description of what each parameter does:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Name<br />
| Give an object a custom name, so you can find it in the scenegraph window (see below), or let a custom script find those objects so they can do special things to them.<br />
|-<br />
! Transform<br />
| Adjust the position, rotation, and scale of the objects manually. There is also a button to reset the rotation (which is useful when creating object prefabs).<br />
|-<br />
! Color Palette<br />
| Tint objects, or make them super bright. If the character provides a mutli-part color palette, set different colors on different parts.<br />
|-<br />
! Script Params<br />
| Custom parameters used by scripts. Each different object type can define their own script params. See [[Script Parameters]] page for descriptions of all parameters.<br />
|}<br />
<br />
<br clear=all><br />
<br />
== Scenegraph Window ==<br />
[[Image:Editor-scenegraph-window.png|right|thumb|caption|Scenegraph Window (level parameters)]]<br />
<br />
The Scenegraph Window (or parameter editor) lets you change global level parameters, as well as find objects in the level.<br />
<br />
Open up the Scenegraph for the current level by pressing the Y key, or clicking Top Bar -> Windows -> Scenegraph. Let's go through each part of the Scenegraph window from top to bottom.<br />
<br />
=== Level ===<br />
If you expand the '''Level''' entry at the very top of the window you will find some parameters that can be changed:<br />
{| class="wikitable"<br />
|-<br />
! Parameter !! Description<br />
|-<br />
! Loading Screen Image<br />
| A path to an image that's shown while loading the level<br />
|-<br />
! Sun Position<br />
| The position of the sun in the sky<br />
|-<br />
! Sun Color<br />
| Tints the color of the sun, useful for sunrises and sunsets<br />
|-<br />
! Sun Intensity<br />
| Controls how dark the shadows are<br />
|}<br />
<br />
For a description of the level script parameters, see the [[Script Parameters]] page.<br />
<br />
=== Search field ===<br />
Below the '''Level''' entry at the very top there is a search field. Write in this field to search for objects in the level. This searches in many of the objects' fields. You can for instance search for something written in the '''Name''' parameter of an object, object IDs, object paths, types and more.<br />
<br />
=== Flat ===<br />
The '''Flat''' checkbox controls how the Scenegraph list is displayed.<br />
<br />
If it's not checked you can expand groups to see the relations between objects in the graph.<br />
<br />
If it's checked you can no longer see group relationships, but you can instead expand each individual object to change any parameters associated with it.<br />
<br />
=== Named Only ===<br />
If this is checked the Scenegraph list with only display objects that have been named. You can name an object by selecting it, bringing up the '''Single Selected''' window by pressing I, and then writing something in the '''Name''' field.<br />
<br />
== Color Picker ==<br />
[[Image:Editor-new-color-picker.png|right|thumb|caption|A crete block with its color altered by the color picker.]]<br />
The Color Picker is used to tint the color of selected objects.<br />
<br />
It is opened by pressing cmd+p, or Top Bar -> Windows -> ColorPicker.<br />
<br />
The color picker consists of a color-gradient box, a rainbow slider, the RGB values, and an overbrightness slider. Increasing overbrightness makes the color brighter, and makes it glow in the dark.<br />
<br />
For characters, the color picker will let you set the color of different parts of the character. This is only available if the character was built to support a multi-color palette (not all of them do).<br />
<br />
'''TODO''': Update screenshot on the right<br />
<br />
<br clear=all><br />
<br />
== Sun Editor ==<br />
[[Image:Sun_editor.jpg|right|thumb|caption|The sun editor]]<br />
<br />
The sun allows you to cast dynamic, single-directional light throughout a level.<br><br />
You can use it to simulate either a sun (more direct light) or a moon (more ambient light)<br />
<br />
See [[Lighting#Sunlight|the documentation on the lighting page]] for more information.<br />
<br />
<br clear=all><br />
<br />
== Dialogue Editor ==<br />
<br />
The [[Dialogue Editor]] is used to create scenes with different camera angles, text and poses. It is commonly used to give context and progress the story in a level.<br />
<br />
This is a big enough subject to warrant its own article, which can be found [[Dialogue Editor|here]].<br />
<br />
== Spawn Corpse ==<br />
Sometimes you want to have a dead character in your level. The obvious solution would be to export a new model of a dead character and place it in the level. However, that's a lot of work, and the character wouldn't be dynamic, and it would take a lot of work to make changes to it.<br />
<br />
Luckily there is a system in the engine for making any character spawn as a corpse. Here are instructions for how to use that system:<br />
<br />
[[Image:spawn_corpse.jpg|right|thumb|caption|Making a corpse]]<br />
# Spawn the character you want to spawn as a corpse.<br />
# Select its spawn box and press cmd+K to make it spawn as a corpse, which will kill it. At this point the corpse will spawn standing up when you restart the level with L, we'll fix that in the following steps.<br />
# Enter play mode by pressing 8, go close to the corpse and hold right click to drag it around until you're satisfied with the pose.<br />
# Now exit play mode by pressing escape, select the character's spawn box and press cmd+K again to update the pose of the corpse.<br />
# Press L to restart the level and verify that it worked.<br />
<br />
If you want to make a corpse to spawn alive again, select its spawn point and press K.</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Creating_a_new_Mod&diff=5978Creating a new Mod2018-04-07T05:09:56Z<p>Silverfish: /* Steam Workshop */ Added video tutorial</p>
<hr />
<div>== Folder structure ==<br />
<br />
Overgrowth has a powerful and simple system to allow the creation of mods by both "overshadowing" existing files, and by creating new files.<br />
<br />
Mods that are installed via the Steam workshop end up in <code>../Steam/steamapps/workshop/content/25000/</code>. Each folder in there has a number assigned to it, so it can be hard to see which folder belongs to which mod. All other mods, such as manually installed ones, those from SUM Launcher and those you make yourself live in the <code>../Overgrowth/Data/Mods/</code> folder. There, each mod folder has a readable name.<br />
<br />
The folder for a mod must contain at least a mod.xml file. Other data may be present as well, such as scripts, shaders, models, textures or levels. All these folders are contained in a Data folder inside the mod's folder, resulting in the following structure<br />
<br />
Overgrowth/Data/Mods/<br />
└── my_mod/<br />
├── mod.xml<br />
└── Data/<br />
├── Scripts/<br />
├── Shaders/<br />
├── Models/<br />
├── Textures/<br />
└── Levels/<br />
<br />
Note that your mod can be set up and kept in either YourPC/Documents/Wolfire/Overgrowth/Data/Mods, or in the actual program files, in YourPC/(C:)/Program Files(x86)/Steam/steamapps/common/Overgrowth/Data/Mods - both of these "Mods" folder locations will work. The folder called my_mod in the tree structure above is what is compressed into a zip file and distributed when a mod is released. You can also release the mod on Steam Workshop, which is a different process that you can read about [[#Steam_Workshop|a bit further down]].<br />
<br />
== The mod.xml file ==<br />
<br />
The mod.xml file contains the mod's meta data. The game uses this file to understand how to use the mod with the game. XML files can be written and modified using programs like Notepad++ and Sublime Text. Here is a complete example:<br />
<br />
<? xml version="1.0" ?><br />
<Mod><br />
<!-- The ID is necessary and should never change between versions of the same mod --><br />
<Id>unique-name</Id> <br />
<!-- The human readable name is presented in UI's --><br />
<Name>Human Readable Name</Name> <br />
<!-- Version number, can have any formatting you wish. --><br />
<Version>1.2.5</Version><br />
<SupportedVersion>b4</SupportedVersion><br />
<ModDependency><br />
<Id>other-mod2</Id><br />
<Version>1.0.0</Version> <br />
</ModDependency><br />
</Mod><br />
<br />
You can find all available tags and their uses under the [[#mod.xml_tags|mod.xml_tags]] heading below.<br />
<br />
== mod.xml tags ==<br />
There are quite a few tags that can be used in the mod.xml file to set up your mod. Here we go through all of those tags.<br />
<br />
=== Id ===<br />
<br />
The unique ID for this mod that is not allowed to conflict with any other existing mod. One suggestion is to keep it the same as the folder name for the mod. The ID is not shown to the user, but it is used for instance when another mod wants to use this mod as a dependency. ID tag text must consist of letters and dashes only, with no uppercase.<br />
<br />
Example:<br />
<code><Id>my-mod</Id></code><br />
<br />
=== Name ===<br />
<br />
The name of the mod, shown in the mod menu.<br />
<br />
Example:<br />
<code><Name>My Mod</Name></code><br />
<br />
=== Category ===<br />
<br />
Required for a valid mod, but does not have any effect.<br />
<br />
Example:<br />
<code><Category>Campaign</Category></code><br />
<br />
=== Author ===<br />
<br />
Is shown in the user interface to tell the user who made the mod.<br />
<br />
Example:<br />
<code><Author>John Doe</Author></code><br />
<br />
=== Description ===<br />
<br />
Is shown in the user interface to tell the user what this mod does.<br />
<br />
Example:<br />
<code><Description>This is my really cool mod that adds some excellent functionality</Description></code><br />
<br />
=== Version ===<br />
<br />
The version of the mod. It is both shown in the user interface, and is used by other mods that depend on this mod to make sure that the user has the right version of your mod installed. Does not need to follow any specific pattern.<br />
<br />
Example:<br />
<code><Version>1.0.0</Version></code><br />
<br />
=== Thumbnail ===<br />
<br />
The path to an image to show in the user interface for your mod when the user is browsing their installed mods. Make sure you include the supplied image in the mod folder.<br />
<br />
Example:<br />
<code><Thumbnail>Data/Images/my-mod/thumb.jpg</Thumbnail></code><br />
<br />
=== PreviewImage ===<br />
<br />
This image is used in Steam Workshop to represent the mod in search results, when browsing mods and on the mod's page.<br />
<br />
Example:<br />
<code><PreviewImage>Data/Images/my-mod/preview-image.jpg</PreviewImage></code><br />
<br />
=== Tag ===<br />
<br />
Once the mod is uploaded to Steam Workshop, you can search for the tags to find the mod. You can have as many tags as you want.<br />
<br />
Example:<br />
<Tag>Campaign</Tag><br />
<Tag>Parkour</Tag><br />
<br />
=== SupportedVersion ===<br />
<br />
Which version of the game this mod can be used in. Can be something like <code>1.2.0</code>, or <code>*</code> to indicate that it can be used with any version. Using <code>*</code> is useful for mods that don't rely on the game code as much, such as assets, levels and so on.<br />
<br />
To find out which version of the game you're running, in the top menu bar, press <code>Help → About...</code>. Here you will see 4 lines of information, where the third line shows your version number. It starts with three numbers separated by periods, and this is the version you're running. It can for example be <code>1.2.0</code>.<br />
<br />
Example:<br />
<code><SupportedVersion>1.2.0</SupportedVersion></code><br />
<br />
=== LevelHookFile ===<br />
<br />
Specifies a path to a script file. Functions in this script are run for every level in the game when the mod is active. Every mod can add their own level hook script. [[LevelScripts#Per-mod_Level_Script|Read this]] for more information.<br />
<br />
Example:<br />
<code><LevelHookFile>Scripts/my_mod/level_script.as</LevelHookFile></code><br />
<br />
=== MenuItem ===<br />
Deprecated, no longer works.<br />
<br />
Adds a campaign button to the Play menu which runs a script. The script type is a [[Scriptable Menu]].<br />
<br />
Example:<br />
<code><MenuItem title="My Menu" category="My Category" thumbnail="Data/Images/my_mod/my_item.png" path="Data/Scripts/my_menu_script.as"/></code><br />
<br />
=== Campaign ===<br />
<br />
Describes a set of levels that belong together.<br />
<br />
Has a few attributes that describe the campaign:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! title<br />
| The name of the campaign, shown in the menu.<br />
|-<br />
! type<br />
| Deprecated, has no effect.<br />
|-<br />
! is_linear<br />
| Sets if you need to finish the first level to unlock access to the second and so on.<br />
|-<br />
! thumbnail<br />
| The path to the image to use for the campaign in the play menu.<br />
|}<br />
<br />
Inside the campaign tag there are two or more "Level" tags in the desired order that make up the campaign. For more information about what is included in the "Level" tag, see the "Level" heading just below.<br />
<br />
Example:<br />
<Campaign title="My Campaign"<br />
type="general"<br />
is_linear="true"><br />
<Level title="Intro" <br />
thumbnail="Images/MyMod/intro_thumb.jpg"><br />
MyMod/intro.xml<br />
</Level><br />
<Level title="Big Challenge" <br />
thumbnail="Images/MyMod/challenge_thumb.jpg"><br />
MyMod/challenge.xml<br />
</Level><br />
<Level title="Ending" <br />
thumbnail="Images/MyMod/end_cutscene_thumb.jpg"><br />
MyMod/end_cutscene.xml<br />
</Level><br />
</Campaign><br />
<br />
=== Level ===<br />
<br />
Can be placed in the root "Mod" tag to make the specified levels show up under the play menu in the game. You can also place them in a "Campaign" tag to put them into a campaign, for more information on that, see the "Campaign" tag above.<br />
<br />
Each level has two attributes, and between the start and end tags you write the path to the level. The root for the path is in the /Data/Levels/ folder, so leave everything up to the Levels folder out of the path, and make sure the level is stored inside the <code>../Overgrowth/Data/Mods/my_mod/Data/Levels/</code> folder.<br />
<br />
Attributes:<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! title<br />
| The name of the level, shown in the menu.<br />
|-<br />
! thumbnail<br />
| The path to the image to use for the level in the play menu. This attribute is not required.<br />
|}<br />
<br />
Example:<br />
<code><Level title="My Level" thumbnail="Images/MyMod/my_level_thumb.jpg">MyMod/my_level.xml</Level></code><br />
<br />
=== NeedsRestart ===<br />
<br />
This tag is used to determine if the game should let the user know that they need to restart the game in order for the mod to function properly.<br />
<br />
Can be <code>true</code> or <code>false</code>.<br />
<br />
You need to manually test for if your mod works properly without a game restart, and then put true or false depending on the outcome.<br />
<br />
Example:<br />
<code><NeedsRestart>false</NeedsRestart></code><br />
<br />
=== ModDependency ===<br />
<br />
This is a list of other mods that this mod depends on to work. Has two tags for each mod:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Tag !! Purpose<br />
|-<br />
! Id<br />
| The unique ID for the other mod.<br />
|-<br />
! Version<br />
| The version of the other mod that this mod requires. Set to <code>*</code> to accept any version of the other mod.<br />
|}<br />
<br />
Example:<br />
<ModDependency><br />
<Id>other-mod</Id><br />
<Version>1.0.0</Version> <br />
</ModDependency><br />
<br />
=== Item ===<br />
<br />
Allows you to add entries to the "Load Item" list in the editor. This is useful if the mod adds weapons, characters, static objects, decals and similar things.<br />
<br />
Has a few attributes for each entry:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Attribute !! Purpose<br />
|-<br />
! category<br />
| Name of the sub-menu to add the item to. If the sub-menu does not exist it will automatically be created.<br />
|-<br />
! title<br />
| Name of the item to display in the list.<br />
|-<br />
! path<br />
| Path to the object file for this item.<br />
|-<br />
! thumbnail<br />
| Path to image to use as a preview image for this item.<br />
|}<br />
<br />
Example:<br />
<Item category="My Mod"<br />
title="My item"<br />
path="Data/Items/MyItem.xml"<br />
thumbnail="Data/UI/spawner/MyItem.png" /><br />
<br />
<br />
== Advanced mod menu ==<br />
<br />
[[File:Advanced_mod_menu.jpg|200px|thumb|right|The advanced mod menu]]<br />
<br />
To help modders validate their mods and upload them to the Steam Workshop there is a tool called the "Advanced mod menu". Access it by going to the main menu, then in the top menu bar, click <code>Windows -> Mods</code>. This brings up a simpler version of the mod menu. To activate the advanced mod menu, click <code>Menu -> Advanced</code>. Make sure to increase the size of the window to see all the new information in the window.<br />
<br />
This shows all the available information for the selected mod.<br />
<br />
== Steam Workshop ==<br />
{{#ev:youtube<br />
|wOL0LJBRcas<br />
|420<br />
|right<br />
|How to upload a mod to the Steam Workshop<br />
|frame<br />
|start=702&end=873<br />
}}<br />
<br />
Overgrowth comes with built in tools for uploading your mods to the Steam Workshop.<br />
<br />
=== Uploading a Mod ===<br />
<br />
[[File:Steamworks_upload.jpg|200px|thumb|right|The Steamworks New Upload menu]]<br />
<br />
To release a mod on Steam Workshop, first create your mod and make sure it works as intended. Then open up the [[#Advanced_mod_menu|advanced mod menu]], make sure the "Valid" item says "Yes", press "Upload To Steamworks..." and follow the instructions at the bottom.<br />
<br />
If it says something about needing to accept an agreement when you've uploaded a mod, go to http://steamcommunity.com/sharedfiles/workshoplegalagreement, log in, read through and accept the agreement if you do.<br />
<br />
Any mod that has just been uploaded will be private. And before you make it public you should brush up the mod's page a bit. It's a good idea to add a video, some screenshots, a description that tells the user what makes the mod interesting, how to use it and so on.<br />
<br />
If the mod requires some other mod to work, make sure to specify that using the "Add/Remove Required Items" in the "Owner Controls".<br />
<br />
=== Updating a Mod ===<br />
<br />
To update a mod that you've already uploaded to Steam Workshop, start by opening up the [[#Advanced_mod_menu|advanced mod menu]]. Select the workshop mod you want to update under the "My Steam Workshop Mods" heading in the left column, and press "Upload Update..." under "Owner Controls" in the right column.<br />
<br />
This brings up a window where you can choose which local source mod to use as the updated version, you can control its visibility on the workshop and write an update message. After agreeing to the text at the bottom of the window you can upload the update.<br />
<br />
[[Category: Tutorials]]<br />
[[Category: Modding]]<br />
[[Category: Overgrowth]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5976Custom Characters2018-04-04T07:35:27Z<p>Silverfish: /* Rigging the Character */ Improved explanation</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P and select '''Armature Deform → With Empty Groups/With Envelope Weights/With Automatic Weights''' depending on what you want to bind them.<br />
# Paint weights if you need to, or use the automatic weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5975Custom Characters2018-04-04T07:17:48Z<p>Silverfish: /* Script XML */ specified what file it links to</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
Links to the character XML file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5974Custom Characters2018-04-04T07:17:20Z<p>Silverfish: /* Character XML */ improved phrasing</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
Links to the object XML and rigging data XML files as well as the animations and attacks the character will use.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
Links to the third file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5973Custom Characters2018-04-04T07:14:50Z<p>Silverfish: /* Object XML */ clarification</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters since they use a pre-detemined path through the uber shader.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
- Links to the first 2 files, and a load of animation files for each action.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
Links to the third file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5972Custom Characters2018-04-03T10:00:07Z<p>Silverfish: /* Script XML */ removed dash</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
- Links to the first 2 files, and a load of animation files for each action.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
Links to the third file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5971Custom Characters2018-04-03T09:59:47Z<p>Silverfish: /* Rigging data XML */ removed dash</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
- Links to the first 2 files, and a load of animation files for each action.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
- Links to the third file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Custom_Characters&diff=5970Custom Characters2018-04-03T09:59:26Z<p>Silverfish: /* Object XML */ Improved description</p>
<hr />
<div>'''TODO: Put this link graciously provided by Markuss in its appropriate section:'''<br /><br />
https://cdn.wolfire.com/techsupport/ExampleMan.zip<br /><br />
<br />
'''TODO: Write introduction'''<br />
<br />
== Overview ==<br />
<br />
[[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]]<br />
<br />
Characters in overgrowth consist of the following files.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! File format !! Description<br />
|-<br />
! Script<br />
| XML || Links the character xml with an AI script<br />
|-<br />
! Character<br />
| XML || Links an object xml with rigging data, animations and attacks<br />
|-<br />
! Object<br />
| XML || A regular object xml file, links to a model and textures<br />
|-<br />
! Rigging data<br />
| XML || Links a model and a skeleton together so the model can be animated<br />
|-<br />
! Textures<br />
| TGA || The textures used by the character<br />
|-<br />
! Model<br />
| OBJ || The 3D mesh used by the character<br />
|-<br />
! Hull<br />
| OBJ || The simplified collision to use for the character<br />
|-<br />
! Skeleton<br />
| PHXBN || The bone structure used by the character for animation<br />
|-<br />
! Ragdoll collision<br />
| FZX || Convex hulls used for ragdoll physics<br />
|}<br />
<br />
'''TODO: Link all the below steps to parts of this page'''<br />
<br />
To create a character for Overgrowth you need to..<br />
# Model and texture the character<br />
# '''Optional:''' Create a simplified hull model for collision. <br />
:::'''Note:''' Thrown weapons won't collide with characters if they don't have a hull-object.<br />
# Rig the character using one of the included skeletons<br />
# '''TODO: What do you need to export? The skeleton? Only the weight painted mesh?'''<br />
# Create an object XML linking the model and the texture<br />
# Create a rigging data XML linking the model and the skeleton<br />
# Create a character XML linking the rigging data XML and the object XML with a set of attacks and animations the character should use<br />
# Create a script XML linking the character XML with an AI script<br />
<br />
The final script XML is the file that's actually loaded in the game to create the character. This article goes through all the above steps.<br />
<br />
== Model and Texture Considerations ==<br />
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis and has reset ]]<br />
The model and textures for the character have the same requirements as when creating any other [[3D Objects|3D Object]], but with a few extra considerations.<br />
<br />
It's extra important for characters that the model is centered to the middle of the scene, standing on the grid floor with location and rotation set to zero, and scale set to one. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file for pose and size reference: ''../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj''.<br />
<br />
There is no character shader that supports tangent space normal maps. If you want to use a tangent space normal map anyway, the cubemap shader can be used. Though doing so will make the object look a bit different in the engine. More information about these shaders can be found in the [[3D_Objects#Shaders|3D Objects]] article.<br />
<br />
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map might look like]]<br />
<br />
=== Fur Fins ===<br />
'''TODO:''' Write about how fur fins work<br />
<br />
== Rigging the Character ==<br />
Overgrowth uses a custom skeleton format for characters with the PHXBN (Phoenix Bone '''TODO: Is this correct?''') file ending. To create this file you need to use Wolfire's custom export addons for Blender. A repackaged version of Blender for Windows with the export addons and with the UI set up for this task can be downloaded [https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip here]. You may need to restart the program once to get the export options to show up.<br />
<br />
'''TODO: How do you set this up yourself, if you're not using Windows for instance?'''<br />
<br />
This article won't teach you how to use Blender, it only gives the information essential to get a character into the game. If you need to learn the basics of Blender, [https://cgcookie.com CG Cookie] has a good free video tutorial series that introduces you to the software.<br />
<br />
Here are the steps you need to take in Blender to create the PHXBN file:<br />
<br />
# '''TODO: What file is supposed to be used as a base? It's probably already loaded by default in the custom Blender version that can be downloaded above, but what file is that actually? So people can set this up on their own if they want.'''<br />
# Replace the white rabbit<br />
#* Press '''File > Import > Wavefront (.obj)''' to import an obj file.<br />
# Bind your own mesh to the skeleton<br />
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.<br />
# Paint weights<br />
#* You may want to look up a tutorial on painting weights in blender.<br />
#* It is recommended that you test your character in engine with automatic weights to check that you have no errors before you start working on a final weight paint. It won’t look pretty, but will let you know early on if the character is going to work in the engine.<br />
# Export your files<br />
#* With skeleton selected in object mode, export as .PHXBN, same for mesh but as .OBJ. Your model needs to be in rest position when doing this.<br />
<br />
== Object XML ==<br />
This is a regular object file as described in the [[3D_Objects#Basics | 3D reference guide]]. Note that the ShaderName flags (like #TANGENT for instance) don't make any difference for characters.<br />
<pre><br />
<?xml version="1.0"?><br />
<Object><br />
<Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model><br />
<ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap><br />
<NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap><br />
<ShaderName>envobject</ShaderName><br />
</Object><br />
</pre><br />
<br />
== Rigging data XML ==<br />
- Links to the .OBJ and .PHXBN files that the engine needs to rig the character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn"<br />
model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/><br />
</pre><br />
<br />
== Character XML ==<br />
- Links to the first 2 files, and a load of animation files for each action.<br />
<pre><br />
<?xml version="1.0" ?><br />
<character><br />
<appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml"<br />
skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/><br />
<animations idle = "Data/Animations/r_idle2.xml"<br />
jump = "Data/Animations/r_jump.xml"<br />
roll = "Data/Animations/r_roll.xml"<br />
movement = "Data/Animations/r_movement.xml"<br />
wall = "Data/Animations/r_wall.xml"<br />
ledge = "Data/Animations/r_ledge.anm"<br />
medrightblock = "Data/Animations/r_activeblockmedright.anm"<br />
medleftblock = "Data/Animations/r_activeblockmedleft.anm"<br />
highrightblock = "Data/Animations/r_activeblockhighright.anm"<br />
highleftblock = "Data/Animations/r_activeblockhighleft.anm"<br />
lowrightblock = "Data/Animations/r_activeblocklowright.anm"<br />
lowleftblock = "Data/Animations/r_activeblocklowleft.anm"<br />
blockflinch = "Data/Animations/r_activeblockflinch.anm"/><br />
<attacks moving_close = "Data/Attacks/haymaker.xml"<br />
stationary_close = "Data/Attacks/thrustpunch.xml"<br />
moving = "Data/Attacks/spinkick.xml"<br />
stationary = "Data/Attacks/frontkick.xml"<br />
moving_low = "Data/Attacks/soccerkick.xml"<br />
low = "Data/Attacks/sweep.xml"<br />
air = "Data/Attacks/legcannon.xml" /><br />
</character><br />
</pre><br />
<br />
== Script XML ==<br />
- Links to the third file and an AI script, this is the file you choose when loading a character.<br />
<pre><br />
<?xml version="1.0" ?><br />
<Actor><br />
<Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character><br />
<ControlScript>enemycontrol.as</ControlScript><br />
</Actor><br />
</pre><br />
<br />
== Adding Characters to the spawner menu ==<br />
<br />
Short version:<br />
* You must add it in a mod.<br />
* You can add as many characters to the spawner menu as you want in a single mod, you just need to follow the below instructions for each, and add multiple <code><Item></code> tags to your mod.xml file.<br />
<br />
In your mod.xml file, add this xml tag:<br />
('''TODO''': Make these paths more specific to characters)<br />
<br />
<pre><Item category="My Custom Mod Characters"<br />
title="Some Character To Spawn"<br />
path="Data/Objects/example_item_pack/mod_item_example.xml"<br />
thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" /></pre><br />
<br />
* '''<code>category</code>''' is the top level category where the character will show up, in the '''Load''' menu.<br />
* '''<code>title</code>''' is the name of the character, as it will show up in the spawner menu.<br />
* '''<code>path</code>''' is the path to the character XML that will get spawned. See [[#How_to_create_a_character|the '''How to create a character''' section]] for which XML file to target (either the character XML itself, or a version you saved off that has modified default parameters). '''TODO''': Be careful to advise ''which'' character XML to add to the spawner - there are multiple character XML files!<br />
* '''<code>thumbnail</code>''' is the image that will be used for a tooltip when you hover over your character in the spawner menu.<br />
<br />
See '''<code>GameInstallDir/Data/ExampleMods/mod_xml_specification.txt</code>''' for full information.<br />
<br />
== TODOs ==<br />
'''TODO: Make sure all these headings are covered in this or some other article that we link to'''<br />
<br />
=== File path conventions ===<br />
<br />
'''TODO''': Description of where to add files in mods so they don't conflict. Ala [[Hotspots#File_path_conventions]]<br />
<br />
=== Hull ===<br />
<br />
'''TODO''': Links to or docs on character hulls<br />
<br />
=== Animations ===<br />
<br />
'''TODO''': Links to or docs on animations and export, tagging, etc<br />
<br />
=== Morph targets ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for hands, face, etc<br />
<br />
=== Eyes ===<br />
<br />
'''TODO''': Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)<br />
<br />
=== Attacks ===<br />
<br />
'''TODO''': Links to or docs on attacks system and export, tagging, etc - related partly to animations.<br><br />
<br />
'''TODO''': Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Dialogue&diff=5969Dialogue2018-04-03T08:30:06Z<p>Silverfish: Added link to Dialogue Editor article at the end</p>
<hr />
<div>'''TODO: Add some images'''<br />
<br />
Dialogues are used to create scenes with different camera angles, text and poses. They are commonly used to give context and progress the story in a level.<br />
<br />
This is a step by step tutorial on how to create and trigger a basic dialogue. For more technical documentation of how dialogues work, such as all the commands you can use and how they work, read the [[Dialogue Editor]] article.<br />
<br />
==Creating and editing a dialogue==<br />
To begin, open up a level in the editor, or create a new one. Make sure you have spawned some characters you want to have in the dialogue.<br />
<br />
Then click Top Bar -> Dialogue -> New Dialogue. Your cursor should now have a plus. Click somewhere in the level to spawn the dialogue hotspot.<br />
<br />
Double click on the new dialogue hotspot to select it, and click Top Bar -> Dialogue -> Edit Selected. Now you're in the dialogue editor.<br />
<br />
==Naming the dialogue==<br />
Make sure you change the name from #name "Unnamed" to something more specific to that conversation. Like #name "Chat With Villagers" or something. You're going to the name later when triggering the dialogue.<br />
<br />
==Adding participants to the dialogue==<br />
Next, change the #participants 1 value from 1, to the number of characters in the conversation. Make sure you include the player's character, even if they aren't going to talk. Otherwise the player character can run around during the dialogue.<br />
<br />
After that, double click on one of the small numbered boxes above the dialogue hotspot. Then hold Alt while you click on a character's spawn box. This makes a line between the two, and binds that character to that participant slot in the dialogue. You have to do this for all characters who will talk, and the player.<br />
<br />
==Adding lines to the dialogue==<br />
Now to customize the dialogue. Where it says say 1 "Name" "Type your dialogue here.", change the name and the text. Something like say 1 "Fritz" "Just going for a jaunt in the park". The number at the beginning refers to the participant number (the numbered box) that is linked to the character who is speaking.<br />
<br />
You can add more say lines. Remember to set the right participant number and the right name for each. They can even change names in the middle of the conversation, for example if they've just been introduced to you. You could start by calling them "Green Rabbit", and later change them to "Jonathan".<br />
<br />
You can preview what your dialogue does at any time by clicking Dialogue Editor -> Menu Bar -> Edit -> Preview.<br />
<br />
==Triggering the dialogue==<br />
Now we need to decide when the dialogue should start, let's use a trigger volume, meaning the dialogue will trigger when the player enters a specified area. To make that work, you need a Start Dialogue hotspot. There are other ways to trigger a dialogue using the new checkpoints system, but that's far more advanced, so let's just start with this.<br />
<br />
Click Top Bar -> Load -> and type Start Dialogue. Click that item, and click in the level to spawn it.<br />
<br />
Then double click on the new Start Dialogue hotspot to select it. Click Top Bar -> Windows -> Selected in order to open its properties.<br />
<br />
From here, click the arrow to expand the start_dialogue.xml object, and click the arrow to expand Script Params.<br />
<br />
On the line where it says Dialogue, double click in the box next to it, where it says Default text. Change the text here to the name you set for the dialogue (Chat With Villagers, in the example at the beginning of this tutorial, or whatever you chose to name it).<br />
<br />
Now make sure to move this trigger and resize it to the shape you want. When the player walks inside this trigger, the dialogue will start. Note that it will only do this once, so you must hit the L key to reset the level if you want to trigger the dialogue again.<br />
<br />
Other properties in the Script params:<br />
<br />
If you want to have to click to activate the dialogue, instead of just having to walk inside the hotspot, then uncheck Automatic.<br />
<br />
If you don't want to see the big green dialogue bubble while playing the game, uncheck Visible in game.<br />
<br />
==Camera work and character positions==<br />
While editing the dialogue, there's a camera object that you can move around in the scene. You might not see that camera at first, since it spawns on top of the dialogue hotspot, and might be embedded in the ground. The camera can be spawned from the Load->Utility menu, as well. Don't be afraid to move any of those boxes around. It doesn't matter where you place the dialogue hotspot, so feel free to move it up and out of the way, so you can edit the per-line objects.<br />
<br />
To set up the camera for a given line of dialogue, click on the corresponding say line, then select the camera and position it where you want it. There is a preview window that lets you line up your shot perfectly. You can move and resize that window.<br />
<br />
===Positioning Characters===<br />
The camera and character positions can be changed for each line of dialogue. Just click on the line you want to make changes to in the editor window, and then move the character and camera boxes around as desired. The character boxes can be found inside each character's spawn box by default. Note that the dialogue editor will update to add your changes, so removing the lines from the editor will revert the edits.<br />
<br />
==Making it good==<br />
This tutorial only goes through the very basics of making dialogues. For more information, read the [[Dialogue Editor]] article.<br />
<br />
Don't be afraid to mess around with the objects in the Dialogue Editor, or even to change, copy, paste the code around. Also make sure to open the existing game's levels in the editor to check out what other hidden features show up in dialogues.<br />
<br />
For dialogue work in general, there's also a bunch of tutorials on the internet and YouTube about cinema, camera work, and photography. All of these topics can give you useful information that will apply to making dialogues in games. I suggest you check out (Internet search!) topics like -<br />
<br />
The rule of thirds<br />
180 degree rule<br />
30 degree rule<br />
Over the shoulder shot<br />
<br />
<br />
This list of techniques goes on forever, so I suggest getting lost on searching the Internet for a while, watching videos, etc.<br />
<br />
A popular YouTube channel on this topic is "each frame a painting". Check that out too.<br />
<br />
[[Category: Overgrowth]]<br />
[[Category: Modding]]</div>Silverfishhttp://wiki.wolfire.com/index.php?title=Template:Templates&diff=5967Template:Templates2018-03-29T09:01:12Z<p>Silverfish: Removed erronious <center> tag</p>
<hr />
<div><!--<br />
PRIVATE // Only displayed on this page, not transcluded on pages that use this template<br />
--><noinclude> <!--<br />
Categories --> {{CT| Templates}} {{CT| Improvement Needed}} <!--<br />
Constants --><center>{{stub}}</center><!--<br />
Content --><!--<br />
--></noinclude><!--<br />
INCLUDED // Not displayed on this page, only transcluded on pages that use this template<br />
--><includeonly><!--<br />
Categories --><!--<br />
Constants --><!--<br />
Content --><!--<br />
--></includeonly><br />
==[[: Category: Templates| Templates]]==<br />
<br />
This Wiki makes extensive use of templates. Templates allow you to re-use Wiki code and allow for easy editing.<br />
<br />
* SOMEONE WHO UNDERSTANDS THIS STUFF SHOULD HELP ASAP<br />
* This section should contain a more comprehensive tutorial on templates and how to build them. <br />
* http://en.wikipedia.org/wiki/Category:Wikipedia_templates<br />
* http://www.mediawiki.org/wiki/Template<br />
===Example One===<br />
<br />
For instance:<br />
<pre><br />
<center>{{Wip}}</center><br />
</pre><br />
adds<br />
<center>{{Wip}}</center><br />
<br />
In [[:Category:Improvement Needed Templates]] there are a list of improvement templates. Open them up and see how they work. It will help you with understanding how to write you own.<br />
<br />
===Example Two===<br />
<br />
The to-do list template <pre>{{Wolfire Wiki To Do}}</pre> adds this: *REMOVED* (messes with the content browser)<br />
<br />
===Special Pages===<br />
{{stub}}<br />
* How can I limit the amount of content I want to show (ie only 15 recent changes or the most recent change per person)? - Conner36<br />
<pre>{{Special:RecentChanges}} Adds the contents from the special page. <br />
Be careful not to leave any spaces between the words.</pre></div>Silverfish