Good morning, good afternoon, good evening, good night, whoever you are, wherever you are. Welcome to the Thomas Brush live stream where we learn all about everything you ever dreamed of in the game dev sphere. We're going to learn today about let's see here. I've got six different magical secrets that only I know about. Obviously, that's not true. But I've got six magical secrets that maybe you don't know about that can transform a very simplistic I'm talking capsule collider, primitive cubes. We could transform that into an actual fun game. Okay? So, I'm going to show you how to do that live. All of these principles here, you're going to be able to use for your own games. It doesn't matter whether they're 2D or 3D. Okay? It's It's uh a little bit about game feel. It's a little bit about sound. It's a little bit about measurement.
It'll make sense. I promise. So, come on in, guys. Welcome, welcome, welcome. And by the way, I wanted to say a huge, huge thank you to Juan A, Yaya, Gareth, Caitlyn, Denny, Tulio, Michael, and Galame. Galame, welcome to Fulltime GameDev. By the way guys, full-time gamedev is in this sale is 50% off for my massive course. This is the new year sale is 50% off and you got five hours left. Okay, I think there might be like 10 seats left. Seriously, I think there's like 10 left. Um, so check it out below below. Click the link below and see if it's something you're interested in. Um, you're going to learn not only what I've learned in the last decade of making indie games. And by the way, I make actual indie games. This is Pinstripe. Highly rated, featured by Time magazine, Nintendo Switch. This is Never Song. This is the PlayStation
Collector's Edition. This was featured by, I believe, Kotaku. Um, and and Washington Post as well. Although I don't think Washington Post liked this version, but I don't care what the Washington Post thinks. But I'll still flex that they wrote about it. But Apple Arcade actually bought this game and and featured it on their subscription model for a couple years. But if you want and I'm also working on a third commercial release called Twisted Tower. If you want to learn from an actual indie game dev, um, a game dev who went full-time on three separate occasions with just a demo. Whether it's crowdfunding, I'll teach you about that. Whether it's hitting the Steam front page, I'll teach you about that. Whether it's signing with a publisher and getting an advance and working on your game full-time when you just have a demo, I'll teach you about that. Unity, GDO, Unreal, whichever engine you want to learn, you're going to learn it. You're also going to get my 2D and 3D art programs completely free, but only for this sale. Now, if you don't believe me and you think I'm full of it there, there's some reviews here um from students who actually went full-time,
which is so freaking cool. Um, real students, you can reach out to them if you want. Uh, they went full-time with the help of the program. So, click the link below. Again, guys, you got 5 hours left and then this thing is gone. Dunzo. Alrighty. And by the way, if you're a student, let me know in the chat what you think about the program. I'm going to go ahead and get started here, guys. This is so much fun. I've been wanting to do a live stream like this, a workshop like this for a long time. What I've got currently here, and the assets are linked below. What I've got here is a free character controller and a particle effect. A free part I'm not even going to use that honestly. Yeah, really. I've just got a character controller here and some materials. We'll go through these materials in a second. And so, let me hit play here and just show you this boring game, right? This is the easiest thing to make on the planet. Okay. All you do is drag your character controller that you downloaded
from from the asset store. You drag it in and I tweaked the jump values. You put a primitive cube there. And then there's also this sphere here. Okay. And this sphere when I touch it, it deletes. Okay. That's just a very simple script. I'll open it up for you. Let's see here. Here it is. Very simple script. On trigger, enter. It'll play a collect sound. and that and it destroys it. That's it. Okay. So, the goal here with today's workshop is to go through these five things. Okay. These five things are as follows. I'm sorry. Six things. Six things that are going to make your game 10 times as fun. 10 times as fun. And by the way, I just want to double check. Is my sound good, guys? Are we good here? Cool. Uh, hey, Shadow Realm. How you doing, buddy? Tuck, always good to see you in here. Um, Delbone, good to see you. Foxite, always good to see you in the chat. Thank you so much for joining. These six things here, these six things
are going to make your game 10 times as fun. Okay, and so we're going to go through each one. Let's start let's start with measurement. Okay, most game developers when they're building a level, they're not thinking about the grid. They're not thinking about what's the player jump height. They're not thinking about what the player's height is. They have no idea. They're just doing this. And I can make a pretty cool looking level like this. Look, it doesn't matter whether it's 2D, whether you're making an RPG, whether you're making a first-person shooter, it does not matter. But if I just have fun, and this is this is a particular issue with the terrain tool. The terrain tool is particularly um the a particular culprit of this. Let me throw on a ground color really quick here. Uh, it's a particular culprit because with terrain, it's really hard to be precise. So, if I wanted to make a
fun little game like this where there's a bunch of platforms, if I hit play here, it's not going to be nearly as fun. And this this seems obvious to you guys, but I can't tell you how many times me personally, but also a ton of other game devs have not been precise with their measurements. This is not fun. This is not fun. This does not feel good because it's the world is not fine-tuned to my liking. Right? Human beings, whether you believe in God or evolution, the world is fine-tuned for humans. Or if you believe in evolution, humans are fine-tuned for the world, right? I think that's correct. I could be wrong there. Um, you want to do the same with your games. You want the world to be measured precisely for your character. Okay. Now, the way you do this and the way that I
do this is I always start with fine-tuning the player. So, I'm going to start with the player and then I'm going to make the world match the player. Does that make sense? So, I'm going to say, okay, well, what is the jump height? How high is a comfortable jump? So, I'll I'll get it to feel really good. I'll like, okay, that feels great. I like that. And then what I'll do is I'll figure out what's the ideally it's an integer. What is the integer for the scale in unity meters of a jump height? So, my guess is, in fact, I'm gonna I'm gonna tell you the truth here. I don't have a guess. I figured this out before I started the stream, so I know exactly what it is. It's going to be the exact height of the player. A capsule collider for a character controller, whether it's a first-person controller or a third person character controller, 2D
or 3D, the capsule collider should be two times as tall as a unity, a unity primitive cube. And that this is what this is here. It's set to one one. It's exactly half the height of my capsule collider. So, in this game, I'm gonna I like the idea. I like how this jump height feels. And it's two. Okay. So, this is my cube here. And it's going to now be so much funner to jump onto things when it's perfectly sized. That sounds so dumb. And it sounds like, wow, Thomas, really? This is your advice. I can't tell you how many games I've played. I I play a lot of your games on stream. All of you. Most of the time, the world is not sized for the controller. It's kind of weird. I'm like, what is happening here? It's not game developers. They they
approach game making games so free flow and spiritual and creative. They just want to I just want to paint the world and I want it to be what I want. It's like, no, make your world for the character controller precisely and commit to that. Commit to the jump height and build your world. So, in this case, now that I know that units of two are a good jump height, I can say, well, okay, well, let's make this four by four. Right? So, now I know that if I and this this also helps a lot with level design. And by the way, you can hold V here and snap it there so it's perfectly aligned with that. And then by the way, if you now now that you know your unit size, you know that one is half a jump, two is a full jump. Now that we know that, if I turn on snapping and I have it set to one here, building my level is super easy. I can go, okay, we're going to go one unit or two units away. Uh, we're
going to go two units higher. Is that two units higher? No, 4x4. There we go. um we're going to go two units higher. So now I know that I'm going to be able to jump to that and I could just pretty much predict as I build my level. I could say, okay, 6x6, I know that I'm going to be able to jump up here. So not only is this a game feel thing, but this is also a level design thing, which is a totally different workshop we need to do. But for the case of this this workshop, we're talking about feeling. You want the player to feel good when you're playing your game. That's what makes it fun. The measurements and the grid size are so freaking important. It's not necessarily that you need to do a specific kind of grid or pick the right right units that I recommend. What I'm saying is you need to make sure that you know your character controller intimately and you know how high it can jump, how fast it can go. And then you need to build the world around those units. Again, it doesn't matter what
kind of genre you're in. As long as you're controlling a character and it's not like a deck building game or something or a slot slots game, you need to know your character controller's height. So, again, I can do, you know, 8 by I'm sorry, uh, yeah, 8 by 8 by 8. And then I know, okay, well, if I don't want the player to be able to jump onto something, I would go, okay, well, I'm going to make this 12 x 12 x 12. So now I know it's four units high, meaning four units higher than this one. So I know the player will not be able to get up there. Hopefully you could see why this is valuable for level design because you don't have to do predictive level design. You don't have to try and do a bunch of guess and checking. You just know it's going to work, right? That feels good. That didn't we We'll We'll put them close to each other
here. So now we know. And by the way, it looks like our character's size. If we set this to one by one by one, the character size is basically one. Yeah, it's one. So that means, see, this is why it's so important to know values. So you guys just experienced in real time with me why it's so important to know the value, the size, and the jump height. If the player is a unit size of one, he's going to get stuck in here. Right? So what we want to do is we want to just shift it either this way or the other way. Right? So that's why sizing is so important. I do this with uh Twisted Tower. Twisted Tower is my third commercial release. I've been working on this game for 5 years. And believe it or not, guess who taught me this. It wasn't I didn't learn it myself. I didn't learn it in school. I actually learned it from my team member whose whose salary I was paying. So, they taught me this. So, literally, I'm I'm
the boss of somebody else. I'm the project lead. And I was just using random sizing, which is a huge mistake, especially when it comes to game feel. So, this feels so much better. See? But I can't get up there, right? So, that feels so much better, guys. So, that's the first thing, which is sizing. Now that I know the size of my player in terms of his width, he's one unit wide. And I know how high he can jump, which is two units high. Now, I could build an entire level based on these sizes, right? And notice how grid snapping is so valuable here. I can just create a boxy level design. And by the way, most levels should start this way. They should start pretty boxy, honestly, unless it's like an open world game in and you're using terrain. But even still, there's certain parts of even
terrain that me and my team will will use uh when I had a team, we will use um grids just to get perfect sizing so that there's no, you know, confusion about if the player is going to be able to jump up onto something or or climb something or walk ac jump across something. There's no real confusion. So, this is incredibly important. You really don't want to um I I guess I what I want to say here and then I'll move on to the next thing. I don't want to I can't overemphasize the value of a grid system and understanding your units. So, let's just do this. And it's also really important to know how far the player can jump, right? That's really important, too. So, you just want to make sure you have all of those sizes. um all of those sizes memorized or written down.
Give me just a second. I'm just going to make a quick level here, guys. Then we're going to move on to the next thing. So, let's just do 6 by 6 by 8, right? Uh no, six by six by six. There we go. And again, just snap here. So, here's our cool level design, right? Nothing fancy here, but I want to I want to get this done here so we can move on to the next thing. Okay. So, anybody have any questions about grid size before we move on to the next one? Anybody have any questions before we move on to the next one? Okay. Is it the same with rooms? It's more so true with interiors. Using a grid for interiors is, in my opinion, more important because with like a terrain game where you're e on the exterior, a lot of it is just lateral movement. There's not a lot of platforming or climbing or jumping
onto things. Not necessarily, right? Um it's about exploration and and you know, scavenging for supplies and killing enemies. Interiors, you can only do so much of that before the game gets boring. So oftentimes there's platforming, there's holes, there's things you need to climb up. And so [snorts] having an interior design without a grid measurement uh or a grid guiding your level design is almost suicidal as a game developer. Do not do that. Okay. Any other questions about the grid? This process is way easier than ProBuilder. ProBuilder is tough. exteriors are are really easy. Like if I was to make a I could make a platforming game like this with like five levels with like decent cell-shaded graphics, I could do it in 14 days. I could knock it out and have a
game that's like 30 minutes to an hour long doing exteriors. Interiors, it's a totally different paradigm. Uh how do you keep scale consistent with Blender? Oh man, that's something I haven't even done. My team member did that, so Felipe did that. Um, I'm not sure. You just you could change the unit sizes in Blender, but I'm not sure what the um the ratio is, so I'm unsure. But you can change the unit sizes in Blender for sure. Um, does anyone know the answer to that? Do you know how it works in a game like Exit 8, a horror game? I wonder how I can turn and be in a new level. I've never seen Exit 8. Okay. Okay. So, guys, let's go ahead and just test this level out. Make sure it's decently fun. I'm going to zoom out here and go ahead and just platform. See how fun that feels?
It's very much built around my character's abilities. The world is built for the player. That feels great. Okay, that's step one for great game feel. And in I've never and we'll move on to the next thing, but I've never actually heard someone talk about measurement being one of the key aspects to game feel. Um, so yeah, do that. Very first thing you do is get the character controller feeling good. The jump height, the movement, you like it. Okay, lock it in. Then measure your world so that it's correlated to the player's uh abilities. Next up, color theory is going to be one of these elements to your game that make it feel juicy, that make it feel fun, that make also it
uh well it helps communicate the game to the player and it makes the player better understand the game. Okay, so we're going to quickly do some color theory stuff. And the bonus here is using lighting, fog, and post-processing to complement your color theory. So, we're going to briefly do this. It's not complicated. There's a link below and you can look at a bunch of different color palettes that Adobe has and you just copy and paste them into your game. But this is the color palette that I want to use. Okay, so I kind of came up with this on my own. This is the color palette I want to use. Now, I've already created materials for this. The materials don't have smoothness values, so they're not shiny, so it's going to look very velvety, which I like. Okay, but I've already created these for you guys because I don't want to have to create all these during the live stream. Um, the blocks are going to have this color. Okay. Um, the ground is going to have this color.
So, it's a little subtle, more of a subtle gray. Okay, the player is going to have this is going to blow your mind. The player is going to have this color. Okay, and the coins are going to have this color. Okay, and they have a subtle emissive on them. Okay, so the emissive makes it well not receive shadows and it makes it look like it's a glowing orb. So it's just an emissive of that orange color. Okay, so again, this is the grass. This is the player. This is the coin. And then these two I'm going to use to create a skybox. I've already created this. All it is is a gradient at the horizon with the yellow color almost like the sun is rising and then just a simple almost tealish blue. Okay. So, I've already created this skybox. It's it's really simple. It's really really simple. So, it's right here. Um, let's make sure we assign the skybox texture.
There it is. Okay. So, as you can see, guys, already already the game looks 10 times better. I have no textures. I'm not using any strange weird shaders or materials or or or adding normal maps or specular, none of that. All this is is just great color theory. And in fact, you know, you can do stuff like this. You can uh like for example, if I wanted to do isometric like this, um what you can do with isometric games, watch this. This is actually I I didn't even realize I wanted to show you this, but with isometric games in particular, um what you want to do, press F here. Why Why is that? There we go. With isometric games, what you want to do is is create height. So in a normal game, you get depth, right? You can see into the sky like this. With isometric games or top down games or
strategy games, you don't get depth unless you elevate the player, right? So, I can create like a let's say a big um piece of ground here like this. And I can have it floating in the sky, right? And then what you do with the skybox is you just bring the horizon down. There we go. That looks freaking incredible. I love this. This is so valuable um to understand to understand why color theory is probably the lowest hanging fruit of all the juice and game feel and flare you can add to your game. If you don't understand color theory, you're at a huge disadvantage. Go buy a book on color theory. read all about complimentary colors, triadic,
quadratic, all the different formulas for color and add it to your game. I didn't use a um a calculator or a tool or a widget to come up with these colors. I just understand color. And so I just go in there and I I go into Photoshop and I quickly create my sky, my horizon, my grass, and my player. And then there you go. So that looks incredible already, right? So anyway, let's go back in time here. And we're not going to make an isometric game, but I just wanted you to know how you can utilize the sky color in isometric games. That's why a lot of isometric games look like you're floating on platforms or you're like on a high cliff because they have to get the you have to be able to see the sky somehow, right? Okay. Um let's fix the uh horizon here. And then really quick, you'll notice that I said use lighting, fog, and post-processing to complement
your color theory. So, here's what I'm going to do. You'll notice that that is very kind of obtrusive. There's no blending here. So, what you can do is go to lighting and add fog and make sure the fog is identical to the horizon color. And now we've got this subtle fade. Now, if we wanted to, we could crank it up a little bit like that, you know. And I could probably brighten it up a little bit so it's more matchy. There we go. Match it perfectly. There it is. That's great, man. I'm going to save the game here. Does this make sense so far, guys? Does this make sense? We can also use post-processing to create bloom lens flare. It's just adding that level of polish and realism to an otherwise very straightforward game. Simple colors, simple shapes. So, by default in Unity 6, I'm actually glad they've done this. I used to get frustrated about it, but I realize now pretty much every game I
make is going to have post-processing. It's nice to have a volume that's in the scene by default. So, I'm going to go ahead and turn on bloom here. Now, we could crank it up if we wanted to, right? Um, I'm gonna turn off high qual Well, we can keep it on. That's fine. Um, so I like that. That's good. You'll notice that my my uh coins are are glowing as well. So, that's good. If I wanted to, I could really crank it up, right? Like that. That looks pretty good, actually. Um, and then we're going to go to um some do some color adjustments. Just crank up the contrast just a little bit. You could do that. You could do this. You don't want to do too much. That's about it. You can do a vignette if you wanted to, but I'm not going to do it. I like I don't like vignettes for some reason. Um, and then also lighting. Okay, so by default, we have this directional light. We can rotate it and create some cool different shades. So, you'll notice that I'm picking the
one that I like the best for this level design. So, that looks pretty good to me. Okay. And then finally, we can use lighting inside of our prefabs. So, for example, if I go inside my coin here, I can actually add this point light here. I'm going to save it. And you'll see that it has that subtle glow, right? So, this is just a lowhanging fruit, adding subtle bits of post-processing, some glow here and there, um some some point lights, but overall, the whole point of this section of today's workshop is mainly color theory. And you'll notice that I'm sticking to, and by the way, we've got a little lens flare there on our directional light. It's just called lens flare SRP. That's all it is. But you'll notice that I'm sticking to this color color palette religiously. Okay, this right here, sticking to it, right? And this is what it ended up looking
like. Okay, so let's hit play here and take a look at the game. So far so good, guys. Is this helpful at all? I hope it's helpful. So, I don't know what that is. Yeah, I'll I'll tweak the lighting. The the shading is really strange. It's almost like it's having trouble calculating the normals there, but so far so good, man. Right. Looks pretty good. Okay. Now, if we wanted to, we could come up with a stone color as well. So once you get your base color palette down, you can start going in and saying, "Well, you know what? I need I need a little bit of grays." So what I'm going to do is I'm going to take this gray one here, or I'm sorry, let's let's go to our green color, the blocks. I'm going to call this block stone just so we can create some variation. And I'm just going to eyeball kind of what I'm thinking here. Okay, let's go down a little bit. There we go.
There we go. There we go. And again, if you're not talented as, you know, a color theorist, you can always just use um you can always use Adobe's tools. Adobe has a color picker tool that's really helpful. All right, let's go ahead and reduce our post-processing a little bit here. That bloom is a little intense. There we go. Save it. Okay, so far so good, guys. Okay, let's hit play. Just take a look at it. And I'll I'll I'll tweak the uh directional light as well. So, you can see here why color theory is so important. Okay. All right. So, let's let's tweak that directional light a little bit.
There we go. It's good to me, but we could probably There we go. That looks great, man. Okay, so far so good, guys. Next up. Next up, reactive sound. And notice I've put the words reactive. I could have just said sound, animation, particles. Reactive means, and this is particular to game feel and juice, reactive means that when I press a button, I get a reaction. And I'll show you what I mean here in a sec. Um, it means that when I jump in the air, I get a sound. When I collect a coin, instant reaction. The player needs to know that what they're doing with their fingers is getting a reaction. So, let's go ahead and start adding in some sound here. Okay, first things first. We need to do some jump sounds. So, I've had Claude.
Claude is part of C-Pilot here. Um, I've had Claude add to the character controller that I downloaded from the asset store. I've had it add some scripts or or some functions that will detect when I've landed and when I've jumped and it will play a sound. So, I didn't write any of this. I just told Claude to do it. Granted, I've been writing C# for 10 years. I'm sorry, maybe even 12 years. So, I know how to do all this. The truth is though, at this point in my career, I cannot honestly tell you that Claude is not helpful. It is. It's insanely helpful. So, I've had Claude quickly write a script to help me put in some sound. I've got a temporary sound here called temp sound. It's just my mouth going like that. And so I'm gonna have a jump sound and a land sound. So let's hear this out.
Okay, so let's let's do some sound design here, guys. Just because you're making a game that looks simplistic doesn't mean you can't add juice and flare and flavor to your world and make it feel real. Okay, so let's go ahead and head on over to where I get my sounds. I don't recommend you use this um source because it's expensive to actually license your sounds for games is quite expensive. Um I've spent thousands of dollars on licensing my sounds. Um but we're going to use it in this case. A resource you could use though if you don't want to pay is freesound.org. All right. All right. So, I'm going to type in um uh grass foot or grass step. We need just a sound. These are great. Let's download these. I
also need a thud sound. And this is going to be our jump sound. There's a good one right there. I like it. Okay, we're going to use a free tool called Audacity. And by the way, those of you just joining us, just remember you can check out the course below. It's called Fulltime GameDev. It's my massive gamedev course. It is currently five days, I'm sorry, five hours left to join the program. Um, and get 50% off and also get my 2D and 3D art programs completely free. All right, let's see here. We're going to do the jump sound first. That's great. And you you want a little bit of a tail when the player jumps off the ground. And what I mean is it's not just it's you almost want to hear dirt crumble. Can you hear that?
Okay. We can do a little bit of a whoosh sound. Okay, here we go. Let's bring it in. We're going to make that a little bit lower and slower. You want a little just a very subtle. Okay, let's try that. And the thing about sound is it's all just guess and check, man. Uh, I always want to be at -10. Okay, I'm going to make it mono. Might as well. There we go. And I'm
going to export this as an a uh a wave. um sounds. I'm going to call this jump. Now, guess what? I'm going to do jump. What? Jump one because I don't want to This is This has to do with game feel and game juice. I don't want one sound. I want like four. I want to hear every time I'm jumping. Again, that's completely related to game feel. So, let's do a jump sound. Take a look. Okay, let's do a little bit of a hoot sound and maybe lower the I don't want as much treble, honestly. So, I'm going to reduce the treble. Let's flatten that. That's a little much. There's just a little too much trouble. It could be just a volume thing, honestly. All
right, let's do uh my voice. Okay. Now, am I making a game about a capsule? Not necessarily. Right. What I'm trying to show you guys is how color, simple shapes, sound, music, and game feel, and juice can make a game as simple as this fun. Okay, let's do that. We're going to do call this jump one export and we'll take a look here. Hello. How are you? Eddie, how you doing, buddy? Okay, so you can see how it's already getting repetitive, right? So, what we want to do here is have a bunch of different sounds. Okay, I want another
one. Okay, there's one. And I'm going to do uh I'm going to lower the pitch of the other jump sounds. So, we're going to lower that to7. Okay. And we're going to have, let's say, three jump sounds. Let's just do three. And for the next one, it's going to be pretty quiet. There you go. Awesome. For this one, we're going to do another pitch shift. Probably go up to like eight. Export jump three. I'm going to have Claude really quickly in agent mode. I'm going to have not in agent mode. I'm sorry. I'm going to do it in ask mode. I'm going to have Claude. And again, I'm not saying I recommend Claude. I'm not saying you shouldn't learn to code.
If it were me, I would learn to code and become the best C# developer I know. And then I would learn Claude or C-pilot. So, I'm going to have Copilot play. Um, please adjust the script so it plays random uh plays from an a list or an array of multiple sounds for jumping and landing. Have it be random. Okay, so you're thinking, Thomas, just write that yourself. I can. Sure, I could, but I let the prompt run. Okay, as it runs, and I'm like 90% sure it's going to do it, right? And we'll take a look at it. As it runs, we're going to come up with some land sounds. Okay, the land sounds are going to be probably the same as this here, but we're going to do a little bit shorter. And we're going to do like a thud, just
a sound. So, this is one of those things, and we'll see how this plays out, but this is one of those things that I like to talk about as it pertains to AI, is you put the prompt in and then you let it run and then you can focus on what you want to focus on. Right? I don't have an ethical conversation to have with you. I don't know the ethics of it. I do know that it works. Okay, let's do body thud. I just need a sound. There we go. All right. And you know, this is assuming that the game is just basically grass, guys. Um, what you would want to do if your game is more complicated
and has multiple surfaces is you want to basically have a variety of sounds per surface and you tag the game object. That's way too loud. Okay, track that mix and render. We'll see how this sounds. But again, we're going to have three different versions. So, I'm going to call this land one. I'm going to do a pitch shift, land two. There is no, by the way, never mind. It's not worth talking about. Okay, let's keep going. We're almost done with the jumping and landing. And I'll cut some of it out so it sounds a little different. I'm not going to like this sound, by the way. I I know that I'm not. So, what we're going to do is we're going to get this working and then we're going to go ahead and tweak
these values because I'm pretty sure I don't like these. Um, but let's go ahead and take a look and see what Claude came up with. Claude said, [snorts] I'll modify the use of to use the use of arrays. Um, good. So, we have it right here. Yeah, there it is. So, those are good. And then let's see down here what else he did. um randomly selects a sound using random.range. Yep, it works. All right, let's hit apply and it'll just scrub through and add those. Okay, let's let the sounds import. So, here's our sounds. Okay, those are a little long. The tail is way too long for that one. Let's let's fix this tail here. So, again, hopefully you guys can see not necessarily that Thomas is recommending AI. I'm trying to show you though practically just I just it's better to just show you. Okay, I could focus on sound design while this gets added.
Now, some of you could probably write that faster than Claude did, right? Which is totally fine. Um, and if that's what you want to do, that's what you want to do. Um, I totally understand. It's funny because like whenever I talk about AI like on a g maybe like in a podcast or in a conversation, people are they automatically assume they're like, "Oh, he doesn't know C." And it's like, "No, I've been using C# for 10 years." Just because just because a software developer ends up using Copilot to help them with code doesn't mean they don't know how to code. Um, okay. So, let's go ahead and make these sounds play randomly. So, it should look correct in here. And boy, I hope this isn't bad because then my whole point is incorrect. But here's our jump sounds, my point about AI. But you can see that it automatically added, you know, made an array out of all this. And it's going to randomly play these. So, let's double check and see.
All right, here we go.
[panting]
Yeah. So, I think all we need to do it's the land sound doesn't bother me too much, honestly. I think what we want to do is we want to have the land sound play at a much lower value, maybe even two. Okay, so here's where the land sounds are being played, right? And by the way, this is this is this is AI, right? This was written by AI. But when I look at it, it's like, yeah, that's what I would do, you know, this all of this. Um, I probably wouldn't do a null check, honestly, of the audio source because it's like it's
not going to be null, but I get it, you know. [snorts] Um, let's hit play here. So reactive sound, right? And we could do all kinds of cool sounds. You know, we could do sound or a sound or a sound. But in this case, I I kind of wanted to create some organic sounds. Okay, so let's let's go ahead and jump into artlist.io. and grab some coin sounds. Okay, so coin collect and I'm going to type in magic as well because typically you'll get some like cool magical or anime type sounds. That's great. I also want coin coins like a sound. It's one thing to have a magical sound play. It's another thing to sound like it was added to your bag.
There we go. There we go. All right. So guys, we're not doing any graphical stuff right now. It's just sound, okay? We're not doing any graphics. It's just you basically it's like almost like we're making a game for somebody who is blind. That's kind of how I think about sound. It's like if I was to try and communicate to somebody who is blind, what just happened? That's what sound is for. Not only did the uh coin disappear and play a magical sound, it got added to my bag. It's a little too fast or a little too slow. We'll do it together. Make that quiet. This is the tail is way too fast or way too slow. So, let's just make it a little bit um quicker. There we go. That's it.
And again guys, I want to do I want to hit it at -10. And we're going to go ahead and do mono. Why am I doing mono, by the way? Does anyone know? Any sound that is a 3D sound, meaning it has a location will be mono. Any sound that's a 2D sound, you can do stereo. So like ideal stereo sounds are like music or ambience like trees are blowing in the wind, right? It's not actually 3D. It's 2D. It's always playing. It's not based on the camera position. Those you want to do stereo. The moment you turn it into 3D, it it turn makes it mono and puts it to one side or the other. Does that make sense? That's good. All right. There's our our um coin collect sound. I'm just going to call this coin collect. Click export. We're going to go to our coin here. Go to the prefab itself. And we're just going to add that clip. Coin
collect. And again, this right here, this script here is this is all just AI junk. It's not junk. It's good. Now, this this should be a persistent object, but that's really based on the character controller. Um but um yeah, like I should be able to access this using um what do you call it? Like I just totally blanked. We do it in Twisted Tower. What's it called when it's persistent? And it's a um what's it called? It's a You guys will answer in the chat. Anyway, um let's save that and hit play. Good morning, Ink Drop Studios. That's how you do it here. Okay. Now, you'll notice we don't have any animations, right? We don't have any animations. The question is, do we have good sound so far? Are there any other things we need to do with the sound? I don't think
so. I think overall it's pretty good. Um, we do need footstep sounds. Yes. Do you guys want to do it? Now, the way we're going to do footstep sounds is we're going to have to we're going to have to go into the animation section here because sometimes the animation will then determine the sound. Okay. So, I'm going to go ahead and move forward to this to the next tip, which is reactive animation. And we're going to use um what I'm going to call animator functions. It's going to be a script that plays a sound based on a animation event. Okay. Will I make all this free? Well, it's all free in the sense that these are all free assets and I'm I'm showing you exactly what to do. Um, yeah, footstep sounds are crucial. I again, I can't tell you how many times I've played y'all's games. I'm not saying it's your game, but y'all's games and there's no footstep
sounds. It's very frustrating. So, let's go ahead and create an animation here. I'm going to go ahead and just put it here. I'm going to create a new folder. I'm going to call this animation. Oops, wrong uh route. Here it is. I'm going to call this animation. And I'm just going to create an anim called player uh walk. Okay. Now, all we need to do here is we're going to make the root, I believe. Let's see here. Yeah, as long as we're not messing with the actual capsule collider itself. This is purely graphical. You do not want to move the physics object. You want to move the graphic. So, all I'm going to do here is I'm going to set it to zero. And then I'm going to go up to 0 2 and then one. Go back down to zero.
You think that looks good. My guess is 60% of you are like, "Good. That's great." No. What you want to do with this kind of movement, and this is true across the board, even if you're doing a highly complicated animation, humanoid animation, you want it to follow gravity. Okay? Look at my hand. This is slow motion. It's like a bouncy ball, right? Singleton. That's what it is. Singleton. Yes. We don't want to we It's Never mind. It doesn't matter. Don't get distracted, Thomas. Um, okay. So, what we want to do is go to our curves here and take a look at the curves. Okay. So, we go to the curves here and I just go to my yalue. There it is. I can do this. This is exactly what a bouncy ball does. that subtle change.
I'm not saying something cocky, but and I shouldn't because sometimes I'm an idiot, but that subtle change is what separates a new game developer from a seasoned one, understanding how to use the curves. So, it feels heavy. Okay, now this is just going to play by default. Okay, so we can walk around and feel it. Um, which is fine. So, that's fun, right? But we want it to stop. We want it to stop. Um, although I don't love that the camera's following the route. What is it following? Because if I did it with the mesh here, it might be different. I'm gonna try it with the mesh really quick, guys, because it's it seems like the camera is following the route, and I don't like
that. You do 0 2 or 3 and then go back to zero here. Let's see if it's f I don't want it to follow the route here. Let's try that and see. It looked like the camera was moving up and down, which we don't want. It is. Why is that? because it's following the capsule. That's the camera target. Got it. Okay. So, the way this works is the camera target is inside of the root. I'm sorry. It's inside of the um Got it. Okay. Yeah. So, we need to basically what we need to do here is we need to adjust the mesh. Okay. So, let's let's go back in time here and quickly do this 0.25 and then zero here. There we go. All right. So, there's that. Good. We're going to go to our curves, go to the Y, and adjust it accordingly.
The more dramatic you want it, the higher the ang the handle you want to pull up. So, let's try that. That's much better. It feels much bouncier now that the camera isn't following it. Okay, I swear this kind of stuff matters. These tiny little things are what are going to make your game fun. I'll prove it to you. Okay. Okay. So, I'm adjusting my heated blanket. It's that time of year where I just put heated blankets on me all day. Okay. I'm going to save it here, guys. Now, we've got this animation. Right. Really quick, I just want to make sure this animation only plays. I'm going to create a new anim only plays when the player's walking. Okay, we're going to use uh uh co-pilot for that. Now, just so you guys are fully clear, so it's fully clear. I don't know how many
times I have to say this. I've been making my own games for years, for like a decade. I've been writing C from scratch. Okay, for the purposes of this tutorial, we're going to use C-pilot because it's just going to be faster, guys. Okay, we're not doing a coding workshop. Okay, so for the purposes of this tutorial, we're going to be using AI, okay? Because it's just faster. It just is. Okay, do I recommend it? I don't have an opinion. Okay, player idle. So now we have an idle state where the root is set to zero. And that's all we're going to do. Okay. Now if we go to our animator window, animation animator. Okay. Uh for some reason it's not showing my There it is. Okay. There it is. So the idle state is going to be our default. Okay. Then we're going to create a parameter and we're just going to it's
going to be a simple boolean and it's going to be walking, not walk. Okay. Walk is a function name. Walking is a state of being. It's a variable. It's a boolean. It's true or false. You could do is walking, but walking is great. If we're walking, we go immediately to the walk state. No exit time, but there will be a subtle transition. And then we're going to go back to idle, but we're not going to have an exit time. And do a pretty quick transition. Right. Walk needs to loop. I'm fine with idle looping as well. We'll create a cool idle animation. Walking. If it's true, go to walk. If it's not true, if it's false, go back to idle. That's it. It's all we need. Okay. So, now that we know what this variable is, what I'm going to do is go to my code, my character controller. I'm going to
add an animator to our Let's just add it to miscellaneous here. public animator animator. There it is. And now I'm just going to tell Claude I'm going to say um ensure the animator sets a bull called walking to true if the player is walking. If they are not and if they are not walking, set it to false. Um, be sure the walking gets set to false and jumping gets set to true when the player is um, no, we're just going to do we're not going to worry about jumping right now. be sure the walking gets set to false if we're jumping or falling. Okay, so we'll let that run. Okay, let's go ahead and animate the And again, this
is kind of my thought process here with AI. Again, not telling you to use it or not. I'm not making a moral argument. What I am making is I'm saying I can focus on on what Thomas is really good at which is animation, sound, art while the code runs. See, it's being written right now. Okay, it's already done actually. So, if we go back to my character here, I can go to idle state and I can go to my root here and I believe I should be able to hopefully there's a pivot here. Yay. Okay, the pivot's at the bottom. Watch this. Um, because my capsule collider is the parent, I can animate this graphic however I want and it's not going to screw up my capsule collider. So, what I can do here is I can set this to one and I can move up to here. And this I love doing this. What I do is I scale down like this, right? And then I squeeze up like this. So it looks like the volume is being
displaced like a jelly bean. Okay. So this one we're gonna want it to be a little bit slower and I don't want to have any any weird I'm not going to adjust the graph or the easing or anything. Okay. I like it being nice and automatically smooth. So you can see the way the curve is handled here. It's just a simple curve. Okay, that's it. So, let's hit play. Um, I should just go ahead and apply this stuff. So, let's see what Claude came up with. Checks if the animator is assigned. Determines the walking state. The character is considered walking when grounding status is stable on ground is true and the movement vector magnitude is greater than zero. That sounds good. And it sets the animator parameter walking. Walking is false when jumping, not grounded. Walking is false when falling, not grounded. Walking is false when grounded but not moving. And
walking is true when grounded and moving. I think that's great. Let's hit apply. So that will scrub through, add all those changes. You can see it's it's slowly scrubbing through here and doing the code changes. But let's see how this looks um in its idle state. Yep. You can see there's just a subtle sort of personality being added. Now it feels like I'm a little bit of more of like a little squishy gummy bear, right? And we'll even do that um with the jump animation as well. Probably speed that up a little bit. I feel like the root got animated and not the mesh, which is a problem. It did. Yeah, we we animated the root and the position. We don't want to do that. We want to animate the sk the mesh. Okay. So, I made that mistake again, guys. Zero that out. And then we're also
going to make this set to one. Okay, good. We're we're adjusting the mesh. And I'm going to squish it like this. And then go up. We need to squish it a little bit more. Let's try that. Okay, now it's just getting smaller. There we go. A little bit higher. Okay, that's good enough for me, man. And just scale it. Okay, good. Let's take a look. [clears throat and sighs] There we go. I'll probably make it go a little bit higher. You want it to look like it's displacing like it physically. This is physically
accurate. Whoops. Let's go to our mesh. There we go. Let's try that. Oh, we need to go to record mode. Sorry, guys. We're going to talk about the sound in a sec. There we go. And we'll speed it up a little bit. Okay. All right, let's hit play. Take a look. There we go. Okay, we need to do a jump animation. Believe me. All right, so let's go ahead and add this stuff. And again, you can take a look at all the code changes. Um, if animator does not equal null, is walking is going to equal is stable ground and square magnitude is greater than zero. That's about it. And that's not a bad line of code, honestly. Let's see if that actually does it. Okay, let's hit play and take a look. We'll see. I doubt that this will work right out of the gate.
Yeah. Let's take a look here and see if I set is walking to true. It should do it. Okay. It's like Larry the cucumber, right? So, for some reason that's not working. Um, for some reason it is not. Oh, I need to assign the animator. That could be it. Um, but we'll see. Yep, we need to sign the animator. I think that's it, guys. So, it wasn't an AI problem. It was a Thomas problem. There we go.
So, definitely need a jump animation, but that feels a lot funner already. Okay. Already feels great, man. Now, we're going to go back to what we were talking about with sound, and we're just going to get some grass step sounds. So, grass step. And you can download a bunch of them, you know. That feels good. Let's grab it. We're going to make this mono, though, because I'm getting weird sounds on the left and right, especially like a crunching bass sound on my left. So, let's go ahead and do that really quick. Track. We're going to make it mono. We're just going to find some good sounds. You want it to be -10. So, we're at -12 right now. So, right here is where we want it. I'm going to have this fade out. And you want it to be instant. Okay? Meaning,
you want the sound to be an immediate impulse. And we'll fade out. Export audio current selection. Right? We want to actually export the selection. We're going to call this step grass one. Export that. Let's find another one. You don't want it too long. We're going to fade that out. That's fine. It's not my favorite, but we're going to keep moving forward. Step grass two. Export. And then we'll see up something's at the front here. Jeffy. Chubby, wake up. Jeffy, wake up. Wake
up, buddy. That one's too loud. There we go. And then we're going to export it. Okay. Again, step grass three. Notice how my naming conventions are very human. They're very clean. All right, let's go to uh Claude over here and we're going to create a new script. I'm just going to call this um animator functions. Okay. And by the way, I've used this in Neverong. I've used this in um Twisted Tower. Animator Functions is one of my favorite functions or um favorite classes to create. it for a game because you can use animator functions to create a ton of game feel. Okay. So, for this one, all we're going to do is we're going to have a function in here. I mean, we can write it ourselves. Okay.
Um, we can just say uh public void um play sound and then it'll be an audio clip clip and then it's just going to be um the player audio source. It's going to play through the player audio source. Um audio source. What we need to create a public audio source here. This is the audio source that it's going to be playing through. And we're just going to sayplay oneshot um random range. Really it needs to play through a variety of sounds which you cannot do here. So, we're going to call this play sounds and we're going to call this play uh audio clips. These are going to be um sounds or audio, we'll just call it audio clips. Okay, that way we can now
play those sounds randomly. Um we're going to call it play random sounds. Now, this function is going to choose between random.range between zero and the length of the audio clips. Okay. Now, we could specify the volume if we wanted to, right? Um, is it why isn't it working? Hold on. I haven't used this in a while. Why is it doing that? What is happening?
Why is that? I can't I can't quite figure why that's happening. Oh, Thomas, you dummy. Uh, we need to play the oneshot of the audio clips. You dumb dumb boy. There we go. Okay. So, it's going to play our audio clips randomly, right? And it's going to play it through the audio source. And then we can also, if we really wanted to, we could say, well, what's the audio clips volume? So, we could just go ahead and say public float audio clips volume. And then we can specify that as well. So, let me show you kind of how we're going to use this. Um,
and that is one fallback or one one of the many um negative aspects. I was just talking to a friend of mine about this at lunch the other day. One of the many negative aspects of AI, which is when you use it frequently, you you're going to forget. you're g and your brain's not going to be working in that puzzle mindset where you're constantly solving puzzles all day. That puzzle solving brain starts to turn down. And so he was telling me how he finds it valuable to go back and write code from scratch to sort of keep the brain jogging. Um granted, I've made that mistake a thousand times as well. Okay, here we go. Let me see here. Okay, let's go to our player. Now, we can add this animator functions class here, right? And I can bring in
the audio source. And now I can specify which clips I want to play. So, step grass one, two, and three. I want to play it at like 0.5. And then I can go to my an uh my animator here. And I want the sound to play when do I want it to play immediately? Yes. Because the moment I press forward on the keyboard, ideally we hear as if the foot is pushing on the ground, right? That's a key aspect to game feel. One here, one here, but not one here. Okay. [laughter] Actually, let's see here. All we need is here. All we need is here. One here up. And then when it comes down, you hear it again. So, let's see if this feels good. So, there's one sound there. That's
trash. What is that sound? What? Oh, I chose the wrong sound. All right, here we go. And we'll probably slow it down a little bit. Goodness, that feels good. That feels really good already. So really, we need it to also only play when I'm pressing forward. So let's let's see if AI could solve this for us. Please only have the animator
set the bull walking to true if the player is pressing the forward input. uh is pressing the forward or backward input. Otherwise, it should set walking to false. Okay, we'll let it do that. We're going to move forward with creating um the uh jump. We need a jump animation as well. And again, remember, we've gone through reactive sounds. We added even sound effects that are linked to the animation, which is the footsteps, but we also want to add reactive animation as well. Um, and that includes the walking animation, but also a jump animation. So, for now, for now, all I want to do is create an idle state where he jumps. That's it.
Meaning, he's just going to be still. And then we're gonna we're gonna make sure that that plays with our code. And then we're gonna make a bounce effect. And hopefully this looks good. We'll see. Okay. Thomas, uh, which Unity version has best performance? I I don't know. I would I would assume six, but you never know. All right, let's see here. What did they do? What did Clawude do? Add a new private field. Move access forward to store a raw forward backward input value. In set input stored input, move axis forward value before it gets transported. What? I guess that's going to work. In after character update, change the animation walk condition to check if move forward is greater than zero.
It seems fine. Here's the solution. All right, I'm going to go to agent mode and just tell it to do it. And then we'll cross check it once it's done. Okay, so our jump state here, we're just going to set it to one. That's it. Okay, we're going to go to our animator here. the the animated controller here and we're gonna have it go to player jump from any state. Whether we're running or whether we're idle, it doesn't matter. If jumping is true, it doesn't matter what walking is. If jumping is true, we jump. Right? That's it, man. Now, we're going to make sure that walking doesn't go to player walk or that we don't go to player walk if jumping is true. Uh, we want it to go to idle state if jumping is false.
Oh yeah, jumping needs to be false here. I'm so sorry. So, if we're in idle state, we want to go to jumping equals if if jumping is set to false, we go to player walk and it goes to idle if jumping is set to false. Otherwise, it's going to go to player jump. We don't want this to loop, by the way. All right, so far so good. Let's take it take a look at what happened. It's currently failing my build. That's so funny. Let's see what happens here. Um, hey, we can go ahead and create the animation if you want, guys. So, we want a quick squash down and then it bounces up and then reverts back. That's it. So, what I'm going to do is I'm going to go to my mesh here and I'm going to squash down. I'm going to turn off snapping here. Squash down. In fact, let's do this. So, it's displacing and quickly, very quickly, goes up past one. Boing.
You want to be pretty extreme here. And then we're going to squash back down to just below nine. So, this is like straight up Larry the Cucumber. Okay. Boing, boing, boing. That's our bounce. That's our jump. It actually feels really good. Okay. All right. So, let's see what uh what the agent mode did for us. [sighs] I'm fine with that. I'm going to assume that we used it. Let's see here. There
there's the raw value there. And yes. Okay. And it's checking to see if we're actually pressing forward. So, this is to this the reason we're doing this code change is because we want to make sure that the um the player doesn't keep walking even when I'm not pressing forward. And that is Oh my word. This is another one of those game feel things, guys. When I release a key, it better stop the animation, which it's doing. Okay. So, for some reason when I'm jumping, it's still playing it.
My theory is we want to do a zero transition to go back to idle like really fast like 0.02. That's my theory. We shall see. Good. All right. So, I think that's what it was. Um, it it it seems like it. We're going to go to um point. point. We're going to set this to 0.1 so that any state immediately transfers to the jump or uh transitions to the jump. Okay, I'm starting to sweat. So, let's move my heated blanket. Get out of here, bro. You're making me sweat. All right, let's go to our ask
mode here and let's ask co-pilot to now please or please, you got to use please. Please set the animator bull jumping to true if the player is jumping. Please reference when the jump sound and land sound play as those are the key moments when the animator bull should change from true or false. So let's let that run. Okay. Okay. And let's talk about the next key to juice. Okay. Another lowhanging fruit is reactive particles. And so what we're going to do is simply play a particle effect when the player jumps. We're going to
play a particle effect that trails with the player when he's jumping as if the the the fog is displacing as we move through the air. Okay. So, I've got a little game object here called dust. And all this is is a simple uh standard particle that's built into Unity. And if I set it to 25 here, this is what it looks like currently. Okay. Let's clean this up a little bit so that its shape isn't so big. We want it to be right at the base of the player. Honestly, we could probably use a um a circle. Let's see if we can see it. Yeah, there we go. And I want the circle. Golly. I don't know why Unity's rotation sucks. What in the world? I've never experienced this with older versions, but there we go. All right. Um, so it's going to now pretty much
if we set it to zero here, yeah, it's going to emit from the base of the player. Okay, I'm going to increase the radius a little bit so that there's sort of a plume occurring. There we go. Something like that. And what you want is you want to see how it looks as um a burst, right? So this is how it looks as a burst. Good. I like that. We're going to go to color of a lifetime and we're going to make sure that we have a just a subtle fade in. We don't want it to be immediate. There we go. Very subtle. We could probably go a little bit bigger. Maybe like one one to two. There we go. So that's what how it's going to look when it when you land. We're going to do it pretty fast. Okay. This the size is too slow. So, we're going to do it pretty pretty quickly here. There we go. All right. So, that's
what's going to happen when we land on the ground or when we jump. Okay. So, particle effects are huge aspect to creating juice in your game. Before we do that, before we get this working, let's go ahead and take a look and see what Claude came up with. Claude came up with on jump, it's going to set it to true. On jump, on land, it's going to set it to false. Pretty straightforward. I'm just going to hit apply here. It's going to do it pretty quick. [snorts] [laughter] Duck back. That's right. I was really mean to AI last year. Um, okay. So, that's it, man. I mean, I think that that's all we really need to do for the jump. Let's double check here. You know, it's wild how once you integrate add in a jumping animation to your game, everything starts to break. So, we'll
see here. It always makes things feel really strange because there's a lot of idiosyncrasies like what happens when you fall, etc. Look at that. [laughter] I told you. So, we need to set that looping to false. I don't know why it's looping. Okay, let's go ahead and take a look here. Why are you looping? Isn't that weird? I think it it can transition to self is set to true. Is that correct here? There it is. That's the reason why we don't want it to be able to transition to itself. Okay, let's double check here. Now, there there was some weird idiosyncrasies there. Okay, it didn't happen. Crap. Uh, we need to have it go back to idle. Um, honestly, we don't need exit time. We can do very quickly. Um, and then we just want to make sure if jumping is set
to false, basically. And actually, I don't even care if walking is true. So, let's try that again. [laughter] I actually think the jump is a little too bouncy. So, let's double check here. All I want is a squash down and a pop up. And then that's all I need. It just goes down. There we go. That's all I want. Hit play. Yeah. So, we want to go down pretty quick. And actually, let's double check the transition here. We're going to look at the transition to jump. I actually believe that it should
be zero. We want it to be immediate. Um, [snorts] we also want it to be a little bit smoother. Right now, it's kind of Oops. Let's go to jump here. There we go. There we go. Something like this. There we go. Okay, let's hit play. Yeah, we're going to we're going to have it transition to walking as well if walking is true because we're getting a weird delay. So, you just got to it. This is what I was saying. When you add when you start adding jumping, you got to start fine-tuning a bunch of screws.
Things get a little bit confusing. So let's add this over here to basically say look we can go idle if jumping is false and walking is false go to idle otherwise if jumping is false and walking is true go immediately to walking and we don't need exit time and 0.1 is about the only transition we need here. So let's double check here. All right, how we feeling so far, guys? So far so good. Trying to think here. What feels sticky?
Something feels a little sticky. Ah, yes. It's the Okay, it's the running going back to the idle. Okay, good. So, this is too fast. Yes, needs to set to be 0 2 is good. Yeah, it's just it's snapping any any kind of you really don't want no transition between animations except for when you're immediately pressing space for a jump. I want to see it quickly, right?
Okay. Transitioning from idle to walk is too fast. Okay. So again, we're going to go to point two here. Take a look. the the idle state feels a little strange in terms of its size. So, we may need to clean that up. That's better. Okay. Yeah, probably need a little bit of a transition there. Tiny little transition. I kind of feel like, guys, I kind of feel like all we need for the jump. We're going to get this perfect. You watch. All I need is a really good squash. That's all I need. And I'm just
going to set it to um auto. Let's go to the curve here. And I'm gonna have it be pretty quick. So, the Y scale. I'm sorry. Yeah, here. Let's double check. There we go. Meshes scale. Yes. Okay, there it is. You want it to be pretty quick. You want it to do this. Yep. Okay. Same here. Same here. There we go. Let's try that. Take a look. I told you guys the mo jumping animations even with a simple capsule can be really brutal. Almost.
Okay, we're going to squash it a little bit here. So, here's our jump. We're going to go down pretty aggressively here, guys. This could be a mistake, but we're going to guess and check this. Let's try that. Feels better. Man, the truth is that I feel like it's too slow or too fast. It might be too fast, guys.
We're going to get this perfect. You really want the animation to be correlated to the the arc of the the jump. Sometimes it doesn't play. Let's squash it down more. We're going to get this just right. It seriously you just you just basically guess in check with jumping. It's one of those things where it's like it it's it really is a feel thing. Yeah. Stretching him vertically towards the end. We're going to do that.
Okay, Thomas is going to go quiet for a little bit to think. I want to think through why this is happening. There's also an issue with the walking. I just got to get So guys, I'm going to kind of deviate here from like the structure of what we're doing here. We're going to go we're going to move on to particles and music in a sec, but the animation here is the the most crucial aspect and I got to get it right. Okay, so first off, great work. I'm experiencing an issue. When I press left and right, the walk animation does not occur.
Honestly, the walk animation should occur. Works great now, but I just also want to uh want the walk animation to play when I press left and right as well. All right. That should do it. We also need a land animation. Okay. So, we got to we got to get that working as well. So, we're basically working with like three or four different states here. That's good. That's good. For some reason, that jump isn't happening quick enough, and I don't know why. Interruption source next state. Let's try that.
We need a delay. We need some kind of delay there. How's it feel when it's just set to one? We got to figure out what's going on here. Something's going on and I don't know what it is. Let's try this. Let's just try one and see how it feels. That honestly feels better. The idle state
is driving me a little crazy. So, what I want to do is make it not so freaking tall. What we may want to do, guys, is actually shrink down for the idle state like this. That may be what we want to do. Let's try that. These kind of things are so freaking important. And by the way, these kind of scaling things, these tweaks and with with the capsule collider, that's what I spent a ton of time on with Neverong to make the character feel bouncy. That feels much better.
All right, we're going to do some particle effects and those are going to help better inform whether or not we need an animation for the jump. I don't think we need a jump or landing animation to be honest. Um I I think it's just making it feel just feels worse. I don't really feel like we need to do that. Uh, let's see if this looks better here. There's our idle state. Okay, let's see what Claude came up with. Added move axis, right?
Good. Awesome. All right, let's go ahead and add this. So, it's adding the variables up there and then it's also going to add these and then these. Let's go back to our code or our game here and think about we're going to do the particles. Okay, the particles are already built into the codebase. Okay. So, you can see here there's a particle system that you can assign for jumping. Um, and I'm just going to go ahead and turn it on here. And they should just go ahead and play. Um, I'm going to turn off the bursts here. The way the code base works is all it uses is the emit function when I land or when I jump. So, let's take a look. So, we'll make it a a brown color.
Freaking told you guys it's looking good, man. You know what we need? We need a particle that we like. Okay. So, I'm going to use a nice clean sphere here. Okay. It's going to be white. Delete these layers here. It's just a simple white particle for our more tuny looking game. I'm going to call this particle. Okay. And I could just drag this particle onto our dust here. And if I set it to 25 here, hit play. We can adjust the particle uh material
properties. We're going to set it to transparent. Want to make sure we go to the albido here and go to alpha is transparency. Remove PSD mat. Hit apply. That should set it to be transparent, but for some reason it's not. I like the sprite effect. That's kind of cool. Let's try that sprite and see how it looks really quick. They're a little big. So, we're going to do a scale of maybe one between 0.5 and one. Go to zero. And let's let's go ahead and set the color uh to to the brown color of these. Okay, might as well. There we go. Hit play and we'll take a look.
Yeah, juicy gameplay in its in its most basic form is giving the player a feeling like they're in the game. It gives them a sensory overload. So like a lot of this stuff isn't realistic. Obviously, it's a game. It makes me feel like I'm touching that ground. It's using sight and sound and oftentimes vibration to make me feel like I'm in the world. So, what I can do here is make it feel a little bit more tuny. And I'm going to give it some flip flip book flip book or soft particle blending. We really don't want this to be too much. You don't want it to look like Mickey Mouse. We're gonna have it shrink.
Good. That's great. We're going to trans trans uh have two different colors here. I'm going to set it to a value of 10 here just so I can watch it while I do it. We're going to do one of them is sort of more of an off-white. There we go. Um, I really really want it to be uh transparent, but it's not working and I cannot figure out why. Why is it not working? Oh, it's because the base map is getting removed. Why is that? There we go. Let's turn on soft particles here. There we go. Thomas, you're winning again, dude. I know. I know. That's what I do. It always gets good. Sometimes it's a slow process of getting a game to feel good, but you got to keep playing with it. And when you think it feels good, it
probably doesn't feel good. And you need to keep tw tightening screws and tightening screws and tightening screws and tightening screws. Okay. For some reason, they they can't fade out. And I'm not sure why. Let's take a look. Uh, is it alpha clipping? There we go. We're going to have them rotate. So, rotation over uh let's again set go to your particle and set the emission to like five or 25 or something. And let's see what happens to the rotation over lifetime. There we go. We're going to do random between two constants. We're going to do negative 100 to 100. How about - 360 to 360. There we go. And we're going to have them spread out over time. So force over
lifetime random between two constants. I'm going to assume that it's in the x axis. Yep. Some reason I can't select those values. I don't know why. So, I'm going to have to just drag them. There we go. We're going to set the uh radius to be a little bit bigger. For some reason, it's it's it's um not appearing in front of the player, which really frustrates me. Um, and I cannot figure out why. Does anyone know why? That's that's one thing here that I'm actually confused by. I think it's the renderer sort mode. None by distance. Yeah, for some reason I I'm not seeing
it. Might be because of the flip up, but uh the um surface fade. I'm not sure why I can't get in front of the player. There we go. Okay, so far so good. That's pretty aggressive, but we'll see if that's fun, you know. Um, I like it. Let's Let's go ahead and give it a shot. Set it to zero and save it and go to play mode here. Yes, use my previous level design tutorial for my for your game. That's totally fine. Remo. I don't know why it's not appearing in front of the player.
I guess it is. Okay. And we're going to fade it out a little bit. Okay. Okay, we don't need it that aggressive. Ready? Okay, we're going to go a little bit more saturated with our brown color here. Here we go. Just trying to figure out that perfect balance.
Okay. Almost. pretty good. Okay, we're going to reduce the radius. It's a little big. Yeah, particles are important, guys. Incredibly important. Okay, we're gonna uh we got to set that to zero, actually. And then we're going to move forward. All right. Now, watch this. If I want that dust to follow the player as I fly through the sky, I can set it to 25 here. Okay. And I'm gonna it's going to follow the player. Uh let's see how this looks um as we run through the world.
pretty good. It's obviously obviously it's not it's not perfect, but let's go to let's call this uh jump dust. Jump dust. Jump dust. And this is only going to set the rate over time to 25 or maybe even just like three or four when we're jumping. So I can make this change in the animation. I could say set it to 10 while I'm jumping. Then when I'm idle, set it to zero. This is a a new particle emitter, right? We just copied the the landing dust. But now when I jump, I should see small particles behind the player.
Okay. Okay. Now, we're going to make them much smaller, obviously. We're going to set it to a box, right? And by the way, those of you just joining us, remember to check out the link below. You've got like four and a half hours left maybe to join Full-Time GameDev, um, which is my massive program which teaches you everything I've learned in the last decade of making indie games. So, be sure to check it out. Below you're going to learn how to pitch to publishers, how to hit the Steam front page, how to reach out to the press, how to make a game in Unity, GDO, or Unreal, how to code it. Um, and also you're
going to get my 2D and 3D art programs completely free. All right, we're going to adjust the the force of a lifetime. I may not keep this honestly, the jump dust, but we'll see. I don't like it. Okay. And yes, we need to adjust the code there. So, he's actually running. Let's see what uh happened here. So, the variables got added. Um, I need to also add the the the uh this code here. And then I need to add that code as well. So, let's go ahead and do that really quick, just so that when I move right and left, the the the uh the animation plays, right?
So, we'll just add this line here and then we're good to go with and as it pertains to AI, if you don't know how to code, this is probably almost useless because it's you just don't know what you're looking at. Also, when it comes to games, if you don't know how games are made and the systems behind games, it's really hard to communicate to Copilot if you don't know how to make a game. So, it's good to learn how to make a game and how to code if you're going to use AI. All right, let's see here. Good. So, for some reason, I don't play the animation here, and I cannot figure out why that's why that happens.
It's a little bit of a bug there. That looks good. I think we want to make some of those a little bit white. Um, I'm going to get rid of the jump dust. I don't like it. This dust here, we're going to make some of them a little bit more white. Okay. And let's just double check it. Good. Yeah, the the white I think it needs
just to be more opa um it needed to be more opaque, but I don't think it needs to be white. Just it's just not working for me. Okay. Um we got our particles working right. We've got the collection sound. Jordy, he's my editor. Jordy, I may have you move what I'm about to do. I may have you move it um to I may have you move it to when we were doing animation because I want to do a cool animation for for collecting stuff. Let's see if we can do that jump animation. Let's do it. I'm going to remove the
dust here. And then we're going to go to jump here. And I'm going to drop it down. Now that we've got everything fixed, I'm curious what'll happen here. You do a big squash and then you go right back up to where it was and then you stretch. The theory is you go down and then you reach your arc and then you stretch. Let's try it. Yeah, that helps. The stretch happens too fast, but there is something there. Okay. And it needs to be a quick release. So, we're going to do 0.05 0.05. We're going to go to the jump animation.
And it needs to happen slowly, slowly slowly. That's really it. When you stretch it, it feels like it feels like what happens to your arms when you fall. Now, I'm not sure if I'm going to keep it, but we're going to try it. Boy, there's something there. I feel like getting to getting to from here to here is too fast. That's so weird. Is that really going to be the jump animation? It might be, guys. Let's take a look. [panting] Yep, it's close.
We're almost there. So, this is too much. We're almost there, guys. That's too much. He goes up and then he squashes. Now, I might consider doing this. Let's try that. It's just tweaking and tweaking and tweaking and tweaking. And by the way, this principle of again, I I mentioned this earlier, but the the principle of stretching when you fall is true even with a realistic humanoid game. The arms will move up and the legs will straighten out.
I'm gonna ask something here. Is it possible for you to create a float variable called jump delay that will play the jump animation and then wait a certain amount of seconds before the actual physical jump occurs. I'm trying to get a delay between the animation playing and the jump. I want
to get that squash and then I want to see the jump. It's going to be tough, but we'll see because right now the squash is occurring while he's in the air. And we're also getting some weird stuff there. Jumping is not getting set to false in this instance for some reason. And I think it has to do with the minimum the minimum velocity. So, we're going to need to tell Claw to fix that as well. Yeah, it has to do with the minimum velocity. We're almost there, guys. All right, let's go ahead and distribute some coins and start working on the sound and the music.
I'm going to turn on snapping here. Why? Because I know that I can snap to various variable values like this here, and it will be just high enough for the player to collect. And we'll put a a floating block over here so that we can jump to it from here and get to here. We'll do a width. Let's do four by 4x4. There we go. And we'll just bring it down and over. Okay. Um, and then we can put some coins
up here. While this while Claude is writing that code for us, we'll put all of our coins over here. Okay. And just to create some fun depth in the background, let's just have some fun here. Why not? While we wait for Claude to finish up that code, I'm gonna put some fun background elements here just to make it feel lively, kind of Minecrafty. Okay.
Give me the Z-axis, bro. There we go.
[clears throat]
All right, we got a fun little background here. Okay, that land. We definitely need a land. brilliant. Okay, let's take a [snorts] look and see what's going on with the code here. Added a jump delay field in the jumping he section header. It's a float. Is delaying jump tracks whether we're currently in a delay phase. Jump
delay timer counts up during the delay. modify jump logic in the update velocity. When jump is first requested on jump delay greater than zero, it starts the delay timer and immediately calls on jump to play animation sound. The actual physical jump only happens after the jump delay. If jump delay is zero, it works exactly the same as before. Sweet. Okay, I'm going to just tell it to do it in agent mode. Go ahead and do this in agent mode. All right, very good. Um, let's think here what else we need. There's potential. There is potential um to add a particle emission um when the player walks. Okay. So, what you can do is add dust here. This is going to be called dust footsteps. And this one's called Dust Jump.
Uh, yep. So, let's go to player walk here. And basically what we're going to do here is we're going to create an animator function inside of that animator function script that's just going to emit particles. Boom, boom, boom, boom, boom. for the uh footsteps. And actually, you could just use the same particle effect, but I'm going to uh the same particle emitter, but I'm going to use one with a little bit smaller radius and probably smaller um smaller particles in general, but we'll see. We'll see if we need to. I'm going to set it to zero, though. And that's the jump actually. So, hang on. This is footsteps. This is jump. We're going to set the shape to small. Move it down. And now what I can do is go to my animator function script. I can create a new uh uh reference here called
public, I'm sorry, particle emitter, my particle system. And then we're going to say particle system. Come on, Thomas. There we go. All right, we're going to create a new function here called public void emit particles. We're going to say int amount and then we're going to say particle system emit amount. Right, there we go. [snorts] That should do it. Oh, yeah. Particles should emit when you collect the the um collectibles. That's a great idea. All right. So, there's that one. All right. So, basically what we're going to do here is I'm going to emit a particle. Go to my animator functions methods. Emit particles. And I'm going to say five. And I'm going to put that right snug up against the other one. And
then I need to make sure I reference the particles in the animator functions. And we're going to do dust footsteps. There it is. Save it. Let's hit play and see what happens. Oh, that's important. Okay, good. Let's see what agent mode did for um the jump delay.
[sighs and gasps]
Did it do it? I think it did. So, let's go ahead and take a look here at our character controller. We should have a jump delay. There it is. Is that what that is? It's called jump delay. Yeah. So, the theory is is that I should get the
animation and then 0.2 seconds after I press space, I should move up in the air. So, this should feel like I'm going pushing down and launching. [laughter] What? So, the jump delay is causing some problems, ladies and gentlemen. [laughter] Let's take a look and see what happened. All right. If jump delay is greater than zero and is delaying jumping is false, jump delay timer equals zero on jump. Well, well, well, well, well, well. If we set it to zero, it should be fine, though. Let's see here. Wonder why it's not working.
When I set the value to 0.1, it doesn't work. The player never actually physically jumps. Please re-examine your code. Okay. The next thing we want to do here is I would like to, if I can, I would like to flash the player when I collect something, right? So, I'm curious if we could create a new layer here. And I'm going to call this color. And it's going to have weight of one. And I wonder what would happen if I created a new animation called collect coin. Player collect coin. I want him to flash.
That's the idea. We'll see if this works. Um, there's our capsule. Set emission to true. The problem with I've never been able to figure this out, but the problem with emission is that it's really hard to animate. Things break and and I don't know why things bug out. So that's too bright. Want it to be white. The same color as the coin as if it was absorbed into my body, right? We'll see if this works, man. We want to be pretty fast. Okay. So, it's too bright and that's why it feels like it's stuck there for a little bit. There we go. There we go. So, that's what happens
when I collect a coin. Okay. And then it's going to go back to its uh empty state. We're going to create an empty state. And then we're going to create that. Uh let's see here. Double check something here. There's collect item. I'm going to delete that and put it on the color. There we go. And we should be able to go from empty to collect um by going to it'll be a trigger collect coin. If collect coin is true or if it occurs no exit time instantaneous. There we go. Interruption source. It could be the next state. Um that's totally fine. Okay, that's the theory. Now I want to see what happens when I hit play here. We'll go back to empty after the exit
time of one. Interruption source. Next state interruption source. This is going to be none. Can't interrupt self. That's not relevant. Yeah, let's try this. Hit play. I just want to see what happens when I click collect coin and make sure it actually works here. So, looks like we have a mission occurring right now. There we go. Good. Okay. So, it's it's pulling in some scripts from the agent mode. So, we're going to see if this actually helped us. Weird. It's set to loop. That's why. So, when I collect a coin, it should flash. Okay.
All right. So far so good, ladies and gents. All right. So, let's see what kind of issues it came up with. You're right. I see the issue. And by the way, it always lies to you. Just because it sounds confident doesn't mean it is. The jump delay timer is being incremented, but it's only incremented inside the if is delay jumping block, which means it won't be checked properly. Also, the timer needs to be incremented before checking if the delay has elapsed. Okay. [snorts] Um, good. We're going to just click keep. We might need to go back in time, though. All right. We're going to set the emission down to zero here and hit play. We're making a game called Julie the Jumping Jelly Bean. We're doing game feel. All right, let's see what happens when we add this delay. If we can't get the delay working, it's not worth worth it right now. There's just a lot to do.
All right. Um, jump delay. We're going to set it to 0.1. No, it still doesn't work. So, AI has failed us today. It does that sometimes. That is still broken. Please revert any changes related to delaying the jump. I don't like it. Okay. Next up, we need to go to the collection of the coin, right? And we want to make sure that our character controller character.animator settrigger uh collect coin. We want to do that. We shall see if that actually does it for us. Um that should be good. We're getting a a a bug here. Oh, it's it's because it's
working on it. Um, so yeah, that should flash when we collect the coin. Let's go ahead and move forward to the last one. Okay, this is such an afterthought for most game devs. Music and ambience. I've played a lot of your games on my streams. And the music and ambience is always there. Typically there's no ambience. I don't know why, but ambience just doesn't exist. and the music it sometimes it it feels like the developer wrote it themselves and so I understand that it's expensive to get music. Um but oftentimes there's just there's music that you can buy online or you can get a friend to write your music or something that is tough. You know music can be expensive. But let's just go ahead and jump inside of artless.io find some good music um and find some good sound effects. So, we're going to find, and you're probably thinking, well, Thomas, the m the world is made of cubes. So, what? Even if the
world is made of cubes, we can we could find like a meadow ambience. That's great. That's good, too. All right, let's go to our music here and we're going to type in um adventure medieval. I don't know.
[music]
By the way, guys, you might be thinking, why I'm am I just picking random ones? I'm looking for the ones that don't have a full waveform. Like this right here. I could tell you right away I don't want it. Right. You could just see it in the waveform. That's great. That feels like Minecraft. That's what we want.
Okay, good. I was about to give up there. Um, okay. So, Claude made some changes. Fingers crossed that it's not completely broken now. Um, let's go ahead and add this in the music. And also the ambience. We got that as well, which is the countryside village. There we go. Let those import. No, art list is not safe for streamers. It is not. [snorts] No. Uh you're going to get people are going to get copy they're going to get a copyright strike for the music even if you bought it for the game because the streamer doesn't have the right to the music. So, you you really got to find the right license that makes it basically in perpetuity royalty-free for streamers to
listen to the music. Um, or write your own music. Okay, so here we go. Oh, it works. I'm going to get rid of the jump animation. It's just not It's not working for me and it's not worth it today. What I would do if I had like four more hours to stream is I'd get that jump animation so freaking perfect, but I'm not going to worry about it right now. Okay. Um, for now, I think it's great the way it is and and and we've got that cool glow effect working for us now.
Okay, let's make it a little bit more fun. And let me show you what I mean. What we could do now, I'm going to break some rules here. What I'm going to do is actually set this to 0.5. This is going to make it funner. I'm for real. The reason it's going to be funner [snorts] um is because it's going to feel like I'm moving much faster despite the fact that I'm not. So, let's try it and see what happens when I'm much smaller. Yep, that's much funner. Okay, it doesn't need to be that small, but definitely close. It's way funner now. These are such important things. Player
size is so important. Now granted, if I had to go back in time, what I would do, this is just the way it goes, but what I would have done is I would have made the capsule collider or I would move the camera back and I would make all of the platforms bigger. But in this case, I'm okay. I'm okay with setting our capsule. Give me a sec here. We're going to set the root to 65. Okay, we're just going to see how that looks for now. Oh yeah, baby. That's so fun. So you you were saying there was a delay. Yeah, there is. And that's why the reason why is because of
there needs to be an interruption source on this. We need to set that to next state. Um that doesn't need an interruption source. Also, this needs to have a transition to itself um with zero and then zero. Um and then it needs to be uh collect coin. I think that's the solution. Let's see. It is a trigger. This is fun. Oh man, it's fun. Changing the size was the trick that I needed. Oh, that's so important, man. Okay, let's go ahead and add some music. Do you guys know why that made it funner?
Um, does anyone know why that made it funner? If you guys could, while I while I do this, does anyone in the chat want to explain why making the character smaller made it funner? Does anyone know? And I didn't even change the capsule collider size. It's just funner. U, let's put the music on here.
[snorts]
Uh, set it to loop. Does anyone want to explain? Um, go to the ambience here. Same thing. Here we go. Let's see how how the music and the sound work together.
Okay, let's just add one final flare here. Um, I'm going to add a light spotlight. Put it directly over the player. By the way, that music and sound sounds great. Oops. Do this. Crank up the intensity and soften it. We just want it to feel like there's some kind of cool glow around the player, you know? Let's try that. Uh, no shadows. Okay. In my experience, it makes movement feel a lot snappier. You are fast and small because the human survival instinct is speed. Moving fast in video games make you feel dopamine. It's pretty good.
Yeah, that's cool until you get there. Let's do a point light. That music's great, man. Let's do point light here. Let's zero it out. What time is my podcast? Hang on, y'all. One sec. I have a podcast today with Primogen. I think I do. Let's double check. Okay, it's not for a while. Um, okay. I'm going to move it up here. Crank down the intensity. We're going to warm it up a little. Almost like it's like my skin is emitting color. Let's hit play here and take a look. Yep. It's the illusion of control and responsiveness. That's a great point. Yep. Man, this feels great, guys.
[music]
Okay, I want to do a front flip. I'm sorry. I want to do a front flip. So, we're going to do for the jump. We're going to see what happens if I could do a front flip. Wouldn't that be great if he does a front flip? Let's try that. I just want him to flip so badly. Okay, so that's the wrong direction. So what what's forward? Sorry. Let's see
what what forward is. Okay, that's forward. [sighs] Oh no. What the f? I don't understand what's going on. Give me a sec here. Okay. No. Okay, there we go. Let's try this. Okay, that might do it. Although, I think I might need to go the other way.
[laughter]
The problem is the jump animation doesn't play at the right time for sometimes. I can't figure it out. We want it to be slow. So what we want it what we want it to lurp slow and slow down. So for example, I want to look at my X rotation. I want to look at only the X rotation wherever it is. Let's see. There it is. And what I want it to do is be very fast. Okay.
So linear up to this. And then it just goes here. So what we can do is delete that now. And it'll do a full rotation. And I want it to be fast. And then I want it to slow down here. Look. See? [snorts] That's what we want. Freaking Thomas, you win again. Leave it to Thomas to just always win. Needs to be instantaneous. I think we need to be able to transition to itself. No, it's not it.
What this? Something's wrong here. Hold on. What just happened? Oh no. What is happening? Oh [laughter] no, I broke it. Is it because it said to loop? That is so fun. We need a flip sound. Obviously, like a spin sound. And by the way, if you're just joining us, you like my teaching style, you want
to learn, and we're going to add a a spin sound here in just a sec, guys. U but I wanted to give this a shout out here because look, you got what do we got? You guys have two hours left in 30 minutes to join full-time gamedev. There are like seven seats left. Um so I wanted to let you guys know that if you want to join full-time gamedev, this is the perfect course for you in 2026 because it pretty much covers everything I've learned in the last decade of making indie games. I've made three indie games. So, I'm currently about to release my third commercial release. I've been published three times. These are physical copies of my games right here. These are real games. Actually, some people sometimes people send me screen uh photos of these games in stores, which I think is really cool. Um, but if you want to learn from actual indie game dev how to hit the Steamfront page, how to get press coverage, uh, you know, how to make a game in Unity or GDAU or Unreal, you can take whichever engine you want to learn, you can take your pick. um how to pitch games to publishers and get publishing deals or crowdfunding campaigns c uh funded. I've done all of that stuff. So, I teach how to do it. You're also going to get my 2D and my 3D art program. Don't take it from me. Take
it from my students. So, read the reviews. These are students who went full-time with the help of the course. So, check it out below. This really will end soon. So, please enroll now because this this um this sale event doesn't happen often. This is a big one along with Black Friday. Okay, guys. Um, yes. Let's go ahead and find the the sound here. I need like a like a spin sound or like a flip sound. Some kind of or spin or something. Twirl sound maybe. Okay, that's a great sound. I'm going to merge that uh with the jump sound. Actually, we're going to play we're going to have a a twirl sound as well. So, public audio
clip twirl sound. We're just going to have that play. Get out of here. I don't know what's going on. I'm gonna close this out. Give me a sec. Cancel. I'm gonna force quit this because I don't Thomas. So, AI was not friendly towards the second half of this stream, which is the way it goes. Okay, we need that twirl sound. Where is it? Give me a sec, guys. We got to find a nice twirl sound. And in fact, let me open this up here. Here it is. [snorts] We're going to go lower.
Export it as twirl. Let's go ahead and open up our character controller again. Um, and um, we're going to see if we can add this sound to to play alongside all of our other sounds. Actually, we could use, guys, I want to show you. We could use the animator functions to do this. Uh, we could do a audio clip. We could do a um we could create a new function here and we could call this play sound. Right? Because there's only one parameter, we can assign it in the animator window when assigning the function. So we can just do this clip. So play
oneshot clip. Right now, if I go into the animation window um or the timeline, I can add that animation event in Unity. So, right here, go to my jump. I could, if I really wanted to, just have it right here. I go animator functions, play sound, and this is called twirl. Right there it is. So, it should just play when I enter play mode here.
[snorts]
too loud. So, we need to add a volume uh clip volume. The problem is the moment you have two parameters, it becomes a problem. So, I don't know why Unity hasn't fixed that yet. Maybe they have and I'm just used
to 2022, but the moment you have two parameters, it just becomes a problem. So, we're just going to set it to.3 and call it a day. [snorts] That is so fun. Trying to think of any other things we need to add. Cool. That's all we're going to add for today. I might do another live stream where we go in and add more effects. Would you guys like that? Um, let me know in the chat. By the way, if you want me to read you or or announce you or give you a shout out in my next live stream, feel free to join fulltime gamedev below. Um,
got couple hours left to join the massive program. So, check it out below. Um, enemies of course. I just what I want to do is make this feel amazing, you know? Um, that's really all I want is just this is I mean honestly though like honestly like playing this is fun in and of itself and [music] that's why game feel matters. Yeah.
You know what you could do? Sorry, I'm I'm getting ahead of myself here. You can add a trail renderer to this guy. Little stuff like this. You could and and and you might you might think like, okay, this is a think of this as an abstract form of um a ponytail, a scarf, a coat, a cloak, hair, anything. You know, you can use a trail renderer to to make it feel like you're influencing even your own body, right? And again, that's that's one of the like tenants of game feel, which is the player is influencing everything, right? Um, so we can have a trail renderer here. And I believe there it is. Yeah. I don't know why it's rotating. That's really strange. Um, oh, just so you can see it. But, uh, what I could do is add like smoke to it.
But uh the idea would be I kind of want to do it in this There it is. Okay. And then you go to the trail renderer here.
Little things, guys. It's just the tiny little things that make games fun. It really is so important. Now, it's going to look like a ponytail. Okay, let's go ahead and add a little
bit of a visual flare. I'm going to grab this. I'm going to put it right inside our character so that we can see his right here. See, like a minions type character, you know. Um, I'm going to delete the point light. I obviously don't want this to be an actual coin. So, I'm going to go ahead and unpack this completely. I'm going to remove the script. I'm going to remove the collider from it. And that's all we want right there. That should be facing the right direction.
Which of you doubted me? Who doubted me at the beginning of this live stream? Who was it? Is it you? Did you bring out the boo boo box? I'm going to put you in the boo boo box. Do not doubt me because this was pretty fun. This looks good. I was playing this just now and I was thinking, "Oh man, I kind of like this [laughter] and it feels really good." Um, unfortunately Okay, let me think here of any other quick lowhanging fruit.
I'm thinking, sorry guys, I'm sitting here thinking lowhanging fruit. Hello from the Greek gamede dev community. Welcome, George. You want two eyes? You people are relentless. You think it'll feel more alive. Camera shake when you drop from a big
height. It's really fun, honestly. Huh? [music] Ninja pill. All right, guys. That's all I've got time for today. I hope you had a blast. And again, remember to check out the link below. This is for real a great course, guys. I've got 4,500 students worldwide. So, be sure to check it out below. If you like my teaching style, you think that I have something to offer and maybe I could help you, and I know that I can, check it out below. And if I don't help you for some reason, there's a 30-day money back guarantee. So, there's no questions asked. So, check it
out below. Thanks so much, guys, for hanging
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Thomas Brush · 2026
Jason Schreier · 2026
Comments