Making Massive Medieval Maps with Chivalry 2 | Inside Unreal

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

This is a list of links to comments made by Torn Banner employees in this thread:


This is a bot providing a service. If you have any questions, please contact the moderators.

👍︎︎ 1 👤︎︎ u/TBReplyBot 📅︎︎ Apr 12 2021 🗫︎ replies

I am so excited OMFG !!

👍︎︎ 8 👤︎︎ u/YuSaiNuhthing 📅︎︎ Apr 10 2021 🗫︎ replies

This game looks so good.

👍︎︎ 6 👤︎︎ u/Mikeyharp123 📅︎︎ Apr 10 2021 🗫︎ replies

map design was chivs strong point, hopefully they keep that going

👍︎︎ 7 👤︎︎ u/Newkker 📅︎︎ Apr 10 2021 🗫︎ replies

Torn Banner are masters of map design. I wonder if Chiv 2's maps will have easter eggs like in the first game.

👍︎︎ 7 👤︎︎ u/FreshPrinceOfRivia 📅︎︎ Apr 10 2021 🗫︎ replies

Im so hyped! We don't have games like this on console.

👍︎︎ 3 👤︎︎ u/MrGlass23 📅︎︎ Apr 11 2021 🗫︎ replies
Captions
AMANDA: Hey, everyone! Last week we wrapped up Unreal Indies Week, a celebration of indie teams from around the world. Make sure to check out the indie-inspired tales of finding funding, how your surroundings can impact your game's design, choosing whether or not to work with a publisher and many more. Pop over to the feed to explore these resources to help you on your game development journey. Previously we shared the news that RAD Game Tools had joined the Epic Games family and now, its industry-leading compression technology "Oodle" is available for free in Unreal Engine. You can start slashing your download times and get players in your game faster by pulling the master branch in GitHub - or if you can wait, it'll be integrated into the Unreal Engine 4.27 binary. April's free Marketplace content has arrived and it's no joke! Adopt your own German Shepherd, scale up with some fin-tastic fish, give them a voice with a plethora of sounds, snuggle up with some purr-fect cats, and keep them safe in a brand-new modular home. Download them all from the Marketplace! Volume 2 of the Virtual Production Field Guide is now available--this resource for filmmakers offers a deep dive into remote collaboration, visualization, in-camera VFX, and animation, in addition to insights from creators who have embraced the craft. Download it for free from the feed. If you haven't seen them yet, new Unreal Engine forums have arrived as the first in a series of updates coming to the community. The new platform boasts a fresh coat of paint and the upgraded experience features better search and discoverability, performance improvements, more customizable preferences and notifications. We hope you jump over, try out the new site, and share any feedback you have for us! NVIDIA GTC is on the horizon! Join the Unreal Engine team April 12 -16 for an action-packed schedule of presentations covering the latest developments in real-time visualization. Head to the feed and take a look at what's on the agenda. With the world coming to a standstill, BMW shifted to an immersive, multi-format digital event to unveil its next-generation of vehicles. Go inside the virtual production and discover how this new approach allowed them to reach their global audience. Now popping over to our top weekly karma earners. Shout-outs to: BamaGame, ClockworkOcean, Everynone, GrumbleBunny, LunaNelis, Nightjass, T_Sumisaki, Nachomonkey2, Pierdek, and mightyenigma First up, we're featuring the Epic MegaGrant recipient ABERTHOL, a contemporary ballet feature film created by the Renaissance Dance Theatre Company. Watch the complete trailer of this fascinating piece, then take a peek behind the scenes at renaissancedance theatre.com/aberthol. Play as an imp, created by the sun's last spark in Imp of the Sun, a handdrawn 2D platformer, from Sunwolf Entertainment, where fast-paced action meets a Peruvian-influenced artstyle and soundtrack. Follow the game's journey to its upcoming release, on the Epic Games Store. And last up, DayDream is a stylized narrative platformer, created by the small Russian team Frozen Line. As Griffin, you'll be saved from the clutches of despair by your friend Birley and begin a puzzle-solving adventure. Wishlist DayDream now on Steam. Thanks for watching this week's News and Community Spotlight. VICTOR: Hey, everyone. And welcome to Inside Unreal, a weekly show where we learn, explore, and celebrate everything Unreal. I'm your host, Victor Brodin, and today we've invited a couple of developers, designers. From Torn Banner, please let me introduce Aurelien Larue, senior level designer, as well as James Arkwright, lead environment artist. JAMES: Hey, nice to be here. VICTOR: It's good to have you here. I mentioned this on my Twitter, but also previously, that I think I talked to your colleague Alex. E3 2019 was when we started talking about it. And I pitched, hey, I want you guys to come on the livestream and talk about Chivalry. And today, here you are. So I'm very excited. Hoping we're going to see a lot of cool stuff today. I've already seen a little bit. But I'm going to do a very little amount of talking, or as little as possible. And so I would like to hand it over to James. JAMES: Awesome, yeah, definitely a long time coming. And the game's been in development for a couple years now. So that's kind of funny to see those little interactions kind of come to fruition down the line later. So I'll talk a little bit about the studio, just to start, and give a bit of the context. Torn Banner Studios is located in Toronto, Canada. It's a studio about 35 to 40 developers, depending. And the game we're making right now, which is coming out in two months today, is Chivalry 2, which is a sequel to Chivalry: Medieval Warfare. It's best described as a first person slasher. And today we're going to talk about the art and design for our levels, which for Chivalry 2 are a lot larger. It's 64 players, these big team objective maps. So we're going to hopefully break it down a little bit and show you some of the workflows we've used, and how we've made some of the stuff. And we'll talk about level design, and art, and kind of touch on as many subjects as possible I suppose. Cool, I have the editor open. I guess I can get started. Anything else you want to cover beforehand? Cool. VICTOR: You're looking good on my end. JAMES: Beautiful, OK. Let me full screen. So this is one of our maps. It's called Red Helm. It's a team objective map. And what that means is that there's two factions in the game. There's the blue people basically, which is Agatha, and the red team, which is Mason. And they hate each other. And they're always trying to kill each other. So in this map, in this context it's the Agathian army invading this big Mason fortress. And you can see in the background here is this castle, which is the goal of the level, which is where the Agathians are trying to breach into. So you start off in this field. And most of the goal of the map is to push these siege ramps by walking along and fighting alongside them. And you're trying to push them all through this part of the map. I've turned down some settings because my pandemic work-from-home computer is not great. So I'm going to like adjust some stuff on the fly. So if you see my frame rate change dramatically, I apologize. But to give a better overview of the map and the size, this is one of our bigger maps. And this is about as big as it gets for 64 players. So you start off in this field, pushing these siege ramps. You're actually starting with these siege towers, which allow you to climb this wall. So you push the siege towers all along these fields full of burning rubble. There's catapults firing this whole time trying to destroy the wall. The siege towers back there, big, tall guys, they reach this wall. You breach the wall and capture the wall as Agatha. Once you've captured the wall you get to open this gate. The siege ramps come through and kind of set up position here. And then you burn down all of these Mason tents. And then you continue on to the city, pushing those siege ramps all through this huge like dense city. There's a bunch of branching paths that they take. One of them comes along here. There's more city in the back over there. And you push up to these walls of the keep. And this is where the siege ramps set up, allowing you to cross this moat. And so you go up this moat. And you get into this wall area. And you capture this courtyard. And when the courtyard's captured, you finally get into the keep. And here you kill the Mason heir. So all of that was basically me trying to set up that there's a lot to each of these maps. There's multiple different stages. Every objective, stage to stage, changes. So in the first one, the first objective is you're pushing something. And then the second objective you're capturing something. And the third objective, you're burning this thing down. And so throughout the course of each level, it changes a lot, at least for team objective. There's also deathmatch, which is just killing people. For the context of this, we're talking about these big, open maps, and how we've made them. I'm going to turn this back down and get some performance back. So broad brush strokes artistically for the level, we've tried to focus more on making large sets of things and dealing with these big environments, which means that we're not focusing on individual props too much, or slower workflows like sculpting and baking things. But a lot of our workflows involve tiling textures or trim sheet textures, which you can very quickly apply to a simple mesh. And it gives you the idea of something quickly. So when we're making things, we try to make a lot of them at a time. So for these spikes, for example, we don't just make a single set of these. We make all of these different variations of these spikes. And when we make this big, wood wall, we're not just making this one thing, and sculpting it all nicely and calling it a day. We're trying to make this huge wall that spans the entire level. So a lot of our artistic workflow is about using a couple of things, and stretching it as far as possible, and getting a lot out of the smallest amount of effort and resources, I suppose. I could take a look at some of these. Our mesh and material set up is really simple for a lot of the art here. If anything needs any more context, let me know. Hopefully this is fairly straightforward. I'll try to keep it not too or low level and try to land somewhere in the middle. The meshes are very simple and straightforward. It's just spikes. These might have been Megascan spikes. I'm not sure. It's hard to remember. There's been a lot of things that go into the game. So we have these spikes and this rope. And there's a little decal. Oh, that's broken in 4.25. You can't isolate it anymore. The tips of them are a little decal thing to give it more wear. But that's it. It's very straightforward. The wood material that's applied is literally just like a tiling wood texture left and right. There's no baked nothing. And some things we do sculpt and bake, and pour love and time into. But many things-- and this is like a pretty common game workflow-- you can get away with these easier and faster construction methods. And you don't lose any fidelity at all hardly, especially in a game with 64 players where heads are being cut off, there's catapults going off, and it's raining. No one is really stopping to look. They're just taking in all of the cool stuff around them. So instead of spending a week making one set of spikes, we spend a week and get 100 set of spikes. And then we can make a really cool level. One thing that we've done to various effect, hit-and-miss, is to separate these things out by-- we've leaned into these material IDs more. So you can see I isolate the rope. That's the rope material. I can isolate the wood. That's the wood material. And then we had the decal. Maybe it does work and it's a decal, and it's not showing. That makes more sense. But the idea here is that it's a little bit less performant. It's an extra set of draws to have another material on a mesh like this. But again, it allows us to work faster. And we can make up for it in other ways. And I'll try to talk a little bit about performance later on, and culling, and some of the lot optimizations and stuff we've done, which allow us to kind of push it. You could also combine these things into a trim sheet, which we've started to do more recently, which has allowed us to have more and more savings for our future maps. So we're kind of always trying to iterate on it and improve our process, and make things more performant as well. So yeah, that's just like a basic mesh. And that's what populates the vast majority of all of these levels. We use things like a landscape for the landscape. Shocking, I know. And there's the procedural grass in the landscape, which populates based on terrain layers. That's pretty much the extent of it. We have toyed around with the idea of doing like rocks or other procedural meshes in these sort of areas. But it's kind of nicer to just hand place those, I find. Some other things we've done, we have these like scattering plank masses and all of these rock piles. Doing it this way allows us to really quickly put down an entire group of a mesh real quick, and populate a big environment like this. Originally we had done things such as placing the rocks individually and converting them into instances, which allows it to be performant, and allows us to have a really granular control over the placement of things. But it's a little bit too much effort for the result. And so using things like these allows us to work way faster and to cover this huge area. Let's see if I can get a character for reference size. So that's how big a character is. So this first landscape area is pretty big, and takes quite a bit of time to get through, especially if defenders are holding it. We have this huge, awesome, like fortress, curtain wall thing. Basically built the same as those spikes, in principle, just with a couple of simple materials. I think there was a decal that goes along this interior space here. You can go in the interior of this where you fight a lot. Again, the same sort of thing where it's like a tiling wood material. And then we add things like decals, like this for variety. See, I could toggle it on and off, and you could see what it does. It just kind of adds like grunge. So most of our workflow is about trying to make it look as good as possible, obviously. But because the maps are so big, we're leaning into these ways of working fast. Just a lot of other games do. This is nothing super revolutionary, of course. We're just trying to keep it like fundamental and solid so that we can produce as much as possible, and keep pushing the quality bar. I can show a material, cause I think that comes up from time to time. So here's a material and what it looks like. I would open the master material. It's nothing super fancy to show, though. And I'll have to compile shaders because I'm at home. So in an effort to not disrupt the stream in any way, we'll look at the material instance, which is this. It has all the parameters. And you can just see, there's not really too much to it at all. There's like a detail normal map applied, which you can see in a preview window here. I can make it something ridiculous. And you can see, it adds detail normals. A very fundamental thing as well, which is used in a lot of games and places. There's a really simple texturing setup, which is just a color texture, an ARM texture. So ARM for Ambient occlusion, Roughness, and Metallic, ARM. And then a normal map is a very common thing. In any sort of like marketplace asset pack, you'll find a very similar setup to what we have here. A couple of switches for random stuff, using the detail normals. We try to keep it as lean as possible. And this particular shader is used on like 90% of the objects in the game. So we want it to be as minimal as possible. We have some other parameters here, like brightness. Hey! Even these things could be roped into the textures, and it would save a little bit of shader effort. It would just mean we have more textures to manage, and deal with, and produce. So in lieu of doing that, we do have some parameters to adjust them. We can adjust roughness, desaturation, things like that, which give us some different looks. One thing to manage, and we've had a little bit of difficulty managing this, but I think we're in a better spot now than when we started, is that it's really easy to go, and choose, and adjust the material in a way that's not compliant with physically based rendering. So you can get a wood that has a metal to it, which is impossible in real life. Wood isn't metal. So by exposing these parameters, it kind of puts the onus on art more to be careful with what they're making. And you have to check stuff. A lot of the time you'll be making this wood shader. And I want it to be like darker really quick, in the beginning. We don't do this as much now, but let's say in the beginning, and we just want to make it darker or something, or go for a specific look and dial it in. And so we give it a little bit of metalness, which you're not supposed to do that. So by having these exposed, we have to manage it a little bit more. But it does give us some more things to play with when we need to, which is often. Again, big maps. We're trying to cover a lot of ground. So when we want to vary materials, varying it in material instances is generally very fast for us compared to making a new texture or something. Yeah, there's some other cool stuff happening here. There's some simple particle effects on this burning section. This is where the Agathians storm this part of the town. And they try to burn down these tents, and this wagon and stuff. Pretty much anything red can be burnt down and broken. And for that, it's really simple. Basically just dissolve the mesh out and add a fire effect, similar to what you'd see here. So it's nothing too crazy. But it gets the job done and looks pretty cool. And it allows us to have this cool objective of burning something down. And it's really like a middle sort of objective. The bulk of the action of the game takes place-- or in the map, rather, takes place in this town. And that's where a lot of the art effort went into is trying to make this as detailed as possible. So you see we have all these little paper meshes, these like hundreds of rock meshes, little grass tufts and stuff. Just trying to cram as much detail as possible into it, little rock meshes that kind of like go along the sides of things to hide that seam. Without them, it looks very video gamey. There's this harsh, jagged line. And when you put it in, that line mostly goes away. So that sort of thing really boosts the quality. And if you do that everywhere, or as much as you can, the overall quality of the level goes up significantly. And so all of the detail that we can pack into here, we try to. It is kind of a push and a pull to manage the performance of this sort of thing. Let me get my details panel over. So when I selected this guy, it selected a bunch of them, right? And you can see that one is culling in and out, if I move back and forward on the camera. It's a hierarchical instanced static mesh you can see here. Which basically means is that the HISM, as it's referred to, is like an instanced container that controls the placement of all of these meshes. So we place all of these meshes, and then we convert it via this little-- let me see if I can get that going. We have like a scripted actor actions thing. And we can convert it to an HISM with a little Python script that was written. And basically what that does is it takes all of those individual meshes, and that makes one big actor. And the only thing that it retains is the transform and the location, scale, position, rotation of those meshes. So it converts-- I don't know-- 100 actors throughout this part of the level into one actor, which is huge savings in terms of performance. It dramatically reduces the amount of stuff cluttering up the outliner that we have to look at. So it's really good. It's just like a little bit more clumsy to work with. But we've tried to do that sort of thing where possible to keep these little detail objects in check. Without that, if like start removing a lot of these, you can see how it gets really empty. Like the bulk of the environment is still there, of course. But all the stuff that like adds detail and makes it come to life, when you take all of that away, it's like almost a completely different environment and a completely different level of quality. So finding ways to continually add these little small meshes, decals, and stuff has really added a lot to these big environments and allowed us to get away with a lot of the stuff we do. I mentioned decals just now. We use a lot of decals. They are not the most performant thing in the world, especially on consoles sometimes. So we've had to rein it in. I think we used to use them very liberally. And now we just use them sort of liberally. The decal here is like some footprints. And we just place a footprint decal. And it adds these nice, muddy footprints. It has very similar parameters to what I showed with the wood where you can kind of tint the puddle color, tint the roughness and stuff to make it look more wet, things of that nature. And we use decals pretty much everywhere. You can see, they're on the corner of this that turns this horrible, sharp edge into like a way less horrible edge. So yeah, all sorts of tricks and little things that we've used to get away with and to try to make it detailed. Pretty much everything, though, is constructed in those same ways. It's not like a very high resolution mesh. Where's wireframe? You can see like the individual triangles here. It's like pretty simple. Then the walls are like completely flat here. All of the detail comes from just adding these wood boards in a geometry, adding a decal in here, and adding some material variance in the material. And then when you layer on like this porch and like all the roofs, the chimney, this fire, the cart, all the papers on the ground. And the end result is very detailed. But it's really just a simple mesh operation that we've done like 10 times in a row. So that has allowed us to make all these different houses. It kind of goes back to what I mentioned at the beginning with the wood spikes, where we don't just want to make one thing and invest all of our time into making one thing, even if it looks really nice. We want to make like 50 objects in a set, and invest our time into making like a width of things as opposed to one really nice thing. I'll keep going through the level a little bit, just to touch on some of the other stuff. This is the courtyard that you have to take as Agatha. There's a hanging man there. Oh, no. The courtyard is in front of this giant, awesome castle, which is, again, constructed very similarly to the houses, the wood, and everything else. It's all pretty much the same fundamental sort of thing. I clicked on one of the edge meshes for this castle. We added these edges that really gives it more detail and depth. You can see I can turn it off and then hide it again. And it's like a pretty substantial amount of detail in silhouette of the edge. You can see this edge of it. It completely transforms it. It turns it from something that's very simple and not the most interesting, to something with a lot of character, all this broken stonework here. So again, it's an HISM, as I showed before with the rock, just like a bunch of meshes grouped together in a very performant way. We use a script for it, but you can do it with blueprints and other methods to do this. We do it less now because of the recent engine rendering adjustments that have happened, which kind of does a lot of it dynamically. We are seeing a huge benefit in the recent engine upgrade. We were on I forget what version, 4.19 or 4.20 for a long time. And now we're on 4.25 with some things taken or leave them. So the dynamic mesh instancing is like huge. It has allowed us to gain a lot of performance without having to do this, if necessary. We still do. This map was created largely before we switched engine versions as well. So we still use these techniques. And they're still super valid. And we'll still use them going forward in certain areas. But we're less dependent upon it now since the engine upgrade. And kind of every engine upgrade seems to have something like that that is good that we can take that makes our life a little bit easier in terms of art. We get a little bit more performance from somewhere or another. So eventually the attackers take the courtyard and open this door. We're now in this keep. The keep is really cool. Cause it forces all 64 players into this one, tiny, little spot, which is really chaotic. There's a thrown over here where the heir of the Mason dynasty lives. Well, he doesn't live-- whatever, he lives in the castle. He sits on the throne. And one of the players-- the top scoring player on the Mason team spawns as this VIP, as it's called. And their job to win or lose the map-- it's pretty much all up to them. And they just have to survive this last stage for a few minutes. And then if they survive, Mason wins. And if they die, Agatha wins. So it's a really unique stage, very similar to other games that have like hero characters that the player can play as in a multiplayer setting. All of the focus, though, is just on one person for this, though. So the whole team tries to crowd around and defend him. The whole attacking team is trying to do anything possible to kill him, like throwing fire pots at him and shooting him with arrows. We have these destructible. So up here is a chandelier. And you can shoot the chandelier, and it falls down and shatters into a bunch of pieces using this cool system that exists in Houdini, which basically simulates the fracturing of an object, and then allows us to import it in a couple of different ways. I can actually-- a little bit easier example of that is back here with these mantlets, which are these like shields on wheels, which just exist to basically protect the player character from like archer fire. So I'll drag in-- this is just like a skeletal mesh with the animation on it. And see what happens. I'm just dragging the timeline to play the animation. And so when you break the mantlet by striking it enough times, the health reaches zero, and it explodes. And this is all done in Houdini. You can see, it's just these different parts of the mesh. They're all detached and separate. And we try to keep them enclosed to prevent holes being seen by the player, of course. And basically what happens in Houdini is a little explosion is spawned in the middle of this mantlet, kind of like where the cross is. And all the parts just fall away with gravity. And then we take that simulation, and we import it into Unreal as either a skeletal mesh, or as a rigid body vertex animation material, which is kind of a weird concept. It's starting to gain more popularity. I'll see if I could find a good example of it that I can demonstrate. Which will take a minute. VICTOR: Got plenty of time so far. JAMES: Sweet. There we go. There's a texture in question, once it loads. Which is slow because my computer is slow, apologies. Hey, there it is, OK. I'll turn off the alpha. I can turn off every channel. The vertex animation texture is baked in Houdini. There's a lot of good documentation on the internet about it, if you would like to deep dive in this sort of thing. It allows you to take a simulation from Houdini and convert it into a regular static mesh. And then using world position offset, every piece, like I showed with the destruction before, like every piece of this, it becomes like a pixel of its location in this texture. So basically, the shader just reads the texture in whatever direction. And that controls the transform of each of those pieces. And it allows us to do this same thing done here with a skeletal mesh, but a little bit cheaper using a static mesh. There's some drawbacks. There's some weird shading stuff that happens. So we kind of use it in particular instances. But again, another technique to retain optimization over these things-- and it also allows us to add this cool stuff to the environment that we may not be able to get away with otherwise. So the chandelier that fell down back in the keep, for example, we can use that on it. And we don't necessarily want to make the chandelier a skeletal mesh, because there's so many parts. There's all these little candles, and bolts, and rivets, and stuff. And it gets even worse for more complicated things too. So we can use that technique and make this a static mesh that explodes using that. And it's just a lot cheaper. It's really fast to iterate on and produce. And it adds this cool stuff to the environment that you can interact with as you're playing. You can shoot down the chandelier. That hanging body that I mentioned previously, you can shoot that guy down too. The goal is that anything that's like hanging up is a trap that can be shot down by players, and land and kill enemies, which is really fun. You can like time it with a bow, or you can like throw your sword, or whatever. So we're always trying to add more cool little events and spots like that into the map. Same with these catapults way back here at the start. They can be broken. So yeah, just as we go and produce the game, and in the future as we produce future content as well, we're trying to make it all as like interactive as possible and add these interactive parts to the map. It is a big map. It takes a long amount of time to complete, generally. It's somewhere like maybe like 15 to 20 minutes if one team crushes and like skims through the whole map. You can fail at any stage. So if the defenders win after five minutes by just holding the first stage, that's possible. But to complete the map, they're long maps. It's like 15 or 20 minutes. And maybe longer, maybe more like 30 if it's like a good back and forth battle. So we're trying to always add little things that the player can use to have fun and keep it interesting. There's lots of carryables. There's this bell you can pick up and throw. There's all of these like barrels, and wheels, and stuff that you can pick up and throw. Pretty much constantly trying to add as many things to the environment as possible that the player can interact with and play with, because the game isn't just about cutting people's heads off. It's also about hitting people with barrels, and having fun in like these weird, wacky ways. So there's like these ballistas, which just shoot really strong bolts, like a giant arrow bolt at people and kill them. Yeah, just always trying to come up with new ways for people to kill each other, which is a fun design task, and a fun for art as well, because I get to blow everything up. Yeah, any questions so far about any of that? Or anything you want me to go deeper on? VICTOR: Yeah, let's dive through some of them. One that stood out early on, they were wondering if this was just one map or if it was sectioned into sublevels? JAMES: Sure, yeah. I'll show the sublevel thing. So real quick to touch on what just happened here, as I back away there's distance culling, which is an optimization method to remove things from the screen. So the character never gets this high. So you see things cull out really aggressively. What I did earlier was I adjusted the scale to keep everything in view, which happens on like higher quality settings. Sometimes we play with that and adjust it. Anyways, I digress, but that's why things are culling in and out. To answer the question, we do use sublevels, but we actually keep most of the art on an art sublevel. And we restrict other things for like non mesh stuff generally. In this case we have a high level, which is like higher detail stuff, which actually should be merged into art so it doesn't really need to exist. We have a sublevel for atmospherics, which covers the lighting, like the sun, the fog, all of that stuff, our entire lighting setup, and then particle systems. Like you can see the fire and stuff. A lot of that's in atmospherics, the birds. There's a sublevel for Level Design, LD, for them to put whatever they need to function in the game to make the map happen, and just some other random stuff, the sound. The terrain has its own sublevel, et cetera. And a lot of our levels are very similar. So the persistent level handles a lot of the level logic stuff, and then like the level blueprint for transitioning from stages. But in terms of separating the art out, we actually kept it all on to one sublevel. As we produce it, sometimes we'll have a different level. We'll segment it more, and then we'll merge it into the end. We don't load or unload anything like at different stages. Because you can spawn very far back in the map. And you'll have to run all the way. So it's not super viable for us to de-load this castle, because a player can spawn like here, for example, when they're fighting in here. So a lot of the times when we're making it, we'll have more sublevels. And then we'll combine them down into one. And that's been a pretty good workflow so far. It allows each artist to work independently without stepping on each other's toes that way. Because there's many artists working in each level at one time, generally speaking. And it also allows us to not interfere with level design, because they are also concurrently working with stuff. And sound is going in, and all these different departments. So we've segmented it in that way to kind of separate by department. And then everything comes together at the end. In terms of departments, the art team is four or five environment artists right now, which is about what it's been for the duration of the project. It's kind of like gone up and down. But it's not a huge environment, our team, for the amount of maps and the size of the maps that we're going for, which kind of speaks to a lot of the techniques that I've described and how we've gone about constructing things to keep it as fast as possible and try to keep the quality bar up as high as possible as well. There's also character artists on the team. I think we have three character artists. And they've done an incredible job with all the characters as well. They help out time to time as well. Those hanging bodies you saw earlier are based on character art. There's all sorts of like customization options for the characters. But in terms of the art team, that's pretty much it. It's a pretty small team for the scope of the game and what we're trying to produce. And this is just one level, and there's many of these. And many deathmatch levels as well, which are smaller, but equally as detailed. So yeah, kind of a constant struggle to keep elevating the bar as well. VICTOR: Think we can do another question? JAMES: Sure, go ahead. VICTOR: All right, PredragPesic16 asked, it would be interesting to see the collision on those spikes, for example. Was it done with the UCX tool or by some other method? JAMES: Sure, yeah, absolutely. Oop, OK. Turn on collision. It'll probably get real slow. Hey, there we go. So the collision for these, as you can see here, is basically just a big mesh blob that captures all of the spikes and keeps them as one piece. I'll turn it off and I'll look at the mesh instead. That's probably a lot faster. We've done that for player collision purposes. That was generated in an outside modeling program and imported as a UCX collision, so one primitive collision. There it is. That's the guy that controls the player collision. There's also on everything generally, there's a set of complex collision, which handles interaction for things like weapons. So you could shoot an arrow through this hole. But if I go to the simple collision, you could see that you would not be able to walk through that same area. There's also settings to control that a little bit more as well. So you can like use simple as complex or complex as simple, which allows us for-- let me see if I can find a good example of where that would be used. If this is an individual spike, that's perfect. So this individual spike-- I don't know if it does right now-- it does, I'm not a liar. You could see the simple collision is just a box. It may actually be-- it is a convex. So we did import that for whatever reason. It's not like a box generated through here. But it uses simple as complex because it doesn't need a special set of weapon collision to get around it. It can have the same collision for the player and the weapons, and it's totally fine cause it's such a simple shape. There's nothing complicated about it. So I did the collision view mode earlier. There's lots of elements in the map obviously. Especially in a field like this or when you get into these more town sections, it's really complicated with like stairs going up, and all these like planks and stuff. So we've done our best to smooth that out. There's a little bit of leeway for what players can walk across. And it's totally fine without too much hitching. And you can also see on things like here have the collision removed to make it smoother. There's a little bit of clipping with the feet sometimes. We kind of just tune this as we go to see what will work and what won't and if it'll cause a hitch or not. But yeah, we're kind of always mindful of collision. Collusion is a big issue with 64 players as well. It's kind of like a constant battle to keep things smoothly colliding, and also have all of this little detail, because we want these little curves and things, but we don't want them to interfere with the gameplay. Kind of level design requirement as well that they're always trying to keep everything low. But if you remove it, it's like now that it's flat, it's a very uninteresting ground section. So adding it adds a lot, but it adds a collision problem that we have to address. Yeah, it's a constant struggle. VICTOR: GamerMaximas is asking, are you regenerating nav mesh at runtime after physical destruction, I think relating to what did you call those? Mantle? JAMES: Mantlets. VICTOR: Mantlets, cool. I learned a new medieval word today. JAMES: Oh, yeah. VICTOR: I'm just curious. If you were regenerating the nav mesh once physical destruction has occurred, or if those are only visual? JAMES: Aurelien might know better than I. I don't think the nav mesh is fixed after they're destroyed. I think it stays with an open hole. AURELIEN: There is actually a [INAUDIBLE] that mesh to be filled. We use this with doors too. So you can still use a nav mesh after the object has disappeared. JAMES: Beautiful, there you go. Yeah, you can see I toggled it with P, and it kind of shows that. Yeah, similar things like with this guy. This comes down. The players can like board and ride the siege tower. And then when it reaches the wall-- it has to have like a-- we've put this little like nav mesh collision section to be generated here. So it doesn't exist during the game. There's nothing here, obviously. But it allows the bots to path correctly as they go down onto the wall. Yeah, collision's real complicated. It's a big thing. It's a big thing to constantly handle. Like I said before, we're always trying to-- it kind of feels like you have to fight against it as an artist to make the stuff you want to make. But that's part of like game development is accommodating other factors of the game. So obviously having the game play good and be fun is goal number one, above all else, at least as far as I'm concerned. Even as an artist, I would prefer the game to be fun, as opposed to like be artistic point of excellence, if I had to pick. Ideally you have both. So we're always kind of going back and forth. And collision is definitely one of those things. Do we have the mantlet and have it not adjust to collision? And like which is like a more fun and artistically better option? We're kind of always going over those sorts of things as well. VICTOR: reopp was wondering, how are the flying birds made? JAMES: Oh, boy. I didn't make them. I think it's just-- it's definitely a particle system. So I think it's just a bird mesh with a world position offset on the wings. Let me see if I can open up the material, which might show a little bit. I don't know where the mesh is. You can see it's just like oscillating back and forth. It's called crow. I'm just going to try to find it real quick. VICTOR: While you're doing that, I'll just ask another one. We should have a-- perfect? Oh, you found it. All right. JAMES: You can see here it's like horribly stretching the mesh in this preview setting. But in the real game it doesn't do that. They just go up and down a little bit, or like side to side. But it's basically just a particle mesh system that spawns them. And then they just rotate around in the particle system in a loop. And we have a couple other configurations, like seagulls for a beach level, and things like that that kind of do different patterns and stuff. I'm toying around with the idea of using Niagra in some capacity to make some cool bird stuff, but nothing yet. We're still using Cascade for all of our particle stuff. So yeah, just like pretty simple, straightforward setup. Just like a simple mesh and world position offset. VICTOR: Sarah_3D was asking, what software do you guys use for creating the 3D assets? JAMES: We use everything imaginable to create the 3D assets. VICTOR: I guess the modeler's choice? JAMES: Yeah, yeah. Just the people that we have here all use different stuff. So we've kind of gotten into the habit of like allowing for all these different things to exist. So there's not a lot of tools that are dependent upon one modeling package. So I use 3DS Max. We have artists on the team that use Maya. We have artists on the team that use Modo. I like Blender as well I use in particular situations. Houdini, as I mentioned before, to generate all of the destructibles. So like literally is-- not as many as we can is not a good way of going about it. But we do use a ton of different software, just kind of like what's situationally dependent. The good thing about being a small indie team is that we don't have to rely upon having a team that like is dedicated to having intimate knowledge of Maya or something, which is fine, and it's easy to learn. But people are free to just use whatever they're most comfortable with. For texturing, we use a lot of Megascans actually, and a lot of assets as well. Maybe I'll cover that in a minute. We use a lot of Megascans, textures, and the Quixel suite. We use Substance Designer for texturing occasionally, but not too much. Most of our textures are actually from Quixel. And that's pretty much it. There's like some other random, one off, tiny softwares. But that's the majority of things. Yeah, as I mentioned with Megascans, we have used it quite a bit. All of these rocks, for example, are Megascans rocks. Whoa. We have another set of them over here that are more granity. I'm actually not sure if the foliage is derived from Megascans in every case. But I think at least some of them are derived from Megascans scans that we then take into SpeedTree and produce little bushes and shrubs. There's not a lot of trees in this level. But there are trees in the game. There's like some background stuff, but that's not the same. Yeah, we use Mixer to generate a lot of decals. I use them for these puddle decals that are very commonly used throughout the game. Basically just brought a height map into Mixer, and it generates a nice, little puddle thing. We've tried to leverage a lot. I think I said previously that I wasn't sure if these spikes were Megascans or not, cause it gets a lot of-- things get crossed. There's so much to make that I often-- pulling from Megascans, or making my own, or using Megascans textures on my own mesh, the lines get blurry. So I think these are based on a Megascan asset, which I then just like manipulate a whole bunch. But we use it pretty extensively for a lot of our texturing. Again, it comes back to being a small team. With only three, or four, or five artists, depending on the time and the project, it's pretty impossible to have like a dedicated texture artist, for example. Maybe the setup could be worked into such a capacity. But we prefer to have people be more generalized. So any artist can make almost any part of any level. Everyone is very versatile, and like fundamentally solid. And we trust them to make anything. So we don't have a dedicated texture artist. We just have like a team that can do whatever we need to. And we rely on things like Megascans to kind of fill in the gaps. VICTOR: That sounds smart. JAMES: Smart. VICTOR: Yeah, Jorge CR asked, could you show the render stats in the viewport? JAMES: Sure. VICTOR: Is that RHI, I believe? JAMES: I'm just going to set that back to the true thing. Boop. Yeah, it really just shows like tris and some like memory stats. I think it lies about triangles. It's been very inconsistent for us. But I don't know what is time to time. I usually use stat scene rendering for like a more accurate mesh draw stat. I actually don't know and didn't check if you can see my mouse on screen. Could you see my mouse? VICTOR: Yeah, yes. JAMES: Beautiful. So mesh draw calls down here, it shows 1,600. We try to keep it below 2,000 for any view in the game, which is not always possible, but it's what we aim for. It is kind of just a good benchmark for performance. And earlier on in the project we went really hard to try and get our draw call count low. And in doing so, it actually affected other parts of art performance negatively. So it's more of striking a balance between all of these like spinning plates than going super hard to reduce any one thing, such as triangles or draw calls. So that being said, some spots shoot up much higher. And it's pretty much fine. There's not a lot of big art hitches in the game at all ever. It's just something that we take into account, and we are always trying to optimize down as well. We've done a couple of things on that front to manage draws. Like I said previously with culling, we cull pretty aggressively. Because the player is always at this height, generally-- you know, you can get up on top of this wall, but you can't fly. So that means that we can start culling things way back here, and it's fine. It doesn't matter. Mine's a little bit lower right now cause my computer's not good. But yeah, we cull very aggressively, distance culling. And we literally just go through. We have a distance culled volume, which maybe I can show real quick. And it's basically just a big cube volume that covers the whole level. And it has these different size settings. So if a mesh bounds is 25 units, it gets a call distance of 1,000. And you repeat that for all of these different sizes. And it kind of varies level to level, depending upon what occluders we have. Some levels don't have huge walls that we can rely on to cull stuff out. Some levels are just a big, open field. And so they kind of need different settings. So we use that, and that catches everything. But it doesn't tune in the settings particularly well. Just because the way bounds are constructed, some things that we want to cull soon have huge bounds. Like this board-- this set of boards, rather, the bounds is gigantic, cause it has to cover every board. But we want these boards to come out like pretty early, because even from like here, they're invisible. Especially in the grass, they're invisible. So what I do is I go through in the Details panel, and I just manually set the distance for every actor in every map, or someone does. And we try to cover everything and catch everything. And that's had huge performance gains. We obviously want to avoid popping and things culling out, and the negative impact of that, especially in terms of gameplay. But it's very manageable. And you can be quite aggressive in maps like this where there's a lot of walls and surroundings. And it doesn't impact anyone too much at all, especially on higher graphics settings. Generally, the experience is quite fine. And we've optimized everywhere else pretty well. So yeah, popping hasn't been a huge issue so far. But we spend a lot of time trying to sort out culling, and make it smooth, and try to like cross all the Ts. There's also occlusion culling, which means that all the stuff behind here, I can try freeze rendering. And hopefully the engine holds up. Freeze rendering. You can see up in the top here, rendering frozen. It has now stopped changing the settings, LOD settings, and culling settings for all of this stuff. It just takes whatever this view was and freezes it. And that's what's being rendered. So you can see all this stuff is either being distance culled, or it's being occlusion culled because it's behind geometry. It's being completely blocked by something. And even so, there's still things that fall through, which we're always trying to grab and clean up. And you don't want everything to be gone, of course. There's a huge castle in the back. There's all this stuff. We want these things to be visible. But that does a nice job. Between those two systems, it really manages draw culls well. A spot where we haven't managed draw culls super well, but is still manageable, again, going back to this spike example. I think I mentioned it briefly, but having these different materials means having different culls, doubling them, in fact. If these were of the same texture, rope and wood, it would be like half the amount, whatever it is, like two per mesh because of our lighting setup. So we're trying to optimize that more and combine things into trim sheets. For example, we don't necessarily need wood and rope to be one separate material. It could be combined into one sheet, which we then apply differently. That's something we've started doing more recently. So for these older things-- I don't know if we do it on this one, but we might. Yeah, so we have LODs on everything in the game, of course. It's really easy with Unreal. You just automatically generate LODs. We, in fact, have another little Python script, Scripted Actions LOD Setter. Which all it does is it just generates four LODs using the Unreal system for a mesh. The cool part is that you can select like 10 meshes, and then click on it. Oh, no. And it'll just generate LODs for all of them. So what we've done for a little bit more performance gains is in these farther away LODs, we just remove materials. So you can see in this one, the rope is completely gone. In other ones we get even lower, so we would maybe remap this rope to the wood, because at a certain distance it doesn't even matter. Like you don't even see the rope go away. And if you do see the rope, it just looks like a brown blob. There's only so many pixels that you have to worry about on a screen. After a certain amount of time everything becomes a brown blob. So you can just consolidate materials over distance. And that's another way that we've saved a lot of performance. A bit manually intensive. We've kind of played around with the idea of making some tools that would help with that, but so far we haven't needed to necessarily, and we've been able to manage it. But yeah, always trying to manage stuff and manage stats. I use these a lot in the beginning, the different rendering views, or like the different stat views rather. Less so sometimes now, because we've kind of dialed in what we need more, and we have a better understanding of what will work and what won't. So we still obviously use them, especially in the later stages of a map when we're trying to dial in performance and fix things. But for most of the time, we just generate performance like frame captures, and things of that nature. And that is very sufficient for us. VICTOR: Yeah, always good to remember that performance in editor does not always equal the performance-- in fact, never-- JAMES: Significantly worse. Again, for reference, this is my like home, pandemic computer. It's not my nice office computer. And this is a very taxing level. You can see my frame per second is like 15. It's not great. Editor performance is way worse. Like for me it's significantly, significantly worse. And there's so much more going on. If I was to play in editor, it would be a little bit better. But it's nothing compared to a cooked build or the finished game that players will play. It's like night and day in terms of performance. So yeah, I use this as like a guide, like I said. And I try and keep it under 2,000, and other metrics. But we're not like devout to it. We can stray, and it's fine generally. VICTOR: BobsNotYourUncle was asking, did you do anything to optimize your decals, considering how many you use? JAMES: We have a different material for each type of decal. So how can I describe this? We use like a different buffer view mode. Some have just normals. Let me see if I can find the material. That's just a bit of a rickety computer performance question. Yeah, so here's our material library which shows a lot of materials. You can see color normal roughness, color normal color. So we do use that quite a bit. And that's basically the big separation of materials. We've gone through a lot of rendering changes, which have made it very-- complicated us towards what decal performance will actually be like for us. We started off the project with deferred rendering, and then we switched to forward rendering for performance reasons. VICTOR: Oh, interesting. JAMES: And then we switched back to deferred rendering. VICTOR: OK, I thought it looked like deferred. I was going to say, wow, what have you done there, cause-- JAMES: Yeah, it was like forward plus. So it had some of the nice things that deferred has. But we end up switching back for a lot of reasons. We got some other nice things back as well. And there was no real performance loss when we switched back either because of gains in recent engine versions. So decal performance between the two seemed to fluctuate greatly for us. So we kind of moved away from using decals a ton when we were under a forward rendering pipeline. We still use a lot of them. And now it's pretty OK again when rendered deferred. I actually don't know if there is like a staunch performance difference between the two. But we've kind of operated under the assumption that there was. But we don't do anything else, as far as I'm aware of, in terms of decal performance. We fade them out, like everything else. Decals all have-- where is the window? They all have a fade distance, which we, again, are pretty aggressive with. You can set it. Which one's this guy? If you set it really high, it goes away. If you set it really low, it's there. You can see once you get to a certain distance, it'll fade out. There it goes. It's gone. And once it fades out, it's removed and then not rendered anymore. So as long as we set that, and as long as we're like careful about how we use them, and we don't go super crazy with them, it's pretty fine. It's been OK so far. VICTOR: I didn't actually know there was this separate culling power. Not culling, but a separate distance culling method used for decals. JAMES: Yeah, fade screen size. It's great. You can do some blueprint stuff to set it as well. And we've kind of toyed with some other options. But we largely just use what Unreal has out of the box. VICTOR: Cool, I love when I learn stuff. BobsNotYourUncle was asking, how are you handling wind in the levels? Is it individually for cloth and separate for the foliage? JAMES: Yeah, there's a couple different materials. There's no one governing actor or force on them. I can like rotate individual flags any direction, and you see they just double up in different directions. We've used a couple different methods. The thing we use most is like a rotate around axis shader. The principle is very similar to what you would find anywhere else, though, which is just noise being applied in world position offset over a mesh. Same for the grass. It's just rotating around its axis and then being disrupted with noise. But a lot of our wind setups from-- we've had a couple of different ones. We had a Houdini wind simulation setup that we used for a long time. We've switched away from that, and now into a more generalized approach that doesn't involve baking it per mesh. So we can just take a wind material and apply it to any cloth mesh. And we don't have to like bake it out in Houdini, which was a pain. But you can see here, it's pretty visible. It's just like a wavy noise going across it for this guy. But it actually varies depending upon the flag and the context. We have some things that are vertical, which act a little differently. You can see this guy uses a rotate around access. So it just blows away from the wall. It's like only projecting the wind on the forward direction. And there's ones that only work on the sides, and things like that. So we have a couple of different options. And it allows us to like really hand dictate what exactly that we want for all of these things, because there's often a lot of like clipping for cloth and stuff. So we have to get really careful and specific with it. VICTOR: Cool, we have some more questions related to environment. But I think it's time to let Aurelien go through the presentation. And then in chat, don't worry. We're keeping all the questions. And we'll come back to Q&A after Aurel's presentation. JAMES: Wonderful. AURELIEN: OK, thank you, gents. That was very interesting. There are some things I didn't know myself, despite the fact that we work together. OK, so we're going to move into sim map. But I'm going to talk about how we make it on a level design point of view, how we make it enticing and fun for players. So just as a little reminder, and for those who don't know, this is what we call a team objective map, which means that we have the two teams fighting each other over a few stages. And each stage has an objective that the attackers need to fulfill to progress to the next stage, the following stage. So, for example, here the objective for the attackers is to push those siege towers up to the wall. And the defenders have to prevent them to do so by gathering around the seige towers and preventing the move. Because the way it works is that the more players of a team is next to a siege tower, the more it belongs to them. And then you can move on it, depending if you are a defender or an attacker. So that's the basics for a team objective. Progress through stages. In average, we have five stages per map. And each map is around 30 minutes. So it's an average of 5, 6 minutes per stage. This is what we aim for. But then like James said earlier, it depends. If defenders are very good, it can last longer. Or defenders can just win before the end if they are very, very good. The way for defenders to win is to have the game time reach zero. So yeah. So that's what it was, 64 players, 32 against 32. We have bots filling the ranks of teams who are lacking human players. But overall, it's always 64 players. So this is quite a challenge, because 64 players, that's a lot of players. But at the same time, it's not always 64. I will explain in details what I mean after. But basically, each stage should be able to comfortably welcome 64 players, and add more options for them for those same players to not be always in the same spot. I will talk about this and two more details after. So I'm not going to talk more about this particular map, because James has already given us a very good overview. For a disclaimer, I did not work on this map. It has been made by Ludovic Piraud who is the lead level designer, and who has tons of experience. But we all contribute to the maps during the process. So now I will tell you how we come up with a map like this in terms of experience. First of all, we have so Steve, who is the CEO. And he is Chivalry himself, right? So Steve, Ludovic, myself, and John, who is our other level designer, we gather and we discuss about what kind of experience we want to give the players for a specific map. So we always go for the Hollywood fantasy of epic fights and heroes who can defy great odds, that can take on 100 enemies. If you think about 300, for example, that's a very good reference. But we also have Game of Thrones, Kingdom Of Heaven, for example. I think actually this stage with the siege towers, on the other hand, actually I believe it comes from Kingdom Of Heaven. I think at some point there is a siege of Jerusalem. And they bring big towers to the walls. And then some towers get tipped over. And people climb the walls. So of course, since we have only 64 players, and we are a video game, it's not as huge and epic as in the movie. But the core experience is here. We push siege towers. We climb them. We climb the wall thanks to ladders that you have to build. For example, you have a cart here. You take a ladder piece, rig it to this ladder here. And then the ladder is built, and you can climb the wall. And then when you're on the wall, you have to take [INAUDIBLE] house. So it's very close to the experience from the movie. But, of course, we add our own twist, our own style on vision, right? So this is just to give you an example of how we function. So we come from an [INAUDIBLE]. And we link it to the narrative. So over here the Agatha forces are retaliating against the Mason forces, and are now trying to kill the heir of the Mason empire-- kingdom, sorry. So the idea is it's a siege. And then we have forces going through the city, up to where the heir is hiding. This is the basic pitch that we start with. Then the way we work is we split this fantasy in two different stages, which are the stages that you can see here. I will just show each stage very quickly, just to give you an idea. So here, like I said, as an attacker you push the siege towers to climb the walls. Then when you are in the city, you attack the towers-- each tower and this and this part to get the tower gate. Then you grab torches from those fire pits to burn down the tents. Then you have ramps coming. And you have to push them through the city. Let's see-- OK, so for this pass on this one up to those walls here. When the ramps reach those towers, then the next objective is to take this courtyard. This works by being the greatest number of players of one team in here. And once the courtyard is taken, then you can access the keep. And you the heir. And the heir is played, like Jim said, by the top scoring player on the defending team. So as you can see, we have one stage, two stages, three, four, five, six stages. So the way that we work on those stages in the concept phase, usually what we do, or what we used to do before the pandemic is in our meeting room there are glass panels all around. So we can actually draw on them. So each panel is a stage. And we make a very rough concept of what's going to happen. So for example, if I go back to the siege tower stage, the very first stage, I will draw two squares for the siege towers, the wall, where people spawn for each team. And we know that this is the experience that we want to give. Then we move to the next stage. And so on, and so on. And when we are happy with this concept, that's when one level designer will actually do the work. So we are three level designers. Each one of us has a few maps that they are responsible for and that they maintain. But, of course, we help each other for different tasks. So the level designer will start creating each stage. Also our map depends on what they want to do. By using what we call gray blocking. Gray blocking is creating a space with literal blocks, like this, when I do it quickly here. So let's say, for example, that I want to create a wall here. I will put just a simple block. And then I can very easily scale it. And now I have like, let's say, two big walls here. And what we also have to express to artists and to ourselves what we want-- let's say that, for example, here it's a huge ramp. I will use a block out color. Green means, that's a pass. That's parkour. That's climbing. And this will be like orange because it's static. And if, for example, we wanted to remove this, we would use red. I will go into more details. But basically, what you have here already is the beginning of a blockout. It is important for many, many reasons. First of all, it allows us to iterate very fast when we create a map. For example, if we decide that this needs to be like this, there. It took me two seconds. If I had to do the same with this, it is fully arted. I have to select 1,000 components, turn them where I [INAUDIBLE] some. Try to select them again. So it is a huge gain of time. And so that's how we will do it at first. We block out. Every week we meet, and we look at what we have done, whatever the progress is. And then we can discuss things, and see if the things that we planned earlier in the concept phase still work in the block out phase. So this is the phase that has the most iteration, because that's where we need to ship, literally ship the player experience, how to make it fun, how to make it cool, how to make it so that you want to do the objective, how to make it so that you want to go around. What makes this playable, comfortable to fighting, and fun. Because that's really what we want to do. We want to make it fun. If not, why make games, right? So we have fun while we make this so that you can have fun when you play it. So basically, we iterate, iterate, iterate until we think it's good enough to move to the next phase where it's going to be a bit more detailed. For example, let's say that I am working on this stage. So those tents, carts, and those are tents too, are our objectives, what you need to burn. So what we will do then, we will actually use actors. So as you can see, if you look on the right on the Details, we can put a static mesh, so a visual like this tent. To it we can attach multiple components that gives them properties. This one has a burnable component, which means that it is an object that we can burn. What it does is that when it's burning, it's going to assign certain materials so that it can burn, certain-- a different static mesh when it's rendered. But also, what kind of damage we can do, like only fire, or we can [INAUDIBLE] at this rate? In that case, no, we only want fire, right? What kind of score it gives to players when they do it. They are rewarded. The text that is displayed on it when we look at it. Burn this tent. And the hit points of the tent, et cetera. What matters here is that we can very easily set up objectives, because we have lots of components available to us that have been made by the coders in C++. And we can very easily prototype even a new actor like this. And then then, thanks to Blueprint, we can link it to the actual logic of the level. So I'm loading it right now. I'm not sure how long it's going to take, but it shouldn't be too long. But just so you know, as level designers, we do not touch C++. We have people who do this for us. We only use Blueprint. There we go. So just a slow overview, and then I will talk about all this more detailed after. But, for example, all the tents should be somewhere on here. There we go, burn tents. We can, thanks to the component, know when a tent is burned, which allows us to add a score to this stage. And this is very, very easy to set up, which means that our prototype maps are set up very, very fast. And that allows us to, like I said, iterate on them very, very fast. Where it's longer, where it takes more time is to actually make as a flow interesting for players. So here actually I had a very good example. I cannot draw on screen. So I'm going to cheat and use this. Hoping it works. No it does not. OK, sorry, I cannot draw. So I hope you can see my mouse. And I will show you it. OK, so we have a philosophy to make moving around a stage fun and enticing. We are putting options in front of you too [INAUDIBLE] I mean. We call it the [INAUDIBLE] effect. So for those who don't know, a Plinko board is a little board of wood with nails set up at very regular intervals. Then you drop a ball. And then the ball just moves around, bouncing on little nails until it reaches the bottom. That's what we want to do for players too. So let's say, for example, I spawn in this tower as an attacker. When I come out of the tower I have a few options. I could get down the stairs, or I could go left and right if I wanted to. So that's already a few options. Now that I reach the bottom here, I have other options. I could take this pass or this pass. Let's say I take this pass. Now I have more options. I can take this one or this one, or keep straight. And let's say I go to this pass. I can go this way or this way. Do you see what I mean? It's a little bit like a river flowing through our landscape. It's like a delta of a river. You have multiple paths. And you just follow them as you feel like. Or if your attention is captured by whatever is happening, like if I spawn here and I see a fight here, I have a good view to see it, so I'm actually going through and up. I can reach the fight very easily. So this is the most challenging for us, because if we don't nail this, then the whole experience of the stage can be-- can fail actually. Even if the objective is fun, even if the art is perfected, and if you have everything that looks very, very cool, if you cannot find your way, if it's hard to get to anywhere, if you don't have options, that's not fun. And all this is something that players don't notice. Because like I said, you just follow the path as you feel like. You follow cues. You just follow your instinct, literally, to get to your objective, whatever your objective is, whether it's the stage objective, or people to kill, or maybe you want to grab some ammo. Whatever your objective is, we give you the ways to reach it by multiple means. And that also means that when we do things like, for example, this market here, this is great for our archers, right? Archers can stand here and shoot at people literally 360. But to not make it too dominant, we have multiple access. For example, there is a ladder here. On the other side, we have little ramps. So you can climb and jump on the roof. And I believe on this side you can climb on some objects, which means that we have always three ways to get to some place, whatever this place is. So there are lots of places that are good for you to fight in. But you will never be always safe. So this little detail. So this is our navigation, what I just said, all right, how to get from one place to the next. But another challenge for us is actually what you do while you are going from A to B. Obviously it is a melee combat game. So you will fight people with your sword, your spear, your mace, whatever. So we need to focus some parts of each stage to allow combat easily. I still cannot draw. So I'm going to try to show with my cursor. So we have what we call main combat pockets. So, for example, this is one here. We have a bigger one here. We have one here and one here. Why? Because the ramps come this way. Right? They follow those paths. So all the way that attack, that's where we have the combat pockets. Because it is your objective, and the objective is moving. And here it's even more interesting, because they can be close to each other. Actually, I'm sorry. One comes this way. Yeah, so this wall space here on the tree is where both ramps can be at some point at the same time. So it becomes a very big combat pocket. So those combat pockets are where the main gameplay takes place. But like I said just before, we want to give options to players, options to navigate around. But there's options to flank, options to avoid a fight if they want to. So that's where we have secondary combat pockets. So here, that would be a good one. Here, another one. Let me get closer so you can understand better what I mean. Right, so on each side here and here, you imagine that the ramps are coming. Me, as an attacker, I decide to come this way. And I see that there is a lot of fighting here. And I don't really want to join because I think my team may win this fight. Or maybe I don't want to. Or maybe I want to actually go around. So what I will do, I will actually take one of the side paths. And when I'm here, I have the option to flank by going back to where the people were fighting, right? Or actually I can totally go around the other side where the other ramp may be. This way I can switch combat pockets almost at will. And for that, I have multiple paths. And even when I take a class like in this courtyard here, I have multiple options. Let's say that I want to flank the people who guards around here, and here. I can go back into the fray. I can try to go back a little bit further away, maybe because I really want some space to take on the defenders here. Or maybe the ramp has moved and so has our front line. Or maybe I want to oppose any reinforcement that may come. Another option that we have is to climb here, take the ballista, and try to shoot defenders in the back. This is a defending ballista obviously, but anybody can use it. So that's very viable tactics. Which brings me to my next point. We have, in each stage, actors, like this ballista, or like the hanging traps that James described. For those who were not there yet, this is one. It's something that you can hit with anything that you have in your hands, like a rock, your sword, a head, whatever. And when it's touched it will break down, fall, and inflict damage on the people under. This is a hanging trap. Those need to be placed in strategic locations, right? Let's say that this is a place where people fight a lot, so a combat pocket. It would be interesting to have one trap here so that when people fight here, somebody can just make some room. The strategic elements are ballistas, catapults, and catapults here. Personally I love ballista. And everybody [INAUDIBLE] like hate me for it because I always kill them with it. And I don't care. I love it. So having ballistas that are very powerful-- sorry, let me describe what it is for those who don't know. It's basically like a sniper rifle. It is very slow to reload, but it fires a big bolt that actually kills in one hit anybody that it hits. And it can actually make a skewer of people. I once managed to make a skewer of three players with one bolt. So it's very powerful. That's why it needs to be placed in strategic locations. Fortunately, for everyone, those can be destroyed. So you can remove this asset temporarily. Catapults too. Catapults obviously work the best when we have open fields like this. We have a few maps where we have catapults in a huge battlefield, and it works very, very well. So one player is reloading the catapult. You'll notice that the arm basically is lowered. Then somebody else can grab a rock from here, put the rock on top of this little platform. Then whoever is at a catapult can just move around like this to find targets, and then release. And then the catapult rock will just fly, hit the ground, and kill everyone there, allies and enemies. As always, you can jump on the catapult and be propelled too. That's very fun. And it's also very useful, because you can get behind enemy lines. So anyway, all this to say that those actors are very, very strong. So we need to place them at locations that make sense and that are not too powerful, but so that players can still have fun using them. So here, that's a very good location for this one and this one, because defenders respawn from this wall. Sorry, this wall and this wall. So you can already try to get them before they reach the towers. Those are kind of factors that we add. And actually James already covered this, so I won't speak about it too much. There's little objects like this bell, for example, that you can grab and throw at people, and even kill them with, because it does damage when it hits someone. We have also zone laying weapons. So, for example, this is an axe that you can grab and go fight with. We have, I believe, more stuff over here. Yeah, for example, this one, this fork that you can grab and fight with. All those, we as level designers, we place them as early as possible. But that doesn't mean too early. We place them early on because we know that it's going to give an edge to players. So we want to make sure that it is placed in a location that makes sense. Then when we iterate after doing reviews with all the level designers, we can change them. We can add some, remove some. Same thing with the ammo box. Ammo boxes are a focal point for players because they will go there to get ammo or bandage. So you can expect people to fight around those. So it's important to place them in good locations. Anyways, so we iterate actor placement, space, navigation, volumes, and the overall experience. We play test it internally. So among us devs are we sometimes-- actually, often now internal testers. And by playing it, we see what works, what doesn't work. So we iterate. We change things all the time. Even this map that is very, very, very complex, There are still some little things that we modify. Like the last thing that we tuned that was about the balance, to make sure that both teams have equal fighting chances. So for that, what we do is move where people spawn. We change how long it takes for them to spawn back into the action. We can also change the score. So for example, if we realize that people are burning all those tents way too fast, we could give them more health points, or we could add more tents to burn, which means that the score would be slower to be filled to the max. So all those are very-- that's the last phase. In between-- so I want to say the happy blockout, because that's the blockout we are happy with. That's a blockout that we know will work, and that will not change much. Like 75% of it is here and won't change much. So that's when we hand off the map to the artists. So the way it works is we have a meeting with the artists. And the level designer in charge of this level will go through it, a little bit like I just did to you, but in more details, and explaining more the intentions behind each stage, the location of each block. For example, if this ramp is very important, I will explain why it's important so they can understand why. For example, I can say here we really, really need a landmark, because players, when they are in this field, they tend to confuse this wall and this wall. So if we make this a very big tower, then it's easier for them to find their way, the kind of visual cues that we use everywhere to help players go around. So then artists understand that this is important. Me, as a level designer, I put a tower here because we have walls. That makes sense. But artists may have a better idea. They can say, sorry, no, actually, this looks like it could be a good place for actually a siege tower that is broken. It has no wheels. So they will put a siege tower with no wheels. It'll take the same space. And as a level designer map here, that does work. I see that it's a landmark. It is different from everything else. And it does the job. So we don't need more landmarks now. And I think my computer is crashing, or my editor is crashing. OK, well, so anyway, I don't need really the editor anymore. But I will just keep talking about our interaction with the artists. So what have I done? All right, anyway, sorry, that's all my bad. I did something wrong with my keyboard. I'm very sorry about this. Anyway, so when we work with artists there is a lot of back and forth, because they have to make things obviously pretty, but also functional. They have to respect the views that players have of each other from different parts of the map. They have to ensure that we have cover where we want it. When I say we, it's level designers. So it's a lot of constraint to them. But they also have a lot of creativity in how they want to approach those constraints. And if they think they have better ideas than what we have done, they tell us. And if we think that works, then we can make it happen. And this is how we work. We do back and forth. We do lots of internal play tests. We iterate each one of our sides. And we have all layers. So level designer has their own layer, and artist has their own layer too. Usually I think a team objective map like this one will be worked on by if not all artists, at least most of them. We have smaller maps, the team death match maps. Team death match maps are actually more like-- in terms of size, more like this battlefield, because the only goal is for people to kill each other until one team doesn't have any reinforcements left. So it's a very classic game mode that you have in all games since Quake or before. Those maps are smaller. So they are worked on by only one artist mainly, sometimes with support of another artist. And this makes the iteration a bit easier too, because there's only one LD and one artist talking to each other. It makes it a bit faster. And also we really communicate a lot together. So that helps us to design and iterate in a very smooth way. I don't think we have had any issue with this. Quite the contrary, the artists that we have are very, very good. They managed to turn-- just look at this. Imagine this like this. And tell yourself that's what we had before. Those towers here were stupid blocks like this. And look what they have done with it. So as a level designer, personally, to me it's very gratifying to see my ugly [INAUDIBLE] art job made beautiful and playable by the artists. So that's why we as level designers, we always do our best to facilitate the artists' job. And the artists always make sure that they don't impact negatively the gameplay that we want too much. Or there are times where James cries because I've done something very hard to do or very stupid. And since I don't like to see a grown man cry, I try to change it. But that's always-- that always go [INAUDIBLE]. JAMES: You promised you wouldn't bring that up, Aurelien. AURELIEN: I'm sorry, but the people need to know. JAMES: That's OK. AURELIEN: What else? I think I've covered everything. Yeah, I think can-- let me think. But yeah, I think I've covered most of it. James, do you see anything else I could say if you want? JAMES: It might be cool real quick to just spend like a minute on the spawners. Because the spawning system's kind of unique and how it groups people. AURELIEN: Yes, you're absolutely right. And spawners actually are a huge challenge for this. And even sometimes, not the system itself, but because the way the game works-- and not because the game sucks, but because people suck. No, players don't suck. I'm sorry. No, OK, more seriously, spawners, the way they work is that you see those little blue characters here? Each one of them is a point on which a player will respawn after this. So as you can see, there are lots of them. But in that case, a reason is because since the towers move forward in this direction, spawners do too. So, for example, those are actually initial spawners. And those-- so blue against red, of course. This is what you would call the initial clash. When you start a map people will already be fighting, or will start a charge to fight each other. After that, different attackers respawn from the back. And attackers and defenders respawn from behind the walls. And then they have ways to reach each other on the battlefield. Now, where it changes, for example, here-- because the ramps move, attackers and defenders need to move roughly with them. So let's say that the ramps are here, I'm not going to spawn back there. It took me way too long to get back here. So instead, players respawn closer here. Same with defenders. At first defenders respawn here. But when the ramps have been closed, then they respawn on the next stage. So that's what we do all the time. Now, why spawns are actually a challenge, it's because of two things. First of all, they need to be protected, because it's very easy for enemy players-- in theory, it's easy for enemy players to go to a spawn, and spawn and kill people. And again, it doesn't happen because we make sure that you cannot do this. So we protect the spawns by different ways. Like I don't know if-- yes, there is one here. So those doors, this door, for example, we have people spawning behind. If I go, you will see spawners here in the distance. So those doors will open automatically when someone gets into this volume that you see here. But on the other side-- I think it can show this way. This blue panel that you have here is actually a one way wall. Which means that you cannot get in, but you can only get out. Which means that if you want to spawn camp, you can do it only here on this platform. But even then, you cannot. Because we have something that we call the combat zone. So let me just hide most of them and show you the one that matters. Oh, let's see, this one. Sorry, just give me one sec. OK, I can't find it. But OK, I'm going to just use this one as an example. We have a combat zone that encompasses everywhere people need to fight, but will not cover some parts. Like for example, there's this part here that I said earlier that you could spawn camp. That actually is not covered by the combat zone. Which means that if you get into this area, you will have a deserter warning. And if you stay in this area while a count down is playing, you will be killed. So sure, you can try to get here. But you know that you're going to die if you stay there. If not because of the volume, because of the people too. So placing those combat volumes help us with placing safe areas for the spawn. Second reason why the spawns are so hard it's because when you play you don't want to see players pop out of existence in the distance, right? Now, let's say, for example, that I am here. And those people here are spawning. I will just see them appear. And that to me look very, very bad. That's why we always hide the spawners in places like, for example, this little street. So people who spawn here, they will spawn when we do the tents, burning the tent here. So as you can see, they are far away, but not too far away that it's annoying for them to run back to the fight. But far enough that they have to go through a few pass, a few options that are visually obstructed. See, from here I cannot see them at all. They are [INAUDIBLE]. So it was very easy to show it to you. But we have maps with stages that are quite narrow or quite small. And sometimes it's very hard to place the spawners the way that is the best for them. Fortunately for us, this is something that we tackled very, very early on. Actually, when we do the blockouts, we actually do the spawners too at the same time. So we know roughly which areas we have to be reserved for spawners. And this way artists know too that those areas where spawners are need to be wide enough so that people can have the room to respawn, and then reach the Plinko options board. So sometimes we realize a bit after the art has been done that spawners don't work in one way. Or maybe we change the objectives. So in that case, we do our best to use other parts of the level to place the spawners. And if really we don't have a choice, but we need to change the art, then we see with art what can be done. For example, let's say that this house here doesn't exist, and we have people spawning here. I realize that actually it's too close. It doesn't work. And those guys cannot be here because it's too far away, or it doesn't work. We say, hey, guys, can we maybe close off this thing? If it's not too much work for the artists, then it can happen. If not, then we find other solutions. What I mean by all this is that every thing that you do and see, and experience in the game as a player, that's stuff that we think about very, very early on. And we make our best for ourselves, but also for the players to make our best so that it's smooth for everyone, devs and players alike. And this is why we iterate a lot. And this is why a amp like this can take six months to build. The blockout can take I don't know, three weeks, one month, maybe more. It depends. And then we have more iterations and art working for two months. During those two months we iterate on actors and so on. So it can take a lot of time. But that's for the best. Also it takes a lot of time because we have multiple maps to work on. So usually we have a map that is being built, a map that is finished, but just we maintain, and a map that is close to be finished, an average of-- So we don't have time to get bored. And this is also why play testing is very important. This is why we have alphas. This is why we have internal testers so that we can tune and fine tune all respects of a map as often as it needs to be perfectly enjoyable. Lots of work. Anything else you think, James? JAMES: That was pretty comprehensive. Might ask if there's any questions that we want to get to? AURELIEN: I think we can get to questions, yes. VICTOR: And we do have questions. JAMES: Sweet. VICTOR: Some related to environment art, but also a couple in regards to the level design. First up here comes a question from GIRU. I want you to dive into-- well, I'll just read it. Do you gray box the objectives and play test the map flow? Or do you approach the maps from an art, story perspective when it comes to objective design? AURELIEN: It's a bit of both. So the objectives need to make sense in the context of the map, right? And so here we have siege towers going to a wall. That makes sense. It would not make sense if we just had to knock at the door and open. What we do is that we have the overall narrative for the world map. And then each stage is like a chapter in this narrative, and needs to make sense by itself and with the rest. And that's actually something that we talk about a lot, because sometimes we find a very good solution or a very good objective, but there is no way to actually justify it. Or there is no way to make it into this map in particular for X or Y reasons. So in that case, we keep the idea for another map. But yeah, narrative-- the fun of objectives and the justification of narrative both go together and are very important to us. VICTOR: It helps bring the player into the world of Chivalry too, right? AURELIEN: Exactly, yeah. And if you look around, you can see lots of little bits of lore all around the map, even in the objectives. VICTOR: Another question from BobsNotYourUncle. They're saying, you mentioned these epic fantasy slash medieval set Hollywood movies as inspiration and reference. Does music or other media influence the game and its design process? AURELIEN: Music, I'm not sure. Though we do listen to epic music, I'm sure, all of us. Movies, TV shows, and games, of course, are good reference to us. That's the main media that we use. Because they are the more visual, right? And what we do is visual arts. So that makes sense. We also have fantasies that come from our imagination, things that we would love to see in a movie, for example. So then we can make it happen in Chivalry 2. VICTOR: Using Unreal Engine. AURELIEN: Yes. VICTOR: I did notice what I think looked like-- and for all the audio fans out there, I think you're using Wwise. That's the audio engine. AURELIEN: We do, yes. VICTOR: Just a little tidbit there if anyone was interested. Hm, let's see here. The next question comes from Andrej. How do you plan out things during the pandemic? Do you sketch your own ideas and then share and discuss? Or do you have any cool, online, collaborative tools for this task? AURELIEN: Yep, yep. So what we do is actually we gather together exactly like we will do in a really physical meeting. But instead of drawing on glass panels, we actually draw on the screen. We are using Slack. And Slack has a little drawing tool that everybody can use at the same time. And so far it has been very, very useful. And it has not been an obstacle for us to design maps. JAMES: Yeah, I think it's actually pretty similar to how it was pre pandemic. We just kind of check in with the other half of the level more. Like the level designers check in with the artists, and vise versa. And we've gotten a lot smoother at collaborating together and working together at the same time on it. And when LD has finished or has progressed the map to the point where art is ready for it, we've gotten a lot better at that handoff part. So we know what to expect, and they kind of know what is optimal to give us. And we're constantly improving on that. But it's definitely gotten a lot smoother, especially over the last year and change when we've all been at home. AURELIEN: Yep, and like all other game tutorials, we do a lot of documentation. So that IDs and explanations stay somewhere, and that anybody can access at any time. VICTOR: Thank you. Thank you. Let's go back to some of the questions that we received earlier. robbiejg was asking, do you also use hierarchical level of details? JAMES: We did initially. That was one of the big things that we implemented to reduce draws was we had HLODs, which if you don't know, it's difficult to describe. A level of LOD or a Level Of Detail takes a mesh and reduces it as you get farther away to save on triangles. And HLOD works very similarly, but it batches objects together. So it saves draw calls, and it technically saves triangles as well when it does that. And it does this so that something that's-- these are made up values, but, say, something that's two kilometers away is reduced greatly. And then something that's one kilometer away is reduced, but not as much, and so on. So it kind of like cascades out. We had that set up initially to help with performance. And we actually had a Houdini implementation with it. So the meshes that would generate these clusters, it would gather every object in a level and separate them into all these different, little clusters. And then it would send those to Houdini as merged meshes. And Houdini would do a bunch of cool stuff to optimize them in particular ways, like deleting small parts, and deleting some occluded triangles and stuff. And then it would send it back to Unreal. And it worked well. And we got it working pretty well. But the final implementation was actually worse for performance, because these reduced, combined meshes were still like a million triangles a piece for this massive mesh, because it had to combine like 500 objects into one. And so we tried. We played with it for a long time, but we eventually did not use it. So we don't use it anymore. VICTOR: A question here that came. I think a lot of people were asking. But it came originally from Moon Light. Will there be an SDK for the modders? JAMES: I think that's in the plans, but I'm not sure. AURELIEN: Yeah, that's something that we want to do, but we don't have any time to give. VICTOR: Easy answer. Another question from Echoltis. Due to the world of cross play, have you had any troubles in balancing the difference in performance across different platforms to avoid an advantage during combat? AURELIEN: Go ahead, James. JAMES: Yeah, sure. Yeah, obviously it's more complicated when developing for consoles as well. Our publisher, Tripwire, has handled a lot of the like console porting and development side of it. As well as they've really helped with optimizations and gotten things in line for consoles as well. I don't think there's any real graphical performance issues from one to the other, or things that would impact players. Definitely like using the controller takes getting used to. But I quite like it now, and I've done very well in games using the controller like pretty much just as well as I've done using mouse and keyboard. So especially for us making the content, I don't think it's impacted us too much. It's just been like this extra thing that's kind of happened in the background for us, this whole other like side of development. VICTOR: And you support controller on PC as well? AURELIEN: We do. JAMES: Yes. Oh, yeah, what am I talking about? Of course, we do. Yeah, that's how I played it. I don't have an Xbox SDK at home. VICTOR: Let's see here. Another question from Shockify_DEV. They're wondering, what do you use for the atmosphere? Are you able to go over the clouds and fog? JAMES: Sure, if you can share my thing, I can show it real quick. It's very straightforward. VICTOR: Yeah, just a moment. Yeah, you're good. JAMES: Sweet. Yeah, so still in Red Helm here. Let me just find it in the outliner. Cool, will that do it? Yeah, OK. So it's just a skydome. Short answer, it's a skydome. It's a skydome with an HDRI image projected onto it. We initially had, and we still might have some cloud planes. Maybe we've removed them from this level. Oh, yeah, see, like there. That's like a plane of clouds that we've added in. We kind of add those in artistically where we deem appropriate. That one's kind of nice. It gives a little less contrast and works the values in a bit better. But it's really just an HDRI image. We've lined up the sun. The sun is just like a sphere blueprint you can see here. I could turn it off with like god rays on it. So it's just like literally a glowing, emissive sphere. And then the skybox. And then that was a cloud. And then the skybox. And then all those clouds. And the rest is handled through exponential height fog. And that's pretty much it. It's not too complicated. There's no dynamic sky or anything. I actually prefer-- we don't need a dynamic sky, because the map-- it's not like an open world game, where like the time of day is changing or anything. And I actually really prefer the look of HDRI skies. I find them to be like the highest fidelity currently. Maybe as like engine technology progresses-- I've seen some like really cool, volumetric Unreal Engine clouds and like some really cool tech art stuff coming. I still find it is tricky for people to capture the fidelity of a captured sky from an image. So it's very straightforward and simple. And the lighting is also just like a basic setup of a skylight and a directional light. They're both stationary. Let me just see if I can find-- there's no crazy settings. Just a directional light. You know, stationary directional light casting shadows, cascade shadow maps. So we have baked shadows. But they like fade out as you get closer. So you get like crisper shadows. Yeah, very basic lighting and atmospheric setup. Just fog, directional light, skylight. And then we also added a couple tiny, little static point lights for like filling the area. So this area in particular might be too dark when we bake it. So we'll just put lights to taste kind of, and dress it up that way. And all of these little flaming brassieres here, these like fire torch things, they have lights attached to them. But everything's static, except for the sky and the directional, which really helps with the performance as well, because static lighting is pretty much free. You just have to account for shadow and light map size. So it's like a bit of a memory hit, but there's no performance hit to it. So static lighting all the way for us. VICTOR: That's great. You already answered my next question. JAMES: Sweet. VICTOR: I'm curious, were you using the GPU Lightmass? JAMES: No, we still use regular Lightmass. I don't know when that was implemented. Maybe we have access to it. But we are so deep in production that we've just been going with the same regular Lightmass. We still are connected to Swarm in the office. So all the office computers still contribute to building lighting for the maps, which is really nice. It actually is quite quick when using that system. It's like maybe half an hour for a big map, and even smaller for some of our smaller maps. So it actually hasn't been that much of an issue to keep up with it. And we don't have any automated systems or anything. We just remember to build lighting. And it's been OK so far. VICTOR: Next question comes from Skillz1333. They're asking, for the internal and external parts of the buildings, did you go with a single mesh or a separate mesh, and/or sublevels for interiors? JAMES: So it really depends on the situation. Most of the meshes aren't super modular. And it's like a single, bespoke house piece. You know? Yeah, so it kind of depends on the case by case basis. There aren't sublevels for interiors. We had that earlier on some other maps for interiors that you could go into. But for whatever reason, we've just consolidated them, or cut them. Things like the giant castle in Red Helm, the outside would be one mesh, and the interior would be a separate mesh. A lot of the houses and structures in the game, though-- the amount of interiors are limited. It's really hard to have like a good sword fight in like a shed. So we need a lot of space. So a lot of the houses and stuff are closed off. There are a lot you can go into. But most of the time it's just like a shell exterior mesh with no interior to it. VICTOR: Next question comes from-- oh, my camera's good. The next question comes from-- another question from PredragPesic16. It would be cool to see a couple of textured trim sheets, walls, floors, et cetera. JAMES: Sure, yeah. VICTOR: And I think it's something that we haven't really covered on the stream before either. If you want to go into the trim sheets a little bit and what it entails, that'd be awesome. JAMES: Yeah, absolutely. Let me see if I can find a good example of something. Oh, I know something that has stuff to it. So we have this street light, or this street lamp rather. And on it are a bunch of the trim textures. And this is what the texture looks like. So you can see, top to bottom. So it's just like a 1K map. It's not huge, of course. Half of it is wood. Half of it is metal. And then the metal is kind of divided into these strips. And there's also some other sections. You can see these square sections are used for more square parts as needed. So it allows us to basically take a piece of geometry and map it to the wood section. It tiles vertically this one. So we can have a huge-- the geometry can extend well beyond the bounds of the UV space. And it'll just keep tiling up and down. So let me see if I get the UVS on this street lamp mesh. It may not be super visible, depending on how it's set up. Yeah, OK. You can see here. I wish I could zoom out to show the extents of it. But you could see all the red stuff is where it goes out of bounds out of 0 to 1 space, which is fine, because it's still on the trim sheet and still tiling vertically. So yeah, you can just compare this to how we've laid it out here. But this sheet, which is mapped to this mesh, it covers like a lot of these. There's like 30 or 40 meshes here or whatever. And they all just use the same sheet and the same setup. So basically, yeah, the idea is that instead of hand sculpting 30 of these street lamps, you make one nice trim sheet. And you kind of establish the process of UVing it onto these textures. And then it's just taking-- and then you can, from there, extrapolate as many more as you want. Even the normal map is very simple. A lot of the times we use face weighted normals instead of normals in the trim, or baked normals, or anything. I don't know if we did in this exact case. But it basically just averages out. Where's normals? It straightens out the normals at the edges of like bevels on meshes, which makes this edge a lot smoother. A 3D art principle is that you always want to have these like big, chunky, visible edges. When you have very sharp edges, are very geometric, it looks 3D and fake. And things in real life have these big bevels and like craftsmanship to it. So by averaging out the normals and using that simple trim sheet, it kind of gets a nice, smooth look to it at like a very robust setup. So hopefully that covers trim sheets pretty well. VICTOR: Yeah, thank you. JAMES: No problem. VICTOR: The next question comes from Juan Milanese. Milanes? Are you using distance fields? If yes, at what resolution? JAMES: I don't think we use them at all. I could be wrong. Maybe we have like distance field ambient occlusion. But I don't think we use any sort of mesh distance field anything. And I don't think in any material capacity either. We've done a lot of, I don't know if it's memory optimization either, but it might be. But we've also done other memory optimizations. So like there's like vertex buffers that we've removed, adjacency buffer, and like some other one that has saved us a lot of memory, especially on consoles. And the cost of that is that we can't invert meshes, and we can't have displacement, which as long as we work around those two things, it's like a big memory savings. So yeah, there's a couple things like that and distance fields that we've selectively chose to not use. VICTOR: Cool, CG TECH was wondering a little bit if the ground was using the landscape system? Or if it was just a mesh? JAMES: Yeah, we mix and match. For a big level here, like in Red Helm, it's a landscape, the terrain. And it uses, yeah, like built in landscape tools, nothing really fancy there. Our material is as lean as we can make it really, because the landscape has been one of the more expensive things for us in the past. In some levels-- there's other parts of Red Helm, like as you progress into the town, the landscape goes away, and we start using these customly designed static meshes. And we texture them with a material that just has vertex paint blending on it. So it kind of mimics terrain or landscape in the traditional implementation. It just allows us to control like corners better and have like a lot of accuracy with it. And we can also drop off the terrain as soon as possible. So we really often try to like lose landscape components and keep it as small as possible so that we don't have to be like extending it for the bounds of the map. VICTOR: Cool, only a few more questions here. And then I'm going to let you both go. JAMES: Sweet, sounds good. VICTOR: theLeon was curious, what's your advice for new level artists as students for trying out bigger and more complex worlds in Unreal Engine? JAMES: My advice is to go smaller, which is probably not the advice you're looking for or desire. The same principles can be applied to a scene or piece regardless of size. The benefit, if you're new, or a student, or learning, or trying to break into the industry, is that if you make something that's small and really good, it's still really good. It's just small. If you make something that's big and sucks, it sucks, regardless. So I would definitely 100% prefer to see something in a portfolio that is tiny and good, a little diorama that uses principles that can be applied to a big thing, as opposed to like a 100 kilometer world. It's very easy to generate like a 100 kilometer world, or like a planet. And now Unreal has like an atmosphere system that can support going between them and stuff. A lot of those things exist. So yeah, probably not what you're looking for. If you really want to make something big I would dynamic lighting for sure. And I would lean into proceduralism as much as possible. So the landscape auto grass is an example of that. Automated foliage placement could be an example of that, or things like Houdini for populating it across huge areas is also becoming more common. We don't use that, but it's very powerful. And a lot of places do use that to great effect. So you can have algorithms that control the placement of trees and shrubs. Unreal has a little bit of that. Yeah, I would definitely lean in towards like the leanest and most efficient workflows possible that you can find. I'd research that. VICTOR: Solid advice. Last question comes from Tripwire Interactive. JAMES: Ooh. VICTOR: What is your favorite part of the map? And why is it the trapdoors? JAMES: Yeah, that's a great-- yeah, it's definitely the trapdoors. I don't know if my stream's still visible. But there's trapdoors. You press a button. VICTOR: Can see it now. JAMES: Sweet. You can go back here. A little secret if you play the game. You go back here. You press this. And it like unwinds the chain and opens the trap door. And people fall down and die on these spikes. It's incredible. AURELIEN: [INAUDIBLE] it works on anyone, even allies. JAMES: Yes, yep, even allies. It's an equal opportunity, beautiful place to kill anyone. I don't know if that's my favorite spot, though. The problem is, they provided me an answer. I don't really have an answer. Aurelien, what's your favorite part of the level? AURELIEN: I will say when you're at the gatehouse and you look towards the keep. You can see a lot of the city. And it's beautiful. No, the other way around. Where you were actually. JAMES: Oh, like here? AURELIEN: Go to the gatehouses. No, stage two. JAMES: Oh. [LAUGHTER] AURELIEN: Well, that's a good view too. That's not what I was saying, but that's good too. I like it too. Yeah, so two towers at the beginning, stage two. JAMES: Here. AURELIEN: No. It's OK. JAMES: OK. AURELIEN: Right here, yes. JAMES: It's my favorite part. Yes, beautiful level. AURELIEN: [INAUDIBLE]. Yeah, right here, this way. JAMES: OK, perfect. AURELIEN: Because here you can see your objective at the end, the keep, the village in between, and multiple stages of the village, destroyed and intact. So I like it because it builds anticipation. JAMES: Yeah, that's a good answer. It's a nice view. It turned out well. And it's one of the more representative of, yeah, like you said. Like the whole map you can take in. I like that we are able to show the final objective spot from anywhere in the map basically. You can always see this huge, massive castle in the back. And then when you get up close, it still holds up. And it's like super oppressive. Like that view is like almost brutalist. But yeah, that's really cool. I like that a lot too. AURELIEN: And something we have played with in other maps that haven't been announced, where you can see clearly the following stages, and the last stage in particular. So it gives you a sense of progression. JAMES: Yeah, it ties it all together in a nice way. AURELIEN: And creates nice postcard views, you know? Vistas. That's something that we are working on very early on too when we do the blockout. We already plan where we are going to see very cool stuff. And then the artists create even more. VICTOR: Awesome, thank you both so much for coming on the stream today. AURELIEN: Thank you for having us. JAMES: Yeah, thanks for having us. This has been a lot of fun. VICTOR: I'm not going to let you go just yet. First, I wanted to let chat know that if you're watching this on demand on either YouTube or Twitch, Aurelien said that if you have any follow up questions, you can head over to the forum announcement post. And they will go ahead and take a look at that and potentially provide some answers if you have post-stream, which is very considerate of them. As always, that happens with most of our livestreams. Post livestream discussion, YouTube comments is not really the best place for that. The forum announcement post we're paying much better attention to. And so make sure you head over there. That's also where we announce all the livestreams first. So that's where you will see them. Before I let James and Aurelien go, I do want to let us know, or tell you all that thank you so much for watching the stream today. If you've been with us here from the beginning, it's awesome to have you. Chat, please give an applause, or 1s, or Fs, or whatever you feel like for James and Aurelien. Just want to show them a little bit of love for coming on the stream today, sharing their knowledge. If you're interested in getting started in game development and you sort of just stumbled across this on Twitch or YouTube, head over to UnrealEngine.com. You can download the engine for free and get started. If you already have the Epic Games launcher installed, you can just head over to the Unreal Engine tab, hit the Download button on 4.26.1. 4.26.2 is coming soon. If you're interested in meeting others in the community who might be working on games, or new to games, or just find folks to talk about this with, because game development can be rather difficult at times-- not to tell you that you shouldn't do this, but it is true. It is a complex subject. And there are a lot of things that are involved with it. We could talk for days. And I'm probably actually going to do another stream where we discuss a little bit about sort of the philosophy when you get started, because it can feel very overwhelming at first. But know that that's the reason why there are a significant amount of roles at any studio, cause there's a lot to do, and there are very many different things to learn. But if that's what you're interested in, head over to communities.unrealengine.com where you can find local groups in your area that you can connect with. Now, there clearly aren't any physical meetups going on during the pandemic. But these groups have opted in to do virtual meetups usually on Discord. So it's a great place to hang out. If you are interested in forming a meetup group in your area, there's a button at the top right that you can hit. That's Become a Leader. You fill out a form, get in touch with us, and we'll hopefully get back to you real soon. Make sure you visit our forums. We have an unofficial Discord channel called Unreal Slackers. That's UnrealSlackers.org. Great place for real time communications. And on the note of the forums, we did just spin up our new forums. They're live at forums.unrealengine.com. Go ahead and check them out if you haven't yet. And please make sure to provide us feedback. It is going to be a little bit of a build up to what the best forums can be for us. So make sure that you leave us all of the feedback you might have. Cause we're going to try to jump on that as soon as we can. We do highlight a couple of titles or projects each week on our community spotlight to let us know what you're working on. You can either find us on Twitter. The forums, released, and work in progress channels are great places to post your projects as well as to provide continuous updates. Always fun to follow along. You can use them as a dev diary. I've seen some developers do. It's pretty cool. If you stream on Twitch, make sure you use the #UnrealEngine tag as well as the #gamedevelopment tag. Those two make it easy for us to filter to find you. Sometimes we jump on just to show a little bit of love. And we're also going to see if we can go ahead and rate someone here once we're done with the stream. Make sure you follow us on social media. And hit that notification bell on YouTube if you're watching there to make sure that you can see when we go live. Next week I actually currently don't have a stream planned because it got canceled. So we'll see what happens next week. Who knows. It will be a mystery until the day I book it. Check out the forum announcement, the events category on the forums. Cause that's where we will announce it. And once again, thank you so much to James and Aurelien, and Torn Banner for letting you all come on here. Alex Hader I should probably give a shout out to since he was the person who made this all possible. It's been a pleasure to have you. I'm glad we did this. Looking out to play Chivalry on the date of-- AURELIEN: June 8. VICTOR: June 8. Awesome. JAMES: Join us. Awesome, thanks for having us. AURELIEN: In two months. VICTOR: Awesome. We will see you all again next week. I hope you're staying safe out there. Take care.
Info
Channel: Unreal Engine
Views: 31,414
Rating: 4.9612403 out of 5
Keywords: Unreal Engine, Epic Games, UE4, Unreal, Game Engine, Game Dev, Game Development, nvidia, chivalry, torn banner, level design, map design
Id: hE-lA5W4hNo
Channel Id: undefined
Length: 142min 51sec (8571 seconds)
Published: Thu Apr 08 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.