How do you make indie games full-time? Well, you kind of have to figure out how to make a small indie project that brings in a pretty large chunk of revenue. In short, you have to be efficient, right? Jonas Tyroller is a master of efficiency. His game Thronefall has brought in hundreds of thousands of downloads, so I had to chat with him and hear his thought process on efficiency. We chatted about the conundrum of project overload, the importance of choosing one game project from the rest of your ideas, how you know if your game idea is even worth your time, and perhaps if you should quit the project altogether, why working with a team can actually be cheaper than working solo, why giving a royalty share to a publisher or a team member actually doesn't matter. We talk about optimization, and I've saved the best for last. We open up his masterpiece, Thronefall, inside of Unity, and I think you're going to be shocked at what it looks like under the hood. This was a real eye opener for me. Oh, and by the
way, speaking of getting a bird's eye view of a massive Unity project, let's talk about today's sponsor, Bezi. They're the creators of this new and interesting tool for Unity that uses AI to write code and scripts and has a real time deep context of your entire project. It has full context of the codebase, asset library, scene graph, and components, allowing it to provide tailored suggestions for your game. It can also pinpoint scripts, components, and scene interactions, maybe causing issues, and propose custom fixes to help you identify performance bottlenecks. What's really unique is that it can also give a detailed technical explanation of your entire project, which could save a ton of digging around when collaborating with other team members on a larger project. Your project integrity and data privacy are of course completely secure so your project stays 100% yours. Bezi is currently in active development and will have a ton of new updates coming soon including the ability to preview and accept code changes directly within your scripts. That's pretty cool. They
have just opened up early access for everyone that includes you. So you can download it right now to check it out for yourself by simply clicking the link in the description. So, I know a lot of very a lot of highly creative people struggle with this project overload that they have way too many projects that they than they can possibly handle. And I think you need to limit yourself a little bit for sure like you you can't do everything. But what what already helps massively is just having your priorities sorted. And that was what I think what helped me recently get on track a little bit better is all right you you have all of these projects you can have like a 100 projects whatever who cares but what you need to deal with it and to keep your sanity is you need a priority list you need like this is number one priority this is number two priority number three pri priority and then this is lower priority stuff so that you know
whenever you have some time you should spend the majority of your time on this then a little bit time on this and then just kind of go through through the list like that. And I think that way you can keep your zenity relatively well as long as you have a have a priority list like that. Man, it's it's hard because have you ever had a a little tiny project that you're working on and you're thinking this could be the greatest thing ever, you know? And but it's it's small and it there's like there's a 90% chance it'll fail, but there's a 10% chance that it'll go gang busters. Like I I I I saw you were writing by the way. I wrote a whole novel. And I I I I would love to talk to you about writing because writing is actually my favorite thing to do. Um if there's anything that I could I would wish I could spend all my time doing, it's two things. Writing and writing music. I love those are my two favorite things. I love writing novels.
Um and you're a very very typical creative person. So are you way you have way too many passions like you you want to make short movies, you want to make music, you want to write this is exactly what I'm talking about. And so but here's the thing is like I I I found that I'm like I don't I can't get this book edited and finished because I'm like there's a 90% chance I suck at writing. Like there's no way that I'm good at writing. Um, and the reason why is because it's like I'm pretty good at making games. I'm pretty good at podcasting. There's no And I'm I'm pretty good at writing music. It's like there's no way that I'm I'm good at writing as well. I guess I'm just saying this sounds really cocky. I'm just saying that I can't be talented at everything, you know? I'm I'm probably only talented at these things. And so I'm just like I guess what I'm saying is I don't know how to g when do you gamble? When do you say no I'm going to put my time
into this? How do you know when to make the gamble? So first of all I think interestingly creative skills do oftentimes uh transfer. Not all of them, but for example, empathy, uh, like the ability to come up with ideas, to judge your own ideas, and especially the ability to communicate and the ability to imagine how something would feel like to somebody who has never seen that piece of work. Again, I think if you have these skills, they transfer incredibly well to almost every creative discipline. And that's why a lot of creative people are also very talented at multiple creative disciplines. Um but to that question, how you how you decide which gamles to take, I don't know, man, it's uh incredibly it's incredibly difficult. Yeah. Um like there are too many factors. Like you can maybe run the math if you break it down into a couple of different estimates,
but you never know if those Yeah. numbers are anywhere close to reality. And like reality is very complicated. So, well, you know, the the the problem with having kids in a family and and it's it's amazing. It's the best thing ever. Um, but the problem with it is is that most of your decisions in the end when you're laying when you're trying to sleep at night, most of your creative decisions end up being driven by the financial opportunity. uh at least in my case you can take less risk than you otherwise could because you if if you're like if you don't have a family you have still a lot if you still have a lot of time then you're like I can afford only like a taking on a project that only has a 20% chance of success because uh I'm still young I don't have any responsibilities whatever but then I understand the older you get and also the more responsibilities you have other people the more risk averse
you'll obviously Yeah, I think very very very obvious. And also the bigger your team is, if you have like more people that depend on you. Mhm. You know, that's I think the majority of my brand, whether it's, you know, making storydriven, atmospheric games that are emotional and kind of moody or my YouTube brand. um those two things I am like it's almost like I planted this I took a risk and planted this seed and made this garden when I was in my 20s when I didn't have responsibility and and I I was like I'm going to make a moody game. Boom. It worked. And so I've been living off that that uh forte and that brand that I built when I was in my 20s. And the same is true with like YouTube. is like I started doing YouTube when I was younger when I didn't have kids and I've been sort of living off of that risk that I took when I was in my 20s and um I don't know if I've planted
any new seeds or tried anything new since I've had kids. So, like starting a band, writing a book, you know, um none of that I've actually started because I I just haven't had the I haven't been willing to to sacrifice the opportunity cost. Do you know what I mean? Yep. By that? Yeah, I think I do. Mhm. So, it's it's hard. It's hard because I think I'm ready to try something else, you know, um in the creative space. So, you do you feel some creative itches inside you? Yes. Yes, very much. Um, which which direction do you feel pulled in most? Is it like is it is it writing? Is it music? Or if if you had like complete freedom like let's say you have a 3 week holiday, your brain gets uploaded into a Java and you can just Yeah, I would probably That's great, dude. I wish I could I wish I could do that.
Um, I'd probably There's three things I'm curious what curious if you have any I'd love to ask you. I'll ask you after I give my answer. I want to um finish my book. It's called It's called Somervil. I want to um write an album that sounds like The Cure. I love The Cure. It's my favorite band. So, I I think I could write an album like that and have that vibe and and I I can sing, so I would sing and do all that. So, I'd spend two weeks doing that. Or number three, um, uh, build a chicken coupe. So me and my wife, we have land and we're building on some land and and I want to start farming, so I want to learn how to farm. So totally different. Um, but yeah, so those are the the directions I'm pulled and it's so hard. Do you do you also feel uh any itches to start new game projects as well? Yeah. Or Yeah. But but that's not new. I mean, that's something I just
know how to do, you know? Okay. Um, dude, I want to ask you after the podcast. I want to ask you about a game idea I have because Okay. What I want to do for future games, and this is something Gavin told me, um, Gavin, the creative Charles. Yeah. Yeah. He said, "All I'll say because I was talking about the next project." He said, "Just before you start anything, be absolutely sure that it's actually commercially viable, a big project. I want to know." And Gavin, if you're listening right now, you pro I probably, you know, simplified what you said, but I wonder what you think about that, Jonas. Yeah. And that's an agree easy agree. Is it? Because is it even possible to figure out if something's commercially viable? You can't ever do it perfectly because
you don't have a crystal ball that's going to tell you the outcome of your actions before beforehand. But you can at the very least go through rigorous and extended efforts to uh validate your ideas before you invest like a significant portion of your life into them. I I always find it crazy like a game project for like I the screenshot I showed you from blueprints. I think the the guy who made that spent something like seven to eight years on that. If you think about that that's that the ROI is not there because not sure not sure in this case the game let me see let's take a look at this. Let's take a look. Let's take a look. Okay. So it's been out since when? April. Yes. It's relatively recent, but I would I would even argue even if even if this one doesn't turn out to be commercially viable, it it was a worthwhile time investment because it's just a fantastic game and the better off with it. But
what I guess my main point was that that's like 10% of your life, dude. Like I know I you can only make like 10 games like this in your lifetime. This is like such a wild thought. And even for something like Thronefall where we spent Mhm. four years or something like I can only make I can only make 10 more games like this maybe. Yeah. Well, at the at the solo dev or like the tiny team scale. Absolutely. Okay. I'm looking up blueprints right now. I I think I was completely wrong. So, if the developers listening to me right now. Okay. So, the game it's Raw Fury, by the way, so they're probably going to promote the heck out of it. Um, let's see here. Oh, okay. Oh, yeah. ROI is there. ROI is there. Yeah. April 10th, 2025. Um, so that was, you know, less than a month ago and it's already got 5,500 very positive uh reviews. Yeah, it's
going very well and deservedly so. Yeah. Well, it looks gorgeous. It looks gorgeous, especially considering this is a puzzle game. Puzzle games always have a more difficult time than other genres. though 1,000% 1,000%. Dude, I have this idea for a game. I'll just I I have several ideas. I wanted to get your thoughts on this. And this has to do with scale and it has to do with ROI. You were talking about I maybe how many games did you say? Maybe 10 total games in your life. Is that what you said? It you know it depends obviously on your approach. You can make very tiny games. You can make six month projects or something make a lot more games. So I have this idea. Okay. Mhm. Um, have you noticed a lot of movie studios or film studios and and again this is related to scale. So it's the same topic. It's about big projects versus small projects which we've talked about. Have you noticed a lot of film studios are starting to start game studios? Bad robot did it and that's that's J.J. Abrams. Blumhouse did it.
Anna Pererna did it. These are all art. Several of them are art house sort of and even uh not A24. No, it is it's just an APerna. So there's like three different three different uh sort of aour film studios started game studios. My idea is what and you know I want to get into film and I love telling stories. That's like my forte. I would say your forte correct me if I'm wrong. I think your forte is creating small, tight game loops and mechanics that are just really, really fun on repeat. Would you say that's one of your fores? If I had to say one thing for for like my game design skills, I I would say I'm a game system designer. So, I'm very good at balancing, coming up with game mechanics and gameplay, coding, that sort of stuff. Yeah, I'm trash at that. I'm really bad at that. That's like that's my weakest thing. My
forte is storytelling. So, I'm like, okay, if I'm all about leaning into your forte, that's that's what I'm all about. Um, my thinking was, and I I would love to get your thoughts on this. What if I just made movies that are games and they take six months? So, it's like movies, they're games. So, interactive movies in a way or it's just it's just 3D stories. You you go through an environment and it's a really strong story. What if I threw away the whole idea that I need some really strong loop and some strong mechanic that's super unique? What if I threw away the idea that I need replay-ability and instead made tiny little 2-hour movies that are games and I did them fast and they're just great stories. So, for example, imagine a horror movie like uh you ever seen Insidious before? Nope. Insidious is this amazing horror movie. It's terrifying. And it's about a
family that's haunted by Satan. Okay? Like demons and Satan. Imagine you just get to play that. And I know this isn't profound, but what I'm talking about in particular is I could do this quick. It wouldn't take me long because it's essentially a walking sim with a really good story. I know that I know it's not unique, but I'm thinking, what if I did that? What if I just made boom boom boom release three of these a year and they had the Thomas Brush directed by Thomas Brush on there. I would like to give you some I think some very strong encouragement on that really because yeah I I do because um people will know that it comes from from heart and people now nowadays appreciate that I think more than ever with all of that AI generated slop uh clumping up the starting to clump up the systems and so on. Um, I think people really really do appreciate games that come from heart and you being like, "Okay, I know this is maybe not not
commercially 100% ideal, but I'm just going to go with it because I love making that kind of stuff and I I'm good at that kind of stuff." And I even think it's probably going to make make up for for the disadvantages you you get from it because it's just if you lean into something you're good at, it's going to be better. I, you know, my core belief is if you want your games to sell, the main thing you need to do is just make great games. Like one of my core game design beliefs. So I'm like anything you do to to do that, anything you do to just make better games if and obviously leaning into what you're good at very much does that is is just something that's going to definitely help you. On top of that, I love short games anyway. Like I I really do like short two-hour experiences that are very memorable. And I I I know that a lot of people do like those short experiences cuz we we we like stuff that respects our time. We
don't want to waste our our time. Like, you know, there are always going to be some players that be like, "Oh, it's only two hours and not not worth spending any money on whatever." Like yeah, I I think there are more than enough people who who appreciate short games like right short juicy experience. Yep. I think that's great. And you know it caters to the solo dev. Um being because I want to do solo dev this year. I probably want to do it for like two years. Um I just want to be a hermit again. There's something romantic about it. You know what I mean? I'm curious. Is your solo dev life cyclical? Do you go solo dev then work with a team then solo dev then you work with a team you're solo now right they they both scratch kind of different it just if if you're solo you have like all the freedom you want you can do whatever you want you don't need to justify any of your ideas you want to do something really stupid there's nobody who's like that is kind of stupid you can just you
can just do it that's very that's very uh liberating at the same time uh team projects with with a good team are just more likely to be successful. That's that's also the case. So I think for my commercial projects, I will try to go with a team whenever I can with with a good team. You know, a lot of these tech billionaires I've heard this uh advice given a couple of times. You don't need to like them, but they do give good advice sometimes. Is what actually you're talking about Elon Aren't you? Maybe, maybe not. Well, but what actually matters is not the size of your team, but the um talent density you have in your team, much more important. So, if you bring somebody in who can do something much better than you, Mhm. and you just let that person do that one thing, then it's
like an upgrade for the team because you basically improve the average skill of your team. But if you bring somebody into your team to just do something worse that you could all also do to maybe get it done faster. I guess doing something faster is another reason to sometimes bring somebody somebody in. But in general, if you want to build something where the only goal is to make it as good as possible, then obviously the con the conclusion from that is that you only bring people in who can do something better than you so that you get get a better end result. Okay. Have you ever paid somebody a full-time salary? Um, we have uh we have a community manager who I think can live off of what what he what we pay him. Okay. So, it's a it's a freelancing contract. So, well, you know, that's not really gamedev, though. It's like studio management, right? I guess the reason I ask is because or the reason I clarify that is because you've
never when you say team, it's not a team of salaried positions or contract workers that are building your game. Instead, it's an it's a team effort, meaning you guys get a royalty share. Correct? Yeah. Okay. Um I think this is an interesting I wanted to ask you about this. I can't bring myself to do that because why? Um because I like to be in charge. Would you say leadership is forfeited when you do that? When you partner up like that? when you share responsibility and revenue and everything because suddenly everyone's got a stake in it and therefore they feel like they have a valid they have a valid leadership position. They they have a say and so they can trump what you say. Yeah. Of course. Yeah. Yeah. Of course. And it it also happens all the time. you have to be um willing to make
compromises and you also often times obviously have have these discussions a little bit of a give and take also where like okay yeah I guess you're right on that and sometimes you have to walk your own opinion back a little bit to make room for for what the other person thinks and and the very difficult thing about it is of course to not make it something personal because it can very easily become something personal where it's like no you blocked my idea so now I'm going to block yours um you need to be very careful that you don't end up in that kind of team dynamic. Yeah. But as long as you're like reasonable and try very hard not to take anything personal, I think it's extremely productive. And I also think that the incentive of people actually having ownership over the project does very much help to to make them give their best and also to you know they also feel more of that responsibility. So, I think people are also more proactive. Like a lot of times, like the
employee mindset is kind of, okay, I'm just going to do what what you tell me. I I'll just turn my brain off. You're the brain. I'm just going to do whatever you say. The advantage of having somebody with shared ownership is that they actually proactively do things and proactively use their brain for you. So often times you you come back to the project and there's just there's just been a lot of good decisions been made on your behalf that you didn't have to take yourself. So it's it would have been like okay Paul works on something for a week all of a sudden there's like a new git commit and like the all of the UI looks way better now and I'm like oh I I couldn't have done it better basically like oh man that's beautiful. So in a way in a way what what what's happened is for me I can't do it emotionally because I like to be in charge. I'm just being being as transparent as I can. I
like to be in charge. Number two, you kind of forfeit getting a publisher because there's not much revenue share to split. You see what I mean? Like let's say a publisher comes in and they're like, "Well, we want to give you guys $300,000 for 30% of the revenue." Well, you've already done a 50-50 split, so now you got to give 30% and now you got to split 70. And that sucks. I don't think it I don't think it matters that much to be honest. It's like for there are certain kinds of media or success where where you know it's it's a exponential curve. The the amount of success you can have is sort of distributed like an exponential curve. There are a lot of people getting nothing and then all of a sudden there's like a very steep increase where the next guy gets like double what the last one got. And the and on an
exponential having 50% more or 50% less is actually not that big of a difference on an exponential scale. So I don't think I don't think it surprisingly doesn't have that big of an impact on whether you're profitable or not. Is that what you're talking about? Can you see that? Exactly. That's what I mean. Okay. Now, is did I put throne fall in this in the correct spot? Yeah, I think so. Somewhere somewhere around there, maybe. Yeah. So, now let's try Okay, now that we've got your graph, I'm an idiot, dude. I'm trying to figure this out. Yeah. So, um you're like, "Yeah, sure." Uh so, what you're saying is look, it doesn't matter. you're gonna make very little money or a lot of money. Is that what you're saying? I'm saying if you cut all of these bars that you just drew in half, the amount of them that are above a specific line doesn't actually change that much. Like
at the moment, they're like maybe 10% above the line. If you cut them in half, it's it's not like only half of them are above the line. It's I know, but look, if let's let's say this is our I'm trying to figure out what he's saying. If this is my revenue right here, let's say that's my game. If I partnered up with somebody, I just lost all of that revenue. Yeah, but can you see that you're still in the top 1% of everybody still? I know, but not really because I only got this. Yeah, but it doesn't at that point. I don't think it matters. Like it's still a lot of money is what you're saying. Yeah. What I'm saying is like but like hold on hold on let me let me finish my point okay cuz I'm going to I'm devil's advocating you here okay let's say that that bar right there that I just circled that's $100,000 okay if I partnered up with a publisher and a
partner let's say I partnered up with you and we made a game and we got a publisher now I only made 30k I mean whatever the number is after the steam cut you barely made anything you made 20k you can't live on that you lose everything you have to go get a job or if you do it alone you make 100k exactly so there there's a small narrow bend where the 50 minus 50% is going to make the difference for you but I'm saying you have a certain break there is a certain break even point that you have and the odds of landing exactly on this break even point with your game is minuscule you're either either going to make way less than you need to break even or you're going to make way more than you need to break even. So, it's taking 50% away is not going to not going to change your odds that much actually. Okay. So, royalty shares and revenue share doesn't really matter if you make a good game.
Yeah. It's it's like um if you made the next hit indie game, if you make the next Undertale, doesn't really matter if you have another partner with you that takes 50% of what what you would have what you would have gotten. It's like, okay, sure thing. Um I guess I could have made double if I made this game alone, but I didn't. I can't make this game alone anyway. So, what's also what's the point of of making the comparison in the first place? Okay. So, in order to stay away from the midpoint or that where it's or I think I know what you're saying. So, in order to stay away from that bottom of the bell curve or not bell curve, uh the bottom of that exponential curve, you should probably partner up. Is that what you're saying? You there there's a priority list. You should only partner up with people who who make your team better. Sure. If you can't if you can't do that, then you should work alone. And the worst thing you can do is to work with people who make your team worse. Okay. So, what
you're saying is do everything we can to hit this spot, even if that means giving up royalty shares. Yeah. If you if you hit that spot, it it also doesn't matter. If you're like 50% lower, that's kind of fine. Yeah. And and and what I'm saying is it's very very difficult to get to that spot as a solo anyway. So might as well just partner up with people and work with people to get to that higher spot. Exactly. I think I think it's very much worth it. I think the the the cost benefit analysis maybe to simplify this whole thing a little bit is is just like you get way more benefit from partnering with somebody than it cost you. That's like the if if I have to put it very simply in plain English, that's what it is. That's exactly what it is. Unless you're brilliant. Unless you're brilliant. That's that's ex also exactly what I said earlier. You should only team up with people who make your team better in some way because they can do certain
things better than you can. I love that, dude. Your brain, it always thinks in terms of charts. It's like your brain is a TI83 calculator. every time we talk, you end up sending me a chart or something or giving me like, well, the X and the Y. But I I think that's great. You know, it helps me a lot. Um, it helps me a ton. Uh, what what should I do here, Jonas? Should I And then we'll and then let's open up Thronefall. Let me get your advice on something. Should I sacrifice my savings and finish Twisted Tower strong? Should I dig into my savings, hire out a couple people, and make this thing awesome and release it in October? The demo has over a thousand reviews, very positive. I think we're at like 90%. Primarily, the issues are optimization. So, that's what we need to really focus on. Should I hire out people, spend
$40,000 on team members? Let's just assume my family will be fine. Okay, let's assume that assuming my family will be fine. Should I take $40,000 and invest it in a team or should I do it all myself? So, how big are the optimization problems we're talking here? How many people like which which percentage of I would say I would say probably 10% of the players are like eh it's I'm getting hitching frame rates lower than 40 and these are people on low-end machines or Steam Deck. Steam Deck is averaging like 30 20 to 40 FPS. Okay. And what are the have you undergone any optimization efforts so far or is it all just like anything? I haven't done I haven't done anything yet. So my guess would be if you haven't done anything yet my guess would be that there are a couple of very lowhanging
fruits and usually the lowhanging fruits almost like usually they tend to fix almost all of the problems already. Yeah. What would what would they be? Um I guess for a 3D game the biggest things would of course be reducing mesh and material count. So for example having material atlas texture atlases multiple materials on one material so that you have fewer draw calls. I think reducing draw calls is main thing. Mhm. And obviously occlusion culling. Yeah it's already done. Yeah. Okay. That cuz that's a big one of course. Mhm. If you have that fruit already plucked, then it can can of course no longer be plucked. Mhm. But then you still have all of this um as mentioned all of this batching and and mesh baking. That's what I'm that's what I'm struggling with. I've already done the light mapping as well. Yeah. The one I'm struggling with is is
creating atlases. I'm like, damn, I don't want to do that. What? Like how how am I going to do that? I think the the a little bit the messed up thing here is that it's really annoying if you didn't do it to begin with. It's like, oh no. If you if you start a project with that in mind, then you would, for example, put a many textures that you want to reuse on on one sheet and then when you map it, just map it correctly. If you I think Mesh Baker does it. I don't know if you know MeshBaker. It's a asset. I think it'll do it for me, but Oh, yeah. Yeah. Nice. Well, I asked this all related to our graph, which is like, do does Thomas get Let's pretend I spent 500 grand. I didn't, but let's pretend. Let's pretend I spent 500 grand on this game already. I have a very I have over a thousand reviews, very positive for the demo on Steam. It's doing great. I think that's really good, right? Yep. Um, we're almost at 100,000 wish lists. Is
it worth it to spend some money and get some help on the project? Well, the reason why I'm asking questions is because it very much depends on the details a little bit, right? It's if it's like 1% of players going to have performance issues, they would be like whatever, release it in the state. It's now if you're like 10%, you know, that's if you if you think it's 10%, then obviously that's probably something you want to fix cuz that would potentially be 10% thumbs down at least like cuz everybody who's going to have performance issues Well, I mean I I say that because the reviews the reviews for the game are like it's Yeah, it's a good game. Uh it runs at really low frame rate. So this is even now something that comes up in the reviews. Yeah, that's how I know. That's how I know it's probably 10%. Because people are getting are struggling with the demo's performance optimization. So, like I guess what you're saying is it seems like a good idea to hire out someone to optimize the game. It seems
like a good idea to fix it. And now the next question would be what's the um easiest way to do that? Yeah. Well, Thomas's time needs to be spent on the story. you know, I I need to be really focused on making the story and the atmosphere and the like triggered events and like jump scares. I need to be focused on that because that's what I'm really good at. Yeah. Um hire someone to do optimization seems like the smart smartest move to get us into that top tier of the the exponential curve, right? I think it sounds like there could be a good uh good investment because I I guess what I'm hearing also a little bit is that optimization is maybe not something you have super large amount of experience with. So, this is one of those cases where you can bring in an expert into your team who has actually done game optimization before and just have them do it. They'll probably do it much much faster and more efficiently and also better than than you can. So, that seems like one of those cases where where I'd
be like, "Yeah, that sounds probably sounds like a good idea." It ideally may maybe not spend something like 40,000. Maybe have some No, that won't. No, I think I think that'll be like 10 I think that'll be 10,000. Uh I think ideally what you're looking for is to have a really strong developer work on it for two months and just be like do your best. Do your best. You have two months. There you go. Well, I had a meeting with and I'll plug him. Uh I had a meeting with GameDev Guru. I don't know if anyone knows GameDev Guru, but I think his name is um what's his name? Ruben. I don't know, but I know his channel. uh gamedev guru is Ruben. Yeah. And I had a a meeting with him and he said he could what he's going to do is basically just uh open up the project and pinpoint the thing because if if someone could just pinpoint the thing, whatever it was, if Thomas, your shadows, the resolution is really high. What are you doing? If someone could just say that, then I'll
go in and fix it, you know? But it's like I I'm I I almost feel like I'm getting shouted at by all these different languages and I don't cuz when I look at the profiler that's how it feels. I'm like what am I looking at? Um no matter how hard I've tried to figure out profiler, it's just this different realm that I don't fully understand, you know? Um so I think I need someone to go in there and do that while I worry about the story, you know. I think the thing with a profiler is that you kind of need to look at it couple of times for in different projects and so on to sort of build on intuition for how how a healthy game should look like. And then when you see something um that differs from that, then you can see what's uh wrong with it. For example, you're like, "Okay, usually I have like 50/50 split between CPU and GPU load." And then all of a sudden, here's a game that has like 90% GPU load. Then I know something's wrong. that kind of kind of thing. Well, let's open up a healthy project. Yeah, thronfall is not that hard, but I'll I
would love to see I would love to see what kind of optimizations are even necessary considering you're not using normal maps, you're not using specular, I don't think. Um, you're just straight up tune shading its albido and it looks like you're only using like a directional light and maybe some called point lights. Is that correct? Hold on. I'm trying to share my screen real quick, then we'll talk further. So, click present down there. I'll I'll click present and then I'll choose one screen. This Let's take this one. Can you see it? I can now. And this will be a separate recording as well. So, I'll be able to edit it in. Ah, that's perfect. That's a wonderful wonderful. Okay. So, let's Can we talk really quick before you dive in so that there's a nice segue here? I like a good segue. When it comes to your lighting, it's not baked because it's a single directional light. Is that correct? That is correct. It's a single directional
light and we only have real time real time shadows. Yep. So, if you were to take that directional light and rotate it, can I can I see it really quick? Yep. Let's find it. I want to see how important lighting is to the game. Wow. Okay. And you got very low poly meshes. That's why it's being kind of sticky. because it's the low poly meshes. Um, cool. Cool. Look at this. You got one, two, three, four, five, six different planes. Yeah. Like it's exactly good. Exactly the kind of jankiness you would expect from a game project. Okay. So, Jonas is full of He's I'm just kidding, by the way. No, this is great. I love this is this helps game developers so much, man, because they it's nice for them to know, you know, oh, he's just throwing planes on the on the ground. Yeah. You have kind of two options, right? Either you write a fancy shader that kind of
darkens the edge of the screen or or you just throw in a gradient sprite, obviously. So, why why not just use Go ahead. I'm sorry. Why Why not just try and why not just do one big quad? Why do you have to slap those all over? Oh, uh the Yeah, why do you have them all rotated around like that? Why not just It's It's to get the shape that we wanted, right? So, it's a You can see the map is a sort of specific shape. It's not perfectly round or something. It's like a Are those angled up? Are those quads angled up? Yeah, they're angled up. Are they kind of angled up? Like what? They are angled up. So, it says 0 0 0. The rotation is 00 0. Let's let's only look at the single one. I'll show you what we're working with. So, we have these uh gradients here, right? Yes. Yes. And as you can see, one of them is
not enough to cover the entire edge of the map. I see. So, what we cheekily did is we just duplicated this and put it on every side of the map. So that all of the outside area of the map is blacked out. And I understand. This is this is a actually is fantastic that you picked up on this immediately because this is exactly one of thoseam examples where it's like this is not at all performance optimized. This is a horrible way to do this. But in this specific case, it really doesn't matter because it's only like one, two, three, four, five, six, seven of them or so. So Right. Right. If you have like seven giant sprites floating around in the scene, it's kind of not that big of a problem. So, it's it's worth the speed trade-off. And so, so the idea with these gradients is to give the player an idea of the boundary of the the map. Yeah. Yeah. Yeah. Actually, this does compile, so we can just run it. Yeah.
I'd love to see it. if Unity wants to. So, this is the overhame. [Music] Uhhuh. If it kind of gets a little darker at the edges here. Trying to think of a better way to do that. And I the only thing I could think of is a cookie with like a light a cookie on the directional light. But I don't even know if that would do it. Yeah, that would do it. But you know it's also during early access we changed the shape of the map quite quite often. So it's in a way it's also beneficial to stick with something that you can change very quickly. And one of the advantages of this solution is that you can change it quickly. If you ever change the shape you just drag these around a bit and then can you change the camera to be nonorthographic for us? I can. I would love to see how bad or good it looks.
Um, so I can either navigate this or I can see if we you forget about your project uh already. It's been a while. It's been a while. So So there we go. This is Yeah, let's Yeah, this is perspective cam. It looks so much cheaper to me, you know? It's not as beautiful and clean. So that's so funny. Let's see if I can Where's Where's the full screen button and you see I even forget these go to game. All right. You have to you can only change it. So play focused is right there and you got to play play max. Yeah, that's the one. Thank you. Exactly. So yeah, this looks very dumb. Yeah, it does. And also one of the problems you can see here is that the UI camera is still Yeah. Um, so don't accidentally change it to perspective before you upload a build to Steam.
Commit uh what I what I show you here. Yeah, I guess it kind of it looks nice in a way, but it's also as you said, it looks looks more cheap. Oh, sure. I've always had trouble being okay with doing an orthographic camera because like my game Brave Boy, I could do an orthographic camera for that game, but there's something about sacrificing depth that really it's really hard for me to do to be willing to do. And but there is something beautiful about an orthographic screenshot, you know? It's just there's something really cozy about it. I don't know. Um, so that's cool, man. I mean, for for strategy games, it's obviously very easy to get away with it because it's kind of the standard perspective for for strategy games anyway. So, also helps players to uh quickly see what the game's about, right? Exactly. So, what's the uh can
you tell me about the uh the hierarchy of this scene, like your naming conventions and how you're using prefabs and all that stuff? So this is of course the level select scene. So this is a bit different from the typical throne for level but usually the hierarchy looks something like this. So you can see it's relatively cleanish if you collapse everything there. There a couple of random stuff floating around here. For example, the ground is just plain. But uh other than that, we have all of the levels nicely sorted into um categories here so that whenever you want to edit or move a specific level to a different place, you can just grab the whole thing and move it around. Beautiful. How are those, by the way, how are those pieces are they meshes or are they sprites like the the pieces of the board? They are meshes that we just
quickly made in Blender. Uhhuh. And they have edge they have an edge painted on there, a black edge or you pick up on all the details. Actually, the um the edge lines that you see here uh are a custom geometry script that we wrote for Thronefall. And essentially what it does is it just has a couple of children that are empty game objects and you can just move them around and change and use them to change the geometry. So, we can just draw simple lines and shapes like this. I love that you wrote something custom for that, but for the fade quads, you're just like, "Ah, screw it." So, you know why we have something custom for that is because we actually need that in a lot of different places. We don't just need it for drawing lines. We also use it for actually building entire levels are just built using this tools. And um I I'll while we're at it, I'll show you. Let's go to one of the levels that uses this
quite heavily. Dude, that's crazy. The levels are named Durstein. Like you you picked a name and you named it that. In my head, I'd call this Blue Mountain scene because I change the names of my levels every week. You know, I'm like, ah, no, I don't like that name and I'll change it. So, I I try and make all my scenes super basic names that are descriptive, but you guys committed to a name and you stuck with it, right? Yeah. Um, sometimes I think it happened once or twice where we changed the name of the level uh after the fact and that was a bit annoying. Either we renamed it or often times we also just don't rename it and then it has the wrong name but it's kind of like whatever, right? Um, so the entire level, this entire level is also built using the exact same tool. Everything's made of these paths here. Not sure you can see it. So, I'm just going to move this out of the block a little bit. Whoa. Path measure.
This is our little script. It's It's essentially a spline. They're That's wild. They're readym made scripts on the asset store that you can uh just grab that do the same thing. So, instead of begging us to give us the script, just look on the asset store. I'm not sure why we rewrote this stuff like this. Wait, you made it? Yeah. No way. Are you charging for it on the asset store? It's not on the asset store. I'm just saying other people have made tools like this that you can use if you want want something like this. Yeah. But yeah, the idea is just that you have like a a little path and you can just draw around or move move the individual points kind of even change their thickness if you want to. And is there a is there a mesh collider on the the parent object? It does have a mesh collider so that you can walk on it. Okay, that is correct. So it's creating a mesh at real time.
Yes. How is that with performance? Because it can't be static actually meshes creating meshes in real time is not that big of a problem. It's like you can just you know there there are only a couple hundred vertices that you need to connect. So yeah, doing that in real time. Is it at real time? I in play mode, if you were to change a spline, would it adjust the mesh? Uh, it's I think it would, but let's give it a go. Cuz that means you can't bake lights. I think I think you if you wanted to bake, you couldn't bake. I could be wrong, but yeah, we we don't need to bake. That's the benefit of exterior scenes for anyone's listening. Exteriors are great because there's one directional light. Interiors, it's really tough because everything's lit by like a billion, you know, lamps and windows. So, you have to bake a lot. Actually, I
can't change this during runtime. Okay. Because I think because one of the performance optimizations we made. Yeah. You can you can see here in play mode whenever I click one of these rocks, I select an entire group of rocks. So these have all been combined into a single mesh. Mhm. Whereas if I um check this out in normal edit mode, then you can see that these are all individual rocks that we can move around. So this is also one of our uh optimization scripts that kind of merges these meshes to reduce straw holes. Would you be able to, if you don't mind, can we see what the rocks look like without stylized shading instead or and make it smooth? I'd love to see what happens to the game style if you were to smooth that out. Is that possible? We do have some levels with smooth rock. So, I think I just need to go to a different level for wind. So, this one does have smooth rocks as
you can see here. No, I mean the uh the shading of it. Exactly. These have smooth shading. Or do you mean get rid of the cell shading? it. Well, it's you can still have cell shading that's smooth. So, like um in the material there, flat kit stylized surface. Does it have a smoothness option? So, you want to blend between the areas a little bit. Yeah. Yeah. Yeah. Blending. That's really what shadow edge. Yeah. Yeah. Yeah. I wanted to see what it looks like. And then also the uh the color, the dark green. Can I see what that looks like? I don't think we can change that because that's um the just the shadow color. It looks so bad. Um I see I see why you made it look really crisp, you know? It's a great It was a great decision. I love it. And that's Paul, right? Is Paul sort of the
the visual guy? I I would say Paul is the mastermind behind all of the art stuff for for the most part. Yeah. So, go ahead. I guess the main trick we we got away with for Thronfall is we made or or what you what we're trying to get away with as a as an indie developer always is you're trying to get away with making very crappy assets look very good. That's your objective cuz then you can then you can fill your game with crappy assets and it still looks good. That that's the dream. That's right. And that's definitely something I think we achieved with Throne for because we look at all of the 3D models and like they're like very amateurish, very very basic modeling skills required to make something like this. Well, and and lighting is a huge part of that. Like if you were to hit play for me, I would love to see this. If we were to move the directional light in a in a imprecise or a a bad position,
I'd love to see how bad the game looks, if you don't mind, with just a bad directional light. Um, my controller is not plugged in. Okay. Um, yes, I guess we'll purchase some stuff and then uh change the direction. Yeah, let's see how bad it looks with with a different directional light. like move it in a bad position where it's like all shadows, you know, maybe do something horrible. All of a sudden, the game doesn't work, you know? It just doesn't look good. Oh my Why, Thomas, why are you making me do this? Yeah, don't push this to get. Um, that would be bad. It's It's cool though. It it it definitely has a a moody look, but it's it's it's unworkable, you know. Um, it kind of looks okay at night surprisingly. Yeah, because you got that point light. Um, that's so funny.
Yeah, lighting the the problem with using bad assets is that typically with bad assets, what makes them look good is a very precise set of shaders and lights. And if you in color theory, good color theory. So when you go in there and you you you met tweak it slightly. Let's say somebody's like, "Well, I'll just go in and tweak the color." Suddenly it all doesn't work, you know, like if those yellow rocks were a or if the grass wasn't that nice teal grass, it wouldn't work, you know, it wouldn't look stylish. Um, so color theory is super duper important, right? Yep. We have a a color manager here where we can tweak all of the colors in the scene. Bro, I love that. Can you show us some changes? Sure. Can, for example, grab the ground color here and just make it a different color or something. It looks great though, even with
different Yeah, like Oh, no. Make it red or something. But yeah, you can get get away with a surprising very surprising thing sometimes. No, that's amazing. Really kind of cool. That's a really smart tool to make. Um, you can unify a level's theme really quick, right? And then the cool thing is we can also very easily swap these out. So I can, for example, also make this one uh look like a different level. So you're swiping out the color scheme and the color scheme is a scriptable object. Exactly. I can make this look like winter and so on and so forth. So, does did you create some of these color schemes or is this all Paul? Uh, it's a mixed effort. Like Paul did all of the fine tuning on these. Um, but I created the the rough drafts for a lot of them cuz I did the the initial level design and then Paul did a polishing pass on them. So, usually it was like me doing like a dirty draft of how I would
imagine the colors to look like and then Paul usually did some fine tuning and sometimes that fine tuning was entirely different from what I envisioned but was usually better than than my version. Yep. Now, how often are you instantiating things Jonas or using object pooling? There there is no object pooling. None. Zero. And um not saying do that. Shame on you. At least that's what my live stream audience would tell me. I think um we're barely getting away with it with the amount of objects we have cuz we do have I don't know, we have like a limit of 200 300 enemies spawning per night. And with like 200 300 enemies spawning per night, you can kind of get away with them not being pulled. And then one of the things that we should really should have been pulled is uh visual effects. So, arrows that are being shot through the air, destruction effects and so on. We should have done
pooling for that. We don't. Mhm. And uh yeah, we barely get away with it. But hey, are the are the I'm just going from one thing to another here. Uh are the shadows opaque because of the shader or are they opaque because you've set them to be opaque with the directional light? What are opaque shadows? What do you mean exactly? All of your shadows are completely blue. They are not There's no fade or opacity shift. Yeah. Is it possible to make them less dark? Um, yes it is possible, but I'm not sure if it's a it's a one click kind of thing. I can check it out. I can try on the ground material. Let's see. The reason I ask is I'm curious why you decided to do that. Um or like what it would look like. I guess what I'm saying is I think it unifies the theme. It it
unifies the style and it's a brave decision because you've got to you got to make sure there's not too many shadows. Um because then it can ruin the gameplay, right? So, okay, I can't figure it out, but Oh man. Yeah, you're working on another game right now. There there are too many sliders. That's great. Uh and then another question I had was um are there any really cool tricks that are just like that you you want to tell us about that just like are almost magic tricks visually that you're using? I think you I think you should have been asking probably Paul and also Freedman about this cuz Freedom worked on this. No, no, he doesn't. But he's also a very very good uh artist actually. I see. I see. Hey, are you using post-processing? We are using some very minimal post-processing, but if you turn it off, you're almost not going to see any
difference whatsoever. Like it's I think it's very No, no tone mapping. I think it's very tiny amount of chromatic aberration. And that's pretty much it. Really? Why did you do that? I I I think I could see it actually. It's very subtle. Yeah. What was the goal there? to make it look retro. I guess that's a question for Paul. I honestly I I like it with or without. It looks almost identical. Doesn't really I don't need this, but if you think it looks good, let's keep it whatever. Um what uh how what's the point of a local manage manager versus a global manager? And for for the record, I do know the answer, but I want my audience to kind of get an idea. So these two here, right? The it's not it's not just a manager, it's managers. It's like these are all of the single team. What?
It looked so pretty when it was collapsed or closed. Now, yep. Yep. Um these are all individual manager objects with different tasks in the game. These are all singletons. And I know like your stream audience would murder you for something like this because you know typically every if you like if you want to do ideal code architecture then you want everything to be as modular as possible. You don't want interdependencies where one script depends too much on on another one. You you kind of want everything every script to be like a Lego piece that you can just plug together. that that's not how Thronefall that's not how thronfall's architecture works. We have lots and lots of uh centralized managers that all have interconnected dependencies and all depend on each other to do various things. Yeah. Um and I think it would have been difficult to get away with this with with a bigger project but for thronefall it was just fine actually. So
let me ask you this. Singletons in my mind are for global stuff. Yes. So why did you do it with local stuff? Local I would assume local means it's local to the scene. It is local to the scene but you can So why do you need it to be a singleton? You can you can still do uh local singletons. There's maybe uh very very small Mhm. misunderstanding on your end. Singleton just means that there's just one object of this type. So typically you do something like static instance blah blah blah singleton whatever. Yeah. And then the the advantage of that is just that you can reference that script from wherever you want and you you don't have to do the find component of type thing which is correct. Correct. Which is slow. Yeah. The the reason I say that is I I just always um I only ever use singletons for global stuff. Um but I guess I guess you're right. I guess it makes sense to use singletons
for for local stuff. So that's cool. Yeah. So I guess the the rule of thumb is if there's only if you already know there's only ever going to be one of a particular thing then just make it a singleton by default then whenever you can access it whenever you want without doing get component. Exactly. Ah yes. Okay. Sweet dude. Uh are there really quick are there naming conventions here that don't follow like some things have spaces some don't? Yeah. No there are no naming conventions. It's a if you're two person team, I think you sort of naturally converge on some things. So, it's not a complete mess just because over the time we kind of develop similar preference and that kind of thing, but we're not like, oh my god, this this uh this object in the scene has doesn't have a space here and it should be camel case or whatever. It's like, yeah, whatever. This match fusion. Okay, I guess it needs some spaces here, but this is not something we we waste our time on that
we have more important things to do. I always have I always have this like fantasy of starting a new project and that the the naming conventions are perfect, you know, everything's clean uppercase like uh or what do you call it? What do you call it when only one is uppercase in the in the word? Um, so the first letter type case or something, I don't know what it's called. No, whatever. But I have a fairy tale fantasy about this where and I and everything's spaced out clean. All of my classes are uppercased. You know, all of my variables have the exact same naming conventions. Um, but then you get a team involved. Once you once you get the project rolling, you get a team involved. And then invariably, every once in a while, someone pushes without you knowing, they push a variable that uses an underscore. when I don't use underscores. I never I never ever use underscores and then somebody puts an underscore in my variable or in the project's variables and then slowly it just starts to
degrade the naming conventions, you know, and the syntax. So, it's just what happens and naming conventions are easy to maintain if you work alone. Oh, yeah. Relatively easy. If if you work on a team, good luck. Let me ask you about variables. Can we take a look at some of your variables? Um, are you do you are you descriptive with your variables or are you as indescriptive as possible and you want your variable names to be very clean and short? Uh, I have a very definitive answer on this. I'll I'll I want to I want them to be as descriptive as possible. So I'm on the I I I literally make variable names that are half half the line in they're like comments, right? Yeah, exactly. Yeah, I do that sometimes. I'm like I really don't want to forget what this variable is for later. So try to come up with a good name. But then also on the other side, um often
times shorter variables uh are are enough to describe what you what you want to say. Mhm. So like health for example. Exactly. Cool, man. Let's Let's have a look at some scripts. Let's maybe an enemy script or something. Let's pick something uh have a look at the at the mole man or whatever. Let's let's see. So, this is this is not a class. This is a this is a scriptable object. Scriptable object. Did you do you want to explain to the audience the difference? So, scriptable objects are just essentially meant to hold pure data. Another thing you can do if you want to write very clean projects is that you can is that you try to separate your data and your game logic as much as possible so that if you want to extend the game later on, all you need to do is
add data and you don't need to write any additional code. Correct? So for example, if you add an additional weapon or something, then you can just put in another entry into your weapons database and everything already works perfectly. And essentially scriptable objects are that they are data entries. You can you can um the way that we do it, for example, with weapons in our game, all of the weapons in our first person controller are, and I'm not telling you this, I'm telling the audience because you already know this, but we've got like a pistol, we've got a magnum, we've got a automatic, we've got a chain gun, we've got a rocket launcher. all of that data associated with each weapon, like the shoot speed, the shoot power, the reload speed, all that stuff, the sprite for the for the crosshair, all of that stuff is in one scriptable object called the weapon manager. And if we need to adjust the balancing of the game, we can adjust the
balancing in that single scriptable object. We don't have to go into each prefab for each weapon and adjust it. Do you feel like that's a valid case for the a scriptable object? Yeah, of course. Okay, totally cool. So, as you can see here also with our enemies, they look very silly sometimes up close. Like this one. I I have actually haven't even seen this one up close. Wow. I don't even know what I'm looking at. Yep. Yep. Yep. But then when you zoom out, it kind of starts looking like something. Yeah. Very interesting. That's awesome. Okay, but let's um for example have a look at a script here. For examp the the kind of variables I would write cooldown duration, cooldown after after spawn, uh cooldown randomization.
Mhm. So, mostly very self-explanatory variable names. Um, yeah. And then I guess it looks relatively normal. It doesn't look super clean. Doesn't It's not overly commented like most It's also not overly complicated. It's not like you're doing I'm sure I'm sure you're very clever, but I'm not seeing anything that's super clever here. That's right. Yeah. Trying I like that. I mean I I like my scripts to be very very very like layman and simple and and normal. Nothing crazy. You know the the trick of writing clean code I think in theory is uh not writing simple code. It's just hiding away the complexities. For example, what what for example a beginner maybe would have done here is they would have inlined the entire on attack function here like okay whenever we attack we just write all of everything that's that happens right here in the update function. But obviously the the cleaner way is to just have it in there. Well, and for for
people who are just starting to code, who are listening, anytime anytime you write the same code twice, obviously slam that into a single function. Um, and you and then you can use that function multiple times. Um, yeah, obviously. Right. Even for stuff like this one here, this would be one example where where I could have done a little bit better, I guess, because we have find auto attack target and then we also find auto attack target with um with I guess various settings. I wonder if I could have just done something like this where in in this simpler function I call the other function with some default with some defaults like uh Mhm. Mhm. Like something like this. Yep. And this also would have made it a bit cleaner, I guess. Well, you know,
that's the nature of gamedev is you look at your old projects and it's like looking at an old photo of yourself from high school. Yum. Yum. Yum. It is. That's That's also I'm not not sure if it's cringe. It's also sometimes like the script is already so simple and so short, why bother optimizing it further? It's like I agree. I've gotten to the point with my project, dude, where I'm at the end of it and I don't care what kind of band-aids I'm slapping on the code. I don't care. I'm just like, get it done. Um the the the clean code that's out the door for me for for for my latest project. So, you know, it it as always it depends on what you're trying to build. the the bigger the project that you want to build, the more attention you need to pay to clean code because um spaghetti code just doesn't scale as well into bigger projects.
Well, that and that's kind of my point though is that I'm we're not scaling the project anymore. Yeah, it's it's reached its max capacity. So, I'm just like spaghetti code all day to get it done. That's exactly right. And I'm not going to reuse the system. Y uh hell no. Yeah, I'm I am I don't know if you've ever reused one of your code bases before um for another project, but I I can't bring myself to do it because I'm like I don't want to live in this code anymore. I need this code. Yeah. You know, I think what's the main problem with reusing code snippets is exactly what you're saying. You're like the next time you need something like this, you're like, I'm start I'm building it from scr scratch and I'm going to do it two times better than I did last time. That's right. That's right. So you you never really get to the point where where it makes sense to reuse something. Sure. You can just do a better job building it from scratch. Okay. Well, uh is there anything else you wanted to show before we wrap up here, Jonas? Um no, if there's nothing specific, nothing else that you're interested in?
I I would be very curious to see uh Twisted Tower uh project tour sometime. I hope you I would love to see it. I would love to show you it. I mean, maybe we can do uh another um podcast and I could show you that after the game's done. After the game. Yes. Yes. Either either you'll do it on your channel or I'll I'll my channel sometime. Also, hey, don't forget to check out Bezi to accelerate and simplify your development workflow. Early access is now open for everybody. That includes you. So you can try it out for yourself right now simply by clicking the link in the description.
Auto-generated captions from YouTube — names and numbers may be misheard.
Thomas Brush · 2026
Deconstructor of Fun · 2024
Comments