1. Los Pingheros
  2. News
  3. DevBlog #5: Character and Skins Texturing Workflow

DevBlog #5: Character and Skins Texturing Workflow

Introduction


Hola Pingheros! ๐Ÿ‘‹

Iโ€™m Kathia and today we're going to talk a little bit about our snow fighters ๐Ÿง and their sense of fashion๐Ÿฉฒ๐ŸŽ€.

During the project, one of my responsibility was to set up a texture workflow for characters and skins.

This colorful, explosive game requires a ton of variation to satisfy every player's needs ๐Ÿ˜‰.


Problematic


Working with multiple color choices and adaptable color Skins can become overwhelming very quickly. Thatโ€™s why we planned a workflow thatโ€™ll provide more scalability for the future of the game.

Creating a material for each color and each skin is too exhaustive and expensive, but we've found a way to optimize it!

  • We needed to be able to create a wide palette of colors quickly and easily (for now there are only 10 available Characters Colors but who knows? Maybe a Rainbow Penguin with 5 variations could be needed! ๐ŸŒˆ).
  • Team mode is also requiring specific colors (Skins needs adaptive team colors!).


Current Colors Variations:



Some Customization might adapt to each colors of characters (based on the Rarity of the Skins โœจ).
  • Common (Basic materials and strict minimum of surface coverage).

    • Need to adapt to the Team mode.
  • Rare (Medium materials and surface coverage).

    • Need to adapt to the Team mode.
  • Legendary (Premium materials and advanced materials, full surface coverage, VFX).

    • Need to adapt to the Team mode.
    • Need to adapt to each character color.

So how can we meet all these needs efficiently?

Solutions


One solution is to use RGBA masks! ๐Ÿ”ด๐ŸŸข๐Ÿ”ตโšช

It will provide a good mix between flexibility and optimization.

We're using RGBA channels independently to store black and white data (I call them masks). That way we can have 4 different masks on the same texture! We then use masks to apply color to certain areas of the models ๐Ÿ–

This is how my RGBA masks are organized:

[h3] Base Color Map [/h3]

  • Channels RGB is for different colors, R (principal color)/ G (secondary color)/ B (tertiary color).

  • Channel A (Alpha) is used to select zones that display texture directly and those that display colors selected using RGB masks.



What's more, it can be applied in cases other than that of the character, such as skins!



Colors driven by shader allowed me to quickly iterate within the engine and generate multiple variations without wasting too much time ๐Ÿ•ฐ.

Characters Colors are picked via code and only one shader is used for all of the characters and skins.



[h3] Other textures. [/h3]

  • Metallic/Rougness/AO are also packed in one texture ((R=Roughness)+(G=AO)+(B=Metallic)).
  • Normal texture.


Conclusion


This technique can be used in a multitude of ways, and depending on your needs, you can push it even further.

Thank you for reading and see you soon! ๐Ÿ˜ƒ

Kathia Lebon