Creating Weapon Assets

Overview

The two opposing factions in Ryse had contrasting visual styles of weapons, for the Roman it’s very industrial and the Barbarians is much more organic, for the Romans the weapons were swords and shields with variation handled in either the shape of the blade or the hilt and pummel.

The Barbarians have a greater variety in weapons, they consisted of Axes, Maces, Swords with 2 handed variations of the Axes and Maces.

Both factions have shields and bows that also followed the same design principles as the main weapons.

Each class of weapon (1 handed, 2 handed, shield, bow etc) had a set length and proportion that had to me maintained due to animation restrictions, another area that needs to be considered is the cutting direction of the weapon and setting that to the correct pivot to allow it to work correctly with attachment joint on the character rig, this also had to be setup correctly for the shields as well as the offensive weapons.

Example of hand joint orientation, X is the orientation of the handle and the cutting edge faces along Y

Melee Weapon Workflow

The workflow for the Barbarian weapons followed a much more organic approach, this process was applied to both the weapons and the shields;

Base Mesh

The basemesh (in either Max or Maya) must follow the lines of the concept, this is not modeled to a high level of detail but captures the correct dimensions and forms set out by the guides and concept. The mesh is made so it is suitable for highpoly work within Zbrush with even topology.

All elements are modeled such as leather binding, metals (rivets and brackets) and wood.

High Poly

The highpoly is produced in Zbrush with all details kept on layers to allow for adjustments, the importance here is to make sure the material details look natural and realistic taking into account effects such as weather and the manufacturing process.

Low Poly

The high resolution mesh is modeled over maintaining the volumes and shapes of the high resolution mesh, if it is more efficient some elements should be treated separately.

The lowpoly mesh must not exceed the set polygon budget, all LODs must be 50% of the previous lowpoly mesh unless specified.

A collision proxy mesh must be added to allow for in-game interaction, the proxy mesh must be kept to simple primitives that roughly cover the main shapes –the proxy does not need UV’s to function.

The lowpoly, all LODs and the proxy must follow the correct process to make sure it works in the engine, this process of exporting is also used to check the textures during their creation and

UVs

The UVs need to be laid out efficiently with minimal stretching and packed allowing for edge padding during baking.

Textures

A diffuse pass is painted in Zbrush and baked using xNormal, all other maps are extracted using the xNormal workflow.

Shield Weapon Workflow

The workflow for the Roman weapons used a sub-D workflow in Max with detailing in Zbrush, this workflow is close to the process used for Armor creation.

BaseMesh and HighPoly

The basemesh (in either Max or Maya) must follow the lines of the concept, this is then modeled to a high level of detail but captures the correct dimensions and forms set out by the guides and concept.


All elements are modeled such as leather binding, metals (rivets and brackets) and wood.

Low Poly

The high resolution mesh is modeled over maintaining the volumes and shapes of the high resolution mesh, if it is more efficient some elements should be treated separately.

The lowpoly mesh must not exceed the set polygon budget, all LODs must be 50% of the previous lowpoly mesh unless specified.

A collision proxy mesh must be added to allow for in-game interaction, the proxy mesh must be kept to simple primitives that roughly cover the main shapes –the proxy does not need UV’s to function.

The lowpoly, all LODs and the proxy must follow the correct process to make sure it works in the engine, this process of exporting is also used to check the textures during their creation.

Shared Workflow Elements

Some parts of the workflow are shared such as exporting, proxy creation and LODs, below are the shared elements.

UVs & Texturing

Texturing is completed on the lowpoly and then baked down to the remaining LODs, the UVs are laid out efficiently allowing space for edge padding and also having minimul stretching. The UVs must also be clear and easy to read.


The above textures are an example of inefficient laid out textures.


The above textures are an example of efficiently laid out textures.

Texturing must be done at the highest possible resolution, for an example in Ryse 4096 x 4096 was used for a large amount of assets and then exported using Crytif to the final resolution, the PSD must have a logical and easy to follow layout;


The PSD layout is kept logical and easy to follow.

DIFFUSE- there should be no lighting information in this map.

SPEC – has to use the set PBL values set for the build, again this has no lighting information. In this map variation between materials can be set out, for example Iron has a value of 196,199,199 but Dirt is in the region of 51,51,51.

With the exception of coloured metals spec values are of the grey scale, all metals are of a high spec value. For non metals all values are between 40 to 65.

GLOSS – this is used adjust the roughness of the material; this map is used to add variation to the surface - this map is very important and will handle the detail that separates the materials.

NORMALS – this is baked in the same process as for all normal maps.

Texture Exporting

All textures must be exported using the Crytif exporter plugin for Photoshop.

The textures needed are;

  • Diffuse – exported as _diff with no alpha unless required.
  • Specular – exported as _spec with no alpha.
  • Normal – exported as _ddna with gloss map in the alpha channel.

The correct export preset also needs to be selected.

Materials

Below is an example of material setup in CRYENGINE, the amount of materials may vary between characters and can depend on factors such as LODs and cinematic requirements

  • Shader - Illum
  • Surface Type - Metal
  • Opacity - these setting must not be touched unless and alpha is used.
  • DIffuse Color - set to 255, 255,255 (all diffuse color is handled by the diffuse map)
  • Specular Color - set to 255, 255, 255 (specular color is handled by the specular map)
  • Glossiness - set to 255 (the gloss value is handled by the gloss map in the alpha of the normal map)

The correct naming convention must be followed to match the material with the asset.