<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wolfire.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akazi</id>
	<title>Wolfire Games Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wolfire.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Akazi"/>
	<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=Special:Contributions/Akazi"/>
	<updated>2026-05-04T18:11:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.wolfire.com/index.php?title=Custom_Animations&amp;diff=6299</id>
		<title>Custom Animations</title>
		<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=Custom_Animations&amp;diff=6299"/>
		<updated>2024-10-24T21:45:01Z</updated>

		<summary type="html">&lt;p&gt;Akazi: /* Event Keyframes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Animations for rigged objects in Overgrowth are stored with one of the Phoenix Engine&#039;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&#039;s custom export addon for Blender.&lt;br /&gt;
&lt;br /&gt;
A repackaged version of &#039;&#039;&#039;Blender 2.55&#039;&#039;&#039; 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]. [https://youtu.be/CuFKEvTyYRw You can find a tutorial on how to animate in this version here.]&lt;br /&gt;
&lt;br /&gt;
The scripts needed for using &#039;&#039;&#039;Blender 2.93&#039;&#039;&#039; and above are located at [https://github.com/WolfireGames/overgrowth/tree/main/Data/BlenderScript/2.93 Overgrowth&#039;s Github repository, here.] Download bone_io.zip and io_anm.rar and follow the Readme instructions. You can also check videos.rar for tutorial videos on how to install these scripts, if you need.&lt;br /&gt;
These same scripts can also be found in the Overgrowth Modding channel on the Wolfire Discord, under the pinned messages.&lt;br /&gt;
&lt;br /&gt;
The best rig for making animations is rabbit_rig.blend -- This wiki page will assume you are using its default interface. &#039;&#039;&#039;TODO: How to switch to different species models?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: Blender 4.0+ is NOT compatible with the 2.93 scripts!&#039;&#039;&#039; You will get an error while exporting .anm files.&lt;br /&gt;
&lt;br /&gt;
== Creating an animation ==&lt;br /&gt;
&lt;br /&gt;
On the left hand side of your Blender character rig, you&#039;ll see a &#039;&#039;&#039;Dopesheet&#039;&#039;&#039;. If it&#039;s too small, you can drag it out and expand the border to see the full toolbar. This dopesheet contains a timeline of every keyframe defined for the animation.&lt;br /&gt;
&lt;br /&gt;
In order to pose a character and make new keyframes, you must first select Pose Mode in the 3D Viewport&#039;s toolbar (located by default on its bottom). Then, you can select a bone and change it around. I recommend enabling Object Gizmos in the 3D Viewport&#039;s toolbar. Here&#039;s a quick reference for Blender 3.4&#039;s default interface controls:&lt;br /&gt;
&lt;br /&gt;
# Left click to Select&lt;br /&gt;
# Right click to Manipulate&lt;br /&gt;
# Scroll wheel click to Orbit camera&lt;br /&gt;
# G to Translate selected (or rotate fixed bones)&lt;br /&gt;
# R to Rotate selected&lt;br /&gt;
# ESC to Cancel current change&lt;br /&gt;
&lt;br /&gt;
Each keyframe contains data for a bone. Its position on the dopesheet dictates when the bone will conform to the pose. If you set the dopesheet&#039;s timeline over a keyframe, your changes to the bone will overwrite the current keyframe&#039;s data. You can change this behavior by checking the Record button&#039;s options on the timeline at the very bottom.&lt;br /&gt;
&lt;br /&gt;
===Selecting different poses===&lt;br /&gt;
[[File:Dopesheet_pose_select.png|thumb|260px|right|The button found on the dopesheet toolbar for selecting different poses]]&lt;br /&gt;
Click the button pictured on the Dopesheet&#039;s toolbar to browse and select the poses included in the character rig. Any rig has a maximum pose limit, which when reached will start recycling old poses. &#039;&#039;&#039;Todo: How large is this limit?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can make a new pose by clicking the New Action button next to the pose name. Make sure not to overwrite any useful poses you may have in the rig!&lt;br /&gt;
&lt;br /&gt;
===Changing the start &amp;amp; end frames===&lt;br /&gt;
[[File:Rig_params.gif|thumb|239px|right|How to find the animation controls for exported frame data (Click to animate!)]]&lt;br /&gt;
[[File:Start_end_frames.png|thumb|340px|right|How to set the animation duration]]&lt;br /&gt;
&lt;br /&gt;
How long your animation lasts depends on the values specified in Blender&#039;s Timeline window. In its top right, you can find the Start and End values.&lt;br /&gt;
While the Use Preview Range button is toggled, the From Timeline button in the rig parameters will affect your exported animation&#039;s frame data.&lt;br /&gt;
&lt;br /&gt;
If your animation duration is too short or too long, your animation might last too long, or it might get cut off.&lt;br /&gt;
&lt;br /&gt;
===Exporting an animation===&lt;br /&gt;
&lt;br /&gt;
# Create your custom animation in Blender&lt;br /&gt;
# Set the metadata for your animation in the sidebar of the 3D Viewport, as pictured below&lt;br /&gt;
#* Click the &#039;&#039;&#039;From Timeline&#039;&#039;&#039; button to set the timeline&#039;s start &amp;amp; end frames as the start &amp;amp; end points of your animation; &#039;&#039;&#039;Note:&#039;&#039;&#039; Keyframes outside of this time frame won&#039;t be exported.&lt;br /&gt;
#* Set the &#039;&#039;&#039;Looping&#039;&#039;&#039; value to 0 if you don&#039;t want your animation to loop. Set it to 1 if you want it to loop. &#039;&#039;&#039;Todo: If the value is higher, will it do sth different, like play the animation n times?&#039;&#039;&#039;&lt;br /&gt;
# With the skeleton selected, press &#039;&#039;&#039;File &amp;gt; Export &amp;gt; Phoenix Animation (.anm)&#039;&#039;&#039; &#039;&#039;&#039;Note: Make sure not to have any IK bones selected while in Pose Mode, or else the script may crash!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bone layers ===&lt;br /&gt;
[[File:Animation_rig_layers.png|thumb|439px|right|Cyan text is only for character rigging. White text is only for animation. Green text is only for DEF bones, which are used for special keyframes.]]&lt;br /&gt;
Sets of bones within the animation rig are hidden underneath several different layers. Each layer contains different bones; By hiding and unhiding specific layers, you can fine tune your available bones as pictured right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FK&#039;&#039;&#039; stands for &#039;&#039;&#039;Fixed Kinematics&#039;&#039;&#039;, where each limb&#039;s position is manually set and is best used for dynamic animations with lots of movement (like attacks).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IK&#039;&#039;&#039; stands for &#039;&#039;&#039;Inverse Kinematics&#039;&#039;&#039;, where paws are placed and limbs follow.&lt;br /&gt;
&lt;br /&gt;
To switch between the two modes of animation, you must set the IK property keyframe to 0 (for FK) or 1 (for IK). You can only set this property keyframe on IK bones.&lt;br /&gt;
&lt;br /&gt;
In order to add event keyframes, you must first select a DEF bone. In the animation rigs that are shipped with the game, these bones are hidden. In order to unhide them, you must first:&lt;br /&gt;
# Enter Pose Mode in the 3D Viewport&lt;br /&gt;
# Press A to select everything&lt;br /&gt;
# Press ALT + H to reveal everything, including the DEF bones&lt;br /&gt;
&lt;br /&gt;
After revealing everything, you might find the rig is a bit cluttered with unnecessary bones, like ORG and MCH bones. These are only used for rigging, and not for animation. Select these and press H to hide them individually.&lt;br /&gt;
&lt;br /&gt;
==Event Keyframes==&lt;br /&gt;
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.&lt;br /&gt;
An event is saved as a &#039;&#039;Custom Property&#039;&#039; of a bone in the Blender files shipped with the game. Access these custom properties by clicking on the &#039;&#039;&#039;Bone Properties&#039;&#039;&#039; tab within the Properties window.&lt;br /&gt;
&lt;br /&gt;
All event keyframes work regardless of what value you assign to them (0.0, 1.0, inbetween); What matters is their placement.&lt;br /&gt;
Some other keyframes require a range from 0.0 to 1.0 to work properly. These are noted in this table when applicable.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
|event_attackimpact || Triggers the actual impact while attacking a character. Works on any DEF bone&lt;br /&gt;
|-&lt;br /&gt;
|event_blockprepare || Specifies the latest time at which the attack is still blockable, which is also the latest time that it can be canceled as a “feint” by pressing right-click&lt;br /&gt;
|-&lt;br /&gt;
|event_attackblocked|| Dictates when an attack is blocked in a blocked attack&lt;br /&gt;
|-&lt;br /&gt;
|event_rightcrouchwalkstep||Triggers footstep sounds for sneaking, emits AI sound and creates particles while on terrain&lt;br /&gt;
|-&lt;br /&gt;
|event_rightrunstep||Triggers footstep sounds for running, emits AI sound and creates particles while on terrain&lt;br /&gt;
|-&lt;br /&gt;
|event_rightwalkstep||Triggers footstep sounds for walking, emits AI sound and creates particles while on terrain&lt;br /&gt;
|-&lt;br /&gt;
|event_rightwallstep||Triggers footstep sounds for wall running and emits AI sound&lt;br /&gt;
|-&lt;br /&gt;
|event_golimp||Causes the character to ragdoll into an active ragdoll state. Used in throw attacks&lt;br /&gt;
|-&lt;br /&gt;
|event_grabitem|| Grabs the nearest pickupable item within 90cm of the hand&lt;br /&gt;
|-&lt;br /&gt;
|event_heldweaponswap||Causes the character to switch the currently held item&#039;s handedness&lt;br /&gt;
|-&lt;br /&gt;
|event_rightweaponrelease||Causes the character to let go of the right hand&#039;s currently held item&lt;br /&gt;
|-&lt;br /&gt;
|event_leftweaponrelease||As above, but for the left hand. Is not included in the animation rig by default; Has to be added&lt;br /&gt;
|-&lt;br /&gt;
|event_sheatherighthandlefthip||Sheathes the right hand&#039;s item to the left hip&lt;br /&gt;
|-&lt;br /&gt;
|event_sheatherighthandrighthip||Sheathes the right hand&#039;s item to the right hip&lt;br /&gt;
|-&lt;br /&gt;
|event_throatcut|| Slits opponent&#039;s throat. Only works with &amp;quot;tethered&amp;quot; characters, like when choking&lt;br /&gt;
|-&lt;br /&gt;
|event_unsheatherighthandlefthip||Unsheathes the left hip&#039;s item into the right hand&lt;br /&gt;
|-&lt;br /&gt;
|event_unsheatherighthandrighthi||Unsheathes the right hip&#039;s item into the right hand&lt;br /&gt;
|-&lt;br /&gt;
|weap_to_hand_l||Switches weapon to left hand.&lt;br /&gt;
|-&lt;br /&gt;
|weap_to_hand_r||Switches weapon to right hand.&lt;br /&gt;
|-&lt;br /&gt;
|ik||Switches from FK (0.0) to IK (1.0). Mostly affects animation interpolation&lt;br /&gt;
|-&lt;br /&gt;
|shape_fist||Ranges from fist closed (0.0) to wide open (1.0).&lt;br /&gt;
|-&lt;br /&gt;
|status_cancel||Specifies when the remainder of the animation can be skipped when the player tries to move. Used for &amp;quot;optional&amp;quot; ending bits of attacks. &#039;&#039;&#039;TODO: Is this from a 0.0 to 1.0 range?&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|status_escape||Ranges from 0 to 1. When this is 1, the thrown character can escape from the throw&lt;br /&gt;
|-&lt;br /&gt;
|status_groundconform||TODO: Might be related to the rolling animation when on slopes. How does this work?&lt;br /&gt;
|-&lt;br /&gt;
|status_rightarm_blend||Controls how closely the right arm follows the animation. Ranges from 0.0 (default, &amp;quot;floppy&amp;quot;) to 1.0 (stiff and exact).&lt;br /&gt;
|-&lt;br /&gt;
|status_leftarm_blend||^^^, but for the left arm.&lt;br /&gt;
|}&lt;br /&gt;
If you find properties not listed here, they are most likely used for character rigging or Blender animation (not read by the game).&lt;br /&gt;
&lt;br /&gt;
===Adding an Event Keyframe to your animation===&lt;br /&gt;
# Make sure DEF bones are revealed (see Bone layers)&lt;br /&gt;
# Select the appropriate DEF bone for the event you want to trigger while being in pose mode&lt;br /&gt;
# Set the playhead in the timeline to the moment you want the event to happen&lt;br /&gt;
# In the &#039;&#039;&#039;Properties&#039;&#039;&#039; editor, press &#039;&#039;&#039;Bone&#039;&#039;&#039; and scroll down to &#039;&#039;&#039;Custom Properties&#039;&#039;&#039;&lt;br /&gt;
# Hover over the property that corresponds to the event you want to trigger and press &#039;&#039;&#039;I&#039;&#039;&#039; to add a keyframe. (Value doesn&#039;t matter)&lt;br /&gt;
&lt;br /&gt;
To ungroup a keyframe in the dopesheet from its parent, select it from the parent&#039;s dropdown menu (so the event keyframe&#039;s name lights up) and press CTRL + ALT + G. Now the keyframe should be sent to the bottom, for easier editing!&lt;br /&gt;
&lt;br /&gt;
===Bone Influence===&lt;br /&gt;
Certain animations have Influence keyframes. Usually, it&#039;s something like &amp;quot;Influence (DEF-toe.L : left_leg)&amp;quot;. These are to make sure the bone stays on the ground while the animation plays. &#039;&#039;&#039;TODO: How else can Influence be used?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To add Influence keyframes like this, select the desired bone (usually DEF-toe) and look at the Bone Constraints menu in your Properties. Find the desired bone constraint, right click the value field and click Insert Keyframe.&lt;br /&gt;
&lt;br /&gt;
==Control Bone Contraints==&lt;br /&gt;
 If you have your hinge contraints set to 0, in you control-bone properties, your in-game dialogue torso and head controls will work correctly.&lt;br /&gt;
Setting the value to 1, tightens the hinge all the way.&lt;br /&gt;
[[File:hinge_keys.jpg]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|hinge (torso)||controls the tightness of the  in-game torso widget for dialogue. &lt;br /&gt;
|-&lt;br /&gt;
|hinge (head)||controls the tightness of the  in-game head widget for dialogue. &lt;br /&gt;
|-&lt;br /&gt;
|hinge (neck)||no neck widget, so helps with head movement? &lt;br /&gt;
|-&lt;br /&gt;
|hinge (upper_arm.R)||Unsure. &lt;br /&gt;
|-&lt;br /&gt;
|hinge (upper_arm.L)||Unsure. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Animating Morph Targets==&lt;br /&gt;
&#039;&#039;&#039;Todo: Add this section&#039;&#039;&#039;&lt;br /&gt;
[[Category: Overgrowth]]&lt;br /&gt;
[[Category: Modding]]&lt;/div&gt;</summary>
		<author><name>Akazi</name></author>
	</entry>
	<entry>
		<id>https://wiki.wolfire.com/index.php?title=File:Hinge_keys.jpg&amp;diff=6298</id>
		<title>File:Hinge keys.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=File:Hinge_keys.jpg&amp;diff=6298"/>
		<updated>2024-10-24T21:41:38Z</updated>

		<summary type="html">&lt;p&gt;Akazi: used for dialogue widget control&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;used for dialogue widget control&lt;/div&gt;</summary>
		<author><name>Akazi</name></author>
	</entry>
	<entry>
		<id>https://wiki.wolfire.com/index.php?title=Custom_Characters&amp;diff=4770</id>
		<title>Custom Characters</title>
		<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=Custom_Characters&amp;diff=4770"/>
		<updated>2017-10-05T17:55:57Z</updated>

		<summary type="html">&lt;p&gt;Akazi: /* Basics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;based on [http://forums.wolfire.com/viewtopic.php?f=16&amp;amp;t=24827 this] forum post by member Markuss.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two linked .zip file attached to the forum post. they can be found here:&lt;br /&gt;
&lt;br /&gt;
http://www.markstockton.com/misc/Guide2/ExampleMan.zip&lt;br /&gt;
&lt;br /&gt;
http://www.markstockton.com/misc/Guide2/Blender-Overgrowth-Win.zip&lt;br /&gt;
&lt;br /&gt;
This guide assumes you are familiar with [[3D Objects]].&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
&lt;br /&gt;
Characters in overgrowth consist of 4 .XML files, an .OBJ file, a .PHXBN file, a .fzx file and a hull .OBJ file. The .PHXBN and .fzx files are created in Blender, the PHXBN file contains the skeleton and skin weighting info. The .fzx file contains the collision information that the ragdolled character uses. The XML files just contain links to themselves and other files. They contain the following:&lt;br /&gt;
&lt;br /&gt;
1 - Links to the .OBJ and .PHXBN files that the engine needs to rig the character.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;rig bone_path = &amp;quot;Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn&amp;quot;&lt;br /&gt;
     model_path = &amp;quot;Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2 - A regular object file as described in the [[3D_Objects#Basics | 3D reference guide]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Object&amp;gt;&lt;br /&gt;
	&amp;lt;Model&amp;gt;Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj&amp;lt;/Model&amp;gt;&lt;br /&gt;
	&amp;lt;ColorMap&amp;gt;Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA&amp;lt;/ColorMap&amp;gt;&lt;br /&gt;
	&amp;lt;NormalMap&amp;gt;Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA&amp;lt;/NormalMap&amp;gt;&lt;br /&gt;
	&amp;lt;ShaderName&amp;gt;cubemapobjchar&amp;lt;/ShaderName&amp;gt;&lt;br /&gt;
&amp;lt;/Object&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3 - Links to the first 2 files, and a load of animation files for each action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;character&amp;gt;&lt;br /&gt;
    &amp;lt;appearance obj_path = &amp;quot;Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml&amp;quot;&lt;br /&gt;
                skeleton = &amp;quot;Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;animations idle = &amp;quot;Data/Animations/r_idle2.xml&amp;quot;&lt;br /&gt;
                jump = &amp;quot;Data/Animations/r_jump.xml&amp;quot;&lt;br /&gt;
                roll = &amp;quot;Data/Animations/r_roll.xml&amp;quot;&lt;br /&gt;
                movement = &amp;quot;Data/Animations/r_movement.xml&amp;quot;&lt;br /&gt;
                wall = &amp;quot;Data/Animations/r_wall.xml&amp;quot;&lt;br /&gt;
                ledge = &amp;quot;Data/Animations/r_ledge.anm&amp;quot;&lt;br /&gt;
                medrightblock = &amp;quot;Data/Animations/r_activeblockmedright.anm&amp;quot;&lt;br /&gt;
                medleftblock = &amp;quot;Data/Animations/r_activeblockmedleft.anm&amp;quot;&lt;br /&gt;
                highrightblock = &amp;quot;Data/Animations/r_activeblockhighright.anm&amp;quot;&lt;br /&gt;
                highleftblock = &amp;quot;Data/Animations/r_activeblockhighleft.anm&amp;quot;&lt;br /&gt;
                lowrightblock = &amp;quot;Data/Animations/r_activeblocklowright.anm&amp;quot;&lt;br /&gt;
                lowleftblock = &amp;quot;Data/Animations/r_activeblocklowleft.anm&amp;quot;&lt;br /&gt;
                blockflinch = &amp;quot;Data/Animations/r_activeblockflinch.anm&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;attacks moving_close = &amp;quot;Data/Attacks/haymaker.xml&amp;quot;&lt;br /&gt;
             stationary_close = &amp;quot;Data/Attacks/thrustpunch.xml&amp;quot;&lt;br /&gt;
             moving = &amp;quot;Data/Attacks/spinkick.xml&amp;quot;&lt;br /&gt;
             stationary = &amp;quot;Data/Attacks/frontkick.xml&amp;quot;&lt;br /&gt;
             moving_low = &amp;quot;Data/Attacks/soccerkick.xml&amp;quot;&lt;br /&gt;
             low = &amp;quot;Data/Attacks/sweep.xml&amp;quot;&lt;br /&gt;
             air = &amp;quot;Data/Attacks/legcannon.xml&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/character&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4 - Links to the third file and an AI script, this is the file you choose when loading a character.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Actor&amp;gt;&lt;br /&gt;
	&amp;lt;Character&amp;gt;Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml&amp;lt;/Character&amp;gt;&lt;br /&gt;
    &amp;lt;ControlScript&amp;gt;enemycontrol.as&amp;lt;/ControlScript&amp;gt;&lt;br /&gt;
&amp;lt;/Actor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Model and Texture Requirements==&lt;br /&gt;
[[Image:ExampleMan_mesh.jpg|thumb|Character Model Faces Z-axis]]&lt;br /&gt;
Models have to be triangles only and centered to the middle of the scene with location, rotation and scale set to zero. It should loosely match the pose and proportions of the Overgrowth characters, you can use the following file: &#039;&#039;../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If your character is not symmetrical, ignore the center line in the geometry, it has to be the &amp;quot;true&amp;quot; the center of the model, otherwise you will get errors.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Image:ExampleMan_Norm.jpg|thumb|This is what a Blank/Flat object-space normal map looks like]]&lt;br /&gt;
&lt;br /&gt;
==Blender==&lt;br /&gt;
A repackaged version of Blender with the export addons and with the UI set up for making characters can be downloaded at the top of this article. It does not require an install and can be run from its folder. You may need to restart it once to get the export options to show up.&lt;br /&gt;
&lt;br /&gt;
This article is not intended to teach how to use Blender, it only gives the information essential to get a character into the game. If you would like to learn more about Blender, the website cgcookie.com has a good free tutorial video series that will introduce you to the software. With that in mind, here are the basic controls that you will need in Blender:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Control !! Function&lt;br /&gt;
|-&lt;br /&gt;
! Middle mouse&lt;br /&gt;
| Orbit&lt;br /&gt;
|-&lt;br /&gt;
! Shift + middle mouse&lt;br /&gt;
| Pan&lt;br /&gt;
|-&lt;br /&gt;
! Ctrl + middle mouse or scroll wheel&lt;br /&gt;
| Zoom&lt;br /&gt;
|-&lt;br /&gt;
! Right click&lt;br /&gt;
| Select object&lt;br /&gt;
|-&lt;br /&gt;
! Delete or X&lt;br /&gt;
| Remove selection&lt;br /&gt;
|-&lt;br /&gt;
! Shift + right click&lt;br /&gt;
| Select more then 1 object&lt;br /&gt;
|-&lt;br /&gt;
! Ctrl + P&lt;br /&gt;
| Bind selected mesh to active skeleton (armature deform)&lt;br /&gt;
|-&lt;br /&gt;
! Tab&lt;br /&gt;
| Toggle between object mode and last active mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# Replace the white rabbit&lt;br /&gt;
#* Press &#039;&#039;&#039;File &amp;gt; Import &amp;gt; Wavefront (.obj)&#039;&#039;&#039; to import an obj file.&lt;br /&gt;
# Bind your own mesh to the skeleton&lt;br /&gt;
#* First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.&lt;br /&gt;
#Paint weights&lt;br /&gt;
#* You may want to look up a tutorial on painting weights in blender.&lt;br /&gt;
#* 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.&lt;br /&gt;
# Export your files&lt;br /&gt;
#* 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.&lt;/div&gt;</summary>
		<author><name>Akazi</name></author>
	</entry>
	<entry>
		<id>https://wiki.wolfire.com/index.php?title=3D_Objects&amp;diff=4769</id>
		<title>3D Objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.wolfire.com/index.php?title=3D_Objects&amp;diff=4769"/>
		<updated>2017-10-05T17:34:58Z</updated>

		<summary type="html">&lt;p&gt;Akazi: /* Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;based on [http://forums.wolfire.com/viewtopic.php?f=16&amp;amp;t=11227 this] forum post by member Markuss.&#039;&#039;&lt;br /&gt;
There is a linked .zip file attached to the forum post. it can be found here:&lt;br /&gt;
http://www.markstockton.com/misc/Guide/Examples.zip&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;Object&amp;gt;&lt;br /&gt;
	&amp;lt;Model&amp;gt;Data/Mods/example_mod/Data/Models/SimpleObject.obj&amp;lt;/Model&amp;gt;&lt;br /&gt;
	&amp;lt;ColorMap&amp;gt;Data/Mods/example_mod/Data/Textures/SimpleObject_Color.tga&amp;lt;/ColorMap&amp;gt;&lt;br /&gt;
	&amp;lt;NormalMap&amp;gt;Data/Mods/example_mod/Data/Textures/Blank_Norm.tga&amp;lt;/NormalMap&amp;gt;&lt;br /&gt;
  	&amp;lt;ShaderName&amp;gt;cubemap&amp;lt;/ShaderName&amp;gt;&lt;br /&gt;
	&amp;lt;MaterialPath&amp;gt;Data/Materials/default.xml&amp;lt;/MaterialPath&amp;gt;&lt;br /&gt;
&amp;lt;/Object&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All object .xml files that ship with the game are located in ../Overgrowth/Data/Objects/.&lt;br /&gt;
&lt;br /&gt;
=== Model and Texture Requirements ===&lt;br /&gt;
* Only quads and triangles in models&lt;br /&gt;
* Models use the Wavefront .obj format&lt;br /&gt;
* Textures need to be square&lt;br /&gt;
* Texture resolution need to be a power of two (32x32, 64x64, 128x128 and so on)&lt;br /&gt;
* The .tga format is recommended for textures, but .png and .tif work also.&lt;br /&gt;
&lt;br /&gt;
==== Converting normal maps ====&lt;br /&gt;
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 Xnormal you need to do this:&lt;br /&gt;
&lt;br /&gt;
 1. Swap blue and green channels&lt;br /&gt;
 2. Invert red and blue channels&lt;br /&gt;
&lt;br /&gt;
You an do this in Photoshop, Substance Designer or similar. Note that using Gimp for this will destroy your alpha channel, so it is not recommended to use this.&lt;br /&gt;
&lt;br /&gt;
== Object .xml File ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
&#039;&#039;Note: This list is incomplete.&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Example use !! Description&lt;br /&gt;
|-&lt;br /&gt;
! Model&lt;br /&gt;
| &amp;lt;Model&amp;gt;Data/Models/MyModel.obj&amp;lt;/Model&amp;gt; || path to the model file (.obj)&lt;br /&gt;
|-&lt;br /&gt;
! ColorMap&lt;br /&gt;
| &amp;lt;ColorMap&amp;gt;Data/Textures/MyColorMap.tga&amp;lt;/ColorMap&amp;gt; || path to the color texture file (.tga, .tif or .png)&lt;br /&gt;
|-&lt;br /&gt;
! NormalMap&lt;br /&gt;
| &amp;lt;NormalMap&amp;gt;Data/Textures/MyNormalMap.tga&amp;lt;/NormalMap&amp;gt; || Path to the normal map texture file (.tga, .tif or .png)&lt;br /&gt;
|-&lt;br /&gt;
! ShaderName&lt;br /&gt;
| &amp;lt;ShaderName&amp;gt;cubemapobj&amp;lt;/ShaderName&amp;gt; || Name of shader to use from ../Overgrowth/Data/GLSL/ (.frag and .vert)&lt;br /&gt;
|-&lt;br /&gt;
! MaterialPath&lt;br /&gt;
| &amp;lt;MaterialPath&amp;gt;Data/Materials/DirtyRock.xml&amp;lt;/MaterialPath&amp;gt; || Path to the material to be used&lt;br /&gt;
|-&lt;br /&gt;
! flags&lt;br /&gt;
| &amp;lt;flags no_collision=true double_sided=true/&amp;gt; || Used to set boolean values on the object (see [[#Flags|flags]])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Deprecated tags ====&lt;br /&gt;
These tags are deprecated and should not be used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Example use !! Description&lt;br /&gt;
|-&lt;br /&gt;
! ShaderPath&lt;br /&gt;
| &amp;lt;ShaderPath&amp;gt;Data/GLSL/cubemapobj&amp;lt;/ShaderPath&amp;gt; || path to the shader to use (.frag &amp;amp; .vert), replaced by ShaderName&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
Flags are entered as boolean attributes in an element called &amp;quot;flags&amp;quot; that is located under the &amp;quot;Object&amp;quot; element. For more information about the &amp;quot;flags&amp;quot; tag, look under [[#Tags|tags]]. All flags have a default value of false.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flag !! Description&lt;br /&gt;
|-&lt;br /&gt;
! no_collision&lt;br /&gt;
| Disables physics collisions with this object.&lt;br /&gt;
|-&lt;br /&gt;
! double_sided&lt;br /&gt;
| The backsides of the object gets rendered as well.&lt;br /&gt;
|-&lt;br /&gt;
! bush_collision&lt;br /&gt;
| Makes the object give some resistance when passed through while the object wobbles a bit and generates leaf particles. If a character jumps into this object at high enough speed they will ragdoll.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Collision/Physics Objects==&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
===Suffixes===&lt;br /&gt;
[[Image:PhysicsObject.jpg|thumb|Physics mesh should be placed on top of the render mesh]]&lt;br /&gt;
[[Image:HullObject.jpg|thumb|Hull objects are placed over render mesh like physics objects]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Suffix !! Description&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;YourObject&amp;lt;/span&amp;gt;_COL.obj&lt;br /&gt;
| Contains simplified geometry for physics calculations.&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;YourObject&amp;lt;/span&amp;gt;HULL.obj&lt;br /&gt;
| Same as _COL but has extra info, used with weapons.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note HULL doesn’t have an underscore to separate it from the file name!&lt;br /&gt;
&lt;br /&gt;
===Physics objects (_COL)=== &lt;br /&gt;
Simplified geometry such as boxes an 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.&lt;br /&gt;
&lt;br /&gt;
===Hull objects (HULL)=== &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Shaders==&lt;br /&gt;
There are two texture maps that are required for an object to be loaded in the engine. Those are the &#039;&#039;&#039;ColorMap&#039;&#039;&#039; and the &#039;&#039;&#039;NormalMap&#039;&#039;&#039; textures. Some shaders allow - but do not require - for additional maps to be specified for different purposes. Shaders with &amp;quot;obj&amp;quot; in their name expect the supplied NormalMap texture to be in object space, those without expect tangent space.&lt;br /&gt;
&lt;br /&gt;
Here are the most common channel designations of the ColorMap and NormalMap textures:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;ColorMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RGB&#039;&#039;&#039; - Color&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Reflectivity&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;NormalMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RGB&#039;&#039;&#039; - Normal&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Color tint mask&lt;br /&gt;
&lt;br /&gt;
Any deviations from this standard for any shader in the table below can be seen in the &#039;&#039;Non-standard channel designation&#039;&#039; column. This includes any optional textures.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Non-standard channel designation !! Description&lt;br /&gt;
|-&lt;br /&gt;
! cubemap&lt;br /&gt;
|&lt;br /&gt;
|| Standard shader.&lt;br /&gt;
|-&lt;br /&gt;
! cubemapobj&lt;br /&gt;
|&lt;br /&gt;
|| Same as Cubemap but uses object-space normal maps instead of tangent space.&lt;br /&gt;
|-&lt;br /&gt;
! cubemapobjitem&lt;br /&gt;
|&lt;br /&gt;
|| Object space version of CubemapItem.&lt;br /&gt;
|-&lt;br /&gt;
! cubemapalpha&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;ColorMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Transparency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;NormalMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Reflectivity&lt;br /&gt;
|| &lt;br /&gt;
[[Image:CubemapAlpha.jpg|thumb|cubemapalpha shader]]&lt;br /&gt;
Texels that do not have a transparency of 0.0 or 1.0 have depth sorting issues with each other.&lt;br /&gt;
|-&lt;br /&gt;
! cubemapobjchar&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;NormalMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Sun fresnel mask&lt;br /&gt;
|| Intended for use with characters, shine is sharp, uses object space normals. The sun fresnel effect brightens up the edges of the object when it is between the camera and the sun.&lt;br /&gt;
|-&lt;br /&gt;
! plant&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;ColorMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - Transparency&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;NormalMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - No effect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;TranslucencyMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RGB&#039;&#039;&#039; - Translucency color&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039; - No effect&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;WindMap&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;R&#039;&#039;&#039; - Wind mask&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;GBA&#039;&#039;&#039; - No effect&lt;br /&gt;
|| [[Image:Translucency.jpg|thumb|plant shader]]&lt;br /&gt;
Has transparency like cubemapalpha but no reflectivity.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;TranslucencyMap&#039;&#039;&#039; texture 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.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;WindMap&#039;&#039;&#039; texture defines intensity of a vertex wind effect. If unspecified it defaults to 1.0 (active) across the entire surface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Materials==&lt;br /&gt;
These are the materials that can be assigned to objects. These only work on terrains and not on objects placed in the world.&lt;br /&gt;
&lt;br /&gt;
* Cloth_Fabric&lt;br /&gt;
* Cloth_Leather&lt;br /&gt;
* Default&lt;br /&gt;
* Dirt&lt;br /&gt;
* DirtyRock&lt;br /&gt;
* Drygrass&lt;br /&gt;
* Grass&lt;br /&gt;
* Gravel&lt;br /&gt;
* Rock&lt;br /&gt;
* Rocks&lt;br /&gt;
* Sand&lt;br /&gt;
* Snow&lt;br /&gt;
* Wood&lt;br /&gt;
&lt;br /&gt;
==Items==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
As an example, here is the item .xml file for the flint_knife weapon that comes with the game:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;item&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;weapon&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;appearance obj_path = &amp;quot;Data/Objects/Weapons/flint_knife.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;grip ik_attach = &amp;quot;rightarm&amp;quot;&lt;br /&gt;
          anim = &amp;quot;Data/Animations/r_dogweapongrip.anm&amp;quot;&lt;br /&gt;
		  hands = &amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;sheathe ik_attach = &amp;quot;hip&amp;quot;&lt;br /&gt;
          anim = &amp;quot;Data/Animations/r_dogweaponsheathed.anm&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;physics mass = &amp;quot;0.4 kg&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;points&amp;gt;&lt;br /&gt;
        &amp;lt;pommel x=&amp;quot;0&amp;quot; y=&amp;quot;-0.081&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;guard x=&amp;quot;0&amp;quot; y=&amp;quot;0.10&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;tip x=&amp;quot;0&amp;quot; y=&amp;quot;0.33&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/points&amp;gt;&lt;br /&gt;
    &amp;lt;label&amp;gt;knife&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;lines&amp;gt;&lt;br /&gt;
        &amp;lt;wood start=&amp;quot;pommel&amp;quot; end=&amp;quot;guard&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;metal start=&amp;quot;guard&amp;quot; end=&amp;quot;tip&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/lines&amp;gt;&lt;br /&gt;
    &amp;lt;anim_override idle = &amp;quot;Data/Animations/r_knifestancerear.xml&amp;quot;&lt;br /&gt;
                   movement = &amp;quot;Data/Animations/r_weaponmovestance.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;attack_override moving = &amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
                     moving_close = &amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
                     stationary = &amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
                     stationary_close = &amp;quot;Data/Attacks/knifeslash.xml&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;range multiply = &amp;quot;0.8&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tag !! Example use !! Description&lt;br /&gt;
|-&lt;br /&gt;
! type&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;type&amp;gt;weapon&amp;lt;/type&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Defines what kind of item the object is. Can be &#039;&#039;weapon&#039;&#039;, &#039;&#039;collectible&#039;&#039; or &#039;&#039;misc&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
! appearance &lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;appearance&lt;br /&gt;
    obj_path=&amp;quot;Data/Objects/Weapons/MyWeapon.xml&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Path to the object .xml file to use as a visual representation of this item.&lt;br /&gt;
|-&lt;br /&gt;
! grip&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;grip&lt;br /&gt;
    ik_attach=&amp;quot;rightarm&amp;quot;&lt;br /&gt;
    anim=&amp;quot;Data/Animations/r_dogweapongrip.anm&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| ik_attach defines what bone the object is attached to when it&#039;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). &lt;br /&gt;
|-&lt;br /&gt;
! sheathe&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;sheathe&lt;br /&gt;
    ik_attach=&amp;quot;hip&amp;quot;&lt;br /&gt;
    anim=&amp;quot;Data/Animations/r_dogweaponsheathed.anm&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| 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).&lt;br /&gt;
|-&lt;br /&gt;
! physics&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;physics mass=&amp;quot;1 kg&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Changes the pitch of the sound made by the object hitting things. Also changes how overall heavy it is.&lt;br /&gt;
|-&lt;br /&gt;
! points&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;points&amp;gt;&lt;br /&gt;
    &amp;lt;pommel x=&amp;quot;0&amp;quot; y=&amp;quot;-0.081&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;guard x=&amp;quot;0&amp;quot; y=&amp;quot;0.10&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;tip x=&amp;quot;0&amp;quot; y=&amp;quot;0.33&amp;quot; z=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/points&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Defines a number of points on the weapon that can be used with the &#039;&#039;lines&#039;&#039; element to define what material a part of the weapon has.&lt;br /&gt;
|-&lt;br /&gt;
! lines&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;lines&amp;gt;&lt;br /&gt;
    &amp;lt;wood start=&amp;quot;pommel&amp;quot; end=&amp;quot;guard&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;metal start=&amp;quot;guard&amp;quot; end=&amp;quot;tip&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/lines&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Defines what materials go between what points that are defined in the points tag.&lt;br /&gt;
|-&lt;br /&gt;
! anim_override&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;anim_override&lt;br /&gt;
    idle=&amp;quot;Data/Animations/r_weaponidlestance.xml&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Overrides animations of a character holding the item. Animation keywords that can be overridden are idle and movement (maybe more). This is used for for instance two handed weapons, spears and so on, where the default animation looks weird.&lt;br /&gt;
|-&lt;br /&gt;
! attack_override&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;attack_override&lt;br /&gt;
    moving=&amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
    moving_close=&amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
    stationary=&amp;quot;Data/Attacks/knifeslash.xml&amp;quot;&lt;br /&gt;
    stationary_close=&amp;quot;Data/Attacks/knifeslash.xml&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| What attacks should be used with this weapon in different contexts.&lt;br /&gt;
|-&lt;br /&gt;
! range&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;range multiply=&amp;quot;0.8&amp;quot;/&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
|| Multiply multiplies the range with the specified value to make a weapon reach further or shorter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Akazi</name></author>
	</entry>
</feed>