Marvel’s Spider-Man, meet Houdini | David Santiago | GDC 2019

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] all right good morning again David Santiago principal technical artists and insomniac games working with procedural systems pipeline and tools starting to integrate more of this stuff into our tools so even more artists and designers can use it this so I for this talk I really just wanted any questions that you have about anything otherwise I'll kind of just run through the different procedural systems that we used on spider-man and and then and yeah or or I mean just through the whole thing just because I don't have it anything it's specific I need to say about anything but I can just talk really so if we did a lot of stuff so there's a lot that we can talk about I think insomnia games we're hiring so we use Houdini on all of our projects now and magyar for the first magic League title actually available on sale used Houdini at least to make these badges if you recognize that that stuff and it's maybe someone will speak about that at some point it's also being used in storm land oculus VR title which is being demoed at Yerba Buena Center for the Arts I think still today and I'm not sure when that comes out but it was definitely used for spider-man and there are a lot of GDC talks about spider-man these are the ones that actually mentioned mention Houdini use or procedural systems and there's x-ray a big Houdini user there these are more talks with mention Houdini and then that was that was my talk yesterday so I need to thank Marvel games and Sonia interactive entertainment you know for letting me do this and and having us make the game for them all right so so as everybody seen parts of spider-man at least played it who hasn't played it that's okay I probably haven't played your games either I do I don't really play many games I like making them so I could show a little bit of video so pretty much the open world of the Spider Man was at least initially procedurally generated so the ground buildings placing all the trees all the props creating the traffic Network the pedestrian network all sorts thing placing the crimes placing vignettes so if you see you like there's an accident or people being arrested there's a little vignettes that they turn on or off at different times the mark-up that spider-man uses to swing first traversal that's all procedurally placed based on buildings and other things all right so I'll talk I'll just give it an overview of all the different procedural systems so the ground system so streets sidewalks grey spaces we're all generated procedurally that's pretty much the the majority of the procedural modeling is shut is the ground they were a few other things are procedurally modelled but the ground is a completely procedural thing that's in the game the buildings so the buildings there we instance models from building kits do procedural systems for the traffic and pedestrian vehicle traffic placing crimes in vignettes placing props generating imposters and more so I will go over our our plant or like for here'sa Manhattan so the ground for Manhattan is generated by defining roads and alleys so once those roads and alleys are our place then let's just assume they're placed and done but as if you went to my talk yesterday you know that they weren't done until very late in production so the Houdini system pretty much for this makes roads kind of just like you can in the game tools now it's I think kind of the game tool stuff came from what I started on sunset overdrive and unfortunately I cannot use the game tools to do my roots because I was doing some some different things so just from these curves those curves they just have the information that say this street with and the road size and the curb height and the lane configuration and then it could go through and and generate the street and the sidewalks and and the grey spaces where the blocks aren't for the buildings and in also in conjunction with this was a ground modifier zone and these additional curves and volumes they would allow you to cut holes in the ground or put dents in the ground or change materials or do any other sorts of stuff to dig to the ground itself and then it would generate the ground yes yeah rows were seeded from hand drawing based on yes actually yeah not actual city data but there was a map that was drawn by the designers and they drew at drew several maps it was an illustrator and the very first version was in images that were ingested by Houdini and I would read that image and I would generate where the streets were and where the and then I also they were color coded for building sizes and I would do over four varieties of sizes so then I would put in buildings for that and then design would play through and suggest with that just with the block stuff they would play through and and then once we got to like okay this is starting to feel good then I just turned that stuff so that was just primitives and curves in the editor and then no more image processing from in with Houdini anymore because it just didn't make sense because we're gonna be authoring everything in the editor after that so there was a just probably a couple months where I was you know reading those images in generating those there's block outs for the designers before as soon as it was in the editor and they were using and moving curves then I was already starting to procedurally like pop make the buildings with their instances and stuff so yeah how did you resolve intersections no it's all everything is custom so all of the roads are organic and custom and it's just so you pretty much take those take those curves and you sweep along them with a line of the right width and then you end up with all these polygons all over and then you kind of stitch those together into just the strips of road that all I mean including the intersection geometry all right so it says you're kind of like you're taking the block inside of where the you know inside of the sidewalk block and you take those and you can just pretty much cut holes through a big grid and that'll leave you with the streets sidewalks in the streets and then as far as what is I mean what part about handling the intersections the shapes or the earths was just about making the streets in the first place not not like you v's question or anything I can talk about that as well okay so for the streets themselves based on you know laying configuration and such along the straight sections of the streets they actually were you read and I had a bunch of vertex colors driving things like puddles and things like that yeah puddles where things like that were procedurally vertex painted in the model to reveal that stuff in the material and then in the intersections because old Sydney of all these roads crossing each other well what are your UV is gonna be like so we actually just transitioned just to a world space material under the crosswalk is where that transition happens I know we translation to a world space material in the in the intersection so we do have I mean we do have a way to decide and we want to say I want this street to be the dominant one and it's and maintain its you visa cross an intersection but that only works on a 4-way intersection we have a lot of five and six and crazy ones so in a couple cases we did maintain because of some skid marks and things that we want to preserve through an intersection we just maintain a dominant one but in most of them it goes to a world space material in the intersections also when every every single district has different materials for the streets and for the sidewalks and since tiles span different district districts that means that each of those has to be cut up in those in the different pieces where it would decide and any like you don't want a street to change material right in the middle so you kind of figure out okay where do I transition where is this block in a different in a different district all right so yeah so yes no no no problem that's I just totally want to answer question because you said that correct your final street layout he didn't actually fix until quite late yet we locked the street layout in late January of 2018 and Yost mentioned I think that the procedural generated is kind of the basis for so how do you go about you know artists adding kind of their own bits and pieces to the world when that world can then you know the layout to change and get receded regenerated so we could tag their work in in various ways so some of its automatically tagged by the tools saying who changed something last and the other ways are based on just just other metadata so say like a naming convention where they could it could tag that it was it was edited but it was actually easier just to put it in different containers so and it was part of their workflow that's like Oh once I finished this this goes into a group and I know that not to edit those groups or procedurally out of those groups or if I need to proceed you the editor around them I will keep that group and then I'll put it back in and then I I always have override modes so sometimes I do I did have I did adjust things that were hand authored procedurally I realized then to match the ground and and buildings and stuff yeah yeah there they were there was kind of possibly to do anything you could override anything in any scenario which is why the network's got a little bit crazy so pretty yes so pretty much for the ground the way that the ground was solves is creating creating the block and then creating those roads strips and then as I mean this was exactly how I did on sunset overdrive so if you saw that presentation which were I went to excruciating detail that it's it's pretty much the same this didn't there was no elevation actually in any of the streets in Manhattan when we got to the once we had laid everything out and we're turning four all right do we want to put the we wanted to put elevation in as you were going up north towards Harlem but then because we Central Park was being done by hand and and other other things as far as figuring out the markup and metrics we decided not to put any elevation in the island at all so that we wouldn't have any integration issues later so it's a little sad since my system can do all sorts of crazy elevation but I actually ended up just stripping that completely out so they wouldn't accidentally get any elevation added so he has so when we proceed you driving at the ground all these different things like the crosswalk so this crosswalks are actually models they're not decals right because they have to custom fit onto the onto the streets and around the intersections so those are boolean doubt models if for every single crosswalk and then the street lines themselves are also models with materials on them it was also it lowered our decal count right we only have a certain allocation for decals and we want the artist to just be able to go crazy with decals so I don't do that I generate these models and these models are rendered as decals so the buildings themselves initially I populated the world with a lot of just blocks for the designers to kind of figure out high heights of buildings and what felt good swinging and then eventually designers would go through and they did their own block out using primitives and these polyline volumes so so they could just draw polygons and then extrude them in the in our editor to give them height and then stack them up like blocks like this and say okay this is what I want the building to be and then just start with they would automatically just randomly get a an architect for a building kit and we started off with first of course the first building kit was just called the generic building kit and that's where we established all the different pieces that could be used by the system and then we developed there were five others that match the that matched all the metrics and had all the same pieces and so pretty much the whole world would get populated with those five different architectural styles to begin with and then people could you could the artist could determine to say I want this architectural style in this building and so as the artist went through and they would re modularize buildings they'd say oh I'm gonna change this feeling with different political volumes and then say but I want this one to be I can't remember that old old-fashioned brick or whatever the different styles are I can't remember now so blur and then it would rebuild that building for them and then later on they would hand modify the buildings so they could say this this building was maybe they added all that stuff on the top they would do anything in hand modify it and then this procedural system would only just add the procedural markup madethe add the traversal markup the swing hint volumes that if you went to Doug's talk today about traversal and sweet and how they do the swinging mechanics that's that's what it was all for so so the traffic system so pretty much I mean Houdini placed all the roads so and it played all the traffic Latorre the road layouts so it pretty much should know where the traffic is so for the pedestrians what it did is it put on each state Centers of each sidewalk avoiding alleys and and other places it would place volumes to populate the sidewalks put with pedestrians so it was that's pretty easy you know you know where all the sidewalks are let's just put volumes are there of a certain size we could also procedurally decide on what based on the district what how you want it predominantly populated with which which which kind of you know people construction workers whatever whatever is going on and then from the center of each corner we just drew a line and we would connect the net create a network of pedestrian traffic and then so from corner to corner and a corners across the street we created it's pretty much just lines and then we would integrate any hand-drawn lines so they were hand-drawn pedestrian paths for parks and plazas and things like that and those would automatically connected in the editor so what for that the Houdini work was all right how do you take all these line segments that are being created and then where they intersect you want to create that intersection point you want to separate segments and then in some cases you want to integrate segments so with the hand group so that's that's pretty much what all the processing of that Houdini did so a lot of a segment work and splitting and joining and it's and and then pretty much just kind of procedure you going through the machinations to actually instance out these particular volumes that are you to control the pedestrian traffic and then we would actually set the different phases so based on which way it was going on the street east west would have one phase north-south or predominately north-south would have another phase and that's how they would go follow the traffic signals and such and the vehicles have a similar system with lots of volumes in to populate the parking spaces again Houdini had we had a many many different traffic layouts or different Lane layouts and but we ended up using very few in the end because we just specifically want a certain style streets and in order to control the traffic patterns better but but yes it was like single lane with a parked car to two lanes a one-way street with two lanes and parked cars a two-way street two lanes in one direction and one lane in the other and with with a parking lane and then boulevards which were four lanes of moving traffic and parked cars on either side and and then a couple others and Houdini would choose that randomly to start with to populate all the different streets and then at some point the designers would say okay I want to stick with this particular style so we would populate that information in the editor so they could change it in the editor and and change the style so it worked really well we were generating traffic all over and over and over again and then an integrating hand authored stuff yeah I was just making the feel East city feel alive then the propping system the propping system Wood Street props just placing asphalt patches manhole covers skid mark stark so in the street that those bus stop signs which would get placed wherever a bus stop was placed they're not part of that bus stop prefab it would detect where bus stop prefab was placed whether it was placed procedurally or placed manually and then it would go back and regenerate the ground and put that decal in the ground so those and speaking of the bus stops those bus stops or something we call pedestrian prefabs so it's it's kind of a pop kind of a pedestrian item because there are actors associated with it and we place so those four hot dog carts subway entrances bus stops sign spinners cab hailers and those have to be placed in particular rules and they can actually get promoted into the pedestrian traffic system so if also there's a crime they can be promoted to be running pedestrians and flee from the crime or a thourough like waiting in line at a hotdog cart and you just stand around they people waiting in line to the hotdog cart will can be promoted to leave and walk down the street let's see so yes yes it also makes the curb yellow the fire wherever their fire hydrants it so the fire hydrants get placed after the ground is generated but then it has to go and regenerate the ground curb painting the curbs red and such yes my overall dependency was the turnaround bus stop when do they see all this stuff here and are you constantly building on your data just that like a big workflow issue yeah we're kind of constantly rebuilding there are people in charge of all these different systems so like the people who kind of manage that the ped prefabs but artists can place all this stuff as well and when they check their stuff in they it gets theirs different little tags when they check their work in that would appear to different people or to say hey this these are all updated for these things and then I would the procedural systems would run in some cases they had the artists themselves there we had a lot of stuff exposed in hoodia in a Houdini menu in our tools so for generating buildings they could regenerate their own buildings they could regenerate their own imposters they could redo the markup if they want to just markup I can't remember what all else cuz we kept throughout production we just kept changing what was available in that menu because at some point they shouldn't be doing certain things they did him anyway and yeah so it was it's just a lot of regeneration and which is kind of what the it ended up being everything in flux everything in parallel crazy dependencies and we have to and designing the procedural systems to handle that to handle hand authored work and handle all the different dependencies and try to split them up how much was it people only thinking pretty much mostly mostly people I mean it was just part of the process that stuff would be regenerated so every night pretty much every night we would generate a new cache of data from what was checked in so we'd have a current state of the world and and as it would reprocess and so I mean I as I reprocess it I would check if reprocess I would check oh is there as her bus stopped and added now and the subwave been added now because when they had a subway entrance it also has to go back and cut a hole in the ground or they move a subway entrance and so I would constantly go through it and harvest the subway data well which this that's all in our cache I could just go alright let's go where are the subways today where were they yesterday and I see oh these guys have moved I'm gonna reprocess that remove the hole from where it was cut a hole from where it is and yeah it was just a lot from a lot of craziness or you know and if it didn't happen yet someone would be playing the game and they've got like I I can't get in the subway entrance or and the thing is the and then the traffic has to be regenerated as well and things like that but yeah what's pretty much just we just continually reprocessed we could regenerate actually the entire island with everything overnight and but we were only did that earlier in production because as soon as people started hand authoring stuff it was more more surgical I mean it's still a lot of stuff but we weren't just gonna regenerate everything every night let's see we also did lighting we did lighting and audio so for lighting x-ray I had his talk yesterday as well and for lighting we placed lighting Gribbs and rioting grids and lighting probes excuse me and then we also went the lights on the street all the streetlights are all practical and then when they said hey the alleys are kind of dark can we get lights in there automatically went through the alleys and place lights fixtures on the on the buildings in the alleys if I could we couldn't find a good place to put that light fixture I just floated it in the middle of the alley and then put a big box around it and the lighting artist would go through and we told the lighting artist to do it not the environment artist because they were just go oh look at that why is that floating out there delete so lighting ours to go like oh there's a light I want and I want it here and then that and that's how they went through the world and so we yeah so it was one day they said wow it's really dark in the alleys and they came to me said can you do something about that I go ok and the next day there was lights in the alleys so once you know where lots of things are it's easy to add more of these features and then for audio we added the reverb volumes which is pretty much you have to figure out where the buildings are and where the open spaces are and and stack these volumes based on the on their type so it there's certain type of sound that's at the ground level certain mid level in certain higher levels eventually those upper ones were like what we don't really need those because hey we can just kind of go with a generic thing at that height and then we were also perceived we placed particular sound instances in different situations so I mean normally well most stuff it's like the sound is already built into a prefab that could be placed but if you don't want it active everywhere and you don't want to be controlling an actor to actually have it toggle on because you don't to waste those cycles then we just would kind of surgically place things and then eventually I had to create a lot of collision volume Audio collision volumes rather than a lot a lot of audio collision models for Central Park Central Park's materials kind of used a painted map in order to put the grass and the paths and everything and our audio system just takes whatever the material set audio tag is so all of Central Park whether you were walking on the grass or walking on the sidewalk sound like you were walking on grass because that's what our default setting was for the park so I had to go through and detecting what material was on different places from the texture I would went go through and detect what material was and then I would generate these collision models Audio collision models it would say nope sound like grass here sound like tile here sound like asphalt here and that was they were very happy with that because otherwise it has to be done by hand here's more propping so this is actory props and again and so the dependencies it's crazy when you're replacing all this stuff so it's a lot of chicken in the egg stuff and so you have to kind of decide what your weighting is so like how what's how much do I want this to be placed at how often do I want to place is this more important than this and then you kind of cycle through those to place everything but then someone will move one item or decide they don't want an item and you want to rebalance that so here in for this actory for putting the garbage everywhere they the trick was you want to look like there's trash everywhere but you also can't block any pedestrians or vehicles or missions or crimes so in the city it looks really full but it is very very procedurally crafted in avoiding all of those parts of gameplay so some areas it's like there's not really much trash there and it's like yeah cuz there's a lot of gameplay that goes on there may be people cleaned up in that area they were they were the only people who were healthy enough to keep cleaning but and then the blue the procedurally paid placed puddles that have been was not they wouldn't mention that at all until I can mention it now so the puddles are procedurally placed just based on the random seed or the randomness and the material that decides oh this is going to be wet whenever the it's a wet atmosphere and so the my procedural system I will actually drove it because it's my vertex color and so I knew there was gonna be a puddle there if it's going to be a wetness of a certain threshold so I would place these little these puddles and those are the puddles that when the that atmosphere was active they would have the ripples and splash in the audio so yes you obviously have a lot very complicated dependencies did you ever have the issue that multiple artists would be working on features close by and they would check things in you regenerates on that perceivers member right and you end up with conflicting side baths with none or with conflicting squid oh yes yes of course of course so so the the system as it perceives you went through which would try to assume that if it was already there we probably it's probably good but first we'll validate is it still legal like did they move something that now this can't be there yeah a lot of artists would also work with not all the zones on so they wouldn't realize that they've moved something that you know there's a sign spinner guy there you know he's gonna be spinning a sign and you just moved a trash can where he's standing it's like that's why I didn't put a trash can there so I would validate so this pedestrian prefabs had higher priority than things like trash cans so I was I would go at the system would go through I the system would go through and and it would be you know assuming everything's right and then go through and match against the dependencies and that it had and the rules and say oh the why they put that trashcan there it doesn't belong here and then it would it would delete it or move it to pretty much you want to try to move it to a proper location first so as the system goes through it actually calculates all the possible locations for every single item and then and then it distributes based on those locations and next dependency does the same thing so you know it'll if we were doing trash cans first well you're gonna get billions of legal locations for trash cans if there's nothing already placed in the city and then now that you've placed your whatever two trash cans per block now those other spaces are available for everything else but yes there were there you're constantly happening so we'd be the validating and Riaan placing something artists would wonder hey hi did this what I did it go away it's like because you weren't you shouldn't have put it so then it took a little while for people to understand what everything that was happening with the procedural tools automatically replaces it depending on what it was so that's the thing we want to we don't want to delete something unless we're sure it's never going to work because we want the otherwise you'll be deleting lots of stuff and then the game will be and feel empty and then as far as nudging stuff into the proper location that's where we want to try to do first so we're gonna maintain the density that art or the procedural system was looking for so we try to nudge it into place and then if we can't nudge it into a place that we know is appropriate then we also get flagged and marked yes how much was there a need for you to be able to see the city with buildings and approximations in Benigni as well or was that mostly just the road seeing no we we could load everything into Houdini and we would load different approximations of what we needed so we could be always load in the imposter models themselves to give us rough ideas the building's we also had volumetric data for those buildings we had point clouds for everything we had every instance the point clouds for everything and then those point clouds when we read them in they add bounding box information so we knew extents so when you're placing something you we could really do besan oh look it's a big pot of points what's placed there and then this can't be placed there because he has this volume size so he says in kind of exclusion area and and that's how it kind of would work through a lot mostly with point clouds and then in and then otherwise kind of simple building geometry that was generated for imposters or if it was a like say was a mission space so that it wasn't being an impostor because it's only active at that certain time we were just load all that in I mean come right from the distal three year round sure when you agree together it's procedural data every day or you have to manually do some sort to export from your editor to get those on cloud data to nothing they didn't have to do anything from the editor it just read it right from our our file formats yeah so that's I mean the very first things I did when I got rived at insomniac games is I have to write all the converters to write convert all of the insomniac scene data and model formats and animation and get it into Houdini and then be able to write it out again and then they keep changing it and I've ER able to catch up so but I actually I just added additional support for how our models are done for act storm land so I did that of earlier this year because they're beautiful generating models and and reading in miles with Houdini and they need to have this this is kind of some newer data that we keep in our storm our models a lot of data interchange so this is a the imposter system so the Impostors are just a low-res models and so we used to need to make those the low res model for an entire building so entire buildings made of all those different instance pieces or we take the lowest LOD or actually stored in our models we had some special abilities that only Houdini would see and then and it would use those and x-ray kind of show this in this lighting talk yesterday as well but it would take those combine them into a simple model a low poly model and then that's what we get sent to the imposter system which would then project the appropriate textures onto it and then that model would get reprocessed that simple model would get reprocessed and compressed for the imposture Atlas and imposter rendering crimes so yeah we placed there were 29 different crimes that were procedure the place and 25 vignettes they were procedurally placed and so this is where the crimes and had higher priority of placement then props because we didn't want to block a crime with a prop that should be there all the time and the crimes had crazy rules that had to be followed so things like the jetpack crime where it's like I want a place I want three rooftops each would that are within 340 meters of each other and within 20 meters of height from each other and they each have 64 square meters of combat space and then they I have to be able to connect them with navigation curves and and clues from roof to roof and from those rooftops to the sidewalk or alley that's next to them and so the system would have to find those all in the world depending on the priority of the crimes and different crimes are in different acts but so it's the prior to priority of crime placement would find all those city all those legal places in the city and then distribute them to the appropriate density and then and then go in it would actually process through and then it's like okay for this other crime now I can't find enough rooftop spaces so what if we change the priority see the other one will go first because this one actually found more of this you know so you kind of had to figure out what the weighting was what the priority was in order to get these placed so that is a pretty tricky problem kind of a chicken the egg sort of thing but based on the waiting's and the densities we ended up populating the world with plenty of crimes more than three thousand crimes and more than three thousand vignettes so when you actually play the game there's only one of each one of each type of crime in each I can't remember exactly how does only a few types of each crime within a certain area of the game so when you're playing it those are that was become active you know crimes come in and they if you don't go to them they go away but if you actually engage a particular crime and at certain area that crime won't appear in that area again so there are lots of crimes that because there are place everywhere that you just never see because you've already completed one of those types of questions so here's kind of the crime placement this is a vignette placement so what it looks like in the game it looks like that so they're arresting this is can arrest vignette and then what it looks like when it's placed in the editor are these guys and so you can see in the background there's more of those been yet so this is a had an overhead a shot of this of this you pretty much see all those placed everywhere so in in Houdini I would actually just see boxes of where you know these are these types of crimes and these types of crimes and I see how they overlaid on top of each other because you want stuff to be in various places you know unless it absolutely has to share a space and then and then it messed with you know some seeds and stuff or or other dependencies to push things away from each other and then in the editor I would load it in and I would see all of these things and if you could not load more than like two crimes owns at a time because there's just so much in them so after these crimes are vignettes replaced then they would be handcrafted to kind of move people to the appropriate spots on the spaces so in this case they would maybe move those thugs closer to a doorway or closer to you know something where they're being you know handcuffed or whatever so for crimes the same thing happened so the crimes would get placed out in the world and then they would be hand modified but as we got later and later in production and more things changed and more crimes had to be moved around it was running out of time for them to do all that hand work so we said well that's making the procedural system a little more smarter and so the procedural system started placing breakables and throwables and spawn points for the for the crimes and then we were tagging the stuff that wisten we didn't think was going to work so that it could be hand modified and then what we did with with a lot of things as we put them in an inactive state they so wouldn't spawn or wouldn't build unless somebody actually went through when they they said yep this is good so so is if you actually look at some of these crimes with breakables and throwables where they're like on a crowded rooftop there'll be there'll be a pile of stuff right in the middle of the crime that I couldn't figure out where to place it because I'd already placed a bunch of other stuff so it just sits right there in the center of the crime but it doesn't builder or into the game but if a designer went through and played a crime and said hey there weren't enough things in that crime they could go through and say oh these guys are left and they could move it move it to a appropriate location so this is a my finishing up slide so Houdini was magic and it's a critical part of our our original plan and it was vital to all the new challenges and every department relied on it including animation but they didn't know even know about it today what they don't know doesn't hurt them and yeah you should if you don't have procedural systems in your projects you should see how they can get them onto yours get to get it to help your project out and thank you for coming [Applause]
Info
Channel: Houdini
Views: 42,989
Rating: 4.9515419 out of 5
Keywords: gamedev, game development, video game development, procedural gamede
Id: D0ERCi9mMZg
Channel Id: undefined
Length: 41min 42sec (2502 seconds)
Published: Tue Mar 26 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.