How to make a game completely alone workshop. In this workshop, I'm going to tell you all the tips and tricks and secrets that you'll never ever hear unless you watch my channel. I have all the secrets. I have all the secrets. Nobody else has them. It's just me. Come on in, guys. Welcome, welcome, welcome. We're gonna hope and we're going to pray. Everybody say a quick prayer. Cross those fingers and knock on the wood that this stream does not crash. Okay, I really hope this doesn't crash because today is going to be a lot of fun. I've been looking forward to this today. [sighs] We're going to do what a lot of solo developers refuse to do because they think, hm, okay, what's the most important part of making games? uh really long games, adding a ton of features, gameplay length, trying to avoid getting refunds by creating something that's two
hours or more, which is kind of like weird to say cuz I I used to think that way and that's not true at all. What's true is [snorts] the little things the little things are what matter. the sound, the ambience, the music, the interactivity, the small levels of polish and detailing. And so what we're going to do is we're going to take that scene we worked on yesterday. We're going to take that scene. [snorts] We're going to open it up inside of Unity. And let me pull it up here. Yep, it's all loaded. Uh we're going to open it up inside of Unity. And I'm going to add this the small levels of polish. And I want to convince you guys of something. And by the way, this is something I learned. I I learned this pretty um I wasn't fully convinced of the value of immersion and the value of small levels of polish and detail. For
example, like sound triggers or grass blowing in the wind. I wasn't fully convinced of this stuff, like fully convinced of it until about last week. And so, I'm going to show you what I learned last week with my own game, Twisted Tower. And I'm going to show you why it's so valuable, especially for solos, guys. Solos have to stand out um in ways that are well inexpensive. AAA stands out with high level. They they do immersion obviously, but they stand out with high high fidelity, massive sprawling environments, openw world, high levels of replayability, and these are all good things, but I'm going to show you as a solo how you can go in and quickly and cheaply create immersion, provide value to the player. I just tweeted out I just tweeted out, let me pull it up here.
I just tweeted out the following tweet. Where is it? I was peeing and I tweeted it because I really liked what I had to say, so I had to do it. Here it is. Here's the tweet that I wrote while I was peeing. Having cool art and assets in your game doesn't really cut it anymore. I saw somebody posted a screenshot, and I've done this, too. Somebody posted a screenshot and it was like it looked great and I was like, "Yeah, what?" And the reason I felt that way is because we see cool screenshots all day long and half the time we don't even know if they're AI, but instead we want to let the player do something with those assets, do something unique, interact with the world. It is a game after all, right? It's a game. And so I want to open up our scene that we worked on yesterday.
And by the way, we made this scene with a bunch of free assets. I want to open up this scene. And hey, hey, we're going to we're going to add that immersion to the scene. Okay. [snorts] Hey, I want to say a huge thank you to all the new students who have joined for Black Friday in recent days. And by the way, if you joined yesterday, I'm going to give you a shout out on Monday. Okay? Uh, I'm taking Thursday off. Uh, Friday. Friday. I'll give you a shout out on Friday. I'm gonna I'm gonna work on Friday. Um, and we'll do a we'll do a stream on Friday. I'll give you a shout out on Friday. But I do want to say a huge thank you to these students. Uh, Martin RZV, Joshua, Eric, Harbor B, Stefan, Kenny, Aaron, David, Joshua, and all those other folks have already gotten a shout out plenty of times. Um, a huge shout out to those of you who joined Fulltime GameDev yesterday. And by the way, if you want to join full-time gamedev, it's ticking down. Ladies and gentlemen, we have four hour four days left, 19
hours, and it is my biggest Black Friday sale. And actually, less than 30. I I made this graphic this morning. It might be down to 20. Uh maybe maybe 25. Maybe 25. Less than 25 seats left. So, if you want to uh join full-time gamedev, look, here's the thing. you don't have to, you know, um you don't have to consume the whole course next week. You might think, I don't have enough time. This is a great resource to have all through 2026. Okay. So, if you want to make 2026 the year where you master the art of building a game, an indie game, but not only that, building an indie game studio, and what I mean by that is how to reach out to publishers, how to secure funding from publishers, how to secure funding on Kickstarter, how to reach out to the press and get press coverage from major press outlets, how to reach out to streamers and get streamers to play your game, how to make a game, that's also covered obviously in Unity or GDAU or Unreal. You can take your pick. Also,
you're gonna get my 2D art program, my 3D art program, and my YouTube program, which teaches how to create YouTube content geared around uh game development and your game and securing wish lists ultimately, or who knows, maybe getting sponsorships, which always helps fund your game, helps me. Uh those are all free, completely free. I have never had a sale this big. This is freaking huge. Okay, not only is it half off, but then you get all these other programs completely free. So, check it out below. See if it's something for you. I have over 4,500 students worldwide. Um, and by the way, if you're a student, let me know in the chat what you think about the program. Um, and I will say hello. All right, Unity has finally opened. I was getting worried there. It wasn't opening. Um, but uh here, let me let me I want to make sure I close out some of these tabs. Oh, I need to send out an email. Crap. Um, [laughter] I need to send out an email. I did send out an email to everybody on my email list letting them
know that I'm live. U, but let's see here. Do you guys have any questions while I open up my um Do you guys have any questions while I open up this email and and get it sent here? Let me see. What do you guys got? Okay. Is it a yearly subscription or a buy once kind of thing? You buy it once and I'm always updating it. In fact, I'm going to do a lot of new videos next year as well. Once I finish Twisted Tower, I want to go in and just add a bunch more. Uh, here's the thing. It's already like 50 hours long. So, I'm just going to add more content, keep adding more content. So, yeah, it's a one-time thing and you're always going to get updates. Um, okay. Workshop day three. I'm going to send this email. Sorry, guys. I just want to make sure I send this to my email list. How many of you are on my email list, by the way? Um, let me double check this email. You got to be really careful. Yeah, it's it's ready to roll. All
right, I'm going to send this email out here and then we're going to open up Unity and get started on game juice as you guys funnel in here. Talk all about game juice and how to add juice to this scene. Um, guys, we're having this problem and we had this problem yesterday. Hey, you learn something every every you learn something new every time you live stream. I'll tell you what, for some reason, every time I open up Unity, I I cannot scroll through the scene. And so, what you have to do is this is so weird and dumb. You have to go through preferences uh and you have to change you have to go to preferences and go to light mode and then back to dark mode. And then now I can move around in scene. This is called Unity Development 101. You're learning all the tips and tricks related to Unity's horrible, bloated, awful bugs and glitches, but Thomas, you're using 2022. I know. I know. [snorts] Okay, so let's see here. Here is what we made yesterday. I really hope my terrain
is still there. It is. Here's what we made yesterday, guys. Isn't this cool? I'm going to make sure I remove my um I don't want to see my game manager because it's showing some canvas elements. There we go. So, after yesterday's live stream, guys, oh, oh, I need to talk about this. By the way, this is all free assets. And guys, this looked like crap yesterday. Let me show you what it looked like just so we can get excited. Like this is the whole point of this stream is to show you guys how to make a game completely alone on a pencil thin budget and and it just feels amazing and it feels absolutely amazing. That's the goal. The goal is to ensure that you know it's possible to make something that I mean kind of looks AAA at least from what I mean is like from 15 years ago. Um, so let me pull it up really
quick here. The before and after. Okay, here it is. All right, here's the before. And and this is not like I made it look bad. These are the assets that I pulled into the scene. Now, the reason some stuff's pink and white is because I'm in URP. So, some of the assets got stripped. Um, so those those would have been like gray and that would have been like the color of the we we changed the the texture colors of all this stuff though. So some of this stuff is missing textures, but all of this is just junk assets and I put this this little scene together in like 30 minutes. And then yesterday we spent about an hour maybe an hour and a half repurposing or cleaning up the textures and getting this to work here. Okay. All right. So, let's talk really quickly about the final um the the final things we did yesterday. Uh what I did
yesterday and some of this I did offream just because um I could not get the stream to stop crashing. But the post-processing profile, it's a kind of a rule of thumb that I've been using lately. Um, the post-processing profile should not salvage your project. A lot of people use post-processing to salvage the game look. And what's going to happen, I can almost guarantee this is going to happen for you is you're going to think it looks good and then six months down the road you're going to be like, why does it look like a diaper? Like a dirty diaper. And then what you find is you have to turn off the post-processing and you start fixing mistakes you made visually that are not related to post-processing. People use post-processing as a way to blur and rem and hide problems
and we don't want to do that. So this is what it looks like without post-processing. Okay, it looks uh fine, right? It looks like we we're we're going to be just fine. Okay. I think the fog is a little dense, but overall it looks pretty good. So, the post-processing just adds some contrast to it. Okay. Now, what I could do, and here I am already about to derail myself. What I could do is I could go in and add that level of contrast to the sky and to the lighting, but we're not going to do that. Okay? But keep that in mind. You don't want post-processing to be too much of a band-aid. I see a lot of game devs like go hardcore with post-processing and everything's blurry and motion blurry and the it's super
contrasty. Um, which I even think this might be a little bit contrasty to be honest with you. Yeah, there we go. Okay. Um, but let's go ahead and uh enter play mode here, guys. And we're going to talk really quickly about polish. So, we're just going to polish up this scene. And I think you guys are going to be shocked at how important polish is. And again, this is what it looked like. Let's see here. One sec. I want to pull up what it looked like. All right. Who said what?
Did someone say, "Why are you streaming this, Thomas? Work on your game." Is that what you said? Yeah. Um, the reason why I'm streaming so much, it's because I love you guys. But it's also Black Friday. Black Friday is a big it's a big time of the year to to help fund Q1 next year, especially because I had uh budget cuts for Twisted Tower. So, you guys are helping fund the final stretch of development for Twisted Tower. So, thank you so much for doing that. Man, this looks great. If I'm being completely honest, this looks pretty good. I I'm not uh I'm not going to lie. Uh, okay. What was I doing? Ah, yes. I wanted to show you guys how you can quickly make this look um
um or or or make this feel 10 times better with polish and juice. Okay, so let's start let's just start with ambience. Ambience. It's so funny. I'm gonna pull up artless.io really quick here. It's so funny how I don't know why I've learned this slowly and I I I'm confused by it and I've understand I'm I've I've learned that I'm just coming from a place of privilege to a degree. Game devs really struggle with sound. They really struggle with sound. I don't know why. So, I'm going to help you guys out. I'm not perfect, but I'm going to show you how to do sound. So, we're at artlist.io. I don't recommend artlist.io. It's very expensive. Oh, but Thomas, the the subscription is only $20 a month. No, that's not true. If you want to put it in games and you want it to be royalty-free, that is not
true. I've spent over five grand on a license. I won't tell you how much it was. So, you want your ambient sounds to not not be so obtrusive. That's great. I don't want to hear kids though. We're going to do ambience winter and then we're going to throw in some some frog sounds. That's good enough. Let's grab that. And
then we're going to type in bog and just get we're going to fade in and out the sound of crickets. We can type in swamp actually. Swamp ambience. We might get a good sound here. There we go. Okay. I'm gonna take what I typically do is I'll take three or four sounds and I'll I'll merge them together into one big um sound effect. Okay. So,
I'm going to open this up in Audacity. Audacity is free software. I've been using this since I was 15 or 16 years old. Um and I'm 35 now. Okay. So, it's not playing back. We need to make sure we set the playback device to the my headphones. There we go. And I'm just going to aim for like honestly what is that like 25 seconds. That's great. So that's the chirpy skylines sound. And then we're going to do this one as well, which is more more of a white noise. And what I'm going to do now, some of you are probably thinking, um, oh, let's add in blowing trees. Oh, let's add in a frog that's jumping automatically.
The problem with that is that, okay, it's this. I think it's something that's coming. It's becoming more and more relevant with the advent of AI and assets. And I just talked about it on Twi about my post on Twitter, but it's not you can't just get away with animating stuff. You have to create interactivity. So, if you're going to put a frog in the game, it's probably best to make it so that the player can step on it and the frog farts or squishes or the frog just jumps out of the way, right? It could be that simple, but you want to make sure that you're creating you want the player to feel like they're in that world. So, I'm fading in and out the the frogs here. You just want that white noise.
I'm going to get rid of that. That was a little obtrusive. That's good. Okay. Very good, guys. I'm going to merge all this together. I'm going to make sure it's at -12 to -6. I know that sounds crazy, but Thomas, it should be low volume. No, I like all of my sounds to be at basically -10. And then we can crank down the volume in the game. All right, I'm going to fade this out right here. I promise this will make sense. I'm going to fade. Wait, hold on. Let me mix and render it so that the volume is perfectly zero. Okay. Or it's it's at zero. That way I can fade this out right here. And I'm going to fade this in. And it's going to make it look I'm going to reverse this and then fade this in. And what happens is you get a looping sound.
Hang on one sec. So, that was a little bit too fad. So, give me give me a sec here. I can hear the fade starting there. So, I need about that much. And then I'm going to reverse this. And for the purposes of today's tutorial or workshop, this isn't going to be perfect, but it's fine. So, that's going to create here. Let's Let's Give me just a sec here, guys. I promise this this will make sense. I'm going to do this. There we go. I need a big piece so that we don't hear so much of it. There we go. That's That's what we needed. Does this make sense, guys? Someone tell me if this doesn't make sense. I'm reversing the front and fading it in. It's a This is a mirror image of the front. This fades out. this mirror image fades in so that you get a
perfect loop. Yeah, you really want to what the reason um creating that kind of interactivity is so important. Number one, players love it. Players love that feeling of wow, I I I touched that frog and the frog jumped. Even if it looks like crap with a really good sound, rip it and it jumps and it goes in the water. That little stuff is makes the game 10 times better. I'll show you here in a sec. Um, I'm going to call this uh ambience bog. Okay, that's going to import. And I'm just going to go to my ambient sound game object. And by the way, guys, I'm using a system Excuse me. I'm using a system that is we we created for Twisted Tower. So, there's a lot of functionality in this system
already um that I'm not going to rebuild for the purposes of this workshop. Okay? And also, don't be fooled. Tons of this stuff is much bigger than solo dev. But I think the stuff that we're using for this video is solo dev stuff. a character controller, an ambience game object with looping sound, right? Animation triggers, object activation triggers, footstep sounds. We're going to do all that. Um, and I think all that is reasonable. It's reasonable to assume that all of that is uh like solo gamedev stuff. All right. So, again, as a solo developer, you want to make sure that you're using ambience and sound. Why? Why? Why is sound such a a Why is that correlated to be a solo to correlated to being a solo dev? Well, sound is cheap. Sound is cheap. Art is not. Okay? Even though we got all this for free and it only took an hour. Typically, art is not
a cheap thing. Okay? And I've heard this from both American McGee and Ken Lavine who have some of the greatest uh looking games out there. art was the big price tag for their games. All right, there we're going to put ambience uh bog. We're going to set it to loop. And watch this. Already it's going to feel two times better. Two times better. Look, very subtle. Thomas, there's no footstep sounds. We'll do it in a sec. We'll do it in a sec. We need the sound of water, don't we? So, this is what I always do. You know,
water. Let's do a brook. Babbling Brook. This is what I always do is I'll test it in Unity and then I'll go back into our list and say, you know, we need that sound or we need this sound. Yep, there it is. I was looking for a gentle sound. A very subtle gentle water sound. Okay, audio is low for me. Check one, two, and two. I'll turn up the volume of the ambience in in the game. Okay. So, what I'm going to do, certain sounds you can get away with not doing that loop effect. Okay. For example, really, uh, sounds that have this waveform, it's like this. It's almost like static, you can get away with those not having a loop like this. But when it's a subtle soft sound, like a white noise sound, you can hear the shift in pitch. And so, that's why you want to fade it. But this one, I think we can get away with not doing that.
Okay, what I'm going to do here, this doesn't make any sense. Okay, well, it might make a little bit of sense, but what you want to do with sounds like that are kind of very distinct, like a river, for example, or a brook. As a solo, what you want to do is mimic 3D audio. Here's what I mean. The player is going to be walking around like this, right? What a lot of solo devs would do is they'd go, "Okay, I need to go buy fod or I need to go buy volutric audio, like some volutric audio pack, and I need to outline exactly where this water is." Or they would make a huge mistake. Instead of doing that, they would do 3D audio spheres here and here and here of all the the water. And what I'm going to do is because I know generally the player is going to stay generally here and they're always going to basically see the water generally. What I'm going to do is I'm
going to fake the dynamic nature of that water. This is so cool. So basically what I can see here is this almost looks like the shape of the river. Look. Isn't that cool? So we're going to mimic that shape. Now, it's not going to be perfect. And if the player's really smart, they're going to realize, "Okay, the water keeps shifting even when I'm not moving." But who cares? We're solo. Do you hear that? Okay, great. Ambience sounds perfect. That coffee was delicious. Holy mackerel. That's the best coffee I've ever made. [snorts] Oh, very dark.
Uh, that's good enough for me, man. Let's enter play mode and feel it out. We're going to increase the volume to 0.5. I'm gonna turn this down because it might blow out your eardrums. Wait, what is Kevin saying? Kevin said click the loop button. What are you talking about? What loop button? What are you talking about, Kevin? What are you talking about? What loop button? this. No, that's not that's not what I'm talking about. I'm talking about how if I cl Never mind. You just watch the previous part of the video so you can hear the water ever so slightly.
Perfect. Okay, next up. Footstep sounds are very important. Okay. To create a level of immersion. Now, in a so, okay, so let me try and explain. In some solo games, um, you can get away with just a simple footstep [snorts] sound, okay? But let's say you're making like a small immersive story game or horror game, then you're you're going to want to have some kind of dynamic footsteps. Well, Kevin, I don't need I Kevin, I appreciate that. I really do. But I don't need to hear if it loops properly because I know it does. Um that's just because this is perfect. [laughter] Um but uh I mean I guess we could Yeah, we could do this and hear if it's going to loop perfectly right here. Right. But even that even that doesn't do it for me. Maybe maybe you're right, Kevin. Let's see here.
Yeah. No, that doesn't help me because it it fades in and out at the end there. And that's not that's not correct. That's not actually what's happening in the final audio. The final audio doesn't have a fade out like that. You can see here the waveform um right there. Maybe I'm wrong. Let's What we have to do is you have to hear it in game. Let's listen. Maybe I'm wrong, guys. Thomas acting so smart and confident. Wait for that fade out. It's 24 seconds long. Oh, wow. It did it. Kevin. Kevin for the win. Let's figure out what happened here, guys. For some reason, we're getting a subtle fade out and I
don't know where it's coming from. Let's cut this here. Cut this here. Okay. And what we need to do, I think what happened was Thank you, Kevin. Good job, bud. Kevin, go enjoy a nice Thanksgiving meal. And you can remind yourself that you you were right and Thomas was wrong. Um, let's make sure we do this correctly here. fade in. Yep. Okay, that should do it. There we go. There we go. Kevin, thanks, buddy. Congrats to Kevin. There we go. It's a nice crossfade. All right, let's listen to the uh the sound of the the the the river. Yep. Perfect. Good job, Kevin. Yay, Kevin. Way to go.
Just like any Kevin I know, they come in and they act like they're so right and then they end up being right. [laughter] No, that's great. Okay, we've got our We've got our looping sound that works perfectly. We've got some water. Now, what we're going to do, and guys, I can't build all of this live because it would take forever. Well, it wouldn't take forever, but it would take some time. It would take a couple hours. What I'm going to do is I'm going to use something called my sound manager. And so, this is just a sort of overview of how to do footstep sounds in well, any game really that's 3D. Um, you're going to send a raycast down. And you have to account for terrain. You have to account for 3D objects that have textures. And you also have account for objects that are tagged. So, for example, I could tag this object as stone. Let me show you. I could tag this as stone. In fact, I'm going to open it up in
its prefab state. And I could mark this as stone, but I want to make sure that the child is stone as well because the the child is actually going to have a mesh collider on it. Okay. And this child, because it's marked as stone, if I go over here and walk on it, I'm gonna get the sound of stone. Do you hear that? Let me turn off the ambience so you can hear it better. Okay. And all that's doing is it's saying, "Okay, the raycast is going directly down from the character controller. It found that we're on a stone tag. And then it looks up what the sounds are and it plays these step sounds. That's all. Now, you might be thinking, okay, well, what about terrain? Well, terrain is similar. What we do with terrain is we say, hey, we've got four textures here.
We've got four textures here, and these four textures need to be added to the um sound manager. Okay. So, what I'm going to do here is I'm actually going to lock this. Whoops. I'm going to call this textures. Okay. No, no, no. What we need to do here is go to our sound manager, and what I'm going to do is go to the grass tag here, and I'm going to make sure I add that grass texture that's here. Right? So, let's do that. I'm going to go to my folder that contains all of our assets for this uh live stream. And by the way, those of you just joining us, remember you can check out Fulltime GameDev below. And again, I'll say this a million times, the reason I'm doing so many ad reads this week is because it is Black Friday. And Black Friday is a massive time for enrollment for all of the students who join Full-Time GameDev because it's a really good deal. It's
50% off. And you're also going to get my art programs completely free. my YouTube YouTube program completely free. You're going to learn how to get your game published, how to hit the Steamfront page, how to get press coverage, how to get streamers to play your game, and most importantly, how to make a game in Unity, GDAU, or Unreal. Um, so you can take your pick. Okay, forest test scene. I have this folder here. I'm going to go to my textures, and all I got to do is add in my grass texture. So now it it looks for the grass with a raycast. It checks the texture that the raycast hits and then it will play the grass sounds. Does that make sense? These grass sounds right here. Okay. I'm going to do the same for um all the other sound all all the other textures. And by the way, we're only we're very using very minimal amount of assets in this scene. And that's another big key takeaway with solo dev. you're [snorts]
and I I've been there where you you buy a bunch of assets and you think I gotta repurpose and reskin and flip all of these assets when in reality we've got like what seven different assets in this scene. We might have a few more than that, but okay. I'm going to go to my uh the rocks and I'm going to set it to stone. So again, I have this big fat texture list. This is all all the textures from my from my game Twisted Tower. But I'm going to throw in this rocks one here as well. Now, this is the trick with water. Okay, with water, what I like to do, it's uh it's kind of tricky because the water isn't actually a collider. And so, I guess I could rewrite the code and I could say um if the player is in the trigger water, then play the water sound. I guess I could do that or I can just paint texture where the water is. And I'm going to do that where it's darker and
it's going to sound like wet mud or e even just splashing water. But for the sand, let me show you what I'm going to do for the sand. For the sand, I'm going to just add in the sand texture and it's going to play that sound. I'm going to go ahead and create a new I'm going to duplicate this PSD here. D. I'm going to call this sand wet. I'm going to open this up in Photoshop here. And sand wet. All I'm going to do is make it dark. And then I'm going to paint this where the water is. And this is all this just high little levels of detail. And you don't want to do these levels of detail until you're you're sure about your level design. Um you you it's it's one of those things you want to do towards the tail end of development, if I'm being honest. Um so we're going to do wet sand here. Here's my wet sand. I just added a brightness contrast filter over top. Save it. Bring it back into Unity. And I'm just going to make sure I go to my sound manager. And I'm going to say for
water. Let's see. Do I have wet? I might have No, let's just do water. Let's just do water. We're going to make underwater ground. There it is. Okay. So, what's the sound? Yep. Puddle. Puddle. One, two, three. Yeah. So, this is going to play a puddle sound. So, I'm going to go to my grass wet texture. I should have it sand wet. I'm so sorry, not grass wet. Sand wet. I'm going to go to my sand wet and add it here. And then I'm going to make sure I paint it on there. So, I'm just going to create a new uh layer, sand wet. And watch this. All I'm going to do is start painting wet sand. right there. Okay. I kind of want it to be faded out more. Um, can't see because of this light here. It's actually blinding me.
And you when you walk into the water, you're going to hear that sound. One of the things that I've found is really tempting to do as a game developer is to constantly test the scene and not get things done. And what you've noticed is I've just done like five different tasks um without testing anything. And that's okay. We're just going to knock all of this out. And if it doesn't work in in play mode, then we fix it. Okay, there we go. and we'll see if this works. This is just a crappy section of the level that's not done yet, but this is really what we're focused on right here. Let's do some over here as well. Okay, so look, there we go. Let's be careful. We're just to do that. And if it looks too dark, we can just
fix it in Unity. No big deal. Or I'm sorry, in Photoshop. And you might be thinking, Thomas, this is overkill. Well, not really, actually. Adding like dark texturing where the water is gives it just that extra little level of detail that I like. It's a little dark. So, what we're going to do is go into Photoshop and just brighten it up just a tad. And it'll do it on the fly. And then we're going to make it bigger. There we go. We can even do 10 by 10. All right, and that should do it, guys. So, let's see if the sounds are now correct. Want to take a look? Why is it so dark? Oh, lighting's off. There we go. I might have to have a weapon.
Wonder why I can't hear it. That's crazy. For some reason, it doesn't work. That's wild. Holy crap. This is crazy. It's a bug in the game in Twisted Tower. The system no longer works. That's crazy. That's not good. The terrain sounds no longer work in Unity. That's wild. Well, let's go ahead and just tag this for now. We're going to
tag it as sand. I'm going to look up and look into this later and maybe during the stream we'll look into what's going on. I'm going to see if there's a null reference exception. I just don't want to get bogged down with bugs. Goodness. Okay, I can hear that one, but I cannot hear this one. Terrain doesn't play a sound. Provides contacts. Maybe that's it. Okay, let's let's head on over to one of the levels in Twisted Tower to see if it's working there. Sorry, guys. I don't know what's going on here. Accidental bug fix. Yeah, that's right. I have no idea what's going on. This is wild to me. Let's see if it's working on this level.
It might be uh an issue with the terrain layer. Um we're going to double check. And this looks like complete garbage, by the way, because it's the wrong skybox. Okay, let's turn off the sound really quick. Okay, let's hear if this works. Okay, it works. So, for some reason, we have an issue with the terrain. So, on the other levels, what I'm going to do, I'm going to take this one, set it to tagged, untagged. Good. Enable tree colliders. Good. Good. Good. That's all set up properly. But for some reason, draw instance enable rate tracing support. Draw autoconnect. compress holes. There's got to be something related to There's got to be something related to what's going on here. So, I'm going to
bring this into the forest level and see what's going on or the the the the bog level. So, I'm going to take this. I'm going to go over to it. Let's go to it here. Let's fly to it and let's see if it still works in this level. Sorry, guys. It's just a really, really lame bug, but we're going to figure out what's going on here. Okay, that works. So, for some reason that works. Uh, it makes you wonder if there's an issue with Ah, I think I know what's going on. Let me see here. No, that's correct. Sand H. Uh, let's hit play on top of this again one more time and see if it's working. There it goes. Okay, the grass works. Grass works good. So, it's nothing to do
with the terrain layer. Something is wrong with the textures. So, let's see if that stone is working. Okay.
Whoa. [gasps] That's wild. So, for some reason, I need this terrain in this level. Is there a script on it? terrain collider. No, that's wild, guys. Now it works. Look. Although I think I might know the issue. Okay, I know what happened there. Um,
the reason why is because I think it's because it's defaulting to one of the textures on this here. So, let's double check. That works. So, what about the
grass here? That works. Okay. So, what could it be, Thomas? I'm really curious now. Okay. What if I paint? I have no idea, guys. I'm going to see what happens when I paint on this here.
I was hoping I wouldn't have to do this. There's this new layer here which is this sand. Let's try it. See what happens. [snorts]
Over here. Okay, that doesn't work. Despite the fact that that is the sand wet, for some reason it doesn't work. Okay, so there's an issue. Let's double check the underwater ground and see what's going on here. What in the world? Driving me crazy.
makes me angry because it's hurting my point that I'm trying to make. What in the world? Look, that's right there and it's not playing a sound. Huh? I'm very frustrated. Okay,
we're going to move on to the next thing, guys. I'm sorry. I don't know what's going on. Let's move on to the next thing, though. Okay, we have an argument issue here. Okay. So, look, we have an issue here.
No, the error is not there anymore.
That is infuriating. Why? Okay. The grass works though, doesn't it? No, the grass doesn't work. I'm going to set this to untagged. The grass doesn't work either. Okay, there's an issue here. There it is. The theory, my theory is there's something I need to mark on the terrain to allow for the data to be pulled. Welcome to solo gamedev, by the way. Here we go. All right. So, we're we're getting this bug here. I'm going to ask chat Jippidity um I'm gonna or at least Claude, I'm going to say, "What
are these errors in Unity? and Cloud's going to come up with the the answer for us. I really want to figure out what's going on with this because I want to show you guys the importance of footstep sounds. Okay, the And by the way, I wrote this script three years ago. Um, I can see the issue. Get texture mix method calculates map X and map Z coordinates but doesn't clamp them to valid ranges before passing them to get out map alpha. If the world position is outside the terrain bounds, these values can be negative or exceed the terrains. Okay, I got it. So the issue is the position. That's the issue. The issue is the position of the freaking terrain. So what I need to do here is figure out, okay, well, where's the position of the other one going to be, which is right there. So that's where this one works.
This one works because it's at that position which is 00. And what I'm going to do, this is the theory. What I'm going to do is bring all this over here. That's wild. Really? That there's no way. There's no way that's the issue. Okay, let's try this. There we go. It works. But for some reason, it's playing all the wrong sounds. [laughter] Oh man. But
let's double check here.
Why are you playing the wrong sounds? I have never had this issue in four years. um ever. That's wild and incredibly frustrating. I mean, even if I zero out its position and move it over here. Wait, what's that? That's the water. Hang on one sec, guys. We're going to figure this out. Promise. The rock object has a different texture check. Okay. I have a theory that it has to do with the pixel error. Let's just do this really quick.
What on earth? What in the world? Okay, Thomas, you got this, buddy. You can figure this out. Okay. The the water the wet is working but the stone is not. The grass isn't working. Or is it? Hold on one sec. These little things are what matter. Okay. I can't hear that. But I can hear the water here. See? And that's because Yay. Okay, we've got it. It's all figured out. Thomas wins again. Basically, what we're going to do here is we have to make sure that the
textures are matching the layer name. All right. So, we've got this one, stone. Uh, this is sand. This is stone again. There's no way. What is that? That's dirt. Let's see. Let's double check. Yeah, dirt. Good. Okay. Uh, so we have to make sure our our layers, this is just dumb stuff with Unity, but we have to make sure our layers are matching. This is the theory at least. We'll see. I'm going to delete this one here. We're going to make sure that uh the layers match the name of the texture. So that when it the raycast finds the texture or I'm sorry when it finds the layer name it can compare it to the texture in the array on the sound manager and then we'll be done. Okay, then we'll be done. I don't know what that one is. This is grass.
All right, so let's test this and see if this works. There we go. Okay, [sighs] there we go. All right, good. Okay, that is good news. And so I don't think it had anything to do with the pixel error. So we're going to do a high pixel error. And we're going to make sure that the the texture is nice and crisp there. There we go. And I'm going to have to move this back to where it was. I think its position was something like500.
Now here, hold on one sec. Where was his position? My goodness. What a day. What a day. Is that all I needed to do right there? Is that it? And let's make sure that the water Oh, and the water's gone. Is the water gone, too? No. What a day. What a fun little day. I need to go rename all those. Um, golly, Thomas. Okay, there's our water. Good, good, good. All right. Now, we just need to make sure we name our layers appropriately. So, this one is going to be sand, wet, stone, sand, dirt, grass.
I think that was that may be what the issue was all along. We'll see. Okay. So, that's not working. All right. We're going to double check the We're almost there, guys. We're going to check double check that it's not the pixel error. It's not. Okay. So, it's not the pixel error. Um, let's double check the position. Remember, we thought that the issue was the position. So, I'm going to set it to zero. And we'll go back in time if that's causing a problem. Let's do this and see if it works. It's crazy. I had it working and then I didn't have it working.
Nope. Doesn't work anymore. Grass up there. It's almost like um It's wild. It was working and now it's not. Let's double check the sound manager. Maybe that's the issue. No, that's there. What about the grass? Yep, that's there. H I feel like if we go right here
where this one's working and then delete it, it'll work cuz this one is working. Look. Yep. So, it has to do with the size of the terrain. That's That's really the problem. It has to do with the size of the terrain because it works great. Look. All right. So, let's ask chat GPT. Can we not I noticed that the terrain has to be within a certain range of or a certain position for this to work? Can't we just have it work at any uh position? Add balance check blah blah blah blah blah. Yeah, let's ask let's ask um Claude
what's going on there. It's so weird. Um what happens if I delete this and then go there? Because I feel like that might be That works.
Yep, that works too. You're absolutely right. The issue is that the code assumes the terrain starts at its transformed position, right? But terrains can be be positioned anywhere in the world. The calculation needs to properly handle terrains at any world position. So, we're in agent mode, so it's just going to do it all for us. Um, okay. So, the fix is done. Um, hopefully that that didn't screw up any other code. All right, so let's go back in time. This needs to go back to its original position, which was what? Uh, give me a sec here.
This is great, actually. This is exactly what we needed. I needed to know that was an issue. Um because this is the code base for my current commercial release. So now we know why why sounds might stop playing. Okay. It didn't it didn't resolve it. Didn't resolve it. This is so important though. We need this to work. We do. What's this terrain here? It might be looking at this terrain here. So, let's see here. Let's enter play. Let's uh actually one more thing. This is so embarrassing. Not really. This is just the way it goes. This is the way gamedev goes. It always goes this way. It's the problem with teaching
it. Okay, so that one. Let's see. Okay, so that works. Um, what in the world.
I'm going to delete this and see if it still works right here. It's almost like it can't work outside of a certain boundary, you know? It's so weird. That works right there. Okay, so here's what we're going to do to avoid any issues here. What I'm gonna do, or to avoid boring the crap out of you guys, what I'm gonna do is I'm gonna move this over to right where the terrain is. And I think that's all we really need to do. That's the theory. We'll see. Um, it's not a perfect solution, but it's enough for today. There we go. Got it. Okay.
All right. So, that's that's sound. That's footstep sounds. And why footstep sounds are so important. I'm going to drop down the ambient sounds just a little bit. Okay. And then we're going to make sure we're tagging these rocks as stone. And yeah, we want to make sure that they have colliders on them. We want to make sure we're tagging these. Let's tag them as wood. Right. I like that. the crappy LOD. So, we're going to use the crappy LOD. Um, remove that mesh collider. Remove the LOD. Remove that. And we're just going to add a nice mesh collider to the very basic LOD. Remember what we talked about yesterday, how um what I like to do is make my games have a lower level of detail. I like everything to have sort of a a slightly old school look because I realize I'm an
indie studio and so I'm not going to make something that's high fidelity. Even if let's say you found I but Thomas I could find rocks on Unity's asset store that are high fidelity and they're only a dollar. Well that's great. The problem is is that you're going to have to match that level of fidelity with everything you find. And so what I like to do is just, hey, you know what? I'm going to do the crappiest level of fidelity I can find and use that one. So it's this one right here. Can even go to what's this one? Yeah. Okay. So that's good enough for me, man. And is it tagged as wood? It's not tagged as wood. So I'm going to tag it as wood. Remember, there were two two ways that sounds are being identified from footsteps. A tag of an object or the problem with terrain is
you can't tag certain sections or it's looking for a texture or a layer on the terrain. Okay, so let's listen to it. Do you hear that? I'll turn it up for you guys. Okay, great. The ambience is a little loud. You can barely hear my feet. So, let's just reduce that to 0 2. Okay. Now, we've got our um sound effects playing. That skybox looks so good. Um, I love it, honestly. Um, remember we're solo, right? So, instead, this is so important. I'm not saying this is a hard
and fast rule. It's just a nice rule of thumb. Instead of saying, "Hey, well, let's go find another asset or let's use a different version of this mesh." Just flip it, right? Just flip it and maybe put it in the sand there. Rotate it. Maybe rotate it and flip it. That's okay. That's okay to do. We're just trying to get a lot of reusability out of a single asset. Okay? Because we're solo, because we don't have a ton of time. We're trying to get a lot of reusability out of one asset. Look, players are forgiving about this stuff. They really are. Okay. Um what about this? Right. Um this grass is too big for one. But let's
talk about um adding some kind of interactivity to the world. Remember we talked about that earlier. Um adding some kind of interactivity to the world. Let me move that down. It's too big. Yeah, there we go. We talked about how yes, you can make something look pretty, but it doesn't really get you very far with a game. Instead, you have to create interactivity. Interactivity. So, I'm going to I'm going to find a cattail. I might even have some. I don't have any cattails in the in the project. So, we're going to go to the Unity asset store and uh look for a cattail. And what I'm going to do is the the reason why I'm going to specifically focus on cattails is I want to add interactivity to a cattail. And my hope at the end of this portion of the stream, my hope at the end of this portion of the stream is to convince you why it's so valuable to add just subtle movement to things when the player
touches it. That's the key. When the player touches it. Okay, I'm looking it up. One sec here. I should have some. Give me just a sec here. I'm going to find an asset with cattails. Maybe we could just find um I know I have cattails. What else are they called? I think we're just going to make one. Let's quickly make a cattail. Okay, let's go into Blender.
Let's go into Blender. Open up Blender. takes a while to load for some reason. Um, I'm going to add some subtle animation to these guys. I want to show you guys a trick when it comes to animation. Now, like seriously, obviously, we could throw on um a shader onto this. So, I think it's this right here, tree wind. Yeah, there we go. And that'll that'll blow in the wind. Um, so we can add that. I don't know why it's emissive. Let's double check. For some reason, it's emissive. Um, let's see here. Plant. See if this this works for us. There's no wind. Where is our wind? We usually have a uh leaves. We have a leaves shader as well.
So, let's see if that one works. That's for for um built-in render pipeline. Give me just a sec. I'm going to find the right one nature. No, it's not in Maybe it's in URP. No, there's a FF wind controller. Let's see here. I'm going to type in tree. We have some cool trees that we use and they have wind blowing on them. I'm just going to take that shader, this one right here, which is called tree wind 2. And I'm going to put it onto the grass and see if this fixes it. There it is. Okay, that should do it. It's not double-sided, I don't think. But I think that'll that'll just make
these blow in the wind a little bit just while Blender opens up here. Um, we also need an FF wind shader or a wind There it is. A wind controller. This is an asset that I that I use which basically blows our plants. So, this is again it's an asset from the asset store. Um, nothing fancy. Just blows the the We don't want it too much here. Um, we're gonna crank up the opacity of this because it's it's creating some clipping that I don't like. There we go. That's much better. Let's hit play and take a look and see if this helps. Good. Plants are blowing in the wind a little bit. Really all we need. just creating some subtle interactivity. Okay, you might wonder, well, maybe we could do it with that tree, Thomas.
Yeah, sure. So, if we go to that shader, um, it's called tree wind 2. I think I could have put it on this as well. Let's see if we can do that. It'll blow a little bit, but it gets really disjointed here. So, triforge is the asset, fantasy forest, and we're going to do tree billboard. or I'm sorry. Um, the problem is is it creates this weird It's better for like leaves. Yeah, it's better for leaves. Super screwy looking. Okay, we're not going to worry about that tree. Moving on. Okay. Uh, next up, Blender. Let's create a cattail.
The cattail, I do want it to be unwrapped nicely. So, what I'm going to do is I'm going to stop it. I'm going to create a cube here. When in doubt, just look up what a cattail looks like. Okay, that's all we got to do. What's that? What does a cattail look like? Don't be afraid to just say, "Hey, I don't know what that looks like." A cattail plant, which is also called No, it's a cattail. That's what it's called. It's quite literally a cattail. Now, why am I Why do I want to make cattails? Because cattails are distinct, and we can make them look chunky and fat so that when the player touches them, they go and move. These subtle interact These subtle elements. No, stop. These subtle elements um are worth your time. This game feel, subtle game feel. I'm
going to uh create a loop cut here. And then I'm going to take the ser the top here, set it to zero. So that's sharp, right? Shade smooth. And then I'm going to create a Where's the freaking capsule? [snorts] Um, we don't want it that detailed. Remember, we're making something that's low poly here. So, maybe like 10 by 10 or like eight. Yeah, that's good enough for me, man. All right, I'm going to scale this down. Bring it up. Scale it down some more. And then I'm going to go into edit mode here. And I'm going to select this portion here.
And I think we have a cattail. Let's see. Okay. So, we want to make this a little bit taller. And it's really important that you get all of the uh positioning right. That's probably the most important thing. Um, you want the positioning to be right. Okay. Is it sharp at the top there? Yep. Okay. And I kind of want the top there to not be so weird looking. There we go. All right. Yeah. So, what I mean by position is um you want to make sure that the origin is at the right spot. So, in this case, it's down at the bottom, I think. No, it's not. What we need to do here is add a material. I'm gonna call this cattail. I always get it always freezes when I select this. It's so weird. There it goes. There. Okay. Thank you. Cat tail
top. I'm going to save this before anything else. I'm going to make sure I save this into Twisted Tower, which is the project I'm working in. By the way, I'm probably going to repurpose this whole project to be an engine. I'm probably going to call it like Atmos engine, which I think we already have started doing that. Um, I'm just going to save it in other and I'm going to call it cattail.b blend. So, couldn't find an asset, but we're going to make a really quick asset really, really fast. I'm not going to worry about the unwrap too much. Listen, as solos, one of the benefits, again, one of the benefits of not having normal maps, not having specular, um, using really crunchy textures, and and taking advantage of lighting and fog is so that we can get away with just bad unwraps. Okay. So, I'm going to select all of this. I'm just going to unwrap it with like a
smart UV. That should be fine. Okay. And then we're going to also smart unwrap this. It doesn't have to be perfect. Okay. And we're going to assign a new material to that. Okay. So, in this case, this is going to be cattail bottom. And save it before I click this freaking button. There we go. Cat tail bottom. All right. So, we have this one. I'm gonna uh that's assigned. It is assigned. Good. And then this one is cattail top. Uh then there's also this material here. Can I delete that? I don't want that. And let's go to our drop down and call it cattail bottom. That's so weird. Okay, that should be fine. There's bottom. There's top. Good. Good. Good. I'm going to merge or join these together. And uh I'm going to go ahead and apply the um transforms. apply all transforms.
And I'm also going to um set the origin to the bottom, which is at the 3D cursor there. So now it'll rotate like this. I'm going to hit save here, open up Unity, and we're going to create our first little cattail, and I'm going to show you guys why it's so valuable, fingers crossed, why it's so valuable to have interactable elements in your scene. Okay. So, what I'm going to do, I'm going to drag in this cattail here. There it is. Good. There it is. Right there. Going to make sure it cast shadows. Yep, shadows are casting. That's good. Um, what you can do is you might be able to get away with, which is I'm all about getting away with
stuff in solo dev. Um, you might be able to get away with using sand as the texture. Turn off lighting here. Yep, I think we can get away with that. and then grass for this one. So, we have grass and then sand. I'm going to call this um cattail top. And then I'm going to call this second one down here. I'm sorry, the sand one. This one's cattail bottom. All right. So, I'm going to throw
cattail bottom here on the top one here. There we go. And cattail top here. And then obviously get rid of the specular. This is why I love not using specular. I don't think I'm going to use specular in my next game because you just don't have to worry about inconsistency in textures. Um that grass one is wild to me. So what we're going to do is just set it to 5 by five. I'm sorry 0.1 and then 0.1. How about how about 0.2 two and then one. Okay, so it's definitely not going to work. The grass one's not going to work. So, what I'm going to do is I'm going to create a new one called cattail top. Uh the base is fine, though. I'm going to open that open up this in Photoshop. And I'm just going to blur this. And that should be a decent looking cattail, honestly.
Here we go. This cattail top, I'm going to make it a PSD. The other one I'm going to delete, which was a JPEG, and I don't want that. So, this here, we're going to delete that. And now we can just go into our texture or I'm sorry, our material and just change it to this, which is cattail top. There it is. Okay. All right. And I'm gonna I'm gonna make sure that this is properly um set there. And because it's going to be interactable, one of the things I want to do with um the texture is make it vibrant. The interactable stuff in your game needs to have a vibrant color. Okay. So, maybe we'll do that orange color. Maybe we'll match it with the orange. Okay. So there's our cattail. It's kind of hard to see the dark. So
what I'm going to do with cattail bottom is I'm going to grab that sand wet and I'm going to duplicate it and call this cattail bottom. I promise this will make sense. Just give me a minute. Um I'm going to crank that up. We just want it to be We could even go with a yellow color, honestly. Yeah, something like that. And I'm g just blur it. All right, we have a cattail bottom here. Oh, but it's so easy to see there. I don't think we need to change it actually, but just to be sure, let's do it. Um, I'm going to grab the uh material here and just drag in the cattail bottom there. And yeah, I'm actually I'm totally fine with it just being that dark color. It looks pretty good with the lighting on. All right, guys. So, we have our cattail. I'm going to I'm going to come back to the coloring in just a sec. I know that looks weird. It looks
like a hot dog on a stick. [snorts] But here's the cattail. I'm going to go to play mode, and then we're going to talk about how to add interactivity to it. Okay, good. So, you'll notice that if I walk towards it, nothing happens. And the player's like, "Kind of wish it did, you know, I wish it did." And it doesn't. It looks like a hot dog and it's not doing anything. So, I have Because, guys, because we're in a long or this would take forever to do. I'm going to utilize what I've already built for for Twisted Tower just to prove my point. Okay, I have these balloons in Twisted Tower and they're over they're all over the place and when you walk into them they wiggle and they wobble. So, I'm going to repurpose this just to show you and prove to you the value
of just putting interactivity. Oh, that's perfect. It's like the exact height. Uh putting interactivity into your game. So, actually what we can do here then go into a single balloon just add the cattail um like that. Remove the mesh renderer here. There we go. There we go. And so these cattails, we're not going to make them breakable right now. What we're what we're going to worry about right now is just having them wiggle and move in the scene. There they are. Now, why is this important? I'm going to change the sound in a second. This is important because players, this this is fun.
It's fun. It's fun for players. By the way, cattails look like hot dogs, right? [laughter] So, I don't actually feel that dumb for making them look like hot dogs. Um, they just do. I think maybe doing something like that would help. Maybe 3x3. There we go. Yeah. Um, let's change the sound. Let's just make it uh a shuffling of a grass sound. So, I'm going to open up Artlist.io. Once these are all distributed, I'm going to run through them all. I'm gonna have like 40 sets of like maybe 20 different cattails and then it'll click hopefully. Why stuff like this makes games so much fun. It makes your game playable as opposed to watchable. Um, okay. So, let's go ahead and type in um plant
plant or leaves maybe. Yeah, leaves. Okay, we're going to do that one. Um, and then we need like a like a sound. That's a good one, too. So, what you want is you just want you want a sound that the player's okay hearing all the time. That's really
There we go. That is too much. And then we're going to grab one more sound here. Too intense. Too intense. Fade out that. Don't Don't be afraid to create two sounds like We're going to try that. My guess is this is not going to work and we're going to need to come back to it. We're going to call this cattail wiggle. That sounds like a jazz song. I do the cattail wiggle.
Catail wiggle. All right. So, the way this works, by the way, if you're curious, is there's a trigger in here. And all that trigger does, you can see it's called the um balloon wiggle trigger. And it's it's just a simple box collider. And if the player touches it, it triggers an animation, right? And you can see I've actually got random sounds here. Uh, and it plays four different sounds. So, I could if I really wanted to. I guess I could just use the grass sounds. I have a bunch of grass sounds. Um, let's let's just do that and see what happens. I'll do the cat wiggle. We could actually try that.
I don't love that. I wonder if there's a foliage sound. No, we might need to create various variations of the same sound, but let's just test and see if the stepping grass sound is actually going to work for us. Here we go. No, it doesn't. You want to hear like a honestly, you need an impulse sound, too. You need like a Okay, so let's let's find an impulse sound. Something like styrofoam or like a f a a fuzzy sound. A pillow hit. Making love firmly gripping pillow.
Wow, I kind of want that sound. I am subscribed you mother effer. Oh, I was just there. What in the world? Definitely one of those days. Hang on one sec, guys. Let me sign in here. My little Junie screaming and crying. Mama's got her. Okay, we're going to just get that impulse sound. This is important. Uh it's I don't know why, but it's rewarding to the player to feel like they instantly got feedback. It's weird. So, let me let me sort of show you what's going on here. Um, give me just a sec. Let me open up Unity or I'm sorry, Audacity.
There we go. Yeah, making love sounds like walking in deep snow. Here we go. Impulse. So, we're going to make it higher pitch. Don't worry, it's not going to sound like I'm punching. Sound design is so important. A subtle impulse sound. Drop it down. Okay, we're going to just assume that's good enough. We're going to hope and pray and we're going to create three different versions. Okay, cattail. Do the cattail wiggle. Cattail wiggle one.wave. And then we're going to just do pitch shifts.
Some of them aren't going to include this piece at all. Well, it kind of needs that. Maybe we'll do like a p a speed and speed shift here. There we go. We're going to do cattail wiggle here. That's cattail wiggle two. This one, not even. And then this one, we're going to decrease the speed and pitch pitch and tempo. We're going to do them together. There we go. And I think honestly that's all the cattail wiggles we need. All right. So, wow, Thomas, you're wasting so much time. But am I? Think about it. You spend 30 minutes. Maybe maybe this takes you three hours. Three hours to create an interactive element in your world that wiggles and wobbles that shifts and changes based. This is
true with 2D as well, that shifts and changes when the player runs through it and when the player touches it. Is that wasteful? Because I can use this cattail. I can I can use this for a bunch of stuff. Wiggling grass, uh, a mailbox. When I touch the mailbox, it it moves just a little bit, right? Bushes, stones, rocks, there's so many things. A a flag pole, little things that wiggle and wobble. go a long way. This is the kind of stuff, my theory is this is the kind of stuff that players are going to care about in the age of AI slop because everybody's going to know what good graphics look like. Who cares? But interactivity, hyper precise, almost surgical interactivity, even if it's like five things, but they they're done really
really well, that's what makes games stand out. So, I'm going to go into my um cattail here. I'm going to go to cattail wiggle. Cattail wiggle. Go to three here. Add it in. And it's not going to be perfect, but hopefully you guys will get the idea here. Okay. So, what I want to do is reduce the impulse sound. The impulse sound is it feels weird. And I'm going to save this over the cattail wiggle one. And then I'm going to make this
I might even do a paw stretch. Yeah, I kind of like the one with the paw stretch and then fade it in, I guess. I mean, we could try that cattail wiggle too, baby. And that should do it. Oh, yeah. THAT FELT OH, IT FEELS AMAZING. NOW, sometimes sometimes you get a weird like synced audio sound and my question as to why that's happening is there's not a pitch. Ah, yes, we need to adjust the pitch. We're going to do I have a component here. And by the way, this is another element of of solo dev. And this is
true. I talked to um David um crap. Well, let's just we'll we'll bring up a different a different person. Jeff Vogle. Dave. His name is Dave something. It was a podcast guest. What was his name, guys? H Dave and then also Jeff Vogle. They reuse their code project to project to project to project to project. The same is true with Thomas Salah. He's the creator of Falconer. Project to project to project. So that's what I'm doing here. Set random uh pitch. No, audio functions. Yep. Audio source functions. So I have a script there. And what I could do is I can add this audio source functions script. Look, watch this. audio source functions um set uh pitch random range
08 to 1.1. So all three are now going to have a random pitch. So not only are they going to play a random sound, but they're also going to have a very subtle random pitch. So hopefully you won't get any weird syncing issues. And we just got one, but you get the idea, right? Hey, let's also make it so that these are much more extreme in their motion. This will be more rewarding for the player. And guys, this is just an animation. That's all it is. It's It's not a rigid body. And it just wiggles. That's all it does. Actually, I'm not going to mess with it. I like it the way it is. And and I know what a lot of you are thinking. It's like what? I don't want to add this to everything. Well, you don't have to.
It's just little things every once in a while. Look, you can imagine somebody playing this demo now for like 10 minutes because they like walking through the cattails. Do the cattail wiggle. Yeah, we're going to put the cattail all over the place. And I want to show you guys about culling really quick because I know a lot of you are probably thinking, "Wow, this is a lot of animations to play. Is this going to slow the game down?" Well, thank God we have culling available. Um, and I mean bonus points. Bonus points if you can break the cattail with your knife, you know, and out comes fuzzies and
and look, we don't need different cattails, okay? We're just going to rotate and scale. We don't need different cattails. By the way, those of you just joining us, feel free to check out full-time gamedev below. If you want to learn not only how to make games, but if you also want to learn how to sell them to publishers, sell them on Kickstarter, sell them on the Steamfront page, how to hit the Steamfront page, how to get wish lists, how to reach out to streamers and get streamers to play your game. These are all really important things that a lot of indies just they struggle with, you know. You're also going to learn how to do Unity, GDAU, Unreal, you could take your pick. You're going to learn 2D art and 3D art. These are courses that are included completely free, but only for the Black Friday sale, which ends in five days, and you're going to get 50% off as well, uh, the full course. So,
yeah, check it out below. See if it's something you're interested in. Okay, guys. So, like if I just place some cattail cattails around, what I want to do is actually make it so that these cattails, some of them are smaller. So, this is the benefit of having things in prefabs. Um, I make them smaller here. And we can we can uh make it feel a little bit more variable. Does that make sense? I don't need the balloon anchor. this right here. This weird balloon anchor thing. I don't need that crap. Okay. So, now we're gonna see a little bit more variability in scale, which is great. It's gonna make Yep. Now they look more a little bit more natural. But hey, if that's a problem, just delete one of them. You know, if it just looks weird, just delete some. So, yeah, the the cattails don't grow randomly. They grow in corners.
So that's the thing about plants, right? They grow in little corners and in in in groups with especially with like the grass like this right here. Otherwise, they look really weird. So that looks great. There we go. So yeah, that's the idea, man. Adding these subtle tweaks make all the difference. And do you notice, guys, I I chose orange. Do you see why I did? Look how great that looks. Mother f. Why did I choose orange? Who knows? Number one, it's a really nice pop of color. But number two, what? Number two, what? Why did I choose orange? Who knows?
It really should only play one sound and I am tempted to do something about that. I think I could fix that. But you guys get the idea, right? No, not because the house is orange. It does tie the room together, but there's one other reason. Why did I choose orange? I'm going to actually make it so the audio source is all the same, which is just this one here. Where is our audio source? It's right there. Okay, I'm going to make it this one audio
source here. And then I'm going to make it so that it stops the sound. Optional random sounds. Yep, there we go. Um, animation trigger optional random sounds. Good, good, good. I'm going to make sure that the audio source stops and it's only going to play the sound. So hopefully we only get like one sound per group of three, which is I think ideal. Now, this isn't perfect. If if anybody was to rewatch this stream and look at that code, they would identify a big fat problem. Okay, but this should work. Much better, Tommy. Yes. Yes. Oh, it feels great. This is what matters. I'm telling you
guys, this is the stuff that matters. Now, I want to talk to you about sound triggers. We're going to move on to the next thing. Okay. Did anyone figure out why I chose orange? No. Yes. Marky or Snarky Cat. Got it. Snarky Cat got it. They stand out more since they're interactable. Yes. We're trying, especially because this is a small solo game. We're trying to say, "Hey, this is one interactable thing. Here's another interactable thing. Here's another interactable thing." Okay. An example could be if I had a Coke can and you could pick it up, I would make it like orange or red or teal so that it's clearly standing out so that I know, oh, I can pick that up and throw it. That make sense? All right. One thing I wanted to show you guys, let's say we started here.
Okay. Um, let's say I wanted the sound of a train, but I only want to hear the sound of the train once. Okay. So, I'm going to go train
for your own sake. Please do not leave. Here, I'm going to grab that one. We're going to make it sound distant.
Okay, good. And what I'm going to do is I'm going to f This is the stuff that matters, guys. I'm going to I'm going to find on the Unity asset store. I'm gonna find a free train. Okay. Cattails can guide the player. Absolutely. Interactable stuff can guide the player, even if it's not collectible. Okay. I'm going to grab a free train and I I think you guys are going to be surprised how quick how quick I can pull this off. Okay. Uh it doesn't need to be perfect, okay? It needs to be just some crappy train. Subway train. I kind of like this one. We're going to grab it. Download it. Give me just a sec to download this, guys. Um, and I'm gonna basically make this train go behind that orange building, and you're going to be like, hold. It's It's going to click. It's
going to click in your head. So, that that is what makes a game good or at least fun and interesting. And it makes you feel like you're in the world. Okay. And I didn't even decide today that I wanted to do this um this this train. I didn't think but it just popped in my head and I was like that'd be really cool to put a train in the scene. So you're you're probably thinking you're thinking well I can't add this to my five hour game. Well don't make a five hour game. Make a oneh hour game and make it three bucks and just make it highly interactive. So, this is called the Coroin deportion deportation train. Uh, Coroin. Let's type in train and see if it's in our assets. There it is. So, what I'm going to do, guys, is I'm going to I'm actually delete
these and I'm just going to put this train. You can imagine if if we know that the player is going to be locked in in limited and they cannot walk up the walls. So you can imagine maybe we would put like uh a fence lining. We're not going to do this for the live stream, but you can imagine if we put like a a metal fence locking in the player, then we can get away with a lot of cool stuff like this. Okay. So, I can take this train. And if I go to local, I can just paste this and make a really long train. This kind of stuff, it's all trickery, man. It's not It's not expensive. It doesn't need to be expensive, right? We don't need to get too fancy. I'm going to just shift some of them up and down so it doesn't look like it's constantly looping. And we can make it
look really like uh kind of old looking. And I could take all of these trains and just type in train. There we go. And this animation sequence, it's just going to do this. Now, we want to make sure that they're um Yeah, we want to make sure they can move properly. So, hang tight. One sec. What I want to do is set this to 00. There we go. And I'm going to make this sequence. Just like this. I promise this will be cool. This will be definitely worth your time. And I think you'll be surprised how quick we can do this. Okay, there's our train. I'm going to call this train, obviously. Um, and I'm going to call it and then parent it to another game object. Call it train sequence. Okay. I'm going to create a new animation. I'm just going
to put it in the other folder. I'm going to call it train driveby. Okay. Now, what I can do is put this train right here. And the first thing I want to do is, and this is why I love making like linear games or story games, because everything's kind of a set piece. Um, and you can sort of control what the player sees and when it can get time consuming if you're if you're really like, uh, yeah, there it is. I told you it's going to be right there and it's just going to move like this. Let's set it to make sure we set it to global. Is Is that right? No, no, no, no. Why? Why doesn't it move perfectly? Hang on. Yeah, it should move like this. Like that. Okay. So, that's a perfect spot for it. And the theory is we could start here. It's going to be super rough. Okay.
Right here. We're going to start. And then four. One, two, three, four, five, six, seven, eight. We're gonna have the train like eight seconds. We're going to have the train. And even if it looks like crap and it's kind of like not super realistic, who cares? I don't know why it's not moving along a straight line. My theory is it's because the terrain isn't, but I could be wrong. I have no idea why it's not moving along a straight line. Okay. So, let's see how this looks in play mode. Okay. And then we're going to have it trigger when the player gets near it. So, this is what it's going to be. Something like this. The player will be at the ground level and all they're
going to do is see a subtle train in the distance. Okay. So, we'll just raise it up here. And right here, we're going to raise it up a little bit so they can see more of it. You're thinking, Thomas, why why is this the solo dev workshop? Why would you do this for a solo dev? Because solo devs, they can add this stuff to their game in like an hour and it makes the game even though the game isn't five hours long or or super complex with 10 different mechanics and skill trees and they can suddenly make a game that feels weighty and valuable. Okay. So, let's see.
That's it. That's it. Guess what? I don't need to do any weird any weird animation triggering. I just need to turn it on and play a sound. So, let's go ahead and open up this uh Audacity here. The sound we downloaded. [snorts] Uh, I think I had this right here. [music] Here we go. This one. We're going to fade it out. Uh, we're going to create a Doppler effect in just a sec.
Okay. Um, I kind of want to uh to to not not to go overkill here, guys, but this is going to take five seconds. I'm gonna type in earthquake. I want like a [groaning] sound. Just barely. Just barely. Okay, I'm going to put this into Audacity. And I honestly kind of hate the train sound, but it's fine. There you go. You're thinking, "Great. Perfect." No,
not yet. You want a little bit more immersion? Dog bark. You know, dog dogs like to bark at trains. Flock of birds. [laughter] No, watch this. Frankie going to tell you. You guys just trust me. Okay, we're gonna have geese. It's going to be so simple. I promise. We're going to have geese fly and follow the train. So, first off, let's do the dog bark in the distance, and it's going to be
after the train passes. If you can get like double the impact, do it. Do it. If it takes you like five seconds, just knock it out. Here we go. Geese. I'm sorry, dog. A dog barking here at the tail end. And we're going to make it sound like it's in the distance by just doing a little bit of a delay. track mix and render. We're just going to subtly fade that. It's not perfect, but for the purposes of this live stream, it's fine.
Okay, this is called immersion and it's my favorite thing ever. Fade it out. I'm going to turn this up. The geese Okay, watch. Here we go. I'm going to add this all in. I'm going to call this train sequence. It's all one big baked file. You know, by baked, I just mean it's it's all rendered, mixed and rendered, you know. Um, and then I'm just going to have it play when the train activates. I'm going to set it to 2D. Why? Because it's not 3D and I also want it to be stereo. Um, a 3D sound can't be stereo. It in its nature it is stereo, but it actually compresses down to mono. But when you
when you have it set to 2D, you can actually hear it left and right. And so I I'm going to show you in a sec how we're going to do left and right and Doppler, but it's going to be all baked into a stereo exported sound. Okay. Uh, I'm going to set it to the right channel. I'm not going to get into that, but it's called train sequence here. I'm going to turn that on and I'm just going to test this. Okay, I'm gonna get into play mode and see if this even works. Okay, here we go. And then we'll have geese fly across. And if you have screen shake functionality, you can just shake the screen while it's coming uh or or going across the screen. Um, okay. So, I'm pretty low to the ground. So, I'm about right here. So, this is why you always
kind of want to lock the player in, especially for a story game. Uh you want to make sure that um the player's locked in to some degree um so that they [sighs] they can't get out of the sequence and see above it. It's pretty low there. So, we're actually going to do this. Let's see. I kind of wish it was longer, but it's fine. It's fine. All right. So, I'm going to go ahead and turn that off. Okay. And then I'm going to add an object activate trigger. So, this is important for you guys to learn about. For those of you who don't use these, um, all they are is a box collider
and I have something called object activate trigger. And I use these all over the place in my games where they just they activate an object. Okay, that's all it does. They activate an object and it saves to the to the save manager and that's it. they activate the object. I mean, that's it [laughter] right there. Uh, let's save the scene and enter play mode. So, I'm right here. I start the game. I'm like, "Ooh, cattails. That's it.
We're going to have geese fly. Okay, I'm going to grab a silhouette. Rough and dirty, baby. And this stuff, honestly, I don't think you need to go any more detailed than that. Don't overthink it. Those little details, it's what the player wants. Uh, we're going to do geese or flock flock of geese. I'm on uh vecti. Give me just a sec, guys. And I'm going to blur it so you you can't even see it. And I'm going to have like two layers of it. And um that's it. Okay, I'm going to download this one. I know you can't see it. Some reason I don't want to show that I have a subscription with Vectzi. I'm like embarrassed or something. Um
[laughter] yeah, but this is No, but I shouldn't be. This is Vectzi. I uh the the licensing is is something you should look into. Don't just trust me. Um, we don't I don't know. Honestly, I don't really use Vectzi for my games. I mean, I do sometimes, but the licensing is a little bit hard to parse. Um, what I'm going to do is blur these pretty good and I'm going to make it indistinguishable that their arms aren't flapping. Okay. So, I'm just going to sort of kill their arms or their not their arms, their wings. Okay. We're just going to do a blur. Whoops. Blur. Gosh. And blur. And I'm just going to save this as um phone call. Hang on. Yep, we're good. Flock of birds. Let's save this, guys. Save it in our
uh forest test scene textures. I'm going to call this flock of birds. I promise this is going to be worth your time. Um, this subtle stuff, man. I'm going to take this uh dead tree right here. And I'm just going to reuse that and I'll just create a prefab out of it. And it's going to be a flock of birds right here. Flock of birds. There it is. Drag it in. There we go. It's gonna be crazy how quick this goes. barely see him. Uh, can we do transparent? Thank god. Preserve specular. Turn that off. Remove uh PSD. Yep. The mat. Okay, there we go. So, we're down here, right? There's our birds. And the way that we um bird flock. The way that we get this to work
so that it is I'm going to make a prefab out of it so that you can't quite tell that it's just sprites is I'm going to take it and I'm going to take create like three of them and rotate them and stuff and make them really small. this one because it's so small. I can actually invert it and you won't even know. Okay, I'm gonna group those together into one object. I'm gonna call it bird flock. And then it's going to happen at what point? Let's see here. Right here, 12 seconds in. Right. So, what we're going to do is go to 12 seconds right here. We're going to take our
sadly, it's sort of a child of it, and that's a problem. So, guys, we have a problem. Uh, what we need to do here is redo the train movement and make sure it's on its own layer. So, that one right there, uh, we're going to delete that and we're going to do this. And it's uh what 10 seconds long. Just come right over here. All the way over. Oops. All the way this way and up. There we go. And it's going to just There we go. Drive right by. Okay. Sorry. I It was on the wrong layer and I couldn't control the bird flock properly. Shoot. I did it again. That's the one we need to animate here. Okay,
there we go. Now, let's make sure it looks good. And then we're going to animate this bird flock. Okay, this is all just magic, you know. That's all it is. It's just magic. There we go. That's all we need. Let's watch it. Make sure it looks good. Good. I think I could slow it down even. And I'm gonna just gonna see if I can create some sort of I don't know if this is a good idea, but we're going to rotate a little bit. It's probably a terrible idea. Yeah, that's good enough for me, man. All right. Very good. Very good. And then, hey, we have a bird flock. I'm gonna call this bird flock as a parent object. And as we're right here, we're going to have the birds here. And then at 12 seconds, they're going to fly up into the sky
all the way over here, and then they'll disappear. Okay. Now, you're probably thinking, "Well, it looks very static, Thomas." Uhhuh. Uhhuh. That's okay because what we're going to do is inside of it, we can shift things. And I will admit, I have never done a bird flock before like this. So, we'll see if it looks good. And then this one. We'll rotate it even. Why not? Here it comes. Super fast. So, we need to slow that down. So, these three layers here, we're going to grab those
and they'll just sort of slowly fly into the distance. I might even shrink that first one. Yeah, we're going to shrink the uh the big one. This one here. Shrink it down and then like even rotate it. We'll see if this works, guys. All right. You want to test it and see how this all look? Where is it? There it is. I'm going to get rid of that circle there. Okay, let's see.
Where the heck is the bird flock? There it is. All right. Great. So, we just need to have the bird flock come a bit early. Okay. So, I'm going to grab the uh all of this here, all the bird flock stuff, and move it forward. I can't even see it because it's not on. That's why. There we go. All right, let's see. Y'all ready to take a look? Um, and for some reason our trigger is a little too. And this right here I'm going to remove. Move that over to here. There we go. Okay, guys. Where is the trigger? Let's take a look. The trigger is right here. I think that's a not a great place. We want to be a little bit closer. So, something like that. Okay. Ready? Take a look.
It's not that the character isn't tall enough, it's that the cattails are too tall. That's it. That's all we need. That's all we need. It's about letting the player know you know that they're there. Um it's not about uh realism. It's not even the player doesn't really care if they're not animated. They just want to be It's almost like you're letting the player know, "Hey, I'm here. I got you. I've got your back."
That's kind of what it is. It's saying, "Hey, I I I I um I love you enough to show you that this world is real." We're gonna try it one more time in full screen and see how it feels. I always like to start small um and then uh with like a small sort of thumbnail sketch and then I can see how it looks big. Just a sec here. Okay.
Okay. Hang tight. I got to go to maximize mode. I'll make that grass smaller.
It's all we needed. Very subtle immersion. That's it. I love that man. Yeah. So, uh that is in what what have we got here? Two hours. In two hours and 30 minutes, 30 minutes of that was figuring out what
the heck was going on with our footsteps. In two hours with our system that we have in place, we're able to quickly add in these levels of immersion. The cattails, the ambient sounds, the footsteps, the triggered sequences, all this stuff matters and makes a big difference for your game. And I think this is true regardless of whether you're making a story game or whether you're making a linear game. It doesn't really matter. Um guys, I have a podcast that I'm going to prepare for with Adam Ununice. If you don't know Adam, well, the podcast will be coming out and you can meet Adam. I want to say huge thank you to all these new students here. Super super grateful for you. These students enrolled in the Fulltime GameDev Black Friday sale event. There's four days left in 17 hours. If you like my teaching style, guys, and you learned a lot from me today, feel free to click the link below and check out fulltime gamedev, which is my massive program. I have over 4,500 students. I might be nearing I might be nearing like 5,000 students.
Full-time GameD is 50% off and you're also going to get these free art programs and my YouTube course as well, but only for this Black Friday sale event. There's like 20 seats left and it will end in 4 days and 17 hours. Um, I'm not going to do a big sale like this uh for a while. I probably won't do a big sale like this one until Black Friday next year. So check it out below if you want to make 2026 a year where you learn gamedev. But not only that, you also learn how to secure six figures. Well, I won't I never like to say that uh secure revenue from a publisher or an advance or get your project published so that you can potentially go full-time. I don't like making weird promises. I can just tell you I've I've worked with three different publishers and each time I went full-time because well, they bought the game, they bought a demo. But if you want to also learn how to get funded on Kickstarter, I'll teach you that. If you want to hit the Steamfront page, I'll teach you how to do that. If you want to get uh press coverage, I'll teach you how to do that. Uh obviously, I'll teach you how to make a game in
GDO, Unity, or Unreal, I'll teach you how to code. And by the way, you could pick whichever engine you want to learn. You don't have to learn all three. Um yeah. Yeah. All that good stuff. So, it's really like a full-on business course, but also a development course and all those art courses as well. So, it's pretty much everything you're going to need in 2026 to pursue the dream of making an indie game. And if you're wondering, well, Thomas, who are you? Well, I've done all this stuff. And not only that, I've got students who have done it as well. Really cool reviews here. And you can reach out to all these people. These are real people. Chris Stair, he's been on my podcast. Um, Bart Bamser, he shows up in the chat a lot. Um, so check out these reviews below. They went full-time, which is so cool. Uh, I love you guys so much and thanks for letting me do these ad reads. They support the final stretch of development for Twisted Tower and it just means so much to me. So, thank you guys. I love you. I hope this was helpful and I'll talk to you later. That is the final
that is officially the final final uh workshop or the 3-day event for how to make a game solo. Uh to wrap up here, we covered coming up with great game ideas. If you missed that, it's in the playlist below. Coming up with great game ideas that are good for solo devs and there's various elements that you need to look into or or that you need to include in your idea. We also talked about how to use uh assets and lighting and and asset flipping um to make a game quickly. And then today we talked about polish. those picking a few things that add interactivity to your game that despite the fact that it might be a small game, despite the fact that it might be not a very dense game, not a very complex game because it's solo, it still rewards the player with interactivity and polish, which is super duper important and not even a solo developer should ignore
that. Okay, so those are the three things we covered in this workshop. It's a massive workshop. So, click below, watch all the videos for the live workshop. I hope you guys had some some fun and happy Thanksgiving. Uh it for those of you who celebrate happy h for those of you who celebrate Thanksgiving uh in the states, I love you guys so
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Thomas Brush · 2026
Thomas Brush · 2026
Comments