Unity - Automation
Unity - Automation
techniques
Speeding up development with robot butlers
Directions
Automation and delegating
more work to the computer
in general can be
interpreted in a few ways,
but mainly, this
presentation will be
covering 3 things
Straight up automation
As in: systems that actively
perform work previously done
manually, by developers
Procedural elements
and systems
Which are not necessarily
eliminating work on some area
altogether, but allow us to
reduce artist workload or
otherwise get more bang for
development hours spent
Interesting workflows
Built around those time-saving
systems
For a start
We hope you'll find the
tricks we'll present here
interesting and
applicable to your own
games.
TETRAGON WORKS
We’re a small team
But we're building a fairly
ambitious game about
giant robots stomping
through cities.
The game we want needs a lot of content
Just like anyone else, we want to offer
enough value to the players:
We automatically generate a
foundation template: a scene
which contains base shapes
of each configuration
Modeling on top
With that foundation, we can
start interpreting the shapes
into natural-looking tilesets -
pieces of hills, buildings,
factories.
A bit of variety
We also author multiple
versions of some
configurations to scroll
through them later: a wall
might have a variant with a
window, fire exit and so on.
Export
At this point we're sweating
about the prospect of
exporting and managing
hundreds of strictly named
block files.
Export
It's a potential production
nightmare where one typo
can cause a long-unnoticed
error in level rendering and
export of each new tileset is
a long, tiresome slog. Let's
avoid it.
To export, simply
save the 3D scene
We automated the rest.
Processing magic
In Unity, custom processing
scripts perform a lot of
operations on the imported
file.
Processing magic
● Split the scene into
blocks
● Figure out which blocks
belong to which
configuration
● Merge and clean up
internal structure of the
meshes
● Collect all materials in
the tileset
Processing magic
● Swap all materials for
ones in reference library
● Bake material IDs to
secondary UV channels of
all meshes
● Generate texture arrays /
property arrays by packing
every input from precursor
materials together (more
on that later)
● Save the blocks and
material assets
Supporting multi-cell models
We want to support big
designs like road turns, hero
facade elements for
buildings, large gates, natural
formations and so on - things
that can't fit into 3x3x3m
bounds we use for cells.
Albedo buffer
Performance
By the way, since we're using
instancing, every single billboard is
rendered with the same material in
just one draw call total.
● Items
● Scenarios
● Levels
● Props
● Localization
● Units
● Constants
● Characters
● Even unit behaviors/action types!
How it works
We use a YAML serializer to generate human-
readable configuration files containing as much
data as we can take out from the game.