Difference between revisions of "Custom Characters"
Silverfish (talk | contribs) (→Attacks: Removed duplicate heading) |
Silverfish (talk | contribs) (→Basics: work in progress) |
||
Line 10: | Line 10: | ||
==Basics== | ==Basics== | ||
+ | [[Image:custom_character_file_structure.png|right|thumb|caption|All required files and what they contain]] | ||
+ | |||
+ | Characters in overgrowth consist of the following files. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Name !! File format !! Description | ||
+ | |- | ||
+ | ! Script | ||
+ | | XML || Links the character xml with an AI script | ||
+ | |- | ||
+ | ! Character | ||
+ | | XML || Links an object xml with rigging data, animations and attacks | ||
+ | |- | ||
+ | ! Object | ||
+ | | XML || A regular object xml file, links to a model and textures | ||
+ | |- | ||
+ | ! Rigging data | ||
+ | | XML || Links a model and a skeleton together so the model can be animated | ||
+ | |- | ||
+ | ! Textures | ||
+ | | TGA || The textures used by the character | ||
+ | |- | ||
+ | ! Model | ||
+ | | OBJ || The 3D mesh used by the character | ||
+ | |- | ||
+ | ! Hull | ||
+ | | OBJ || The simplified collision to use for the character | ||
+ | |- | ||
+ | ! Skeleton | ||
+ | | PHXBN || The bone structure used by the character for animation | ||
+ | |- | ||
+ | ! Ragdoll collision | ||
+ | | FZX || Convex hulls used for ragdoll physics | ||
+ | |} | ||
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: | 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: |
Revision as of 10:59, 21 March 2018
based on this forum post by member Markuss.
There are two linked .zip file attached to the forum post. they can be found here:
https://cdn.wolfire.com/techsupport/ExampleMan.zip
https://cdn.wolfire.com/techsupport/Blender-Overgrowth-Win.zip
This guide assumes you are familiar with 3D Objects.
Contents
Basics
Characters in overgrowth consist of the following files.
Name | File format | Description |
---|---|---|
Script | XML | Links the character xml with an AI script |
Character | XML | Links an object xml with rigging data, animations and attacks |
Object | XML | A regular object xml file, links to a model and textures |
Rigging data | XML | Links a model and a skeleton together so the model can be animated |
Textures | TGA | The textures used by the character |
Model | OBJ | The 3D mesh used by the character |
Hull | OBJ | The simplified collision to use for the character |
Skeleton | PHXBN | The bone structure used by the character for animation |
Ragdoll collision | FZX | Convex hulls used for ragdoll physics |
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:
File 1
- Links to the .OBJ and .PHXBN files that the engine needs to rig the character.
<?xml version="1.0" ?> <rig bone_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.phxbn" model_path = "Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj"/>
File 2
- A regular object file as described in the 3D reference guide.
<?xml version="1.0"?> <Object> <Model>Data/Custom/Markuss/ExampleMan/Models/ExampleMan.obj</Model> <ColorMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Color.TGA</ColorMap> <NormalMap>Data/Custom/Markuss/ExampleMan/Textures/ExampleMan_Norm.TGA</NormalMap> <ShaderName>cubemapobjchar</ShaderName> </Object>
File 3
- Links to the first 2 files, and a load of animation files for each action.
<?xml version="1.0" ?> <character> <appearance obj_path = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_Object.xml" skeleton = "Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_RigFiles.xml"/> <animations idle = "Data/Animations/r_idle2.xml" jump = "Data/Animations/r_jump.xml" roll = "Data/Animations/r_roll.xml" movement = "Data/Animations/r_movement.xml" wall = "Data/Animations/r_wall.xml" ledge = "Data/Animations/r_ledge.anm" medrightblock = "Data/Animations/r_activeblockmedright.anm" medleftblock = "Data/Animations/r_activeblockmedleft.anm" highrightblock = "Data/Animations/r_activeblockhighright.anm" highleftblock = "Data/Animations/r_activeblockhighleft.anm" lowrightblock = "Data/Animations/r_activeblocklowright.anm" lowleftblock = "Data/Animations/r_activeblocklowleft.anm" blockflinch = "Data/Animations/r_activeblockflinch.anm"/> <attacks moving_close = "Data/Attacks/haymaker.xml" stationary_close = "Data/Attacks/thrustpunch.xml" moving = "Data/Attacks/spinkick.xml" stationary = "Data/Attacks/frontkick.xml" moving_low = "Data/Attacks/soccerkick.xml" low = "Data/Attacks/sweep.xml" air = "Data/Attacks/legcannon.xml" /> </character>
File 4
- Links to the third file and an AI script, this is the file you choose when loading a character.
<?xml version="1.0" ?> <Actor> <Character>Data/Custom/Markuss/ExampleMan/XMLFiles/ExampleMan_AnimList.xml</Character> <ControlScript>enemycontrol.as</ControlScript> </Actor>
Model and Texture Requirements
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: ../Overgrowth/Data/Models/Characters/Rabbit/rabbit.obj.
If your character is not symmetrical, ignore the center line in the geometry, it has to be the "true" center of the model, otherwise you will get errors.
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 article.
Blender
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.
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:
Control | Function |
---|---|
Middle mouse | Orbit |
Shift + middle mouse | Pan |
Ctrl + middle mouse or scroll wheel | Zoom |
Right click | Select object |
Delete or X | Remove selection |
Shift + right click | Select more then 1 object |
Ctrl + P | Bind selected mesh to active skeleton (armature deform) |
Tab | Toggle between object mode and last active mode |
- Replace the white rabbit
- Press File > Import > Wavefront (.obj) to import an obj file.
- Bind your own mesh to the skeleton
- First select the mesh, then shift-select the skeleton to add it to your selection before you press Ctrl + P to bind them.
- Paint weights
- You may want to look up a tutorial on painting weights in blender.
- 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.
- Export your files
- 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.
TODO: Make sure all headings below are covered in this article
How to create a character
Character XML files
TODO: Description of XML format
File path conventions
TODO: Description of where to add files in mods so they don't conflict. Ala Hotspots#File_path_conventions
Modeling
TODO: Links to or docs on modeling, graphics features like fur fins, various texture channels and what their components (alpha etc) mean, UVs, object space normals, etc. Also, any export info that would be necessary.
Rigging
TODO: Links to or docs on rigging and rig export
Hull
TODO: Links to or docs on character hulls
Animations
TODO: Links to or docs on animations and export, tagging, etc
Morph targets
TODO: Links to or docs on morph target animations for hands, face, etc
Eyes
TODO: Links to or docs on morph target animations for eyes (might roll this up into other sections/other pages?)
Attacks
TODO: Links to or docs on attacks system and export, tagging, etc - related partly to animations.
TODO: Possibly also scripting attacks and animations, and character-bound input, etc - though maybe that should be in a different section?
Short version:
- You must add it in a mod.
- 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
<Item>
tags to your mod.xml file.
In your mod.xml file, add this xml tag: (TODO: Make these paths more specific to characters)
<Item category="My Custom Mod Characters" title="Some Character To Spawn" path="Data/Objects/example_item_pack/mod_item_example.xml" thumbnail="Data/UI/example_item_pack/thumbs/mod_item_example.png" />
-
category
is the top level category where the character will show up, in the Load menu. -
title
is the name of the character, as it will show up in the spawner menu. -
path
is the path to the character XML that will get spawned. See 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! -
thumbnail
is the image that will be used for a tooltip when you hover over your character in the spawner menu.
See GameInstallDir/Data/ExampleMods/mod_xml_specification.txt
for full information.