Skip to content

Custom characters in Overgrowth.

Gyrth edited this page Aug 27, 2021 · 10 revisions

Before we start.

Creating new characters in Overgrowth is not an easy process. However there are a few methods that vary in difficulty.

Bone Attachments.

The easiest method would be to use an existing character and attach different static objects to the bones. This can drastically change the appearance but require no external software. The downside however, is that the objects do not conform to the character's mesh. Meaning things like clothing will not move with, bend or fold with the character in a realistic way.

To attach an object to a character go into Editor Mode by pressing F1. Select the object you want to attach and move it in the correct position. To make it easier to attach it press ~ to freeze time, allowing you to position it correctly without the character moving. Now press and hold the Alt button. A few lines should appear to represent the different bones you can attach to. With the Alt button down, you can attach the object by clicking with the left mouse button. To detach hold Shift as well and click the same bone.

BoneAttachments

Editing an existing mesh in blender.

If the character you want to make isn't that different from an existing character you might want to try editing the mesh. That way you don't have to rig, weightpaint and export a custom skeleton.

  1. For our example we are going to edit Turner's mesh. Open up Blender and go to File -> Import -> Wavefront (.obj) and import the file Overgrowth/Data/Models/Characters/IGF_Turner/IGF_Turner.obj.
  2. Select the mesh and go into sculpt mode from the drop down.

Sculpt

  1. Enable mesh symmetry in the X axis.

Symmetry

  1. Edit the mesh with the sculpt tool making sure it is symmetrical.
  2. Export the mesh to [Mod Name]/Data/Models/Characters/TurnerTurtle.obj by going to File -> Export -> Wavefront (.obj) and enabling the Keep Vertex Order under the Geometry tab.
  3. Create an actor xml file like this [Mod Name]/Data/Objects/TurnerTurtleActor.xml containing this:
<?xml version="1.0" ?>
<Actor>
    <Character>Data/Characters/TurnerTurtle.xml</Character>
    <ControlScript>enemycontrol.as</ControlScript>
</Actor>
  1. Create the character xml like this [Mod Name]/Data/Characters/TurnerTurtle.xml containing this:
<?xml version="1.0" ?>
<character>
    <appearance obj_path = "Data/Objects/TurnerTurtle.xml"
                skeleton = "Data/Skeletons/r_turner.xml"/>
    <animations idle = "Data/Animations/r_idle.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/jab.xml"
             stationary_close = "Data/Attacks/kneestrike.xml"
             moving = "Data/Attacks/roundhouse.xml"
             stationary = "Data/Attacks/frontkick.xml"
             moving_low = "Data/Attacks/soccerkick.xml"
             low = "Data/Attacks/sweep.xml"
             air = "Data/Attacks/legcannon.xml" />
    <team>turner</team>
    <voice path = "Data/Sounds/voice/rabbit2.xml"
           pitch = "1.0"/>
    <clothing>Data/Materials/cloth_fabric.xml</clothing>
    <tags species = "rabbit"/>
 </character>
  1. Create the character object xml like this [Mod Name]/Data/Objects/TurnerTurtle.xml containing this:
<?xml version="1.0" ?>
<Object>
    <Model>Data/Models/Characters/TurnerTurtle.obj</Model>
    <ColorMap>Data/Textures/Characters/IGF_Turner/IGF_Turner_color.tga</ColorMap>
    <NormalMap>Data/Textures/Characters/IGF_Turner/IGF_Turner_normal.tga</NormalMap>
    <PaletteMap label_red="Cloth"
                label_green="Rope"
                label_blue="Fur">
        Data/Textures/Characters/IGF_Turner/IGF_Turner_palette.tga
    </PaletteMap>
    <ShaderName>cubemapobjchar</ShaderName>
</Object>
  1. Open Overgrowth in editor mode and load the file [Mod Name]/Data/Objects/TurnerTurtleActor.xml and click somewhere in the scene to spawn it.

Extra features.

Morphs.

You might have noticed the character has a few missing features like opening the mouth, blinking and clenching fists. To achieve this Overgrowth uses blend shapes/morph targets. These are the same character .obj mesh but some vertices are moved. Overgrowth can smoothly switch between the normal mesh and the mesh with the mouth open for example to add animation without bones. The downside however is that you need a lot more .obj files for each animation. And each character has it's own set of them. If you want to add these, take a look at Overgrowth/Data/Characters/turner.xml in between the <morph> tag you can see a list of possible morph targets.

Textures.

If you want to change the colors of the character as well you can either draw on the character texture itself with your preferred image editor, or use the Blender texture paint. Make sure to export the resulting image with a low opacity, around 5% since the opacity is used for shininess. The image should be RGBA8 as well for Overgrowth to correctly load the image.

Clone this wiki locally