Game Access '25 - Raveen Rajadorai, Building the animation rigs for Hades 2

Game Access6,109 words

Full Transcript

Hello everyone. Hello. Hello. Uh hi. [laughter] I'd like to introduce the next speaker. I'm very excited about this one because uh I'm a big fan of his work and I partially blame him for my addiction because the games that he helps create are super addictive. I don't know if you guys ever played Hades. Yeah. Yeah. Yeah. Yeah. Yeah. then you know what I'm talking about. Super addictive and super impressive. So, please give it up for Ravin Rajadore. >> Thank you. Hello everyone. Um can you hear me? Yeah, perfect. Um yeah, today I'm going to talk about well Hades. Uh and yeah, I'll start with introducing myself. So my name is Ravine Rajador but most people know me by Ray and I started my career primarily in um the animation industry. So I worked on some films such as you know TV shows such as like Knights of Sidonia, Gibli stuffed uh Star Wars and uh shows for Disney and so on. Um and eventually I moved over to video games. So that's where I started working on uh a few other titles such as Battlebborne, Pokemon uh and I moved to working at Creative Assembly where I worked on the Total War series of games and most recently I'm at Super Giant Games right now and I'll and I I'm working on Hades. So that's going to be the focus of this talk. Um, so yeah, I'll what I'll do is I'll do a quick introduction to Super Giant Games because I think a lot of you might not know us maybe. [laughter] And uh I'll talk about the pipeline, a bit about the rigging and um what we do in the rigs and the features we go that go into it. So Super Giant Games. So, we're a small indie studio and we're known for games such as Bastion, Transistor, P, and obviously uh Hades, and now most recently the sequel, Hades 2. Um, we're a we're quite a small studio. Our core team is only about 26 people, which also means that each of our disciplines, because we're so small, like everyone in the art team, for example, is in charge of their own discipline. So um I'll show you a bit about the team uh in a bit but one of our qualities too is we iterate through production a lot and very quickly. So this talk will kind of go over the decisions we made and uh also about the pipeline how it's changed to allow that. Uh and obviously since we're so small, collaborations at our core where we we have to communicate with each other. We we do a lot of um you know design choices are just not one person. It's a lot of people getting together to talk about it. Um so yeah, I'll quickly jump to the art team. So, we're led by the amazing Gen Z uh on the art team and this is our art team basically. So, we've got one person Josh on VFX and UI. We've got Joanne on environment art. We've got Jeremy on illustration. And that's the 3D team. Uh we've got Morgan on 3D art texturing. Uh we've got Craig on animation and that's me on technical art. So handling the rigging uh pipeline tools, animation tools and also in engine troubleshooting and so forth. So today I'll go over a bit about the pipeline of uh Hades uh not the type of transports oil and first I'll talk about Hades one and we'll go over how it's changed how Hades 2's pipeline has changed since Hades one. Uh so a few qualities like for example all the animations in Hades one were basically just rendered PNG sequences um which has it has some qualities because it's all pre-rendered. We do have less restrictions on the rigs but going forward you also and you can also use any deformers on it but the uh the the big con of this is slow iteration times. So, if we take a look at Hades, everything that you see here is 2D. Oh, it's lagging. Uh, yeah. So, everything you see here is 2D. Um, anytime anything changed in the models, that would mean rerendering the uh PNG sequences for every animation. And as you can imagine that's the iteration times are quite long because anytime we need a change it's rerendering everything. Um, so and this is Hades for So looking to the SQL, a few things that we know we needed to do is speed up iteration times because we were going to have a lot of characters, which means we also needed to be able to iterate on them, change them, add new add new things without having to rerender whole sequences. So going into Hades 2, although it looks somewhat similar from a, you know, 2D aspect, all the characters, everything that you see here, um, well, all the characters are all 3D, so we're all running real time in engine. And all the enemies as well. And what this meant is because it's skeletal animation, we had a lot of benefits such as being able to being able to do animation blending in the engine, being able to uh simple things like slow-mos as well. It's quite hard to do when you're pre-rendering a sequence because if you start to stretch out your animations, your frame rate's going to uh be affected as well. So now that we're running real time in engine, it it's just a lot easier to deal with these kind of things. We can warp animations, make it slower, make it faster. We have the ability to scale even the characters without having to worry about the resolution it was rendered at. Um, and every yeah, everything was outputed to skeletons and skinning. Now, there are restrictions. I think a lot of you, especially if you work in games, you would understand that when you when you have skeletons and meshes in game, you do have the restrictions of making sure that everything runs at a proper frame rate. So everything had to be baked down to skinning. Everything had to be on a skeleton. So we couldn't use any deformers that we wanted. Um, and also one of the things that we did do is we worked on a lot more um a lot more characters. So, if you take a look over here, we've on Hades one, we did about 74 rigs for the game, but going into Hades 2 so far in early access, we've got about 196 rigs. So, we've uh yeah, we've done a lot more rigs, a lot more characters. There's a lot more diversities of characters as well. Um, some of this includes variants. Um, but these are more or less uh unique rigs. And I'll go over here to show some animations on some rigs. So you can see over here we attach we have the ability for example for the weapon suit to attach everything to the rig. And yeah, then we have Hecaty over there with some complex animations as well. Now talk a bit about the rig structure. How we basically changed how we rig. Um so going into the rig structure over here we we have a clear separation of how we build the rigs. We have layers to them. So we always have a control layer. This is the layer that the animators will control um and set key frames on etc. And then that connects directly to the rig setup. So this is where all the logic of the rig happens. Um we usually split it up based off a local setup and a world setup. So we can localize some defamations. Um and then you have a world setup. And then we have this other layer which is the base skeleton. Now this is meant to basically take in the transformations and everything from the rig logic and put it onto a skeleton. And going into the export skeleton, this is what actually gets exported to the game. This is just purely skeletons uh and meshes. We use direct connection. So it's a simplified setup as well. Um and one of the benefits of this is if we wanted to swap out a different type of rig, we would just basically break the connections, swap out to type B, for example, and connect it back to the export skeleton. So, we're preserving the skeleton that's already in game and we're also preserving the animations that we potentially have. And now I'll move on to to fit rigs. So, we have this concept of fit rigs where when we build a rig, the traditional way is you have an autorigger and you have a build step. But something that we do in uh on Hades 2 is we have this concept of fit rigs where basically it's you can almost think of it as pre-built rigs that we fit to the characters. So this allows us to do basically drop in fit it to the character that we want. Um there's no builds so it's quite quick to do and then we layer custom uh rig setups on top of it. And fit rigs are just my files. So, we just literally drop them in and connect them up to whatever we need to. I'll show a little example of what it looks like here. So, for example, if we had a fit rig for this biped, we would drop it in uh and using the fit rig points, we would position it, position the skeleton. And while we're doing this, this is updating the rig logic in real time as well. So that we we're kind of avoiding the build step in a way. So you kind of see we're fitting it over here. It's the character. Now there are some benefits to doing it this way, which is it's quick. It's easy to just drop in these rig components and rig modules and add it to the characters. And at the same time, it's it's quite uh it's less time consuming than going through a build step as well. So you can kind of see here we'll fit the arm now. So all all these are just basically points and we're just fitting the points there. And as you do this you can see that the rig logic is also updating. So towards the end of this you'll see that you can just pick up the rig and just start using it. And now this step doesn't mean we don't have a build step. I'll talk a bit about that in the next slide. But it does allow us to once we're happy with a module, it's to compartmentalize it into a fit rig module and then we can reuse that. So yeah, sorry. So here we've kind of fitted it and you can grab the controls and now everything just works as it should. So we still have a build step and the build step is something we usually do early on. So in our case we use the base skeleton as the core guide and we build our rigs from there. So it's a very quick blur of some of the uh calls. You know, for example, this is a little rigging API we have. It will create a controller structure. It'll create the control modules. And once we're happy with all of this, we basically turn this into a fit rig. Um, couple of other characters and some animations you can see. So, some of the rigs morph into different shapes. So, all of this is happening on a skeleton level. uh because that's all we can use. Um we do corrective shapes as well. So for example uh keeping the volume of the neck over there. Um we also use correctives for the usual spots such as shoulders and elbows, knees, etc. and twist joints as well. So you can kind of see. So again, all of this is happening on a joint level. Um, couple more pictures, different characters. I have a fancy pointer if you can see it, but you can see we have like different types of rigs, different versions to solve, but most of these base rigs are done using the fit rigs. So, we have, you know, the base bipeds and most of them reuse the same base biped. uh we might make tweaks here and there but it's it makes it a lot quicker. So with such a small team we've been able to build so many rigs so quickly while iterating through production as well. Um there are advantages as well to reusing uh a same a similar base structure which is you can copy animations over. So as you can see in this slide here's Kronos running like Mel. Uh, obviously we didn't use this in the game, so but it's really nice for testing because you can, you know, you get you can just drop in any animations and test it out. Um, now we'll take a look a little bit performance because one of the core things when you're dealing with rigs is obviously when an animator is working on your rig, you don't want it to be slow. You want it to have enough performance to so you don't have to play blast it every time you want to look at an animation. So when we built the rigs, we always kept that in mind to keep a decent frame rate to make sure that the rigs, you know, uh, evaluate properly on the evaluation graph. Um, and also taking taking into account that it would use the GPU for the mesh deformers as well. So over here you can kind of see an example of Mel's rig. I've zoomed into the profile graph. So what you're seeing here is basically how long each node in the graph or in the rig takes to evaluate. So overall it takes about 4.4 milliseconds per frame which although as you can see there are areas that can be improved quite a bit. It's more than enough for what we needed uh and for the animators to work in a comfortable way. So we'll look in another character. There's some that are a little heavier. So, for example, this character, a little more to the rig, takes a little longer to uh evaluate, but still 5.7 milliseconds is is a very decent frame rate to work with. Um, can be improved. And then going to Kronos, he has a lot more to him. He has also the setup that morphs into different shapes. So, his scythe can become his walking stick and his wings can become his cloak. So there's a lot of extra stuff to set up over there. So for him it took about 8 milliseconds which is still still really good. And now I'll move on to I'll move on to some rig features like things we put into rigs that are I thought were kind of interesting to take a look at. So for example we do something called dynamic rigs where we we have controllers. say in the traditional sense, you'll have a controller. You move a controller, it moves a part of the body or moves a part of the rig, but we also have an ability to change how much that's affecting the rig dynamically. So, for example, over here, we can take a look at a little uh video for that. So this little character over here can see a car uh you know you're moving the rig but you can also change how much it influences the rig as well. So this allows the animator to do things such as oh you know I need a larger motion for this animation or if I need a slow uh small animation. So similar things over here and then we do limit it so that it doesn't break the rig too much. Yeah. And we'll take a look at another one over here. So, for example, for this character's hair, you know, little controller to move everything around, but you also have the ability to change how much of the head influences as well. So, over there, we've limited it so it doesn't break the heads. So yeah, see it it does allow for a lot of interesting things and gives the the animator a bit more control over if they want to control a small area or larger area. Uh, one important thing about this setup is because we're working on a game engine, we need to make sure that anything that we do in this sense with dynamic rigs, it needs to transfer over to the skeleton. So, everything that we've done is always affecting the skeleton as well. Let's see if that plays. There we go. So, as you can see, it's even though it's a dynamic rig, uh, it'll affect the skeleton in the way it should. It's lagging a bit there. Let me just go back and I'll go back to that video. Yeah. And some of the other features that we implement is we use procedural animation quite a bit. Um so procedural animation is basically creating having animation generation within the rigs itself. So this is just purely for giving a a base animation to the characters. uh it doesn't mean that it takes work away from the animators but it kind of gives them something to work from. Um and it uses I'll talk about Bifrost a bit in in a later slide but basically we use by frost to do a lot of these animations. So for example this character we have procedural animations to do the wiggles on the tail for example. We have different layers to the uh procedural animation. So you can add variety to everything. Um and obviously this is driving the controllers so the animator can go on and add more to it if they wanted to. Yeah. and we'll take a look at another one. So, something that we also have to keep in mind with these procedural animation uh setups is basically because we're working in games, you're always going to have uh you're always going to have to keep a cycle because you're going to create a cycle of animation, drop it into the game. So when we build these procedural animation uh controls we always have to give the ability to make sure that you can form a full cycle. So in the end for example here um it'll always form a full cycle based off the wavelength. So if the wavelength is two every two units it'll form a cycle. So that way you can you can always form a cycle during your animations as well. And when I say cycle, I mean start by starting on the same frame and ending on the same frame. And here's another character with more procedural animation to it. So almost all of this is procedural animation. So generated in the rig. It's a little uh I don't know if anyone's played HalfLife 2, but kind of reminds me of the head crabs or whatever that comes from the ceiling. So, as you can see, we've got procedural animation for the mouth, for the uh for the little top area as well. It's all being generated. Each tentacle has its control for procedural animation as well. So you can add variations to it if you needed to. It really helps with just giving some base movement. Even though if we just needed something to just be alive a little bit without having to do too much work. Um this helps a lot. So as you can see with Kuribdus um and next to tie into procedural animation we use Bifrost quite a bit for procedural animation and Bifrost is basically it ships with Maya it's a visual programming system and what you can do is you can form basically you can create little custom nodes within the scene that you use within your uh within your rigs or whatever you need too. So for example, we we use it in most of the procedural animation and setups, but we also do use it for some custom nodes on the rig itself for stretching, squashing, um, etc. Uh, and it kind of looks like this roughly. So this is a very simple graph where you can kind of see it's just generating sine waves. It's some randomness to the sine waves and it outputs uh rotations that you can connect back to your rig. Here's another another one as well. So, it's just different types of animation. So, sometimes we we have more complicated animations for some characters, but other times we have uh less to put into it. So, yeah. And it gives us a lot of control because all of this is stored within the scene. So we don't have to if we are sending it to the animators or anyone we don't have to send a custom node get them to load up custom tools it all just loads up with the scene. Uh an added benefit of uh Bifrost is you can draw in the scene with it. So we do use it sometimes to get little uh fancy looking uh UIs. So, well, this is a little simple rig, but once we get to the point where we tweak we tweak the um the procedural controls, you'll notice those lines will update based off what the animation looks like. So, as you can see there, so it gives the animator a little preview of, okay, this is what the uh procedural animation's going to do. Um, and you have a rough idea of like the movement you're going to expect. It's the same for the top over there. It runs relatively quick. Um we haven't noticed much slowdowns, but obviously we only in this case we're only drawing two. So it's quite uh quite straightforward. And this is what the graph looks like for it. So essentially what we're doing is we're taking in the information of the procedural animation. We're converting it to strands and we're outpitting that into the viewport as a strand. Um I've got a couple more videos over here. So let's take a look. So, as you can see, some of the characters we have uh, you know, we build the rigs to for the weapons, for the instruments, yeah, some really cool animations. Um, a bit of skil over here. Has anyone played the skill uh Hades 2 yet? >> Yeah. Have you got to skilow yet? >> Yeah. So, even the rigs over there, you can kind of see that the ri we built the rigs. So, now they can squash into the clamshell. So, they're quite dynamic as well that way. Um, she too has a lot of the dynamic setup on her hair so that you can control how much of her hair moves. And couple more characters here. If she was a real cat, she'd follow this pointer. Yeah. And uh and yeah, the few more characters. And again, as you can see, we've we've got a large variety of characters. Some are, you know, some have these, you know, the uh the goat legs and some have, you know, little noodle legs. But we so far rigging system and our rigging processes have helped a lot this way where we can basically just generate rigs really quickly. Um they structurally and functionally quite simple rigs but they also allow us to iterate very quickly on uh the animations. Few more rigs here. We've got some crazy characters. I'm sure if you've played Hades 2, you've probably run into some of these characters already. And let's take a look at a couple more. So, Cberus has a lot to him. As you can see, there's a lot of controllers on him. Uh, but yeah, again, a lot of the things on his arms, for example, use a lot of the procedural animation. Uh, we use procedural animation for some of his uh ears as well, I think. And yeah, it just adds a lot of it just gives the animator the ability to add a little bit of life to the characters very quickly. And yeah, I think uh I probably spoke quicker than I practiced, so we're coming up to the end. Um, does anyone have any questions? >> Hi. >> Hello. >> Uh, firstly, thanks for presentation. I'm big fan of Hades. still have not had the time to play Hades 2, but I'm a big fan of the first one. So, it was awesome to see this. I was curious if there were any downsides, downsides to the change that you made uh from Hades one to Hades 2, from pre-rendered to realtime render. >> So, one of the biggest changes were in pre-rendered. When you pre-render, you can kind of use any deformer. You can kind of do anything you want in the scene. So you were able to cheat a bit more in the scenes. So for example, you could use a you could use a deformer that was you know tearing a character apart and you didn't have to worry too much about it. You could just you could just pre-render it becomes an image. So it there's no problems. But when you go into when we moved into like using skeletons and in working in the engine now we have the limitation of using only skinning and only joints. So whenever we needed to do anything creative like um or rather anything crazy where we had to kind of tear stuff around or do things that are not very skinning friendly then we would have to build a rig where it would all bake down to uh skeleton. So, for example, um when we looked at um Kronos' staff earlier, so if that was uh pre-rendered, we could just use a blend shape very easily, morph it into a a walking cane into a scythe. But what we did is basically we we baked down the defamation of the blend shape for that. So, we did have a blend shape, but we baked it down to the skeleton level um using smooth skinning decomposition. And yeah that was basically taken into the engine then >> and that were there any like problems with the performance for because of the change. >> Uh yeah so there are limitations when you using skeletons and meshes you kind of need to make sure they you can't go above a certain amount of joints. You can't go above a certain amount of skinning influences otherwise you're going to start affecting frame rates and everything. So we we do have limitations that way where we there's a set limit and usually what we do is which goes back to the collaboration step where if we find something that's not working quite within the restrictions then we maybe try to change the design scope differently and basically make decisions to make it work under the uh under the restrictions that we have. >> Thanks. Embrace and >> Hi. Uh, it was a great presentation. I wanted to ask you who's your most favorite god in Hades? >> Most favorite god? H difficult choice. There's so many. I love honestly I love all the designs so it's very hard to pick one but maybe uh maybe Athena I guess. Yeah, [laughter] I would say. Yeah, because she's got yeah amazing designs as well. Yeah. Okay. Hello. Uh so happy to see you there. Uh it's going to be like continuation to the question of then my colleague. Uh if there was uh if you have a favorite model who uh you were working at uh and if you have a favorite or the most difficult for you why it was >> uh that's a good question. They there are a few so there are um characters that we've done that are probably not seen yet. So there are some that are have been tougher to do. So, a lot more basically there's a lot more to the rigs and due to the restrictions that's always been the difficult thing to fit everything within the restrictions. So, I I wouldn't say I've shown anything specific maybe out of here. Cberus was a challenge uh cuz he he was so big on screen and he has a lot of different heads and everything. But yeah, there there were a few that were challenging, but it's not shown here. But um yeah, I would say just fitting it within the restrictions and making sure it works with skinning and everything, that was always the challenge. Actually, um on that note, Kronos was initially a challenge because it was something that was very different that we did where he needed to morph into something. His wings are also morphing. So that was a change compared to the other characters basically. So yeah, I would say he's at least here he's probably one of the harder ones. All right. Hi, thank you so much for your presentation. I was wondering uh how much of what you achieved is due to like built-in tools into the software you use and how much of it is custom uh scripts that you had to implement yourself. It's so when building the system usually as a technical artist you you know you would be building a lot of tools in a pipeline. So we do build a lot of custom tools for the art pipeline. But one thing about the rigging setup is when I when I was building it, I wanted to make sure that we didn't use too many custom plugins because I didn't want to go down the path of maintaining plugins through different versions and you know go down the years and then something would work because I need to recompile it. So a lot of the rigs are using this vanilla Maya nodes. Um and anything that needed something custom would fit into the Bifrost thing that we talked about where we just create something there. Um, and the nice thing about it is by frost ships with Maya, so you could just still load up the scene and use it. >> Hello. Thank you very much uh for your presentation. Um, do I understand it correctly that each of these almost 200 tricks uses its own animation set? So, how how big are these sets? How many animations you have per >> um we have a lot of animations in game. Uh basically, most of them have their own unique animation sets. They might be a couple of variants that kind of reuse it, but last I checked we had at least as far as animation clips in game, we probably had over 4,000. So, there is a lot of animations. So, so that would be like 200 per rate. >> Uh, yeah, for roughly the 200 characters. Some use more like obviously Mel I I would say Mel has the most animations because she's the player character. So, we have a lot of animations for the leans and everything. So yeah, we we do have a lot of uh animations and in Hades one there was a lot of animations as well which was where the the pain point came of if something changed you would have to rerender the whole animation set. >> Yeah, thank you very much. Hi again. Thank you for your lecture. >> Thank you for coming here. Um I have a question. How many issues are there when 3D artist is creating a 3D model and >> how often do you have to send it back for him to like redo the rettopology because it does it just doesn't work well with the faces or something. >> Um to be honest on this project not too much cuz our team is so small. So Morgan she's absolutely amazing at what she does. So when we first started the project uh the animators uh myself and also uh Morgan we all sat down together talked about what we wanted to do for all the characters. So we try to set up we set up documentation for basically this is how we'd like the topology to be for the characters. This is where we need stuff. So and then we tend to have little kickoffs as well to basically say oh I think this character is going to need topology over here. So because of the collaboration standpoint, we haven't had the uh thing of, oh, this is not working, send it back. Um, I'm having a hard time actually thinking of an occasion that happened. It might have happened once or twice, but yeah, I mean, it's very minimal. Hi. So, uh, in Hades one, uh, you said all the animations were, uh, rerendered if anything changed, but what about, for example, the weapons? So, um, were the weapons like, uh, rendered separately or with the character? >> Uh, sorry, I didn't quite get that. Uh, the weapons. So, >> Oh, the weapons. >> Yeah. >> Um, so those those were rendered together with the characters, so that would be part of it as well. So it's a new set of animations. Um yeah and that was an issue. I think uh our graphics programmer did a talk as well talking about some of the uh issues with you know rerendering everything se uh together and also one of the major issues is shadows. You can't really get uh proper shadows because it's 2D so it's just going to layer on top of everything. So yeah, um yeah, everything kind of had to be rendered separately like that. >> Yeah, the previous question kind of gave me an idea for another one. Um how did you manage to make shadows in Hades one? Uh so it I think uh when our graphics programmer got asked this question he his answer was we didn't [laughter] because it was an issue. It was basically an issue where it was rendered with the uh image and it would just layer over everything really because it's just a 2D image. Yeah. Though we don't have that problem anymore because we're 3D now. Uh hello uh thanks for the presentation. Uh I wanted to ask about the procedural animation you showed earlier. Uh you you use the Unity game engine for for the for the game or >> um no. So we have a proprietary engine. >> Okay. >> Yeah. So, and do you control the procedural animation only on the like the animation software side and then bake it and play it in the engine or do you actually control the the procedural animation in real time in the game play? >> Uh, so it's baked down from the animation software. So, we we do have a very quick pipeline. So, we can update animations very quickly and this goes into the engine. It also has hot reloading. So if we update the animation straight away there. So it doesn't run in real time. It Yeah. >> Uh hello. Uh thank you for the great presentation. Did you run into any issues with the number of skeletons when having like active skeletons on the scene where you are limited like you can only have so many numbers of different skeletons in per scene. >> Yeah. So when you look at the scene we do have like a general uh budget for how many joints and how much skinning can be shown on the screen at the same time. So a lot of the decisions we make for fights and everything is based off that budget as well. So we do set a budget and then we try to build the rig in a way that would fit within that budget as well. So that you know we can if we needed 50 characters on the screen we would make sure that the skeletons for this were very simple so that we could put 50 characters on screen here. Yeah. I hope that answers that. Yeah. Cult. Any other questions? Cool. Yeah. Cool. Thank you so much for coming. Yeah.

Need a transcript for another video?

Get free YouTube transcripts with timestamps, translation, and download options.

Transcript content is sourced from YouTube's auto-generated captions or AI transcription. All video content belongs to the original creators. Terms of Service · DMCA Contact

Game Access '25 - Raveen Rajadorai, Building the animatio...