Tools and Pipeline


Tools, scripts and workflow solutions.

I firmly believe that a good pipeline now means a smoother ride in six months all time for everybody. What does that mean?

It is usually equal parts talking and coding- I like to take a holistic view of a pipeline that covers an asset all the way from the project structure, naming conventions, workflow, and ultimately, helping to design and write the tools that bring it all together. Before any code is written, I sit down with all the interested parties and we hammer out the details of exactly what is being asked. Measure twice!

Recently I have embraced writing tests for all my code. It is amazing and you should do it too. I also encourage force the technical art team to use the same code review process that the engineering team uses through GitLab, where nothing can be merged to the main branch without active feedback from the other developers in the building. This is good.

I try to take a Provider/Client relationship with tool development, partnering with specific teams or individuals to see a particular toolset developed to the correct specifications. I don't write all the tools myself- often I will give opinions legitimate feedback to other technical artists, either during development or code review.

I've also organized the bi-weekly 'Gap Week Whinge' where we all get together to complain about how god awful the tools are. Or not. Sometimes people are actually happy with the tools. But honestly, the biggest challenge is making sure people are comfortable talking about any workflow issues they might be facing. Art teams are always such troopers.

I have used C# (Unity), C++ (UE4) and Python (Everything else) for tool solutions that touch Maya, 3DSMax, Unity, Unreal, Photoshop, Perforce and GitLab.

Unity Code Samples:

Heya, here are some code samples I've written in my spare time. Feel free to take a look.

Unity Sprite Atlas Packer (Requires Unity5)

This is a simple tool that, given a number of arbitrarily shaped textures, packs them into a single texture atlas and slices it into a Unity MultiSprite image, based off of the original textures.

Unity does this quite well already, but this example is written to explore a packing approach more than be any kind of replacement for Unity's sprite packing, although this approach does do an ok job.

Although this specific example outputs a MultiSprite atlas, the output from this packing method can be used for other tasks, including packing Lightmapping textures and 3d Model layout.

Unity Animation Clip Post Processor (Requires Unity5)

This is a small example project which takes data encoded in a JSON file and applies it to an imported asset using the AssetPostProcessor class and the 3rd Party MINIJson parser.

This same approach can be taken with various types of assets, allowing artists to define import settings from within the native app they are authoring the asset in, 2D and 3D.

It is particularly useful for defining clips on animated assets, or specific import parameters for textures.

Using the AssetPostProcessor class can also be extended to generate prefabs from exported models on the fly. COOL!