Game Development Tips and Tricks | Luiz Kruel | GDC 2018

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
everybody this is Luis from side effects and in this video I'm going to talk about a project that we built for GDC and some of the tricks that we developed throughout the course of the project so I'm going to start off by giving a brief overview of what the demo was about we called the brimstone as in fire and brimstone then I'm gonna quickly go through some of the core components like terrain modeling texturing optimizations and then Q&A will be in the comments so if you have any questions feel free to ping me on those so for GDC we basically wanted to do a game and we wanted a demo but instead of doing the traditional diorama type of demo we wanted something that was playable so we could solve for design constraints we wanted it to be Houdini first so we wanted most of the assets to be generated inside of Houdini or basically the core of the pipeline obviously ran through Houdini we also wanted it to be a central presentation or a central demo for all the presentations which this means is that you'll see some of the other presentations also gather some assets from here and this is just a simple overview talk we only had half an hour for this booth talk so the we're probably gonna do a lot of deeper deep dives into this we're thinking about doing a webinar but definitely will try to share as much as possible if you have questions or you want to hear something more about what we did please let us know and we this was a partnership with quick cyl so we were very excited to work with them they gave us access to their mega scan library which we use to do all of the texturing in the game and then near the end of the project we actually got one of their lead artist Victor to come in and do a lot of the Polish pass which was really invaluable and made the the project looked that way it does now so this is what the game looks like it's fully playable inside of unreal we're gonna make the executable also available so if you guys want to play it and see what it feels like the idea is basically a sci-fi racing inside and around an active volcano so we're demoing a lot of different things here from generating the geometry placing particles with Houdini engine generating crowds rendering things out with mantra dump some texturing fire generation you see everything that you see here is either generated geometry from Houdini or placed mega scans city in the background is actually using real-world osm data the ship is the only asset that was generated inside of ZBrush and you probably saw Mike Pavlovich a--'s tutorials on decimating the ship and kind of getting it to a game ready state so we wanted to kind of highlight that pipeline of getting high-res assets down into a game rez so here's what the game looked like in the beginning of the year so really we only had around two and a half months on top of our regular jobs to do everything and we started with myself and Mike Mike was also working on the Niagra demo they guys saw so was really for the most part me building out most of the world Mike came in and place the the fire embers and then did a lot of the fire and the this kind of smoky sequence in the the forest and then Paul came in near the end as well and helped us with collision and some of the gameplay assets and like I mentioned before also we had help from Victor with the lighting and some of the kit Bashi stuff some of the world building stick-ons that you see so all in Houdini and mega scans as I mentioned before so the real reason we wanted to do this we wanted to production test the tools we wanted to run into the issues that you guys are running into when you're using the game dev tools and the Houdini engine so we found a few kind of snags along the way and hopefully we fix them but there's a lot more things that this informed us that we want to be able to kind of try out and see if we can improve on we also wanted to generate a lot more game focus training material so things like generating a row or clipping through the terrain a lot of the these d stocks that we're giving right now and some more that we're gonna be doing throughout the year were the the kind of secret idea behind this game and we've generated a lot of tools for this and a lot of priorities of things that we're gonna be working on next so the main components that I'm gonna break down a little bit I'm gonna talk about the terrain the road generation the crowds some modeling and texturing the Vista background cities and then some optimization stuff that we did on the the kid path she mega scan assets so on the terrain you could do a procedural volcano and you're more than welcome to try it will probably just take a long time and it's a lot easier to just find something that you like and work with scan data or kind of high resolution assets or source material from the real world as much as possible and then you layer in the procedural ISM on top of it so all we did is we found the raw satellite imagery from open topography org and then we use that as our base for our geometry and re Danish gives a really good talk on this gives a deeper breakdown onto the terrain system but I'm just gonna give more on the art side what we did so we start off with basically a whirly noise which will kind of give you a almost like a Voronoi cell shape to the the base of the terrain and then we added some high-frequency Perlin noise and this just so where there's no satellite imagery there's still some interest then we placed in the main volcano so we use Mount Shasta here right front of Center I wanted to break the silhouette a little bit of the terrain so as you're looking in the horizon line it was a little more interesting so we dropped in the Rocky Mountains on a couple of spots near the edge of the terrain and then I really wanted to do a canyon run where the the fours is on fire so we wanted a second Mountain so a second volcano right next to it after that you can see there's a couple of spots where there's some sharp transition so we wanted to smooth those out and the best note for that is the height field distort node so you can see here it's it's like a noise but instead of doing an additive noise it just does a warp on the height field and the nice thing here is that it kind of sets it up already to do some nice erosions because you can see it starts to add a little bit of those channels there you can see erosion will just kind of come in and smooth it out so the next step is erosion it's really noticeable on the bottom left of the image but throughout the texturing process that's where it's really notice about the erosion another cool trick that re came up with was where the lava we tried a lot of different things for generating it and trying to art direct it and it ended up that the best solution was to let simulation take over so instead of going in and painting where the lava flow should go or try to build it out with geometry just leverage the erosion model which is essentially just rain falling down mountains and we just chose to localize where that rain happened with masks so because with Houdini you have full control of mostly everything at a pretty low level the erosion model is no different and the idea here is we just drew a mask and selected where in the world we wanted the rain to happen and that just happened to be the top of the volcano so once we let it rip a few iterations you get a nice mask that you can pull out and generate your geometry from and what we did is like you can see here we actually generated almost like a decal geometry for the flow and we just use the Alpha as transparency of course and what we did is also because the flow actually gave us slow direction we leveraged that to drive a flow map shader so here you can see the lava is kind of this lavas flowing this way this lavas flowing that way and instead of having someone manually paint we can just use the simulation data to generate those maps for us which was invaluable and I again we trying to get this done as fast as possible so I'm stead of going in and manipulating those things by hand just like procedural ISM help you another area where all of that data can kind of come into hand was texturing so you can see here on this image on the top left is where the flow erosion really comes in so we can actually pull the debris masks and get really really nice channels that we can use on the texturing bit then we can do things like getting the slope which will give us where cliffs are at one point we wanted to look into doing maybe icy peaks on the top of the mountain so we can pull based at masks based on height and then we actually can pull peaks and valleys to basically do kind of like a stippling of where we want pores to be so here's a mock-up using cops so copses are compositing network and we just did a mock-up of layering all of the different masks together to see if we can get something that looked decent and we're pretty happy with the result but we didn't want to go down that path of single diffuse map for the whole world so what we did is we exported the same kind of feel of the map but as masks so then we can use mega scan assets in engine so this is what it looks like with the mega scan assets before it has any other kind of kit Bashi Rock stuff so this is just a pure terrain with some tiny textures on it and this is the kind of foundation of what we built and again if you want more information here check out our e stock he goes way more in depth on the the Hydra fuel system and how you can achieve some of these things the next thing that we did was we added a new node called suite by geometry just coming soon and the idea here is in Houdini is fairly easy to sweep curves along curves but we wanted to sweep geometry along curves so what this allowed me was the model these really simple little modular kits but then I can sweep those on longer curve you could do this with blueprint but the one thing that I wanted to try to do is actually add banking so because this is a racing game we didn't want it to look like a flat road like it would look if you just sweeps it I'm using blueprints so we did a little bit of banking so we did a subtle banking at one point we could control the amount of banking on the curve but that felt like overkill so this is what extreme banking will look like I think we ended up somewhere in between the two and this is just using a box so we're basically sweeping a box along that's flying so you can see how you can get some pretty nice results and the nice thing about the banking is that it's done completely procedural so we know if the curve is bending left or right and we can basically twist it along the curve or towards the velocity of the curve if you guys are interested in more of this and we can make those nodes available and those team files available so please again on the comments let us know another trick that I wanted to try to do was crowds so we have a lot of nice impostor tools but I wanted to try something faster we're just blasting through these and we pass them by really fast so I wanted to try to do an old trick where we just render out the actors using mantra and and just play them out on a card like a flipbook so I render out the image sequence of just our stadium crowd we render out the diffuse map and the normal maps and then I assembled it again on the cops using the mosaic node and that just gives us a flipbook like you would for your particle systems but you're using them in the crowds and then to actually place the cards we also wanted to do that procedurally so the stands were generated using Houdini and curves so I already had some information on where they should be placed based on the stand geometry so what I did is I took those polygons extruded them straight up so those edges so those loops and then I boolean the rows against them so I didn't want the characters to be placed everywhere and then I just did a for each to where for every single face I slid them along the tangent of the curve a little bit I gave them a random color which is essentially what's gonna be their jersey colors and then I deleted in any of the kind of malformed primitive so if something was kind of half bully and I basically deleted them if they've had an area that was smaller than I wanted then I give him a little bit of variation to on size so some are a little bit bigger so I'm a little bit smaller and this is what the cards look like inside of Houdini and you saw in the previous slides what they look like in game and the nice thing about doing the system is that we had the grandstands and one half of the level but we wanted to fill it in another area that was kind of dead so because the asset was procedural we could just literally almost copy and paste it we just made a new asset and then we just give it a different area of the curve to be a part of so now we had a whole new grandstand with growls everything placed for free which was really really nice another aspect that we did was modeling so this is a trick that Scott Keating showed last year at GDC and I wanted to take it into a production asset so the idea here is basically you just do some basic extrusions on box but then to generate the detail we're using the boolean from Houdini 16 to cut in those extra details so instead of me having to deal with like making a case circular and trying to deal with all that I just may - Bandai shove it through it and now I'm working at a high resolution asset as opposed to kind of having to deal with the minutiae of the the edge loops and then to generate the edge where this is a really nice trick as well where you can just do a really noisy greedy version of the jersey barrier and then you basically boolean the two together which will give you an edge where we're gonna release the files for it I think Rob did a presentation where he kind of goes through the individual steps of building this up and he actually goes through and shows you how to do a wedging operation to basically generate multiple variations of this asset very very quickly so the nice thing about keeping your procedural is that you don't only have this one asset if you wanted to do different levels of where if you want to do different types of noise it's very easy to do that and then we also did the texturing use again mega scans and we just did this in cops because it was a very simple material replacement so we had some vertex color that we wanted to just replace with some tiling textures so we did that all at cops so the nice thing is as the geometry gets updated the materials also can get updated so that's one way of doing the modeling is basically just doing this kind of kit Bashi deletion and additive modeling using the boolean s-- the other way is using decals so we had the sci-fi Bridge than we wanted to do and it's very lots of little noodling details and I didn't really want to do that with just bullying's because the geometry would get really really dense to show some of the little screws and I wanted to show so I did the traditional technique of decals so we have this new tool called a decal projector which helps you place all of these hundreds of little decals fairly easily and on a non-destructive way so here's what that looks like the idea is fairly simple you just have your input geometry that you feed into the decal projector and they'll give you a little plane that you can manually place and see what that would look like you get pretty fast feedback so as you change the underlying geometry the decal updates itself which is really nice so instead of having the decals being the last part of your operation you can have them be purely early on and in this case we only have a height map that we can convert to a normal map in side of cops again and you can kind of play with the strength can turn it inside out and turn in using the inverted height as ambient occlusion so instead of having a separated map just for a mannequin you can actually just use the height for that and you generally works pretty well you have different controls for clipping and how far you want to project it works really really well and the nice thing is that the Baker was updated to respect these groups or these floaters so when you bake them you don't get this weird normal fighting or any immune occlusion where the floaters are kind of casting the occlusion onto your base object next we have our vistas so for the background I wanted to do fairly simple city I didn't want to spend too much time on it modeling it so what we did is we have this OpenStreetMap node inside of Houdini and what OpenStreetMap is is a online database much like Google Maps where you can basically download map geometry and it's just an XML file so we have a little tool to load that up once you load it up you have curves for all the streets and building footprints for where the building should be so what we did is try to bring in a city from Guatemala that was next to a volcano so I thought hey would be cool like there's a city that I know that is next to a volcano so let's bring it in but the problem is that it was much like New York where it's very much grid like and because I was putting it on kind of arbitrary terrain you could see the grid really not work very well because if a city is built on the side of a mountain it's usually more windy roads it's not very grid like so the grid like cities are more on flat terrain so I thought about a different city and Positano in Italy is one of those that's kind of the the hallmark when people think of a city that was built on the side of a cliff so what I did is I just took that map and I brought it into Houdini and you can see here is this is what Positano looks like and then on the top left is what the map looks like inside of OpenStreetMap and then on the middle is what it looks like inside of Houdini so now that I had a nice kind of whiny Road solution what I did was I just simply extruded up the building footprints I added some UVs on them to put a basically a tiling I kind of got fancy and I did some other tricks with adding vertex colors at the base of them to kind of give me a little bit of a glow for the the streets and I also did a cool trick on the streets themselves to make a kind of like a tiling texture that looks like cars I'm just scrolling texture of tricks that we did really long time ago but it works and it looks fairly convincing from far distance so now you generated this city fairly quickly I think I did it in about a day where if you were trying to do this by hand it will probably take you a long time and as I kind of wanted to do more upgrades I could basically change it non-destructively and I could make the whole city taller I could change the or this kind of line look like and it was fairly very great workflow and this that we actually just brought it in through FBX we didn't even have to use Houdini engine we just exported out as a regular static mesh and then finally after Victor came in and added all of these nice scanned rocks on the side of the road we started to just have a lot of geometry cruft just landing there because we had the terrain a lot of the geometry was just hidden inside of the terrain a lot of it was kind of interpenetrating each other so we wanted to do a clean up pass where we took all of these nice scanned data assets and kind of combined them together and clean them all up hollow them out so here's a breakdown of that asset so this actually ran inside of Houdini engine inside of unreal but I also could export out the geometry from unreal and bring it in as FBX is and this is how I develop the tools I just bring them in through FBX play them with in Houdini itself and then when it's ready I'll just turn that asset into a digital asset that can basically run inside of the editor so here you can see this is what the final geometry looks like versus what the original geometry was so you can see just a lot of rocks shoving into each other and we're actually gonna go into the asset itself now and see what we do so we start by doing a poly fill which caps the the hole so most of these assets are open-ended and because we want to boolean them against itself to basically hollow them out we needed to make them watertight so poly fill does the trick in most cases so now we removed all of those interior geometries which was the first thing we wanted to do we run a clean just to make sure that the geometry is good the the the boolean is super precise so it can generate a lot of small polygons so the clean kind of cleans it up then we take the terrain we run a thicken to basically extrude it along the average normals and then we convert it into voxels to make it a nice even topology then we boolean against the rocks so now we can basically figure out what's inside the terrain and what's outside of the terrain then we can kind of clean out the the terrain bits from the boolean and then finally we're adding some vertex colors based on that edge of where things are connected and the reason we're doing this is one of the feedback we got originally was where we had the rock sitting on top of the lava that didn't really connect so I wanted to do something where it kind of landed a little bit or grounded it a little bit better so here you can see what the vertex colors look like and it's a little exaggerated on this picture to demonstrate it but you can see how I added this orange glow to the rocks to kind of just make them sit a little bit and make them a little more crowded in the original geometry so this was a lot of different tricks we're really happy to share all of these files with you guys if you have stuff specifically it's pretty messy so we're planning on doing a little bit of a cleanup because these are just regular production files and as we make them available we'll make little videos kind of breaking them down and going through them with you so thank you if you have any questions just post them in the comments or just ping us in the forum you guys know where to find us that's my email is Louise at side-effects comm lui Z so feel free to ping me if you have any feedback and thanks for watching
Info
Channel: Houdini
Views: 20,333
Rating: 4.9478583 out of 5
Keywords:
Id: eawAPiUliPE
Channel Id: undefined
Length: 21min 43sec (1303 seconds)
Published: Tue Jul 10 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.