Pipeline Checklist For Game Development

This is a blog I wrote on my linkedin account.

When I was working on a team to develop a game called Apex Dawn I wanted everybody to be on the same page for asset management. So I made several documents that team members could refer to. This particular document was a checklist to follow before things were imported into the engine. Hopefully this will be helpful in your own game development process.

For Naming Conventions refer to: Name convention Document

Center Pivot Point

Set Pivot point to Origin

Z Axis of Mesh is pointing forward

Reset Xforms

No holes in Mesh

No flipped Normals

Create LOD’s (if needed)

Create Collision if needed

Static Mesh Unwrapped or Box Mapped

Scale Static Mesh to Game Character (Mannequin FBX in the team folder)

Avoid N-gons unless surface is flat. Re-triangulate mesh if needed

Remove Turbosmooth

Standard Textures Authored at 1024px. Lower Rez Textures Authored at 512px

FBX’s need to be in a properly named folder for FBX’s

Standards of Project Management need to be followed

Bitmaps saved as Targas

FBX’s named

3ds max with associated targa’s in a 3ds max folder

Export with Smoothing Groups

If the static Mesh has several elements combine it together using the attach mode or collapse utility

Name FBX

Name Materials

Name Bitmaps

3ds max filed named properly

3ds max have named layers

3ds max have selection sets

Authored Photoshop textures in a named Zbrush folder

Zbrush and Ztools files in named Folder

Creating A Custom Blend Node In Substance Designer

The blend tool is arguably one of the most important substance designer nodes. The blend node is used to layer different images to create interesting results and effects. The blend node is comparable to photoshop layers with different layer styles and opacity levels.

A problem I run into is since the blend node is so commonly used, I’m finding myself stacking blends on top of each other until it’s a tangled mess. Multiple blends create a node staircase that can make up a lot of screen space even if you try to stay organized. A great feature of substance designer is once a graph is created you can save it to the substance library to reuse it anywhere in future projects. This type of reusability is like the idea of encapsulation in programming which is why I’m a big fan of being able to collapse graphs for reuse.

I started by creating a new graph and named it multiblend tool. Next I placed a blend node and connected three inputs color nodes into the pins. The maps were for the foreground, background, and mask pins in the nodes. I named the inputs, labels, identifiers and groups which is good for organization and identifying controls. I repeated the process until I had eight blend nodes connection resulting in a single output.

I wanted to give parameters, so I have control when using the tool. I exposed the blends opacity and blend patterns. Next I changed the blend controls from a slider to a drop-down menu. The drop-down menu doesn’t default to the different blend options available to the node. I had to add options and manually type the eleven options for blending. I repeated this process for each blend node within the graph.

Right now, the user would see all eight input pins when using the multi blend tool. I wanted to be able to change the number of pins based on the amount need. First, I made a custom input parameter changing the value to integer1 and set it to a sliding value. Then I named the identifier, label, and group to “foreground.” The label is particularly important because it is used for the variable in scripting.

In parameters there is an area labeled “visible if.” As the name suggests this is where you can control whether the value is visible to a user or not. Substance Designer scripting for my purposes is straight forward. An example would be input[“param”] ==1 which would mean if an integer value equals 1 then it wouldn’t be visible. So, I applied this to each input node within the multiblend tool graph. So, I would have input[“foreground”] >= 0 and increment the value by one for each input node. This way the higher the integer value the more input pins would show but the lower value you would have less pins.

This is my first experience with any type of scripting within Substance Designer. I would have to say it was simpler than I thought it was going to be. Originally, I was going to make a grayscale version for blending heightmaps, but I ran into blend nodes not blending grayscale images. In a future iteration I’m going to solve this blending issue to give my multiblend tool more functionality.

Lessons Learned in Substance Designer (Part 1)


This post will be more of a tutorial within a tutorial. I plan to make this a series as I share the things I learn when while following a tutorial. I have a good knowledge about substance designer but I followed a pluralsight tutorial to see if there was more I could learn.

Performance Is Key

The tutorial uses a tile generator node but doesn’t utilize much of the functionality. In the tile generator you can input several different bitmaps to give you better control over the process but in the tutorial it only says to use one. Although very useful I have a habit of staying away from the different tile generator nodes designer has to offer. The nodes are generally heavy on performance and my poor computer really slows down if you ask to much of it. I wanted to try to optimize the tile generator node because waste not want not.

Learning To Optimize

I made a copy of the tile generator node then renamed it to customTileGenerator because substance designer graphs that ship with the software are not editable. Next in customTileGenerator I deleted all the inputs I wasn’t going to use. I reduced the graph from 9 inputs down to 2 inputs. I changed the default parameters within customTileGenerator so anything you input will be the the pattern that will be used in the graph.

After on the Left. Before on the Right
Be Wary of Deleting Variables

Next I deleted any exposed parameters that were related with inputs that no longer existed to keep the customTileGenerator organized. But when you delete things without a care in the world problems are sure to arise. I began to see errors in the customTileGenerator’s Fx-map node. The Fx-map used the parameters I deleted to calculate values on how it should generate tiles in the graph because I need it to generate tiles.

Fx-Maps in Substance Designer
A Little TROUBLESHOOTING Is worth Performance

I’m not familiar with Substance Designer’s coding within Fx-maps. I had to tinker a bit to find a solution. All the parameters I deleted were tied to a float or integer variable. So I went through the unfamiliar code while looking for places with missing variable errors and replaced them with zeros. Many of the variables were used with other values so I figured if I multiplied by zero it would be similar to the value not being there. I chose this solution because it was the only solution I could think of without learning the coding in Fx-Maps. Then I realized I can reset parameters in the Fx-maps so I didn’t have to replace values with zeros.

Coding within Substance Designer.
Plans For the Future

Maybe in the future I will learn how coding works in substance designer but in this instance I only wanted to optimize the code.

Key Coworking Networking Event

Since I graduated from the Art Institute of San Antonio in March, I have been applying to jobs with very little success. So far, I’ve applied to 405 jobs related to my degree and had 4 interviews. For those that like statistics that’s an average of 3 job applications a day with a 1% success rate for an interview opportunity. Since applying to jobs online isn’t working I decided to pivot strategies.

On July 10th on Friday I attended a networking event hosted by a collaborative co-working space called Key Coworking . The event focused on connecting San Antonio freelancers at different stages in their journeys to share their experiences. I learned a lot about freelancing such as how to charge and work with current clients, developing creative ways of finding potential clients, and different ways to build your network.

In retrospect, going to networking events would have been better because building connections with people is better than applying to a job online. Also, I’ve been dabbling with freelancing but after this event I feel like with enough time and dedication it could be a viable career.

I plan on going to even more networking events so if you see me be sure to connect with me so we can help each other out in our careers.

Key Coworking’s website is: https://keycoworking.com/

Practicing Animation

Looping Animation

Icons I designed to complement my portfolio and resume

I wanted to follow pluralsight tutorials about After Effects to brush up on my skills. I did not want to use the assets given to me so I made them from scratch using illustrator.

I set up layers for the different shapes in the illustrator file then imported the assets into after effects. Then I converted the illustrator file into layer comps which puts every layer in illustrator into individual vector layers in after effects. Then I did a straight forward animation in after effects.

I will use the pluralsight tutorials to develop different techniques for animations. I plan to animate all the icons for future use in transitions in my demo reel or buttons as I develop my website.