hi everybody hi GDC what's up welcome to
our open world art creation talk my name
is Ryan Benno I'm a senior environment
artist at insomniac games
Brian Mullen I'm a senior lighting
artist and I am Matt McAuliffe I am a
material artist so we're really excited
we're really excited to talk to you guys
today about how we created Marvel's
Manhattan this was a enormous challenge
for our team and we had to learn a lot
of new processes as well as take a lot
of the stuff that we had used in
previous games we brought a lot of new
talent and including my two fellow
speakers here so we're gonna be breaking
down this talk between the environment
aspects the material and the lighting
parts and how those different teams all
kind of came together to build the city
real quick just want to also say you
know we're all from insomniac we just
celebrated our 25th anniversary a couple
of weeks ago as a studio so you know
we've made a lot of different games yeah
all right there we go
so yeah well the studio's made a lot of
fantastic games over the years obviously
not all of us have been part of that 25
years but we're super excited to be
talking about our most recent memorable
game spider-man today so like I said my
name is Ryan Bunnell I am the senior
environment artist at insomniac some of
the titles I've worked on since I've
been at the company include sunset
overdrive Ratchet and Clank on the ps4
and Marvel spider-man and I'll be
covering the first part of how the
environment team made marvel's Manhattan
one building at a time so I wanted to
start this off by talking about what our
goals were at the beginning of
spider-man we wanted to create a living
world we wanted to capture kind of what
the feeling of being in New York is the
busy hustle how different the city will
change from day to night and how the
city will evolve as the story progresses
while you're playing through as
spider-man and throughout that whole
process the changes that we're going
through should also reflect how the
player is feeling and the mood and tone
of what's happening in the story
photo-real lighting and materials
marvel's work has always had a very high
visual quality bar for realism and we
wanted to kind of match that as well
it's something that we really wanted to
nail with our lighting and materials
this was our first time really using
substance designer as a team we had to
use a couple other softwares before but
the designer was the program was the
programming decided to use for this
project and has become a very integral
to everything that we've done ever since
and varied and diverse visual stories we
wanted to tell the diversity of New York
through the different setting in
different neighborhoods and the
different boroughs New York is a melting
pot of people and neighborhoods on top
of our desire to make each district
neighborhood feel unique from each other
we wanted to be able to capture those
stories the people the businesses the
culture this was an incredibly important
goal for us to fulfill the spider-man
experience being in New York City
so with that in mind let me show you how
we ended up with everything so this is a
quick video just showing some very early
really really early block outs of the
city and what we ended up coming up with
when we shipped the game last September
[Music]
yeah so that's where we ended up
shipping after working on this game for
a very long time so how did we get to
going from those blocks that you saw to
the final fully arted city so to talk
about how we made spider-man it's
important that we go back and talk about
our previous open world games sunset
overdrive sunset was the baseline of
everything that we did in terms of
building structures on the environment
side we could not have made spider-man
without having that baseline knowledge
and that workflow that we had developed
through working on sunset overdrive the
main part of that is our modular
building sets so we broke our building
pieces up between flat wall pieces and a
flat wall piece would be either a window
piece a door piece whatever you would
want it to be an end column piece which
is just a vertical piece that goes along
the corner of a building a trim piece
that sits along horizontally and then an
end cap for that and from there we also
worked on having our metric sizes set so
we primarily worked in meters and most
of our building pieces range somewhere
between two four eight 12 meters
occasionally we had a couple 16 meter
pieces but very simple really easy to
work with they can just snap to grid and
they they just work which is kind of the
philosophy of a lot of our pipeline is
we just want stuff that is simple and
easy to work with we also used a
technique called ultimate trim I won't
get too deep into it our former
principal environment artist Morten
Olsen did a talk at GDC 2015 about this
online if you're interested but on top
of using a lot of tiling textures that
we used on building kits and large
surfaces trim is a very essential part
of our pipeline for creating assets it's
an incredibly versatile technique
essentially is a standardized strip map
so the layout is consistent for any
material type throughout and it has a 45
degree bevel in the normal map so you
don't have to bevel in the geometry so
it saves you on
geometry count as well this is also the
first time that we use Houdini you will
hear quite a bit about Houdini
throughout this talk
it had very humble beginnings on sunset
where we essentially just used it for
our road and sidewalk creation and also
helping with some asset placement we
also had the streaming zones are what we
call tiles on Sunset we call those hexes
but one spider-man
we just ducted the tiles the name these
are just individual levels that are
being loaded at all times we really
wanted to make sure that the player felt
like for any sort of open-world game you
need that type of streaming technology
to be able to have everything be visible
at once and so this was our first time
be able to work with that and we
translated it essentially it's a
whatever part you're standing in in the
world we load that tile plus the
surrounding tiles so it's the fully
high-res geometry there's no well res
geo in there and then also we use world
space UV focused materials on stuff so
on Sunset this is very prominent if you
take a look at any of the buildings that
are in there you'll see a lot of kind of
paint stroke he looks most of that stuff
is all done procedurally using the world
space map mat mask for stuff but on
spider-man obviously we didn't go with
something as stylistic is that but we
used it for a lot of our crime across
large surfaces of buildings it really
helps to break up any sort of tiling or
just negative space that you'll see on
like very large surfaces where you might
just have a you know one tiling texture
doing across everything
so this is kind of the baseline that we
started with when we finished up sunset
and began working on spider-man but
after that we wanted to kind of take a
look at like what worked you know we did
a post-mortem and we were like hey like
what can we do to improve on the process
as well as also knowing we were going to
be making a significantly larger city
than we did on sunset not just from a
landmass size but a level of density
that we had not done before we're not
even quite sure what exactly that level
is but it's pretty significant between
the two different cities so on that
we've set a couple
those for ourselves in terms of what
that process would mean so even though
we really enjoyed what we were able to
do on sunset like I said we needed to
improve on that for the new challenge of
working on spider-man so the first one
is we wanted to be able to integrate
Houdini more into our pipeline beyond
just regeneration we thought we might be
able to use that to generate not just
streets but whole buildings the other
part that we wanted to be able to focus
on was integrating that into how it
would generate a full building and use
our modular building kits so just to
kind of give you a little bit of a
pipeline understanding of what our
workflow process was on sunset from
building block out to final art when
designer would go in and hand edit each
block out just using pretty rudimentary
just shapes for stuff but they would
spend a little time figuring out what
the style of the building they wanted to
look like and then we would go in and
cover the building up in 4x4 modular
wall pieces just like four by four meter
pieces and then from there what we would
be able to do is swap out any of the
pieces that we have we have some hot
keys in our own engine that allow us to
very quickly swap models in and out for
stuff we you know change the materials
and get the look of what we wanted it
for stuff so that was kind of the
baseline of where we started with and
the modular is a ssin passes what we
would call covering the building up in
the four by four pieces and we wanted to
find a way to streamline that so we
didn't have to spend time as an art team
being will to do that so we could just
get to the arty of the buildings we also
wanted to create more complex
storefronts and have them be more varied
in sunset we had a handful of brands
that were part of the narrative of the
game that we wanted to just you know we
used in a bunch of different areas but
in New York there's a ton of mom-and-pop
stores and again it's a lot of buildings
a lot of different businesses in on each
of those buildings so we wanted to be
able to find ways to quickly make
variety but without adding brand new
model instances and new textures to
everything we also wanted to change how
we did our imposter insist 'm and again
integrating that into Houdini so an
imposter
it's essentially a very low res version
of our buildings our buildings our
prefabs made up of multiple different
modular building pieces and what we'll
do is we'll take that prefab and create
a low-res model that has a custom
texture based off of the look of the
building on sunset we used another piece
of software but again being able to get
it to be more efficient and work
perfectly better with our engine we
switched over to Houdini for that
process and finally but certainly like
not least this is definitely the biggest
challenge we wanted to maintain our
ability to spend time to polish in
handcraft areas like we had on sunset
but we had to find ways to help get past
the repetitious nature of making
buildings now that we had a
significantly more buildings that we had
to make throughout the game we wanted to
get past that part and get to the fun of
the set dressing that's always been kind
of our goal was like how can we get past
the repetition part and really get to
the fun stuff so kind of like I
mentioned earlier about the pipeline of
like hey we have a designer going in
already kind of doing a little bit of a
mini art block pass then the artist
would go in and modular rice stuff and
then we would go in and do the final art
passing stuff that's how we kind of
started on spider-man but we ended up
running into a issue in that which is
that on Sunset we had about one or two
designers that were blocking out the
buildings for us we started off on
spider-man with one designer doing all
of that work and when there are
differences in terms of just metric
sizes for numbers you might have at most
maybe three buildings in the tile in
most of spider-man you have similar
between five and eight buildings per
tile so it's a lot of work and you know
it just didn't make sense for the
designer to be able to spend his time
like art and all that stuff out so he
would throw cubes around be like alright
here's a city block I'm just gonna throw
a cube of sharing cube of what that
building should look like so when
Houdini was spitting out buildings for
us you were getting these massive huge
like buildings
in one style which was not necessarily
something we had thought about at the
beginning but when we began to art this
stuff out we were like we need to find a
way to break these buildings up so we
started hand editing editing that stuff
realizing it was just far too much work
for us to be able to do that stuff so
this made making the buildings and
editing the buildings our real pain to
change the shape or the silhouette or
anything right like if you take a look
at buildings in New York you'll see a
lot of tearing you'll see a lot of like
cuttings and in sets the design blocks
were just cubes so we weren't getting
any of that stuff and to be able to do
that it was just so much work to do it
sometimes it just made more sense for us
just to completely modularize the
building by hand rather than use what
Houdini sped out for us which obviously
defeated the point of us trying to use
Houdini for that stuff
so we started looking at a couple
different solutions one of the ones that
I brought up was using a tool the design
had been using to create some buildings
that weren't just straight boxes we had
some buildings that were sitting on
corners and that tool is called the
polyline so this is an example of what
it is it's a tool that we've had for a
long time but we never really used it on
the art team but it was something that
Houdini was taking into consideration
when I was trying to find a building
prefab to build stuff off of it's
essentially a spine tool that you can
extrude upwards so as long as you get
the metric numbers right for what your
width height is for stuff you know you
know it'll be fine so I started playing
around with this and I went to our
principal technical artist who was our
Houdini wizard
David Santiago which by the way he's
doing a ton of different talks here at
GDC so you should definitely go see one
of David's talks if you're interested in
more the technical end of Houdini I was
like hey Dave how complex can we get
with these polyline thinks he's like oh
you can get as crazy as you want with
this stuff and I was like cool so I did
a test it took me about 45 minutes and
then I realized I did it completely
wrong did it again
took another 45 minutes and spat up a
building like this which was far more
complex than anything we had had in the
game at that point
Randa threw Houdini gave me all the
pieces everything that I needed so
within two days its I had convinced the
rest of the art department to say hey
this is the way that we should be going
with this stuff so we changed the
pipeline so once design went in and had
adjusted the building heights and widths
of what they wanted we would then go in
and do an art pass a poly line art pass
on top of that stuff the reason why this
came about was just because we had more
manpower you know like I mentioned we
had somewhere between one or two
designers at a time that were working on
the open world laying out buildings and
we as an art team would have somewhere
between 8 to 12 people in the open world
at any point so we just had more
manpower for stuff as well it's also
like we wanted to have some control over
what the look of some of the buildings
were so design gave us some guidelines
of things that we could abide by and
that's really the focus of where we
began with doing a large polyline pass
over the city on top of that - it was
very quick to work in you could do up a
polyline building somewhere between 5 to
15 minutes maybe 20 minutes if you have
something really complex and then you
just run through Houdini and you get a
whole building and that's it let me kind
of explain how Houdini actually creates
building pieces for us and and error
uses the building pieces that we have to
generate full structures for stuff so it
would take our modular pieces that we
had the similar ones that I talked about
from sunset and based off of a naming
convention it would know what a
first-floor piece would be it knew what
a wall piece was it knew how to place a
corner on stuff it would create a custom
piece of rooftop geometry which it was
awesome so we didn't have to spend time
meet you slam and get much of different
planes around and kind of fill in the
rooftops and then also it would put any
sort of gameplay volumes or logic on the
building that we had typically always
had to do by hand
so we used another spline tool to
creating sort reversal markup before
we'd have to draw that by hand as
artists Houdini would generate that for
us on the fly and then also we would use
swing volumes for buildings this is how
spider-man's webs and how to attach to
the end of a building so again it was
all stuff that just was you know it
automated for us it just made the
process significantly faster to work
with so there's a couple examples of
what Houdini would just spit straight
out of once it took a polyline pass
these are done by one of our senior
environment artists ray McNair this
probably took him maybe I'd say two to
three hours to do just to spit all this
stuff and you know obviously this is one
neighborhood of of a much larger space
so but it's pretty cool to see just how
complex like the buildings can be and it
gives you a good baseline for stuff and
so just as a way to show ok here's what
the Block outs would look like and then
it would go to this essentially
obviously once we had the buildings in
place we would then go in to those
prefabs swap out any pieces that we
wanted swapped out storefronts windows
change the materials the process didn't
get us all the way there but it got us
more than halfway there in terms of
getting the baseline for everything in
place so then again if we could just
focus on making sure we were able to
polish and do a proper art pass on
everything
so once the modularization passed it's
done artists could go into building
prefabs and be able to edit that stuff
and then on top of that to kind of like
I'd mentioned earlier the imposter
system this is what we ended up using to
generate our final buildings on the
image on the left you'll see three
structures the image that's on the far
left is the imposter the building in the
middle is the actual prefab and then on
the right is a proxy model that hugely
uses for a bunch of other different
functions
and so it's it's pretty cool it's really
fast it's really uh like yeah you can
get these buildings done fairly quickly
and so with that it then gives us time
to be able to customize that stuff so we
can add additional structures to stuff
so like with this building here adding
in a lot of the Roman Roman columns and
a lot of the different pieces on top of
the roof
Houdini spat out the majority of these
pieces just to kind of start with and
here's a couple examples of some of the
art and like the time that we were able
to then spend polishing stuff instead of
us focusing on just repeating the
repetitious acts of modularizing and
getting the designer markup in place
which could take just as much time as
doing the polishing pass some of these
are shots from one of our other
environment or is Oscar Gonzalez and
yeah you could do a whole neighborhood
pretty much in an afternoon
and then go in and just you know do a
nice little proper art pass with some
polishing there so ultimately what did
this all by us going procedural saved us
a ton of time we no longer had to do a
modular ization pass by hand for
buildings Houdini generated all
traversal gameplay and markup for us
this allowed us more time to set to us
and do multiple polish passes on the
open world and then some hard numbers on
Sun sets our modularization passed by
hand could take somewhere between 30
minutes to 4 hours for a single building
and we cut that down with who do you
need to about 5 to 15 minutes and then
total building in the in in the open
worlds we're actually not quite sure
what the exact total number is but it's
over 9800 buildings in spider-man so you
start doing the math of that stuff
you're like oh yeah that's a pretty
that's pretty significant amount of
savings for stuff so the next bit I'll
talk about is the storefronts so our
goals we wanted to create low level
Street interest for stuff even though in
the game you're spending all the time on
rooftops and you're jumping around stuff
we still wanted it to feel like New York
and a lot of New York is the dense
diversity of different storefronts and
models that were in there and we also
wanted to be able to have the
storefronts reflect different parts of
the city that you were
and whether you were in a residential
area or a different business or if you
were in a Chinatown that or Harlem those
different types of areas so what we
ended up doing which is creating a few
facade fronts that we're using primarily
ultimate trim again and a lot of tiling
textures these could be easily set rests
to create a variety of different sort
fronts again if you take a look at a lot
of the architecture and styles that
you'll see of storefronts in New York
too
a lot of them are kind of the same
architecture so it's just like hey we
can change the materials here it change
the signage or change the set dressing
it can feel like a completely different
store front a kinda like I mentioned we
can do a lot of different material
changes and again this also saved us on
unique instance count one of the reasons
why we were able to kind of really do a
very dense and open world at the amount
of stuff we're constantly streaming is
because we were very cognizant of how
many unique models materials and
textures we were drawing and at one time
if we can create a bunch of very
versatile assets that we can use that
are drawing in you know a significant
amount of time and then allows us to
then put those resources into adding
more unique models and textures and
materials where we need them and again
the pieces abided by our regular metric
sizes most of these storefronts were
about eight meters tall and the average
size I think was somewhere between 8
meters wide and 12 meters wide here are
some examples from one of our associate
environment artist carol torres gonzales
she did you know these pretty much in a
day so it was just you know taking the
storefronts putting some set dressing
changing the signage for stuff in terms
so the other thing that we wanted to end
up doing very late into the project was
we wanted to add state changes for the
storefronts as well so based off of
whether you're playing the game during
day or night certain businesses will be
open or closed there are other events
that end up happening in the game I
won't mention if you haven't played it
yet
where the storefronts also go through a
change
as well for stuff and so the way that we
ended up doing that was since all the
store fronts could be made into prefab
so an artist can go in do the set
dressing of it change the materials add
signage save that as a prefab and then
we can call in from our vault or are
like asset browser what we could then do
is put a secondary prefab that had all
the day set arresting and all the night
set resting inside of it and then
Houdini was able to then take that
information and apply it in a bunch of
different ways that would allow us to
turn those states on and off whenever we
needed them to we could even change the
graphics on science if we wanted to we
ended up creating a process that had a a
texture Atlas that could randomized
somewhere between 8 to 16 different
signs or we could also just put in
specific quadrants if you wanted to get
that stuff so again it gives you a lot
of different variety and again we're
saving on texture because we're only
using I think we only had maybe five
custom signs for a lot of our signage
the game the other thing that we ended
up doing to to kind of help save on time
because we did eventually need to do a
couple unique storefront facades for
different neighborhoods was creating a
what I called a bit kitten file so we
realized that a lot of the architecture
pieces we were using windows doors walls
columns were all kind of the same and we
could at least get something started to
save us time to model the stuff so I
made a file that had a bunch of pre you
vide assets I actually got this idea
from Bungie who did this for a lot of
their weapon designs first stuff and
being able to create a kit that but just
be able to make modular pieces out of
stuff so it's kind of the same thing
much simpler and that was able to save a
lot of time because again you know you
may not have a fully finished thing but
it gets you like 60 to 70% of the way
there in like
we less than half the time and then
finally I'm going to be talking a little
bit about how we did some of the set
dressing and how we broke that up it was
really important to us to be able to set
specific themes and tell the story of
New York and make the districts feel
completely different rather than it just
feeling like a very generic boxy
building city all across the way so like
I mentioned earlier in the talk it's
really important for us to evoke the
wide variety of cultures and places in
Manhattan not only is it true to the
area it just gives us more variety and
fun things to play with different
stories of things and it keeps the
artists interested and excited to be
able to work on you know if you're set
dressing buildings for years on end you
need something to kind of get the blood
going a little bit and you know get
people excited and invested in their
stuff so we really don't of
each of the major districts in Manhattan
we want to define ideas that were
representative of those places and then
we would create a central theme for each
of the districts
we ended up break breaking up the city
into several different zones financial
Chinatown which is most of the East
Village Greenwich Village Midtown Hell's
Kitchen Upper East Side Upper West Side
Central Park and Harlem and then from
there we actually broke up the
district's into smaller neighborhoods
and then one artist would be in charge
of each of these neighborhoods we would
then also take the theme that we had for
the central area and try to find ways of
exploring that theme in a variety of
different ways whether that was
something in a residential area maybe
we'd find an area that was kind of a
little contradictive to that theme but
still fed back into that same idea again
it gave the artist a lot of
opportunities to be able to come up with
unique ways of set dressing and thinking
about the things that they were really
making to make sure we weren't going too
far off of the style of the buildings
and the districts we wanted to go to we
made sure that it was a template for the
team to be able to work off of so this
is what we would call a beautiful corner
or a visual target
we would use as well as style guides &
art-direction Bibles to help brief
people in that stuff but what was really
helpful was seeing a area in the game
that actually looked arted so this was
the visual target that I did for
Greenwich Village really early on this
would also give us time to be able to
make custom pieces and brand-new pieces
if we needed them so we didn't really
have a lot of Stoops at the time so I
ended up having some Stoops made we
changed some new windows and building
pieces and then obviously doing a set
rest pass and this was really a great
way then for the team to say okay cool I
have an idea what the general vibe color
scheme of the buildings Heights and what
the cetera so you should kind of feel
like and then this is kind of what you
would end up getting and seeing some
other artists being able to evoke this
stuff and that's gonna be the end of my
session here I'm gonna just give you
guys a couple different things to
consider as like the final takeaways for
this open world games are really hard in
the Irate a lot of work to do anything
so especially you know at this scale and
the size of the team we had we only at
our max working on the open role team
for all spider-man it was about 15 of us
and probably floating somewhere between
12 to 8 at any specific point during
production it could definitely feel
overwhelming but you know it's something
where you need to start thinking about
how do you break that stuff up in
smaller segments and try to find ways to
still hold stuff at a high quality bar
but not spend a incredibly long time
worrying about smaller little props
looking at the overall big picture for
the city is incredibly important using
your resources wisely in focusing first
on big ticket items and then once you
get that stuff in place you should be
able to have the time to then focus on
smaller details fine your find any sort
of repetitive processes you might have
and see if you can try to automate them
either through exists you know using
existing tools like what we did with the
polyline which was like we didn't even
know that was a thing until we started
using it
or you know forge with brand-new tool
tools or new material sets it really
does save you on time and saves you from
the boring role of having to do the same
tasks thousands and thousands of times
what you're really trying to do with all
of this ultimately though is making sure
that you save time for your artists to
do what they're meant there to do would
just make stuff look really pretty and
make the audience feel really engaged
with the stuff that they're making
that's really kind of what the key take
away with all this is is that hey you
know it's a lot of work to be able to
get that stuff in there but we want to
be able to get people and the artists
that spend time to develop these spaces
in interesting and compelling ways and
if we're spending half of our time doing
the same task or repetitive stuff you're
not gonna see that in the final product
continuing on that idea a little bit
using a handful of versatile assets that
are drawn in most of the time to save on
memory and unique draw calls is
incredibly important thing to do as well
it's you know and again I can save you
either on overall memory or it gives you
room to be able to play with more stuff
and go procedural when possible the
future is now
with tools like Houdini and definitely
with substance was Matt will be kind of
getting into these are really great
non-destructive ways of being able to
work we did a lot of late changes and
development kind of like I mentioned
with the storefront states that we would
have not been able to do at all if we
did not have these tools and mine to be
able to help us so I just want to say
real quick thanks to it Lake rythmic for
having us here today and now I'm gonna
pass this off to Brian and he's going to
talk about some lighting
[Applause]
hey guys alright so my name is Brian
Mullen I'm a senior lighting artist and
insomniac games one of the major things
I worked on in this game was setting up
the atmospheres and the look of the
lighting for our open world what I want
to focus on today is a bit more of the
foundation of what we set up to get our
before we started doing our Beauty
lighting and adding layers of
post-effects I'm not gonna focus on
every aspect of our initial setup but
what I do want to focus on are kind of
like the the first steps and these first
steps aren't really specific to our
tools so this should be transferable to
whatever you're working in we had a
really big city to work on and we did
not have a really big lighting team to
do it knowing that it was clear that we
needed to kind of create some pillars
for what we wanted to accomplish so that
we could stay focused
the first item was that we needed to
make sure that our lighting was
contributing to the environmental
storytelling we didn't have dynamic
day/night changing open world lighting
in our game and I have to say that
allowed us to get very specific about
the look that we were going for and it
helped us immensely and being able to
tune that look giving that we're telling
a fairly linear story that drops the
player back into the city frequently
we're able to let our lighting kind of
assist in the storytelling that's going
on and then second it's using real-world
measurements to validate our work but
then balancing that with gameplay issues
and visual targets that we have so first
off we have to create that foundation
and we have to get numbers that we can
validate against stuff that we can
measure in the real world but we also
need to keep in mind that by adhering to
that sometimes we are going to come up
with problems and we need to be creative
with how we solve those things we
frequently such situations where what
we've what we know is physically correct
may still be making it hard for the
player to play the game and it could
still be not hitting our aesthetic goals
for what we want
and this kind of being a lighter is
about trying to strike a balance with
this and this shouldn't be like news to
anybody who's been a lighter before but
I think some of the most excessive
successful lighters are the ones that
display patience when these problems
come up and they can work with the other
departments understand where they're
coming from and approach the problem
solving with nuance instead of trying to
Club it by addressing a couple of
atmosphere properties and end up fixing
one problem and create 45 more so
originally I wanted to talk a bit more
about our procedural setup and this and
for lighting in the open world but
fortunately we already have x-ray who's
a genius and he's gonna be here on
Thursday talking about some of what he
did to help us out
removing a lot of that manual process
from us allowed us to kind of focus more
on our Beauty lighting and David
Santiago is also gonna be here later
this week Ryan talked about him in his
talk and he's going to be here on
Thursday at 10:00 a.m. and super smart
guy I would recommend going to both
these talks so about the foundational
steps I mentioned before the very first
step before we dive into the deep end
and start trying to light all of New
York is we need to set up a content
validation level here's where we can get
ourselves a strong starting point for
the setup of our atmospheres but then it
also becomes a ground truth for the
material artist and environment artists
to drop assets in and compare what
they're seeing there to what they're
seeing in the rest of the game we
originally tried using like a section of
the city but because materials were
constantly in flux what we found is we
had better results if we would just go
with a grey plane maybe a box for like a
room that a player could go into but try
to keep it as simple as possible so this
kind of lives away from the rain the
rest of the game and it's important to
realize that when you do your balancing
and you're setting up of your atmosphere
in this content validation it's not
necessarily just gonna make a perfect
translation over into the game that
you're working on
especially for us when we were working
on new york in a small test level
there's nothing really blocking light
contribution coming from the sky from
all directions but then you go into New
York and it's basically all occluders
it's just buildings everywhere buildings
bridges everywhere anything any
atmosphere that I have looking beautiful
in like a little test level when I bring
it over there it's not just gonna work
but I'm in the ballpark and I'm
typically just nudging settings one way
or the other I'm not kind of starting
over from scratch when I move over there
so before we get into the atmosphere
settings that we're gonna dial in and
that content validation level we need to
kind of go outside and take some real
measurements so we know what to validate
against so this steps really simple but
you will need an SLR camera and you need
a gray calibration card the great
calibration card you can buy it like any
photography store make sure your camera
is in manual mode so your exposure is
locked and then photograph a gray card
and direct sunlight and then take it
over to a shadowed area and snap off
another shot and don't change any of the
exposure settings for our daytime
reading we used an f-stop of F
point-eight and for sunset we did five
point six after you're done getting
these shots open them up in Photoshop
what you're trying to find out here is
how much brighter was that card and
direct sunlight than the one that was in
shadow and this will give you a lighting
ratio in Photoshop what I did was I just
remove all the saturation from both of
the images and then I do an RGB reading
of both cards as an example if the card
had an RGB rating of 160 in direct
sunlight and then that one in Shadow had
an RGB rating of 10 I have a 16 to one
ratio which is what we had for our
daytime readings it wasn't these exact
numbers but the ratio is 16 to one for
sunset a ratio is substantially lower
because it's a two and a half to one and
this makes sense because the Sun is
lower in the sky
cutting through more atmosphere so once
you get those measurements you now have
a target that you need to try to match
an engine
an engine we lock our adaptation just
like we did with the camera
you put an 18% gray card to act as your
in engine calibration guard and direct
sunlight and then one into a shadowed
area basically just mimic would mimic
what you just did outside the before you
jump into baking GI confirm that your
exposure is correct - you need to look
at that 18% gray card and direct
sunlight and make sure that it's reading
as a as an 18% gray card and if it's not
you need to adjust your exposure a
little bit in our tools we bake our GI
we do a round of that capture a
reflection probe in the area and then we
get a reading of the dose of grey cards
if the gray card in direct sunlight is
more than 16 times brighter than the one
in shadow you probably want to increase
the brightness of the sky a little bit
and do another round of baking and you
that's it's all about trying to get that
that contrast ratio kind of up a little
bit it's the opposite if it's the
contrast ratio is too high I've never
actually seen that but if you did you
would just turn down the skybox and
rebake once you have your ratios
reflecting real-world values the next
step is now unlocking that adaptation by
introducing a little bit of the range
and our tools adaptation range is how
many stops up or down from that base
that you originally set is ideally what
you want to see is enough adaptation
range that when you go to that card and
shadow everything lifts up enough that
it now reads as an 18% gray card you
might find what we found which was that
it can produce some nice results but
that much adaptation when you have a 16
to one ratio can actually create some
kind of visual issues but it's still a
place where you would want to start so
in spider-man we had four locked
lighting conditions I'm gonna run
through some of the quick processes and
problem solving when it came to each one
the first time of day that I wanted to
discuss is what we called uh okay it was
our mid day lighting setup it's around
noon day was our testbed for a lot of
our open world procedures so most of our
workflow was kind of established on this
one and this one ended up proving to be
a bit more problematic than some of the
other ones so dealing with these
problems kind of right
the bat helped so our goals for day were
to make a rich vibrant lighting setup
that hit the hyper realistic look that
made the city feel varied and gave us
the cinematic look that we wanted to do
this we used a very blue skybox and an
ever so slightly warm key light the
indirect shadowed areas would get a soft
blue color to them from the skybox and
all of our values were pushed then by
adding a light that increased the
vibrance of the colors and introduced
just a little bit of contrast while I do
like what's and I do think that they can
create great looks they proved to be
somewhat problematic in a game the of
our scale so we had to be somewhat
restrained in how we approached them so
they did have some few a few issues to
work through
that all kind of came back to that that
really wide 16 to 1 contrast ratio that
we recorded before firing off lighting
for the whole world we would pick a few
beautiful corners and different boroughs
in the city and what I was finding was
16 to 1 ratio definitely looked
realistic but I don't know that it
looked you know good so what
specifically wasn't working was with a
really high contrast ratio that means if
a player were standing in a really dark
alley and you were adjusting properly
everything that was bright was now
clipping so you would be standing in an
alley and you would look out and the sky
was just nuclear white and every
building in the background getting hit
by white was just by the the sunlight
was just white and everything was
blooming and it was it was kind of a
nightmare
the other problem was when you're
adjusting that much on your dark range
to get everything kind of evened out was
that spider-man can move really fast and
he can move up and down and he's on
rooftops he's running up the side of
buildings you with the way that he was
moving this the the screen was
constantly adjusting between dark and
bright and dark and bright and it was
really disorienting to play we could
have slowed that bad timing down a
little bit but then you were still gonna
have visual issues where maybe the sky
just looked off while you were falling
down
so what we found work best was to stop
trying to make us 16 to 1 ratio and work
and try to find a ratio that that
balanced a little bit better for us and
we ended on a 10 to 1 ratio that allowed
us to have less aggressive tone mapping
and helped with the issue of our blown
out skies and shadowed areas looking
pitch-black when you were standing
outside of them these things were still
kind of there because it's what you want
to see you do want to see these areas
getting bright you just don't want to
see it clipping the next staff nice
where I want to talk about a sunset
sunset follows much of the same process
they already detailed with day but it
did introduce some unique challenges and
some great opportunities to push the
quality bar through our post-processing
sunset on our game was always the most
fun to work on because sunset just
inherently always looks good golden hour
pushes warm and cool complementary
colors and it makes for a beautiful
environment our ratio for direct to
indirect lighting was two and a half to
one so we're already not dealing with
almost all of the problems that we had
in day using a nice blue saturated
skybox allowed a good amount of cool
lighting to get baked into the shadowed
areas which created this nice color
balance our engine has these fantastic
tools for godrays which were able to
utilize a great effect and then we
brought in more volumetric fog than we
had in the day atmosphere and then that
combined with our God rays to add this
nice separation between a directly hit
area and a shadowed area and we were
able to implement a system for driving
our fog our distant fog with the texture
and that allowed us to get more control
than we previously at sunset did come
together pretty nicely but it did have
some some weird challenges for one the
Sun is coming in at a raking angle so
even a small gap in geometry in a
building is more likely to be noticeable
to the player and tracking which
building is leaking the light can be
terrible because that building might be
five tiles away and not even loaded when
you're working in the engine the problem
was exasperated late in the project
William decided that we were getting
better results by lowering the key light
a few degrees tackling this issue was a
collaborative effort with the
environment team by fixing obvious seams
and tackling the more tricky areas by
using a light block or volume I
mentioned this earlier but sunset in any
setting is off is obviously a pleasant
time to
cat so as silly as this sounds part of
the problem that we had with sunset was
that early on we'd hit a target and it
looked really nice and we were just like
all right done and the problem was that
we we could have done more and we
decided to go back and do more and I'm
glad that we did which was kind of
trying out some different sky is seeing
what we could get baked in how many
different colors we could start
introducing into this and then figuring
out how we could use a lot again
somewhat restrained but what we can do
with a lot to kind of push this thing to
go even further so where as sunset is
always visually appealing and easy on
the eyes
overcast is extremely tough cell gray
it's just gray everywhere people don't
generally like overcast people don't
like them being outside on a rainy day
surprisingly I found overcast to be more
of a fun challenge on the lighting in
than I had anticipated it didn't hurt
that our amazing tech guys and core team
created some great rain and wetness
effects that really made this thing come
together our goal when overcast was to
make this look bleak if you played the
game the overcast is the atmosphere that
the player sees during the low points of
the story we needed to help support that
story beat but also try to make an
atmosphere that still allowed the great
work of the environment team to be seen
we achieved this look through a few
steps first off we kept the key light on
it's barely noticeable it's very low
intensity but it definitely its presence
was felt and when I tried to turn it off
it was gross everything had this nice
little shadow and it made everything
feel a little bit more grounded r-spec
just looked better everything just
looked better with it on it's it's a
pricey thing to pay for but it was nice
to have on the issues are kind of what
you would expect it's gray I was I had
just finished working on sunset which is
the most colorful thing in the game and
now I'm trying to sell everybody on
Lookout great all of this gray looks and
so earlier I mentioned now how
restrained I like to be on the Luntz
this is still true for overcast but this
is the atmosphere I was able to do the
most with because the bass was already
so neutral for overcast I increased the
vibrant
a little bit added a little bit of
contrast and then I shifted all the
color towards green the end result was
an atmosphere that felt bleak and also
supported the story while visually
hitting the cinematic bar of what we
wanted the bigger issue with overcast
was making sure that her sky wasn't
constantly blown out when I mentioned
earlier about trying to validate values
you drop a great card in that open world
and you try to get it to read as an 18
percent gray card but it's street level
when most of your light is coming from
the Sky box and almost all of its being
occluded by buildings I ended up having
to turn the exposure on this skybox up
extremely high and the end result was I
could get a good balance but the sky
just always looked white to get around
this and we were able to do this because
we're making a spider-man game I
balanced to a rooftop instead of the
ground this is OK in spider-man because
he's you can go anywhere you you might
theoretically spend as much time on a
rooftop as you are at the ground so we
balanced to a rooftop we don't have all
these occluding buildings and then our
light is able to kind of get in there
without me having to crank values to
something unrealistic and after we get a
balance on a rooftop we take that 18%
gray card down to the street we
introduce enough adaptation so that
those areas will boost up just a little
bit you'll end up with a sky that is a
little bit brighter but it still has
detail and that will only really cause
any blooming and clipping when you're in
a super dark area okay so night night in
an open-world game is interesting while
all of our other atmospheres were dialed
in trying to stick as close to
real-world values as possible night is
the hardest one to stick with real life
on we tried to because it was very
important that night look like night to
us it was one of our our pillars for
this the atmosphere so I'm gonna go
through some of the steps on what ended
up being the most difficult lighting
condition Taurus the goals were the
night needed to look like night it
couldn't be a day for night look we
didn't want like a blue wash over the
entire city
we needed it to look and feel like night
and we needed to make sure that this
city felt alive without adding 500
lights to every single city a city block
and we needed to make sure that all the
crimes were visible and we needed to
make sure that all the backpacks were
collectable and everything else
everything needs to be visible so first
step was the key light the key light was
set at a very low intensity and angled
just a bit originally we tried a more
top-down angle from the moonlight it
just didn't look natural it alleviated a
lot of problems but it looked weird so
eventually we just kind of angled it a
little bit more and it helps with when
spider-man's up on rooftops there's a
lot of crimes that happen on rooftops
and it allows us to not necessarily need
too many light sources up there but it
didn't help us at a street level which
is where we really needed it so to
address that we started setting up our
prefabs this includes any wall light
sources and most importantly our street
lights street light prefabs were broken
out into each district each one getting
its distinct color temperature range to
their package dynamic lights for
instance Hell's Kitchen have warm
streetlights ranging in temperature from
3200 to 4000 Kelvin while financial
district had a more LED lighting setup
with temperatures between 65 hundred and
seventy 300 Kelvin this helped give a
subtly different feel to the lighting in
these areas from the most substantial
source of light that we had available we
also set it up that the player were to
look down the street they wouldn't see
every single light to set to the exact
same color it's a subtle thing but it
seemed to work for us much like sunset
also pushing our post effects around a
girl to making our lighting night night
lighting work we introduced some God
rays coming from the moon which
exaggerated some dynamic looking light
coming from the moon we introduced some
volumetric fog and bloom too to the
overall look and that was allowed us to
push this look of light pollution that
you would expect to see in a city like
New York so obviously night is gonna
introduce some diff excuse me some
difficulties so let's dig in the first
issue I want to talk about is a biggie
and that's how we found a balance
between making night look and feel like
night and not having a game
was entirely too dark to play one of the
revelations I had early on while working
on night was that the atmosphere was
never gonna hit the bar of what I wanted
it to look like if I tried to address
every single problem that was gonna come
up so we kind of made a decision that we
were just gonna let our dark areas be
dark and then we would circle back and
address those we'd stop trying to find
some magic tone mapping setting that
didn't look weird and still made the
game playable so we ended up like
relying on our prefabs a lot and those
played a major role in getting that last
10% to look playable and to still look
nice I'll be digging into this in a
minute but street lights would contain a
baked only light and a runtime only
light with the bakelite being extremely
wide with a large attenuation radiation
ratio radius to push is as much bounce
light into the area as possible this
allowed our streetlights street-level
areas to look like the image that you
see over here not getting too hot high
contrast and not having like very small
pools of light once we had a lot more
baked at a street level from this setup
we found that our tone mapping also
started functioning a little bit better
and what we would expect to see there
were a few minor tweaks to the amount of
adaptation range and timing after the
new prefab lighting approach went in
that helps smooth out some of the
transitions these steps got us most of
the way there but from there we had to
deal with dark areas on a case-by-case
basis working closely with the QA team
to identify problem spots where a crime
may spawn or a backpack may be located
and make sure that we were adding light
sources close to those areas and while
this process did create a fair amount of
manual work to fix up these dark areas I
believe the end result was better for it
we dealt with the issue with a scalpel
instead of trying to bludgeon the
problem with a hammer by figuring you
know we'd be able to find some magic
global setting that would be able to fix
this I feel like if we'd kept trying to
address this through the atmosphere we
would have ended up with that day for
night flat look that we were trying to
avoid and aside from the visuals the
next big issue was performance because
our cities so large we had to utilize a
streaming
system that would load the immediate
area around where the player is this
create a few issues that we had to come
up with problem our solutions for how do
we get landmarks let up if the player
won't be able to or if the player isn't
around them how do we have those lights
loaded how do we prevent lights from
fading on constantly while the player is
quickly swinging through the city and
how are we going to afford to have all
of these lights on in the first place so
one at a time our landmarks and distant
building lighting we worked with the
environment team and coming up with
creative solutions we were able to
utilize a global zone that the lights
would go into with a hard cap of 500
lights which sounds like a lot until you
light the Empire State Building and
realize that took 30 lights to light up
and now you've realized that you've
you've now got to start thinking about
how you're gonna do this we needed to
pick the landmarks everybody would
expect to have lit up and address those
first then we had to hit the story
points GCT Grand Central Terminal I
should say we had an auction house that
was important we needed to start hitting
the story points and then whatever we
had left that's what we would start
moving into the the buildings that
weren't necessarily as important but
added to the visual look so for
preventing lights from fading on and for
performance we issued the we addressed
those with what I mentioned before by
having a bake light and a dynamic light
and all of our our prefabs were able to
have a lot of contribution from these
lights but the dynamic portion of it
wasn't really on until you were within
30 meters the runtime light is also it
only cast shadows when you're within
about 15 meters I believe is what we set
it to the cone angle is much more
aggressive you don't really see it fade
on at any point though because we've
already baked a contribution in its
being obscured somewhat by the fog and
what you end up seeing is in this image
on this next slide is this whole Street
going down both sides is it looks pretty
well lit up but I only have two dynamic
lights on right now and there are the
street lights that are in the center
closest to us
so our performance never I shouldn't say
never but it most of the time did
not have any real issues despite the
fact that we were trying to make this
entire city look lit up and alive so the
thing that I want to talk about before
wrapping this up is what I learned by
going through all of this is that even
when you know that you're gonna have
problems by sticking to a PBR workflow
and trying to do your lighting right
that is kind of where you have to start
we knew with a contrast ratio of 16 to
1/4 day that we were gonna run into
problems and we knew with night if we
tried to stick with real-world values we
were gonna run into problem so what we
did those things first anyway because
it's easier to deal with problems when
you have expected results that you
wouldn't that you can measure against
outside it's important to get your
foundation set up right and then you can
deal with all the weird stuff that comes
up it's one thing artists have to deal
with regularly or requests that don't
necessarily line up with PBR and what
you'd expect to see in real life and
that's okay well it's good to be
diligent about your process and making
sure that you're sticking with real
world values it's also important to keep
an open mind about how you resolve
creative issues that are being brought
forth it's worth mentioning again how a
good work flow is going to get you most
of the way there and in most cases as
long as you're not trying to solve these
problems too early in the process by
changing a global atmosphere parameter
to something that doesn't really make
any sense you shouldn't really need to
go too far from the PBR script to get
something that works for the betterment
of the game so that's going to be my
portion of this I'm gonna bring Matt
over here now to do is a material stuff
[Applause]
hello I can
alright that's loud sorry hey guys
my name is Matt McCall I'm a material
artist and Simonet games was we have
previously covered and so I'm gonna kick
this off with just a little bit about
myself and how I got started and some
knack because it kind of plays into a
part of designer and saving time was the
biggest thing so brought out in 2017
spider-man's been going on for a little
while now most of the content in the
game from textures models assets were in
at some form so everything kind of the
foundation has all been laid out we have
our content but there's a few issues so
the first thing I want to talk about is
excessive texture assets typically what
this came down to is textures that were
a little bit redundant they were too
close to others in the set there was
enough visual difference to justify them
there and memory was already an issue so
we needed to tackle this shared asked us
some duplicates same thing if you have
like three textures for brass but to the
you know anyone else who just looks at
this and say that's brass that's also
brass this is also brass but you look
into it they're all sourcing for
different 2k textures or anything like
that performance starts to become a
little bit of a problem and you started
like you know flags go up so the other
thing that was in need of addressing was
large surfaces these are really tricky
to deal with especially if you have such
an expansive world like New York
sidewalks are huge roads are huge
buildings are huge rooftops are huge
everything is big and everything is a
problem but we can figure this out one
step at a time
so the immediate goes after we got there
prioritizing was huge we didn't have
that much time came on you know towards
the end of the project so we need to
figure out what is the biggest bang for
a buck what is going to give us the most
returns for a time and also our
resources fielding requests as needed
for a specific
scenarios and locales so that means as
we were approaching you know wrapping
things up there were certain cases where
we'd be reusing content from other areas
or you know say we take a cobblestone
and we apply that on a wall because we
didn't have like a stone texture set
like ready to go so we used as like
temporary placeholder so figuring out
which one of those guys ours most in
need of an update a complete refresh or
anything else what's really important
increasing the quality and flexibility
of the content which all feeds right
back into making sure that what you have
in there is useful in a variety of cases
and it prevents people from making
duplicates redundant textures or
offshoots that maybe satisfy one or two
scenarios but enlarge kind of just pull
away resources from where it could
really make a difference validating and
fixing content was also really big so as
you have a whole lot of materials a
whole lot of people touching a whole lot
of stuff it's pretty easy for things to
get a little bit out of hand in terms of
settings I'm sure if anyone here is
messed around and a material editor
sliders are dangerous and you can
clearly go off the rails very fast
myself included so reining in a lot of
that stuff was really big so make sure
it's good a lot of content you know it's
good it can pass this works it looks
great but sometimes settings overtime
we're a little bit too light a little
bit too darks more saturated to be
saturated and you just kind of guy go in
and tweak those guys and then the last
thing was to create a library of
approved textures and materials I'm
going to go into this a little bit later
but essentially the approved idea is
that we have a system that we can tag
content that is in our engine as this
has been vetted we know it works we know
it works well and it helps artists make
confident and informed decisions so so
the first thing that we were jumping
into is big variation which meant that
we needed to cover a very large surface
hit a certain textile then
but also introduced a lot of variety so
one of our senior technical artists
Christopher Ella made a wonderful blend
shader that I then proceeded to use on
pretty much every single thing I could
get my hands on for the rest of the
project and from things like marble
inside a fist tower to the exterior of
raft this was used extensively
throughout spider-man the PBR validity
zone and the debug that we use in
conjunction with this so we had a big
essentially neighborhood with roads a
few buildings sidewalks and stuff that
all this kind of played into you go and
you look at it in there make sure all
the settings are appropriate see how it
looks on the big picture
bring back an engine and you kind of go
back and forth to make sure that
everything is looking okay across a
variety of scenarios all right so the
blend is shader itself so all the
texture content that I was feeding to
this came straight from designer so that
means free height maps and you right
away I have a pretty good base to start
blending a few different things our base
we essentially had three blends and then
of texture sets that we'd work with
which is base which is our bottom most
layer red which is layer on top and then
green on top of that blue channel we
used for painting puddles throughout
spider-man and this was done I liked all
these channels that we could use it was
either done through vertex color or it
was done through a 3d texture that we
used that was a small guy that you could
then scale up and it multiplied against
the height Massillon and texture content
to help increase a variety throughout
the entire city see here the blending
method is independent for each layer so
you could use either the 3d texture or
the vertex color and so this played a
huge part of our pipeline because as I
was talking about Houdini was leveraged
heavily so that means a lot of the roads
the sidewalks had vertex color generated
by Houdini so that way as we generate
puddles the vertex color for the blue
lines up with the vertex color on the
roads so puddles and everything will
across multiple surfaces to help sell
than unified look and make sure that
water was where water should be inside
of the blend shader itself most blending
though use involve dielectric materials
which freed up the green channel which
we previously is for a spec map it we
could then plug in our height map in
there and that height map is what was
used to generate a whole lot of
different kind of looks in in effect so
things like different noises were added
into the height map channel so you'd be
working with your actual height map and
you could add a few different effects
patterns grime noises anything on top of
that to help the blending cell a certain
look or effect inside of that particular
material one of the things that was also
leveraged heavily was the gloss
histogram controls so I'm sure if anyone
here is using designer lock histogram
range is something I use pretty much
day-in day-out is one of the most useful
features I found in designer for not
just high master of gloss so bringing
that back into the engine means that
when you're authoring content you can
create a lot of things that are a lot
more high contrast and a lot more detail
in there so like an easy example would
be I have I have steel the default steel
that we offered out is it's gross it has
a lot of grime smudges scratches
everything on there and then so when you
kick that on to engine if some artist is
like this is a little bit too much for
me I need to knock this back down it
needs to be a little bit more new more
polished they have the gloss controls in
there ready to go they can reduce the
range and make it more rough or more
shiny and you're still using the same
texture set it with no additional cost
the texture memory that we say from
doing that we cut out quite a few
variants of steel of different things
like paint stone like we we went pretty
aggressive with this because it allowed
us just to get a lot of free we use
especially when memory was a big concern
the other thing that we were doing is
within the blend itself you could also
use the histogram controls and other
stuff to affect the ambient occlusion
and so as you can see on the wall it's a
little bit hard to tell with a little
small guy up there but the walls based
on the blends so the 3d texture was used
here and so as thicker pane or newer pan
goes on it's the brighter one the AO is
actually faded out and reduced and as
you go to the older paint which is the
more kind of yellow gross guy vo comes
back in and that's all just using the
same texture set blended in against
itself just set at different parameters
so different hue saturation different
normal intensity different AO intensity
and the gloss being altered which is a
really cheap and easy way to get free
bang for your buck and that was used
extensively on the exteriors of
buildings for any sort of brick house
painted interiors used on grounds and a
whole lot of other cases so the each
independent controls so we had diffuse
HSL controls per blend AO intensity
histogram range controls normal
intensity opacity threshold controls for
each layer of the blend so we had a
whole lot of options and so this is a
little bit of a double-edged sword
because more things that you provide an
artist the more chances there are for
something to go wrong so if you give
someone 18 sliders you're like oh man
this is sick I can do literally anything
and you go hand someone else that and
they have no idea what opacity threshold
underscore RG underscore 0:02 is and
then you know next thing come back is a
message and slack saying something's
horribly wrong and it's broken I don't
know what to do and you go over there
and you're like oh no I don't know what
to do either
and then it's a little checkbox someone
just accidentally hit invert and you're
like oh everything's okay now
but for that 20 minutes you were
breaking out in a cold sweat cuz the
thing that you swore was definitely
working was not working so it's good in
that way that you give people the
ability to really get creative with how
they use this content that you provided
them but it also means that you need to
educate and try to streamline as much of
it as possible make it as easy for the
end user to use because if you hand them
the textured content but you don't teach
anyone how to use it in the shader
effectively you might not get the
results they were really looking for so
going into a prioritization so getting
all this kind of textured content in a
relatively short time meant that we
needed to identify a few key components
in terms of what are what are the
biggest problems what are things that we
wish we had a little bit more variety on
were things that we just in general see
the most so we went through and
essentially gathered a list of the most
used textures and material files in the
game
we worked with an environment tech R to
identify and out of that list what are
the most important targets and what to
hit first so at the end of uh I think we
took a week to figure out essentially
what we wanted to do and our list turned
out to be mostly roads sidewalks
rooftops were the big ones and then
buildings like for the brick how to get
more variation on that without having to
have someone go and are everything put
decals on every single little corner
just to get a little bit of writing and
these fortunately were all great cases
for the blend shader which we could get
once again you know they could either go
and paint it could either be generate
from Houdini or we let a 3d texture
handle the heavy lifting and do the
blending for us so that meant that we
had to work very closely with
environment art because I when I came on
at this point I was the only dedicated
texture artist for environment so that
means really sorting through and making
sure that when some request comes in you
know exactly what someone wants you know
how it's going to be used or where it's
going to be used to prevent
you know the back-and-forth of I was
expecting you know this rock to be three
times the size I didn't want this to be
that shiny and you didn't understanding
what I wanted at all and then you are
just a sad person sitting in your corner
wondering why you spent 20 minutes just
tweaking that little slider just to get
that gloss just right and they didn't
even want a glossy it's no one in
particular it's just I got I'm just
thinking to myself but I've done this
I'm very sorry Matt I it's okay so to
speed that up making an essential abuse
trail at the time so making cards I had
very specific breakdowns of these
material requests helped a lot so large
medium small feature call outs
references descriptions they've really
helped align expectations of hey this is
what I want and for me to go okay here's
what I can get you and to help really
minimize the back-and-forth and also to
know exactly where it's going to be used
and how they would want to use it in
conjunction with other content so
whether it's not it's going to be using
a blend shader it's a one-off it's going
to be used on props or any other case
and here are some examples of brick
because everything every substance
artist needs a brick texture and I got
to make one for New York so I had to put
it in there but so like this was one of
the first things I got to work on it was
a great example of working with someone
small medium large shapes they knew that
we needed essentially you could input
any kind of pattern you know to kick it
out the grout and everything else would
work with him and to focus on specific
features within the brick to sell the
area that this was being used in a lot
of this stuff ended up being used in the
docks and areas near the water so really
kind of made it gross and nasty and we
go back and forth collecting references
to make sure that it felt grounded it
wasn't too gross and that it worked well
with some other texture sets that we
used within the blend shader here is a
ceramic tile that we also used inside of
feasts and a few other areas the same
thing making sure that someone needs
a specific look for this guy we ended up
using this also with the blend shader
blending against itself using just a few
different HSL controls and some gloss
changes and it looks like it looks far
more complex than it really is which is
you're just kind of faking people out
just touch a few sliders and it looks
like there's two different texture sets
which is ideal because you're saving
time and resources and then dirt because
every one also needs a giant ball of
dirt this was also another one where hi
map and normal intensity changes in the
image the shader really helps sell the
you know kind of back and forth like
it's been stepped on here it's not
stepped on here there was a section
where the normal intensity was reduced
and that area you know like people were
walking on in they stepped it down that
gets a little bit more glossy and a
little bit lighter the darker and
rougher may be clumps of dirt was
definitely significantly rougher and so
just blame that once again against
itself really helped push get rid of any
sort of excess textures we got what we
needed and it was just you know it
removed any sort of excess and we
definitely need it to free up memory so
the next thing outside of those few
cases in the roads so rooftops and
buildings this was a tricky case because
it's very easy to have certain settings
for the 3d texture which was used
extensively on the rooftops and the
sides of buildings for it to work in
certain examples but not others
so going back and forth between
different scale buildings means that the
3d noise needs to be tiled more or less
when it's multiplied against the height
map to make sure it was reading
appropriately the vertex color generated
by Houdini was only used for roads and
sidewalks all the buildings and the
rooftops themselves were either
hand-painted in some cases or generated
by this texture the other thing that
should be mentioned is that the
sidewalks and the roads well we had
figured out that we were going to use
Houdini to do all the first coloring for
it for
blends it kind of became problematic
when we were looking at how does this
interact between our districts where we
wanted variations so specific asphalt
was found in Greenwich versus Hell's
Kitchen versus wherever else so at the
points of intersection we ran to a
problem where the material that had
three different asphalt in the material
the 3d Mouse waltz in Hell's Kitchen
vers Greenwich or whatever location
because I'm terrible and I don't know
what places actually line up in New York
so I don't know if that's the right
districts but it's just an example
they wouldn't align so when you hit that
border you get a gross seam so we were
trying to figure out what to do on that
case and the solution was every road
material within Spiderman shares the
same bottom most asphalt material so the
other two blends could be used for any
unique texture with the mean like rubber
patches you could have paint on it you
could have chunks of asphalt missing
those two texture blends were free and
open to use whatever you want and it was
used to help I didn't make an identity
for that specific district and then so
as you go towards the borders wherever
that was intersection in Houdini the
vertex could be faded out entirely so
that way it's the one texture that's
shared across all material blends then
here is asphalt asphalt balls everyone
loves the material balls is what we come
here for
and then so like these two examples the
other thing that was really cool with
working with designer is that a lot of
these are derivatives from one core
materials like rubber and our asphalt
pavements a lot of this came from the
same core graph and then with a few
quick tweaks you were able to go between
something that was relatively new
freshly paved to destroyed damaged and
deteriorated and then working between
those two guys because they share so
many features you could change the
specific ones that you want to make sure
that it's not too similar well making
sure they still felt grounded and that
they belong together
another thing that we found while
working on this project is the dangers
of
operating in a vacuum it's really easy
to get into looking at something at a
very specific lighting condition and
angle different application it's
marmoset you're looking at in the
designer viewport or a specific spot
engine you don't check it anywhere else
this means that you know you may think
everything's great eh okay but it really
doesn't work in other cases so the
constant validation level aka our acid
zoo it was we had it up and running but
it wasn't quite used that much towards
the end of the project and it's
something that we could have capitalized
a little bit more on and so working
without any sort of ground truth an
environment that you can confidently
look at content in and make sure that
hey if it works in here it would work
everywhere else and if it doesn't then
we need to go investigate that specific
spot that's being used in so working
back with Brian that we actually touched
back on updating the content validation
zoo and we started going through and
vetting all of our content throughout
that and this was done in conjunction
with a PBR validator which would flag
materials if their diffuse reflectance
was too high or too dark their specular
was incorrect it would at least be the
first line of defense to let you know if
something was wrong but the one thing to
note though was that just because it is
plausible like if it doesn't get flagged
something it doesn't mean it's
necessarily good like so there was a lot
of cases where something would be
supersaturated or too bright but it was
still within the realms of being
physically plausible and then we'd have
people asking well why doesn't this work
it's within our specifications but that
came down to you know more of aesthetics
an art direction so like I said it's a
first line of defense but it's not the
final say and it definitely requires
investigation to make sure that
everything is working all right
so when you give people and provide them
this kind of validation level they can
make more confident decisions and they
can go in on them their selves because
we're handing them all this kind of
content that we generate from designer
to make sure it's being used
appropriately so when you give these
guys the validator the acids ooh
and the ability to essentially vet their
own problems and figure out what is
working what isn't working it really
helps people make more confident
decisions it really gives them more
agency as an artist to figure out an
experiment with what you provide them in
the shader level and for them to be
creative and do what they do best and so
now into a designer itself this was my
first project being a dedicated texture
artist so it was a whole roller coaster
of emotions of learning new things
failing breaking things and breaking
more things and then maybe figuring it
out and so here's just a few things that
I walked away with from this project
that really helped me out a great deal
the first thing was when I first started
everything was an exposed parameter
everything needed to be controlled
everything had a slider and it became
immediately clear that this was way too
much and was overwhelming so avoiding
being two parametric was a big deal like
after we got going a little bit because
we'd be handing content back and forth
between people and if you want to make
any changes to graphs if those
parameters are exposed in the graph and
you delete that node you start getting
flags it starts to yelling at you and
unforeseen changes can occur so one
thing to do to remove all of these
essentially this huge list of parameters
is to combine a lot of them and that in
itself has a few different problems that
can be addressed so if you have say a
master control for someone like aging
and you want to work with a slider
that's from zero to ones you're being
clean one be you know gross this has
been left out in in the rain for years
and years and years you all control
multiple factors within that so the zero
to one slider makes sense it's intuitive
for artists zero is nothing one is all
the way but that doesn't really work all
the time if you're trying to blend but
tween some materials or say addressed to
something so in the image up there on
the right it is the function the empty
function control on a node where I'm
adding rust to steel and so at this
point in the graph I was unable to
successfully just use you know that one
parameter this year to want to control
that so what I did is I fed it the the
float that was my age master control
into a power function so it was no
longer linear saturated it and then used
that to drive alert between 0.79
important for two and all that was for
was just controlling the middle point of
a levels node and so at first when I had
hooked this stuff up was just zero to
one and it was linear it was essentially
the surface was becoming rusty and
disgusting at like point two while
everything else had not caught up to it
so you have to change the essentially
the curve of different nodes to make
sure that everything kind of operates
how you wanted to and usually that meant
working from the grossest stage of the
material back so everything once you saw
it like your end point like this is how
rusted I want my surface to be it was
far easier to work my way back and see
how much I had to reduce stuff to figure
out what that curve was going to be and
then apply it to each of the related
notes and materials embracing the
min/max and clamp options within
designer - this was something that was
incredibly helpful especially feeding
content to painter or to the substance
player or any other software that can
access the SPSA RS or just the reader
parameters within the clamps you can
essentially put a nice hard stop to type
in values which a lot of the times if
you've set something up to work in a
certain way and someone like here's my
here's my where I want to work from zero
to one and someone types in three
sometimes I can spit out some unexpected
results and so by embracing this you can
kind of make sure that you know as you
hand off your creation that you've spent
hours
noodling with trying to make sure that
it is as best as it can that as soon as
you don't hand it off immediately comes
back as like I typed in three and now
everything looks horrible and why have
you done this to me and it really just
helps like once again it's all about
enforcing confident decision-making for
anyone else who acts as content because
if you're not the one who's making it
then it can be a little bit difficult
figuring out the different kind of
options and what is and is okay to use
so putting in hard stops within the
controls themselves is a great way to
make sure that it stays within the
expected range that you've designed it
for and maybe set it up for and that
doesn't go off the rails within the
production of i-20 or did spider-man
spirit yeah codename so throughout the
entire project I would say probably I
think we ended up with over thirty
custom nodes generated over the course
of the entire project and a lot of that
stuff came down to a lot of repetition
things that we use all time noises
grunge's things that could be fed mesh
inputs so like curvature maps world
space position a lot of things that were
done time and time and time again would
then compress into individual nodes that
try to follow a standardized layout of
like you call the same thing like
intensity across all these different
nodes threshold opacity the more
consistent I was with these nodes
typically the easier was for anyone else
to understand immediately what it was
and by giving someone hey here is a
noise node they know immediately that
there's gonna be at least at random seed
there's going to be a contrast in a
position control it helps build a
relationship between you and the artists
so they know that hey if I get this I
know what I can expect I know what I can
do with this and it helps them figure
out what they want to do with all this
kind of stuff the other thing that was
done a whole lot within designer while
you're working through this especially
with the back and forth through critique
and whenever you got feedback loops or
notes
of changes was color keying frames and a
whole lot of essentially pins within the
graph that you could easily reference
and find areas that you use something
like a master control you used different
parameters that are embedded in the the
whole lists on the side and it makes it
very easy to not get lost and to figure
out where you had done some custom work
and to make sure that essentially going
back at some later point in time for
polish feedback or simply just passing
off the graph for others to use in a
different way is as easy as possible
because whenever you're not the one
who's making it it can be a little bit
obtuse as to how things were set up so
trying to make that as standardized as
possible with labels frames pins
anything like that they can help your
user easily navigate and work through
these graphs these nodes is always a
good thing and I think that is and we
have five minutes I was so concerned
about taking too long and I just
lutheran okay we have five minutes also
raqa
right before we do QA we also want to
say we are hiring and we are hiring
environment artists so if you are
interested you should apply and also
come by our booth at GDC in the expo
hall so we will be there a few of us
will be doing critiques the next couple
of days so if you want to get in contact
with us here are our social media and
emails that you can use for stuff and
you know it's just the three of us up
here but we represent a much larger team
and insomniac I'll wait for your next
video
and so we're really lucky to be up here
representing one of the best teams in
the industry we are super proud of what
we were able to do with spider-man given
that the time and the size that we had
and we hope you all enjoy the game so
and I think we're good with questions if
there are any hi my question is on the
side of your buildings you use like a
parallax occlusion I'm assuming like for
the interior of the buildings like you
had like some kind of offset is that
something they used for like the
interior side of your like skyscrapers
to make it look like an interior yeah so
for the parallax it's we didn't use
parallax occlusion for anything in terms
of like getting height depth out of
anything right for the windows yeah we
did use that before that for the cue
Maps did that affect like optimization
and all for like oh your game were is
its or something that your engine does
specifically well I guess my questions
were it was pretty cheap because we did
a bunch of them so and we were pretty
cognizant of it that'd be a question for
Josh yeah our principle environment
artist Josh Noble who is here and will
be at the booth later in the week he
will probably he's the best person
because he's the one who set that stuff
up cool thank you I was wondering how
long did it take to do a light bake for
the entirety of Manhattan and how did
you deal with seams and making sure that
all went smoothly I don't know how to
answer that it would take a couple of
weeks we ran into some issues later in
the project related to our farm which
actually made it all take a lot longer
so we had to be very smart about things
and start locking things down so yeah
theoretically a couple of weeks but due
to the problems we have later I it's
kind of hard for me to say for sure what
was the other one I'm sorry oh did you
have any issues with seams between like
tiles if the lights were split up that
way I know
I'll let Ryan answer this just a little
yeah okay so theoretically it shouldn't
be a problem if you're if where it would
become a problem is if you're out of
sync with how your baking different
tiles so if you are gonna render a tile
you need to render all of the
surrounding tiles as well again we had
some farm problems later so that could
have been whited that would have shown
up from time to time but for the most
part it shouldn't have I wasn't accusing
you of having I believe I believe you
were my question is very simple I was
wondering how you guys find the
reference for the New Year Street or the
mature yes so the question was where did
we find our reference yes Google Street
View just a lot of Google Street View
yeah I literally had Google Street View
on my monitor for years being able to
gift that stuff you know we would also
go find you know photography some of us
on the team did end up going to New York
during production so we were able to get
some of that but that was our main
source for a lot of creation was just
using Google Street View for stuff I see
push it Thanks
hello my question is what was your most
favorite aspect about actually crafting
New York for this spider-man game since
it's technically Marvel's New York and
there's like landmarks within the Marvel
Universe that you put in for this
specific rendition of New York itself
what was your just favorite aspect about
crafting such a unique universe for this
game I can name my favorite landmark
which is probably the one that I got to
work on this is the Condon embassy so
that was fun to do you know we changed
up like the Wall Street
bull was oh a lock jaw yeah it was a
lock jaw yeah so that's fun little thing
I know like dr. Strange's sanctum
sanctorum was a lot of cool stuff I
don't know if you had a fun time waiting
now yeah all the landmarks are a lot of
fun to light up and some of them I
didn't even know we're going in I would
just be playing the game and see it oh
my go I got to light that up so that was
pretty fun awesome thank you cool thanks
everybody
oh hi guys great talk
I was just wondering if you guys ever
think of future proofing for future
projects with stuff that you have here
or like it because some of it like you
know we're talking about sunset at the
beginning and how you I carry it over
onto spider-man would you want to like
carry over some of these tools to your
next project etc if they work yes
depends on what the project is yeah cool
cool that's it thank you everybody
[Applause]