Sword Coast Legends - Character Asset Pipeline

Software: 3DSMAX, Photoshop, Unity, Excel
Info: Created character pipeline tools for Sword Coast Legends using MAXScript, JavaScript, and C# with Excel. 

As a Technical Artist on Sword Coast Legends, one of my main jobs was to create a character asset pipeline that would allow for easy manipulation of all the character assets. My aim was to make a system that could not only seamlessly transport the assets from the source applications to the engine, but also keep track of the high-volume data. To manage this data, I used excel to store the following information:
  • Asset Names + Export Paths
  • Morph Targets
  • Bone Lists + Rig Definitions
  • Selection Sets
  • Material Assignments + Definitions
  • UV Layout Definitions
  • Armor Sorting values
I then accessed this information from custom tools and scripts. Below is a video highlighting the character asset pipeline, followed by a breakdown of its main components. For the sake of time, the speed of the Armor Retargeting Tool and Prefab Generator has been increased.




Armor Retargeting Tool

The character customization system of Sword Coast Legends allows over 50 armors to be worn and shared by 5 playable races and 2 sexes. On average, each armor is separated into 4 parts. The armor parts for the 10 different body shapes amount to about 2,000 in count. Furthermore, each armor part, on average, contained 3 sub-meshes. This number would only multiply as our armor list increased.

Our armors were usually created for the Human Male first and then morphed to the other 9 body shapes by the Armor Retargeting Tool. The tool dramatically decreased the time artists spent when reproducing armor for the other races. After the tool morphs the armor to each specified body shape, it then prepares it for the engine by:
  • Splitting the armor into sections designated by the UV section
  • Splitting the armor into sub-sections further specified by material ID
  • Transforming UVs to prepare mesh sections for texture atlassing
  • Transferring skinning information from original rig to new rig
  • Name and export assets as specified by the art database
  • Saves out source file for artist improvement
  • Output log
Texture Exporters

Naming conventions and texture organization was necessary on Sword Coast Legends. Because characters could wear different parts of various armors at the same time, each armor part had its own designated set of textures. These textures were organized by armor sets in PSDs and were split by Texture Export Scripts on export from Photoshop. A properly prepared armor PSD had a layer group for each texture type (Albedo, Normal, Specular, etc) and would automatically split, name and export the textures to the directory specified by the excel template. 

Within 30 seconds or less, an artist could export 20 cropped or uncropped textures ready for engine re-import. Some of the features include:
  • Set Name Output path
  • Automated Cropping on Export
  • Automated Directory Creation
  • Output log
Unity Prefab Generator

A significant challenge with character setup in Sword Coast Legends was consistently assigning the proper material and sorting value to each sub mesh on a particular armor part. For example, the Torsos of each armor usually included 3 main sections: the Upper Arm, Chest and Upper Leg. Each of these could contain a unique material and sorting value. With over 6,000 sub-meshes, making sure they each had the correct data was not something we wanted to manually work out.

Once the armor meshes and textures were in engine, the Prefab Generator would automate the creation of each armor part prefab. With the push of a button, all selected FBXs are used to create game-ready prefabs that are properly placed and complete with material assignment and components. This completed the circle of the pipeline and allowed us to easily update character assets. Some of the features include:
  • Automated material creation assignment
  • Automated prefab creation + placement
  • Automated component creation + assignment
  • Output log