Latest / The Pragmatic Engineer / Building a best-selling game with a tiny team – with Jonas Tyroller
Transcript
- 0:00The one challenge that you face a little bit is that you need to find a
- 0:03compromise between something that you want to make and something you think
- 0:06that will sell.
- 0:07First of all,
- 0:07finding something that will sell is already difficult,
- 0:09but then finding something that will sell that you also like to work on,
- 0:12that is fairly tricky.
- 0:13The way you approach it is usually you just make a lot of things that you can
- 0:17imagine working on that you're interested in,
- 0:19and then you are trying to measure or guess how well it would do on the market,
- 0:23and then you move forward with the ideas that you think are most promising.
- 0:28How exactly it looks like,
- 0:29I come here in the morning,
- 0:30I sit down,
- 0:31I open Unity.
- 0:32SPEAKER_0: I'm like, "What do I want to make today?"
- 0:35I just come up with a random idea that I find interesting and I just make it.
- 0:39The thing that I think that is important to realize is that you can make games very,
- 0:43very quickly.
- 0:44If you just want to make a simple prototype without any fancy graphics or
- 0:47menus or whatever,
- 0:48you can get that up and running super,
- 0:49super quickly.
- 0:50What takes the most amount of time is just polishing it up and bringing it to
- 0:53production quality.
- 0:54But if you just want to try out a random little idea,
- 0:57you can mostly do that in one or two days.
- 1:00SPEAKER_1: Thronefall is a minimal strategy game.
- 1:01I bought the game,
- 1:02enjoyed playing with it,
- 1:03and I was surprised to discover that it has sold a million copies of the first
- 1:06year of its launch,
- 1:07and also that it's only been built by two developers.
- 1:10SPEAKER_1: I figured would it not be nice to know how the game was built?
- 1:14For this episode,
- 1:15we have one of the two developers,
- 1:16Jonas Tyroller joining us and we're going to cover the structure of
- 1:20Thronefall as a game,
- 1:21how scenes,
- 1:223D models,
- 1:23C# code,
- 1:23and other parts make up the game.
- 1:26Why Jonas starts his game development process by building a new mini game
- 1:29each day that he then throws away and does this for a few months.
- 1:33Why implementing Pathfinding with an A* algorithm was an interesting
- 1:36challenge building the game,
- 1:38tips on getting started as an indie game developer,
- 1:40especially if you know how to already code and many more fascinating details
- 1:44about indie game development.
- 1:46Whether you're thinking of one day perhaps building your own indie game or
- 1:49you're just interested how these games are built,
- 1:51this episode is for you.
- 1:52If you enjoy the show,
- 1:53please subscribe to the podcast in any podcast platform and on YouTube.
- 1:58So talking about the tech stack specifically,
- 2:01can you share what you use,
- 2:03what language you use,
- 2:05what kind of dev machine,
- 2:06and can you maybe even share how your development environment looks like?
- 2:11SPEAKER_0: Yes.
- 2:12SPEAKER_0: So if you want, I can open up Unity for this.
- 2:15SPEAKER_0: These are just... Alrighty.
- 2:16SPEAKER_0: We have Unity opened right now.
- 2:19SPEAKER_0: So Unity is the program we used to make our games.
- 2:27SPEAKER_0: Will You Snail?
- 2:27SPEAKER_0: was made in GameMaker, so I'm familiar with a couple different engines.
- 2:31I've dabbled with Godot a bit as well,
- 2:33but Unity is our option of choice for this one.
- 2:40SPEAKER_0: I don't know.
- 2:41SPEAKER_0: What do you think what's interesting?
- 2:43So would you mind sharing us what programming language did you use,
- 2:47what frameworks you're using,
- 2:49either open source or I'm not sure if you bought some things and then can you
- 2:53just give us an overview of what does the project structure of this game look
- 2:57like and what is that cool thing that we're seeing right in the middle?
- 3:00SPEAKER_1: It looks like the menu a little bit.
- 3:01SPEAKER_1: No?
- 3:03SPEAKER_0: Exactly.
- 3:03SPEAKER_0: This is the level select screens on the game.
- 3:05SPEAKER_0: This will solve the [inaudible 00:03:07]
- 3:06SPEAKER_1: Yeah, I love that screen.
- 3:09SPEAKER_0: We can write around.
- 3:10Yeah,
- 3:10Unity uses C#,
- 3:12so all of this is written entirely in C# and of course we don't have to worry
- 3:17about any of the rendering stuff too much and all of that.
- 3:21SPEAKER_0: That's all built into Unity.
- 3:24SPEAKER_0: The shader we use here is something we bought from the Unity Asset Store.
- 3:27So Unity has its own marketplace where you can share resources relatively
- 3:32easily and we definitely bought a couple of things there.
- 3:37As a small indie team,
- 3:38if you can find a way to cut corners and save time,
- 3:40you definitely do it.
- 3:43All of the 3D models you see here,
- 3:45we made ourselves in Blender,
- 3:46but like this Toon Shader is just something we downloaded from the asset
- 3:51store
- 3:52And then the shader,
- 3:53for those of us who are not game developers,
- 3:56what does that do?
- 3:58I know it's something to do with graphics and rendering,
- 4:01but can you explain for a software engineer who's not a game developer?
- 4:07So the shader is essentially what renders materials onto the screen or
- 4:14shaders are the part of your game that runs on the graphics card,
- 4:18maybe would it be a different way to say it.
- 4:20SPEAKER_0: Because for the game logic, where do your units go and all that stuff?
- 4:25That is typically done on the CPU because you could do it probably on the GPU,
- 4:32but it's more difficult to optimize.
- 4:34SPEAKER_0: So just for convenience, that runs on the CPU.
- 4:37And then the color of each individual pixel,
- 4:41that is calculated on the GPU and the way you calculate that is basically
- 4:45defined by the shader.
- 4:46So you can say,
- 4:48okay,
- 4:48if the light is coming from this direction,
- 4:51then color this pixel bright.
- 4:53SPEAKER_0: If the light is coming from that direction, then color the pixel dark.
- 4:58Yeah,
- 4:58so shaders are highly optimized code for the graphics card that I usually use
- 5:04to render graphics,
- 5:05but you can also use them to do different things if you want to.
- 5:08This episode is brought to by Formation,
- 5:10a personalized interview prep program for experienced software engineers.
- 5:13Formation is built by ex-FAANG engineers who've conducted thousands of
- 5:17interviews collectively so they know what it takes.
- 5:20SPEAKER_1: In 2024, they helped engineers increase the comp by $110,000 on average.
- 5:25They help you understand exactly how you stack up and then get you ready to ace
- 5:28assistant design,
- 5:29coding and behavioral interviews,
- 5:32they assist in landing top tier roles and level up your composition through
- 5:35unlimited career coaching and technical mentorship,
- 5:38rigorously drill problems that align with your personal skill gaps.
- 5:41Get unlimited mentorship to get unblocked,
- 5:44do as many mocks as you need to ace the real thing.
- 5:47Stop wasting time trying to figure out what to prep,
- 5:49only to get to the interview and realize you had it wrong.
- 5:52Formation helps put your interview prep on autopilot,
- 5:54ensuring you're always focusing on the right thing.
- 5:57SPEAKER_1: Apply today at fm.dev/pragmatic, that is fm.dev/pragmatic.
- 6:05SPEAKER_1: This episode is brought to you by WorkOS.
- 6:07If you're building a SaaS app,
- 6:08at some point,
- 6:08your customers will start asking for enterprise features like sample authentication,
- 6:12skin provisioning,
- 6:13and fine-grained authorization.
- 6:15That's where WorkOS comes in,
- 6:17making it fast and painless to add enterprise features to your app.
- 6:20Their APIs are easy to understand and you can ship quickly and get back to
- 6:23building on your features.
- 6:25WorkOS also provides a free user management solution called AuthKit for up
- 6:29to 1 million monthly active users.
- 6:31SPEAKER_1: It's a drop-in replacement for Auth0.
- 6:33Income standard would useful features like domain verification,
- 6:36rule-based access control,
- 6:37bot protection and MFA.
- 6:39SPEAKER_1: It's powered by Radix components, which means zero compromises in design.
- 6:43You get limited customizations as well as modular templates designed for
- 6:46quick integrations.
- 6:48Today,
- 6:48hundreds of fast-growing startups are powered by WorkOS,
- 6:51including ones you probably know like Cursor,
- 6:53Vercel,
- 6:53and Perplexity.
- 6:55SPEAKER_1: Check it out at workos.com to learn more.
- 6:58SPEAKER_1: That is workos.com.
- 7:01And am I right to suspect that this is somewhat a commodity in the sense of it's
- 7:06not going to make a huge difference for a game?
- 7:08SPEAKER_1: So you just bought one.
- 7:10I'm sure there's open source ones,
- 7:12but in the end it doesn't sound like especially for an indie gamer,
- 7:16it's worth building your own and spending so much time and sweat into it,
- 7:21right?
- 7:23SPEAKER_0: They are surprisingly easy to build depending on what you want to build.
- 7:27SPEAKER_0: There are a couple of things that are pretty easy to build.
- 7:30SPEAKER_0: There are a couple of things that are very difficult to build.
- 7:34In the case of a fully fledged-out Toon Shader with all of the features you
- 7:38want because this one also has shadow casting,
- 7:42it has outlines and all of that.
- 7:44If you want to code all of that in yourself,
- 7:46you're going to be busy for a while,
- 7:48but if you want to make something very simple,
- 7:49like I don't know,
- 7:51transparent particle or whatever,
- 7:54you can do that within half an hour,
- 7:56especially with the help of ChatGPT or so and so.
- 7:59SPEAKER_0: There are some things you do yourself, faster to do yourself.
- 8:04There are some things where you try to use somebody else's work because it
- 8:08would just not be feasible to do it yourself.
- 8:10SPEAKER_0: But you're right, it's very much a commodity.
- 8:12SPEAKER_0: Although Unity comes with a lot of built-in shaders.
- 8:16So if you look here,
- 8:17there's a massive,
- 8:18massive list of shaders that already come with Unity.
- 8:23So yeah,
- 8:25also in 90%,
- 8:2380% of the cases,
- 8:28you'll just use the built-in Unity shaders and that will be completely fine
- 8:32as well.
- 8:34And what is the structure of this Unity project in terms of,
- 8:40again,
- 8:41I'm not familiar at all with how games are structured.
- 8:45If this was not a game,
- 8:47it will be like a series of modules and different things.
- 8:52SPEAKER_1: How does it look like in your case?
- 8:54SPEAKER_1: How do you think of it?
- 8:56There are different resource types,
- 9:00so everything's just data blocks,
- 9:03right?
- 9:03SPEAKER_0: But the question is in which data blocks do you organize your game?
- 9:06Unity,
- 9:07the main organizational structure you put everything into is scenes.
- 9:13So scenes are essentially,
- 9:16I would say levels,
- 9:18so this is our level select area,
- 9:21but we also have scenes for other levels.
- 9:26SPEAKER_0: This here is the second level rush time, which currently has art colors.
- 9:33SPEAKER_0: Hold on.
- 9:33SPEAKER_0: Color miniature.
- 9:36SPEAKER_1: Oh, I remember this level.
- 9:38SPEAKER_0: Yeah, this is how it looks usually.
- 9:39SPEAKER_1: It's also one of the bonus levels when they keep coming up.
- 9:44SPEAKER_0: Yep.
- 9:48SPEAKER_0: Where was it exactly?
- 9:49And then within scenes,
- 9:51you have a number of objects or I'm sorry,
- 9:55if I screw up the terminology a little bit there.
- 9:59SPEAKER_0: I think maybe instances would be the correct way word, right?
- 10:04SPEAKER_0: Instances of specific objects.
- 10:06Everything is organized into these game objects and then every game object
- 10:11can have scripts attached to it.
- 10:15So for example,
- 10:16if we check out our castle center here,
- 10:19you can see that's a castle center game object and then it has a couple of C#
- 10:25scripts attached to it.
- 10:26And these C# scripts,
- 10:28they're all mono behaviors,
- 10:31so they inherit from the mono behavior class.
- 10:35And mono behaviors are essentially just the type of object that you can
- 10:39attach to game objects.
- 10:43And then that's where you define how it behaves,
- 10:48states,
- 10:49those kind of things.
- 10:50SPEAKER_0: Yeah, I opened one up for example purposes here.
- 10:54SPEAKER_0: We can see how one of those mono behaviors would look like.
- 10:59SPEAKER_0: Don't judge our code too harshly.
- 11:01SPEAKER_0: Maybe we'll talk about this a bit later on.
- 11:04SPEAKER_0: Game developers tend to write very horrific spaghetti code at times.
- 11:11SPEAKER_0: But yeah, this is roughly how it looks like.
- 11:16SPEAKER_0: Just have logic in there.
- 11:18SPEAKER_1: But let's talk about this.
- 11:19SPEAKER_1: So you consider this spaghetti, first of all, why?
- 11:24SPEAKER_1: How would you critique your own code?
- 11:26SPEAKER_1: Which actually the game works really well from the outside, right?
- 11:29SPEAKER_1: We're looking in the inside right now.
- 11:35So before we started recording,
- 11:37I mentioned something of writing unit tests or whatever.
- 11:42SPEAKER_0: Indie developers, we don't do that at all.
- 11:46SPEAKER_0: We debug our code with debug prints.
- 11:53SPEAKER_0: It's just very much a mess sometimes.
- 11:55SPEAKER_0: I would even say we are not even close to the worst offenders.
- 11:59SPEAKER_0: I have opened game projects in the past.
- 12:02SPEAKER_0: They were insane spaghetti.
- 12:05SPEAKER_0: You can't even imagine.
- 12:07And the surprising thing,
- 12:09this often also happens with very popular and good games.
- 12:14I don't want to throw anybody under the bus here,
- 12:15but I know a couple of games that are very,
- 12:18very popular indie games where I know for a fact that they also have pretty
- 12:23horrific spaghetti code under the hood.
- 12:26SPEAKER_0: But yeah, apparently it's not really stopping the success of games.
- 12:31SPEAKER_0: So if it works, it works.
- 12:33SPEAKER_0: That's sort of the philosophy here.
- 12:36Well that's the thing because the reason you cannot really get away of not
- 12:40having unit tests at inside or let's say a hundred person engineering team
- 12:45that is building a distributed system,
- 12:47let's say a large real website or mobile app or something like that.
- 12:51SPEAKER_1: It's because of maintainability.
- 12:54SPEAKER_1: What would happen if you did that?
- 12:56I mean you can do it,
- 12:57but then people are going to make code changes and there's going to be bugs and
- 13:00customers will be upset because suddenly what they used to use does not work.
- 13:05So I'm kind of curious,
- 13:07if you're on unit test,
- 13:08will take you a bunch of time,
- 13:10what would it give you?
- 13:11SPEAKER_1: What would it give you?
- 13:12SPEAKER_1: Anything?
- 13:12Because if it doesn't give you anything,
- 13:13it's the right thing that you're doing,
- 13:15honestly,
- 13:15right now.
- 13:16You shouldn't apologize for it because in the end,
- 13:20I feel you're looking to meet your goals,
- 13:23which is build a game that is fun and it works and it's great,
- 13:26those kind of things.
- 13:28SPEAKER_0: Yeah, I think you're right.
- 13:29SPEAKER_0: I think it's very much a scale thing.
- 13:31I think stuff like unit test and so on,
- 13:33they become very important at a certain scale and I think most indie games,
- 13:38they operate under that threshold where you can get away with a lot of these
- 13:43messy things.
- 13:45The thing is also,
- 13:46as you keep scaling these indie games bigger and bigger,
- 13:49a lot of these things start biting you in the back more and more the further you go.
- 13:55But if you don't scale to a super large level,
- 14:00it's kind of okay,
- 14:01you find workarounds and so on,
- 14:03workarounds for your own screw-ups.
- 14:07So this leads me to a pretty good question,
- 14:11which is the reason we even talk about tests and software engineering is,
- 14:16it's not about the test,
- 14:16right?
- 14:17SPEAKER_1: It's about wanting to avoid regressions.
- 14:19SPEAKER_1: When you're making changes to the game, how do you test it?
- 14:24How did you make sure that when you released it,
- 14:27this actually worked as expected?
- 14:29SPEAKER_1: And clearly the answer is not unit test.
- 14:31SPEAKER_1: So I'm just really curious of and what did you need to test?
- 14:35SPEAKER_1: Right?
- 14:35I feel a lot of things,
- 14:36especially in your game,
- 14:37it's kind of hard to test,
- 14:38right?
- 14:39SPEAKER_1: Okay.
- 14:39There's obvious things which is the characters not colliding weirdly or I
- 14:44don't know.
- 14:45SPEAKER_1: But there's also the thing of does it kind of work as you think it would?
- 14:49SPEAKER_1: Which sounds hard to test.
- 14:53Yeah,
- 14:53so I think one of the advantages that comes with modern game engines is that
- 15:00they also do a lot of the fixing on their end.
- 15:03So you can usually be relatively certain that if it works on your machine,
- 15:07it will likely also work on other machines.
- 15:10SPEAKER_0: So that is a luxury that we have nowadays.
- 15:14But then obviously there can also be issues and bugs in the stuff you write yourself.
- 15:19And the way to catch that is first of all to test it rigorously yourself,
- 15:27but you're not going to catch everything that way.
- 15:29So then before you release,
- 15:31you usually test it with a group of beta testers and they're going to catch
- 15:38even more,
- 15:38but also not everything.
- 15:39And then you fix the rest once it's released,
- 15:42because then you essentially have thousands and thousands of real life testers.
- 15:48And honestly,
- 15:50that's the only way to find all of the bugs or at least all of the ones that matter.
- 15:58So going back to the coding environment and the development environment in Unity,
- 16:03I've seen a some of your videos where you actually share what your game
- 16:07development process looks like,
- 16:08which is really cool.
- 16:09We'll link it in the show notes below so viewers can also,
- 16:12and listeners can also check it out.
- 16:15SPEAKER_1: How does your workflow look like?
- 16:18Because I've seen a lot of visual editing happening in Unity,
- 16:21then sometimes you switch to make some code changes with I guess what you've
- 16:28shown with mono objects and so on.
- 16:32SPEAKER_1: Can you share how you jump in between these things?
- 16:37Are you more in the visual side of things in the UI or more of the code or can you
- 16:42even say how this splits?
- 16:45SPEAKER_1: Does it even make sense?
- 16:48SPEAKER_0: It depends what you're currently working on, right?
- 16:50If I'm building a new level,
- 16:52then I spend most of my time right here in the Unity editor view and I kind of
- 16:58move rocks around like so,
- 17:00I'm like,
- 17:00"Oh,
- 17:01herewillbeaniceplaceforanotherrock."
- 17:04Or if I make a new level,
- 17:07then I take these giant shapes here and kind of bend them into place.
- 17:17SPEAKER_0: I'm like, okay, I want the level to maybe go this way, that way.
- 17:22But then obviously,
- 17:23there are other times where for example,
- 17:25you work on enemy designs.
- 17:27SPEAKER_0: That is also something you can do in Unity.
- 17:30SPEAKER_0: Let me bring up one of the enemies real quick.
- 17:37And you also have those big bosses that's in of some levels,
- 17:40not all of them.
- 17:43SPEAKER_0: Exactly.
- 17:44SPEAKER_0: This is called a prefab.
- 17:48So prefab is essentially like a blueprint for a foreign object you can put in
- 17:53your scenes.
- 17:54SPEAKER_0: You always want all of the archers to be the same.
- 17:58So if I edit my archer here,
- 17:59then it will update on all of the scenes,
- 18:01just pretty useful.
- 18:05And then there are other times where if you work on the visuals,
- 18:08then you would probably do so in Blender.
- 18:14SPEAKER_0: So Blender is very nicely integrated with Unity.
- 18:18SPEAKER_0: If I update anything in the Blender...
- 18:20SPEAKER_1: So this is a Blender, it's the 3D editor, if I put it in a simple way.
- 18:27SPEAKER_0: Exactly.
- 18:27Blender is slowly becoming industry standard for everything around 3D
- 18:35modeling and so on,
- 18:36because Blender is very good.
- 18:38SPEAKER_0: It's a massive, massive program.
- 18:40There are tons and tons of things you can do with Blender,
- 18:42but one of the things you can do with Blender is also just making simple 3D
- 18:45models and that's what we use it for.
- 18:48So you can see in this Blender file we have most of our 3D models from our towers
- 18:54and so on,
- 18:54so forth.
- 18:55So whenever I need a new model or when Paul needs a new model,
- 18:58then we just go in here and make it different levels of buildings.
- 19:03SPEAKER_0: Here we can see parts of one of the bosses and then the parts of...
- 19:10SPEAKER_1: Is that lake boss?
- 19:11SPEAKER_0: Yeah, exactly.
- 19:12And you see it's not fully assembled because I only make every part of the boss
- 19:18here once,
- 19:19all of the teeth in the engine just route over together.
- 19:22And then you put it together with code later or in the editor you just use these parts.
- 19:29SPEAKER_0: Exactly.
- 19:29SPEAKER_0: I can see if I can find it maybe.
- 19:36Small spoilers ahead for everybody who hasn't played the game,
- 19:38but I think it should be fine.
- 19:41SPEAKER_1: I don't think it's that much spoilers.
- 19:43Just because you know how it looks,
- 19:44you're not going to know how it actually...
- 19:47That's a pretty nasty boss.
- 19:50SPEAKER_0: I can see it's...
- 19:50SPEAKER_1: And the behavior.
- 19:52SPEAKER_0: Sitting under the surface.
- 19:55SPEAKER_1: Oh, there it is.
- 19:55So throughout the whole game,
- 19:55it's rendered there just you don't see it because...
- 19:58SPEAKER_0: No, it's not rendered.
- 20:01Usually it's turned off and then once it appears,
- 20:04it turns on and yep,
- 20:06it's assembled in the editor.
- 20:09So it's not like you manually have to enter the coordinates of everybody,
- 20:12part or whatever.
- 20:13So you assemble it in the 3D view here,
- 20:18but this spot in particular has procedural animations.
- 20:22SPEAKER_0: So this one is actually animated entirely with C#.
- 20:26SPEAKER_0: There's also an animator, but this boss doesn't use it.
- 20:32SPEAKER_0: This has what you call procedural animations.
- 20:39SPEAKER_1: Nice.
- 20:40And then for the whole project,
- 20:42can you give a sense of the size of the project?
- 20:45Often it's not a good measurement,
- 20:47but when we talk about a back-end service,
- 20:51we would say,
- 20:52"Okay,
- 20:52here'showmanylinesofcodeitis."
- 20:53Just to give a sense because a million,
- 20:55it's hard to maintain a thousand line.
- 20:57SPEAKER_1: That's pretty trivial.
- 20:59Do you have a sense of how big the game is in terms of number of assets,
- 21:03lines of code?
- 21:05How would you kind of quantify it when you talk with fellow indie game devs to
- 21:09give them a sense of,
- 21:10okay,
- 21:11how complex this game is really?
- 21:15I think there's honestly no good measure that comes to mind because there are
- 21:21certainly pure data sizes is not that great of a measure because there are
- 21:26certain types of assets that disproportionately screw up that number.
- 21:31For example,
- 21:32textures and zones are very,
- 21:34very big,
- 21:36whereas 3D models and code is not big at all.
- 21:41But then also lines of code is also not a perfect measurement because
- 21:45oftentimes it's not your own code.
- 21:49SPEAKER_1: True.
- 21:49SPEAKER_0: Oftentimes it's third-party tools and so on.
- 21:52SPEAKER_0: That's very difficult.
- 21:55So if you want to know,
- 21:56I think the game itself,
- 21:57Thronefall itself is very,
- 21:59very small game.
- 22:00SPEAKER_0: I think it's maybe a hundred, 200 megabytes at most.
- 22:03SPEAKER_1: So that's the download size, right?
- 22:05SPEAKER_0: That's the download size.
- 22:06SPEAKER_0: And the reason for that is that we don't have a lot of textures.
- 22:11SPEAKER_0: We basically have this flat shaded style.
- 22:14We have maybe a water texture and a little bit of a grainy ground texture to add
- 22:18a little bit of noise there.
- 22:19SPEAKER_0: But that's pretty much it.
- 22:21And as mentioned,
- 22:22the 3D models,
- 22:23all of the 3D models are tiny,
- 22:25all of the C# code is pretty tiny,
- 22:27so that's why Thronefall isn't that big.
- 22:29The biggest thing in Thronefall is probably the music and the sound effects.
- 22:34SPEAKER_1: Did you also create that?
- 22:35SPEAKER_1: Who created that?
- 22:35SPEAKER_1: Or did you buy it or did you have someone help?
- 22:39SPEAKER_0: The music is something I made myself and the sound effects.
- 22:43SPEAKER_1: Really?
- 22:45Yeah,
- 22:45you have to wear a lot of hats as a game developer,
- 22:48but that's also what makes it fun.
- 22:51SPEAKER_1: The music is really fun.
- 22:53SPEAKER_1: Did you create music before or did you just do it just for this game?
- 22:57SPEAKER_0: I created music before.
- 22:58SPEAKER_0: I also made the music for Will You Snail?
- 23:02SPEAKER_0: as well.
- 23:03SPEAKER_0: And I've been making music for a long time.
- 23:05SPEAKER_0: It's one of my hobbies, my little side hobby, so I get to use that there.
- 23:11SPEAKER_1: Okay, so now I'm going to think of it a bit differently when I hear it.
- 23:15SPEAKER_1: It's a boujee too.
- 23:17SPEAKER_1: I like it.
- 23:20SPEAKER_0: So just to give you an idea of how big the assets folder.
- 23:24So the assets folder is basically where you put all of the things you need.
- 23:28SPEAKER_0: That's 2.23 gigabytes.
- 23:34SPEAKER_0: But as I mentioned, the final game is a lot smaller.
- 23:37So I think Unity,
- 23:39just everything that's not needed for the final build is scrapped.
- 23:42SPEAKER_0: A lot of the things are compressed and so on.
- 23:44And in the assets folder,
- 23:45everything is basically in uncompressed format,
- 23:48so that's why it's quite a bit bigger.
- 23:51I have an interesting question that I think as non-games developers would be
- 23:56interested in.
- 23:57SPEAKER_1: What do you use for source control and code review?
- 23:59SPEAKER_1: Or do you do either?
- 24:01I'm sure you do some sort of source control,
- 24:02but I'm not sure about code review.
- 24:05SPEAKER_0: So code review, I'll give you the standard answer.
- 24:12SPEAKER_0: What is code review?
- 24:13SPEAKER_0: What do you mean?
- 24:14SPEAKER_0: What are you talking about?
- 24:17SPEAKER_1: Standard game developer answer, right?
- 24:24Yeah,
- 24:24I'm sure most developers know what it is,
- 24:26but at indie scale,
- 24:27it's one of the things.
- 24:30Honestly,
- 24:31I think it would be very beneficial to do code review,
- 24:38although I think it's getting easier because you can basically copy paste
- 24:41your code into ChatGPT and then if you're at the very least at the dummy level
- 24:47of most game developers,
- 24:49myself included,
- 24:50then usually you'll get some very good recommendations from that.
- 24:55We will probably make the project a lot easier to work with in the long run.
- 24:59SPEAKER_0: I agree.
- 25:00But for some reason,
- 25:03it's not something most developers are excited about.
- 25:05Most developers are excited about,
- 25:07"Iwantthisnewenemytofinallywork."
- 25:09So we hack it in as quickly as possible where we're not like,
- 25:12"Oh,
- 25:13let's review the code for this enemy to see if there are some more efficient
- 25:16waytodoit."
- 25:17SPEAKER_0: That's just not the way we think at all.
- 25:19SPEAKER_1: But don't get me wrong, I'm not judging you at all.
- 25:22SPEAKER_1: Seriously.
- 25:23SPEAKER_1: You and Paul have built this awesome game.
- 25:26SPEAKER_1: I love playing it and I'm more interested in how you're doing it.
- 25:29And when you're saying you're not doing something that larger teams would do
- 25:34or teams who are not building games would do,
- 25:36I don't really see that as a negative.
- 25:37I see it as like,
- 25:38look,
- 25:38this works for you and I think it's actually a great testament that there is no
- 25:43one practice that,
- 25:45I don't know,
- 25:45can help guarantee creating something great because objectively,
- 25:50again,
- 25:51I don't know,
- 25:52I'll just from my perspective,
- 25:53this game is great and it is just cool to see how it was done.
- 25:56And I'm assuming if you would've taken some of these things,
- 26:00you might've slowed yourself down for no particular reason and maybe just
- 26:04got demotivated midway and get into fight and quit and not finish the game.
- 26:09Yeah,
- 26:09I guess the reason why I'm pointing all of this negative practices to just
- 26:14make it clear that we know it's not ideal.
- 26:17Because I know a lot of engineers who will be watching or listening to this and
- 26:21I know especially on the engineer side of the spectrum,
- 26:27I would say there are sometimes some judgmental looks about some of the
- 26:33things we do.
- 26:33SPEAKER_0: Like for example, the next thing you asked is source control.
- 26:38And one of the next horrible things we do is we immediately just push
- 26:43everything to the main branch.
- 26:46SPEAKER_0: We push everything to main.
- 26:48Sometimes I've seen people make a little shocked Pikachu face about that and
- 26:53I'm even like,
- 26:53"Oh,
- 26:54is that not normal?
- 26:55SPEAKER_0: I thought everybody would do that."
- 26:56SPEAKER_0: Apparently not.
- 26:59SPEAKER_0: Maybe you can tell me how that is usually done on bigger projects.
- 27:02SPEAKER_1: Well, don't forget that.
- 27:03I think there's a huge difference between what you're doing,
- 27:06which is building a game that you and Paul are using it and at some point you
- 27:11push out a beta and what it means to push to main at a lot of,
- 27:14at a distributed system or at Uber for example.
- 27:17So if at Uber you push to main,
- 27:19that code will automatically get deployed.
- 27:21If it's a web service,
- 27:22it'll get deployed to a service and it will be used by every single user of Uber,
- 27:26whoever uses that service.
- 27:27If it's a tiny service that's,
- 27:28I don't know,
- 27:29running in Portugal in one city because we have services like that,
- 27:32that's not a big deal but if it's running everywhere.
- 27:35So the reason it's frowned upon to just push to main without a review is you can
- 27:40break everything but you're not shipping your code.
- 27:43SPEAKER_1: When you push to main, it's not updating on Steam every single time.
- 27:49Because I feel this is a big difference between game development and more
- 27:54SaaS backend development,
- 27:57is you ship very infrequently,
- 27:59which means a lot of these practices you probably don't need,
- 28:02by the way.
- 28:02SPEAKER_1: I think for any listeners listening, I think it's worth challenging.
- 28:07SPEAKER_1: You're thinking what the context is.
- 28:10And I'll give you one more example of,
- 28:12I heard a team at Apple do this thing called post commit code reviews.
- 28:18So they don't do code reviews,
- 28:19but then once someone commits,
- 28:20they're a larger team,
- 28:21they look at it and they give comments,
- 28:23but they can also do that because they ship once every six months.
- 28:29And also for any game developers listening,
- 28:31I think it's just worth thinking that these things that you hear,
- 28:34practices good or bad,
- 28:36it might not apply to your context.
- 28:38And this is one of the reasons I was so excited to talk to you is just to see how
- 28:43you built this and what worked for you.
- 28:45And we're not saying this is going to work for everyone,
- 28:47but I have a feeling if someone wants to build a successful game and with a
- 28:52small team,
- 28:53it's worth paying attention to what you're doing because you clearly have
- 28:57found something that works for you.
- 29:00SPEAKER_0: Yeah, I see the point.
- 29:02SPEAKER_0: I see the point.
- 29:03I think the game not being in a functional state pretty much all the time is
- 29:09something that can pretty annoying even in relatively small teams.
- 29:12I think in a team of two,
- 29:14it's still kind of fine,
- 29:15although we pay attention to keep the game in a functional state with every commit,
- 29:20but this is something that I think I resonate with and that can get a problem
- 29:26very quickly even in smaller teams is that if everybody just pushes
- 29:29everything to main and even pushes unfinished stuff and so on,
- 29:34then it becomes very annoying because whenever you try to play and test the game,
- 29:38it's basically not in a functional state because some system is always work
- 29:42in progress are broken.
- 29:44SPEAKER_0: That is very annoying.
- 29:46SPEAKER_0: I will say that.
- 29:47That is very,
- 29:47very annoying and that sort of stuff can happen sometimes when you work with,
- 29:55I don't know,
- 29:55less experienced people or people that you're not as much in the groove with.
- 30:00SPEAKER_0: For Paul and I, I think this wasn't a big issue at the beginning stage.
- 30:03Of course sometimes the game wasn't in a functional state,
- 30:05but then once it's functional we pretty much always try to keep it functional
- 30:10so then that whenever the other person wants to test it or run something that
- 30:14it's always working and very runnable.
- 30:19So one topic that I just wanted to touch on while you still have your editor
- 30:23open is the kind of fun aspect.
- 30:25One thing that struck me as something that I just didn't think about as a
- 30:29software engineer is the art,
- 30:31the fun.
- 30:32And clearly when I played with this game,
- 30:34and I played with this before we met,
- 30:36in fact I reached out to you after I played with the game and I realized it's a
- 30:39tiny team and I thought maybe we could get some behind the scenes,
- 30:42which I'm very happy we're doing.
- 30:45SPEAKER_1: Games need to be fun.
- 30:46I like this game and I tell people that it's a great use of my time because it's fun.
- 30:52Now you showed me that you're living your days,
- 30:55a lot of it inside Unity,
- 30:57inside the C#,
- 30:58but there's only two of you.
- 30:59How do you balance the...
- 31:01Who is kind of the chief fun officer who makes sure that whatever you build,
- 31:05it has that kind of fun jazz and feel to it?
- 31:09How do you balance with all this coding and design work,
- 31:12which doesn't seem like all that fun?
- 31:17SPEAKER_0: So once again, there are different phases.
- 31:19During the prototyping phase,
- 31:21I would say we were both equally responsible for that.
- 31:23As mentioned,
- 31:24Paul was for example,
- 31:25the one who came up with the initial concept and prototype.
- 31:29But then once the concept is set into stone,
- 31:31the way we split it for this project is that I was the one responsible of
- 31:38gameplay and Paul was like UI art and so on.
- 31:42So I was the one who tried to make everything fun and then Paul did basically
- 31:48quality check my decisions and was like,
- 31:51"Yeah,
- 31:52thisisindeedfun."
- 31:52Or for example,
- 31:54in the beginning,
- 31:55I wanted to balance the economy a bit differently,
- 31:59make it a bit balanced,
- 32:00and a bit slower.
- 32:00SPEAKER_0: And Paul was like, "Yeah, this doesn't feel too great.
- 32:04SPEAKER_0: I want more gold from my buildings and less gold from the enemy."
- 32:07SPEAKER_0: So I rebalanced it a little bit according to his feedback.
- 32:11So essentially I worry about that first and then Paul checks it to make sure
- 32:15that I don't do some nonsense in that regard.
- 32:20And how important was feedback from the players,
- 32:23the beta testers,
- 32:24the early access testers?
- 32:27I'm trying to get to the point of I feel there's two thoughts of creating great
- 32:31games or creating great products in general.
- 32:34SPEAKER_1: One is listen to your customers.
- 32:37SPEAKER_1: They know what they want and take a lot of their feedback.
- 32:39SPEAKER_1: Not all of it, but a lot of it.
- 32:40SPEAKER_1: And the other one is like, nope, don't do any of that.
- 32:42SPEAKER_1: Do Steve Jobs.
- 32:44SPEAKER_1: Decide what you're going to do.
- 32:45It's going to be great,
- 32:47push through and then eventually people will come around.
- 32:50SPEAKER_1: Do you sit in any of these ones?
- 32:52SPEAKER_1: How do they deal with the feedback?
- 32:54SPEAKER_1: What was the feedback even?
- 32:57Yeah,
- 32:57so the way we do it is we gradually increase the number of playtesters.
- 33:03So we started with a closed circle of handpicked people that we trust and we
- 33:09got our first round of feedback from that.
- 33:11Then we expanded it to a little bit of a bigger circle with a couple more open testers.
- 33:16And then eventually once we were in early access,
- 33:20there was essentially a very big testing phase with lots,
- 33:24and basically everybody who bought the game is suddenly a tester.
- 33:28SPEAKER_0: And the feedback was very, very important.
- 33:31For example,
- 33:32at the very beginning when we started making the game,
- 33:35there were no building upgrades or no building choices at least.
- 33:41So for everybody who doesn't know the game,
- 33:44I'll quickly show some context here,
- 33:47if this starts up,
- 33:50come on.
- 33:51SPEAKER_1: Let's give it a little time.
- 33:57So oftentimes,
- 33:57when you build these buildings,
- 34:00you get to choose between different upgrades and this was something that was
- 34:04just not the case in the first version of the game.
- 34:07SPEAKER_0: And this was also something that we didn't plan for.
- 34:09SPEAKER_0: This was not in our initial design.
- 34:12SPEAKER_0: This was not something that we planned to do.
- 34:14But then because playtesters,
- 34:17the very early,
- 34:18the first round of playtesters reported back to us that it's a little bit too
- 34:24little choice and it doesn't really feel like you're building your own base
- 34:27or you're building everything on these predefined build slots anyway.
- 34:31SPEAKER_0: In Thronefall, you can't build buildings for everyone.
- 34:33SPEAKER_0: You have to build on these predefined slots.
- 34:37And that combined with the fact that you can't even choose,
- 34:40you can't even customize the buildings,
- 34:42it felt a bit too rigid to people.
- 34:44SPEAKER_0: And we reacted to that feedback by implementing these upgrade choices.
- 34:50So now you have a lot more choice and a lot more options to customize your base.
- 34:56And then in the end,
- 34:57once your base is fully built out,
- 34:59even though the layout is predefined by us,
- 35:01it still feels like your own because you got to customize and choose a lot of
- 35:07different things here.
- 35:08SPEAKER_1: But then you do have some mini games.
- 35:10SPEAKER_1: Interesting enough.
- 35:10After you complete the scenario,
- 35:12I played with all the...
- 35:13Because I completed all the quests on easier,
- 35:17and then there's the mini games.
- 35:19And in some mini games,
- 35:19you actually have this where you cannot choose,
- 35:22you can only build,
- 35:23you can choose if you build,
- 35:25it's a minor yay or nay,
- 35:26and then that's it.
- 35:27So did that come from keeping some of the mini games,
- 35:30some of the earlier versions?
- 35:33Honestly,
- 35:33the mini games is where I just go wild as a designer and I'm like,
- 35:42you often have a lot of untapped potential in your game systems where it's like,
- 35:48I have all of these cool systems here.
- 35:49SPEAKER_0: There are 10 different games we could have built with these systems.
- 35:53SPEAKER_0: You have the unit movement and the combat system and all of that.
- 35:57And often it's a little bit of a shame that you're not exploiting all of the
- 36:03possibilities you have.
- 36:04So the mini modes,
- 36:06like the little bonus modes for me,
- 36:08they're just a way to exploit a couple more of the possibilities we have with
- 36:14the systems that we've already built.
- 36:15So for example,
- 36:16there's also one mini mode where your character turns into a snowball.
- 36:21SPEAKER_1: I was about to say that.
- 36:23SPEAKER_1: That was my favorite.
- 36:25SPEAKER_1: I couldn't complete it.
- 36:26SPEAKER_1: So I don't know how you do the difficulty settings, but I failed.
- 36:31SPEAKER_1: I did the first, all the ways, but the last one I just cannot do it.
- 36:34SPEAKER_1: It's just this tiny ugh.
- 36:36I'm sure if I could practice more,
- 36:37which is by the way,
- 36:38one more question to those of us who do not build games,
- 36:42but were wondering how you do,
- 36:43how do you tweak the difficulty to feel right?
- 36:47SPEAKER_1: Again, I'm not a huge gamer, but I do play every now and then.
- 36:51SPEAKER_1: It felt right to me.
- 36:51SPEAKER_1: It was challenging.
- 36:53SPEAKER_1: I had to restart some levels, but I could finish it.
- 36:55And then some of the mini games,
- 36:56they're giving me grief,
- 36:57I just cannot finish them,
- 36:58which I guess is kind of fine,
- 37:00because I'm not that good of a gamer.
- 37:04SPEAKER_0: Yeah, the mini games, they are very hard.
- 37:08SPEAKER_0: They're like, we...
- 37:09SPEAKER_1: You're making me feel better.
- 37:10SPEAKER_1: Thank you.
- 37:11SPEAKER_0: They're very, very hard.
- 37:13In the beginning,
- 37:14we put the mini games right next to the levels where more people played them
- 37:17and yeah,
- 37:20people did not like them because of their difficulty.
- 37:22SPEAKER_0: So we got demolished.
- 37:24SPEAKER_0: So now we hit them away a little further.
- 37:27So not as many people play them anymore,
- 37:29and they're clearly identifiable as end game content,
- 37:33but you can obviously imagine people jumping into those mini modes before
- 37:36even finishing the game.
- 37:37SPEAKER_1: That's a bad idea.
- 37:39SPEAKER_0: Bad idea, bad idea.
- 37:44SPEAKER_0: So arguably, they're a bit too difficult.
- 37:47But that's because the mini modes for me are an outlet to make some of the crazy
- 37:51things that I find fun.
- 37:53And that's one of the problems you also always have as a developer,
- 37:57is that you're usually quite a lot better than the average player who will
- 38:03play your game.
- 38:04So whenever I balance levels or whenever you balance levels,
- 38:10you have to make it so they essentially feel stupid easy.
- 38:14SPEAKER_0: So most of the levels in Thronefall, they're so easy.
- 38:18The best players in Thronefall,
- 38:21they can finish most levels with only the king without building a single building.
- 38:26SPEAKER_1: Really?
- 38:27SPEAKER_0: Yeah.
- 38:28SPEAKER_0: That should tell you...
- 38:30SPEAKER_1: Okay.
- 38:30SPEAKER_1: Now you're making me feel bad.
- 38:32It doesn't work with every level,
- 38:33but in a lot of levels,
- 38:35certainly I think the first three or so,
- 38:37certainly the Ice Boss and zone you can beat with just the king.
- 38:41SPEAKER_0: No buildings.
- 38:44SPEAKER_1: Well, you can do that as a developer and pro gamers, yeah.
- 38:49SPEAKER_0: Yeah, I'm not sure I can do that.
- 38:51SPEAKER_0: I've seen people do that.
- 38:52Going back to that question,
- 38:53as a developer,
- 38:54do you just get this feel of what a good difficulty is for a game that will
- 38:59actually be sold and people will enjoy it,
- 39:02people like me,
- 39:03people like the casual gamers who are people who are buying it,
- 39:07or do you get it from the feedback?
- 39:10SPEAKER_1: Because it feels like this is a really big difference, right?
- 39:13You're so much better,
- 39:16but yet you need to produce something that will,
- 39:18I don't know,
- 39:19I guess be fun and enjoyable for the general public.
- 39:26SPEAKER_0: Yeah.
- 39:27One thing that a lot of people forget about balancing is that first of all,
- 39:31you need to make a game that is balanceable and easy and somewhat reasonable
- 39:36to balance.
- 39:37The problem with strategy games like Thronefall is that they are very,
- 39:42very,
- 39:43very snowbally.
- 39:44SPEAKER_0: And snowbally means that if you're ahead, you get further ahead.
- 39:48SPEAKER_0: If you're behind, you get further behind.
- 39:50So that's why games like Thronefall and strategy games in general,
- 39:53they have a tendency to feel very frustrating very quickly because if you
- 39:57fall behind a new economy,
- 39:59then it becomes exponentially more difficult.
- 40:02SPEAKER_0: You're never going to be able to catch up again.
- 40:03Whereas on the other side of the spectrum,
- 40:05if you get ahead and you get exponentially more and more money every round,
- 40:09then suddenly it's going to feel way too easy.
- 40:12And this was one of the main problems I had when balancing Thronefall is just
- 40:15this runaway dynamic of it all that either it feels way too easy or it feels way
- 40:21too difficult.
- 40:23And I didn't really find a perfect way to deal with it in Thronefall that one
- 40:29way I actually try to counteract this is by making enemies drop gold.
- 40:33That was also something that wasn't always the case from the very beginning,
- 40:37but I very quickly realized that we need that because the economy you build
- 40:43yourself with all of these houses,
- 40:45there are too many runaway effects with it.
- 40:49So the enemies dropping gold basically smoothes that curve out a little bit
- 40:53and makes it so that I can predict a bit more how much gold you're going to have
- 40:56at which point in time.
- 40:59So you're saying that you made it that the enemies might drop more gold when
- 41:03you're sensing you're actually doing some smart calculations or no?
- 41:08SPEAKER_0: There's no shenanigans going on like that, but it's just math.
- 41:13If the enemies in wave 10 drop 50 gold,
- 41:19then I just know you're going to have at least 50 gold and that makes it...
- 41:22SPEAKER_1: Got it, got it, got it, got it.
- 41:23Makes it easier to balance than trying to predict how many houses you're
- 41:27going to have and so on,
- 41:28so that.
- 41:29SPEAKER_1: Oh, I understand.
- 41:30SPEAKER_0: Yeah.
- 41:33SPEAKER_1: So after you build this game, you've now ported it to Nintendo Switch.
- 41:36SPEAKER_1: What did that porting look like from a technical perspective?
- 41:38SPEAKER_1: Did you do the porting?
- 41:40SPEAKER_1: Did someone else do the porting?
- 41:44We outsourced the porting to Warp Digital,
- 41:51and that's all of the three games I made so far are available on Switch.
- 41:56SPEAKER_0: Islanders was ported by CodeSync.
- 41:59SPEAKER_0: Will You Snail?
- 42:00was ported by No Gravity Games and this one was now ported by Warp Digital.
- 42:03SPEAKER_0: So this is the typical way I go about it.
- 42:06SPEAKER_0: I just give it to somebody else and I'm like, "Please port this."
- 42:11And the typical standard deal you do for these kind of things is you get a
- 42:16revenue share.
- 42:19SPEAKER_0: And other than that, you basically don't have to do anything.
- 42:22SPEAKER_0: They take care of all of the publishing, they take care of the porting.
- 42:25It's like completely hands-off and very free,
- 42:28which is why if you have a successful game on Steam already,
- 42:31it's pretty much a no-brainer to just give your game to one of these companies
- 42:35because they're like,
- 42:37"Okay,
- 42:38we'll take care of everything and we'll just get a revenue share of what we
- 42:42make."
- 42:43I'm assuming they're used to taking,
- 42:44especially if it's Unity C#,
- 42:46running on this code base,
- 42:48they'll take it,
- 42:48they'll know how to change it,
- 42:50they'll know all the performance issues,
- 42:52etc.
- 42:52SPEAKER_1: The testing, you said.
- 42:53SPEAKER_0: Yeah.
- 42:54That sounds a pretty sweet deal as a...
- 42:57Well,
- 42:57it's kind of a positive thing if you do make it to a successful...
- 43:00And I guess,
- 43:02am I wrong to assume that this makes it a bit more tempting as an indie
- 43:07developer to start on Steam?
- 43:09Because if you do well on Steam again,
- 43:11it's kind of easy enough to find someone who you can strike a deal with this way.
- 43:17SPEAKER_0: Yeah.
- 43:18SPEAKER_0: Obviously Steam is the go-to place for indie developers anyway.
- 43:22There's pretty much,
- 43:23if you want to make indie games,
- 43:24there's almost no way you're getting around Steam.
- 43:29In most cases,
- 43:31even if you have other platforms,
- 43:33Steam will still be 90% of the revenue.
- 43:35So anything you sell on Switch and especially on other consoles is more like a
- 43:40little bonus on top what you're making on Steam.
- 43:44SPEAKER_0: Steam is, I think by far the biggest market for indie games.
- 43:49SPEAKER_1: Trust isn't just earned.
- 43:50It's demanded,
- 43:51whether you're a starter founder navigating your first audit or seasoned
- 43:54security professional skill in your governance risk and compliance program,
- 43:58proving your commitment to security has never been more critical or more complex.
- 44:03SPEAKER_1: That's where Vanta comes in.
- 44:05Vanta can help you start or scale your security program by connecting with
- 44:08auditors and experts to conduct your audit and set up your security program quickly.
- 44:13Plus,
- 44:13with automation and AI throughout the platform,
- 44:15Vanta gives your time back so you can focus on building your company.
- 44:19Businesses use Vanta to establish trust by automating compliance needs
- 44:22across over 35 frameworks like SOC 2 and ISO 27001.
- 44:27With Vanta,
- 44:28they centralized security workflows complete questionnaires up five
- 44:31times faster and proactively manage vendor risk.
- 44:34Join over 9,000 global companies to manage risk and improve security in real time.
- 44:39For a limited time,
- 44:40my listeners get $1,000 off Vanta at vanta.com/pragmatic.
- 44:43SPEAKER_1: That is vanta.com/pragmatic for $1,000 off.
- 44:50SPEAKER_1: You've been building games for a while.
- 44:52SPEAKER_1: A lot of us listening have not built games, but we probably played games.
- 44:55SPEAKER_1: I played Thronefall.
- 44:56SPEAKER_1: I actually love the game.
- 44:58It's just a great way to expend in 10 minutes,
- 44:5820,
- 45:02and then it turned into a few hours.
- 45:05How did you get started with this,
- 45:07starting from the idea and then what were the actual first steps and talking
- 45:13about both yourself,
- 45:14but you also had a co-founder or a co-developer?
- 45:18Yeah,
- 45:18Thronefall,
- 45:19we made in a team of two,
- 45:21and what I just talked about is a perfect gateway to how we started making
- 45:25Thronefall because what we do in the very beginning is very much opening up
- 45:30our search space very wide.
- 45:32SPEAKER_0: We try out a lot of different ideas.
- 45:36So this is what typically you call the prototyping phase where you make a lot
- 45:40of different,
- 45:41essentially mini games or prototypes where you try out different ideas and
- 45:47that way,
- 45:47you're basically making a bunch of measurements in the search space and just
- 45:51looking which direction you find most promising and then you keep searching
- 45:55in that direction.
- 45:56SPEAKER_0: So that is pretty much exactly what we did for Thronefall.
- 45:59We made a bunch of different prototypes in Unity,
- 46:02just one or two days working on little mini games.
- 46:06So we had one prototype about spreading flowers,
- 46:10we had a climbing prototype,
- 46:14we had a card game and all sorts of different things.
- 46:19And then after exploring some of these ideas a little deeper,
- 46:23some of them we scrapped instantly.
- 46:25We slowly honed in on what we wanted to make and it just turned out to be Thronefall.
- 46:31SPEAKER_0: I don't know how exactly we arrived there just in this specific case.
- 46:36And when you say you're exploring them,
- 46:39is it just you kind of building this mini prototype game and then just playing
- 46:43around with it,
- 46:44seeing how it feels,
- 46:45showing it to your friend who's also working on it and just bouncing ideas?
- 46:51SPEAKER_1: Is that kind of how it is?
- 46:52SPEAKER_1: Or can you help us imagine, how does this phase look like?
- 46:56So the one challenge that you face a little bit is that you need to find a
- 47:01compromise between something that you want to make and something you think
- 47:06that will sell,
- 47:07and that's one of the main challenges.
- 47:10First of all,
- 47:11finding something that will sell is already difficult enough by itself,
- 47:14but then finding something that will sell that you also like to work on,
- 47:18that is fairly tricky.
- 47:22So the way you approach it is usually you just make a lot of things that you can
- 47:27imagine working on that you're kind of interested in,
- 47:30and then you are trying to measure or guess how well it would do on the market.
- 47:36And then you move forward with the ideas that you think are most promising.
- 47:42SPEAKER_0: How exactly it looks like.
- 47:45I come here in the morning,
- 47:46I sit down,
- 47:47I open Unity,
- 47:48I'm like,
- 47:50"WhatdoIwanttomaketoday?"
- 47:52I just come up with a random idea that I find interesting and I just make it.
- 47:57The thing that I think that is important to realize is that you can make games very,
- 48:02very quickly.
- 48:03If you just want to make a simple prototype without any fancy graphics or
- 48:06menus or whatever,
- 48:07you can get that up and running super,
- 48:09super quickly.
- 48:12What takes the most amount of time is just polishing it up and bringing it to
- 48:15production quality.
- 48:16But if you just want to try out a random little idea,
- 48:19you can mostly do that in one or two days.
- 48:21SPEAKER_0: So that's what you just do repeatedly for let's say two months or so.
- 48:26SPEAKER_0: Both I and Paul pumped out a bunch of prototypes.
- 48:30SPEAKER_0: We show them to each other.
- 48:31SPEAKER_0: We played each other's prototype.
- 48:32We talked about them of course,
- 48:35because through talking about them,
- 48:37we try to figure out,
- 48:39"Hey,
- 48:39whichofthesecouldactuallydowellonthemarket?"
- 48:42And also,
- 48:43in a team you have...
- 48:44That makes it even more important because you have another circle,
- 48:46like what do I like working on?
- 48:48SPEAKER_0: What does Paul like working on?
- 48:49SPEAKER_0: So we have to find the overlap between all of those things.
- 48:52SPEAKER_0: So that's why obviously talking about these prototypes is pretty crucial.
- 48:58SPEAKER_0: And usually what you do is you do specifically gameplay prototypes.
- 49:02So you start with gameplay and then only once you're sure what the gameplay is
- 49:06going to be,
- 49:07then you move on to visual prototypes where you basically repeat the entire
- 49:11process that you did for gameplay for the visuals.
- 49:15So you try out a bunch of different visual styles and see what you like working on,
- 49:19what's efficient to make,
- 49:21what do you think will do well in the market.
- 49:24SPEAKER_0: That's really...
- 49:25So specifically with Thronefall,
- 49:27you said,
- 49:28okay,
- 49:28you had the prototypes and then you figured it out,
- 49:29you're going to make Thronefall,
- 49:30but what did that look like?
- 49:31You kind of knew the concept that it will be this tower defense game with...
- 49:38I'm putting it like that based on how I played with it,
- 49:42or was it a lot more vague at that point still?
- 49:45SPEAKER_0: So you go through different phases.
- 49:48SPEAKER_0: When we started, we were very open.
- 49:50SPEAKER_0: We have no idea what we want to make.
- 49:52SPEAKER_0: We'll just throw anything out there.
- 49:55As mentioned,
- 49:55there were some completely wild things like a game where we're golfing flowers,
- 50:00like a golf ball essentially.
- 50:02SPEAKER_0: So some wild ideas.
- 50:06And then at some point we narrowed down our search a bit further and we were like,
- 50:11okay,
- 50:11we want to make a minimalist game about building a kingdom.
- 50:16SPEAKER_0: We're like, "Okay, the search is getting out of hand.
- 50:18SPEAKER_0: There are too many options, decision paralysis.
- 50:22SPEAKER_0: Let's focus down a bit more."
- 50:25And then we made a bunch of prototypes that specifically had to do with
- 50:31managing tiny kingdoms.
- 50:32I made a turn-based game and I made a Plants vs.
- 50:37Zombies-like game where there are hordes coming from the side and you shoot
- 50:40them all down.
- 50:42And Paul at some point,
- 50:45just had this little mini game where you had a castle in the center and you had a
- 50:49little figure that you could control around it,
- 50:54and there were enemies going towards your castle,
- 50:57and all you were trying to do is basically defend your castle by smashing on
- 51:01the enemies.
- 51:02SPEAKER_0: And it had a very nice rhythm to it.
- 51:05There was the day phase where you could build new towers and mills that would
- 51:10give you more coins,
- 51:11and there was the night phase where you would defend your castle against
- 51:14these enemies approaching.
- 51:16SPEAKER_0: It was a very simple top-down 2D prototype.
- 51:21SPEAKER_0: And yeah, when you see it, you see it.
- 51:26SPEAKER_0: I don't know.
- 51:26It was like we both immediately agreed that this was going to be the game we
- 51:31were going to make because it was just ways ahead of all of the other
- 51:35prototypes we've made so far.
- 51:38So based on the kind of feeling and your understanding of like,
- 51:40okay,
- 51:41what could work actually.
- 51:44SPEAKER_0: Yep.
- 51:45SPEAKER_1: How long did it take to get here?
- 51:47SPEAKER_1: You say you did every few days you did a prototype.
- 51:50SPEAKER_1: So we're talking a few months into the prototyping phase-ish.
- 51:55So I would say it depends on how big of a game you want to make,
- 52:01but your prototyping phase should just scale proportionally.
- 52:04So for example,
- 52:07if you want to make a game in two years,
- 52:08then maybe spend two months on prototyping.
- 52:11If you want to make a game in a month,
- 52:13then obviously only maybe spend two days or something.
- 52:16SPEAKER_0: So yeah, you have to scale that proportionally.
- 52:20And for us,
- 52:21it took a little bit longer because we went into one debt and with a card game.
- 52:27SPEAKER_0: We thought our kingdom management game is going to be a card game.
- 52:32Then after about a month of development and me over-engineering a cool system,
- 52:39we realized that's not it,
- 52:42and we just scrapped it.
- 52:45And then when this happens,
- 52:46you've put in a bunch of work already,
- 52:48months of work,
- 52:50you just throw away the code or archive it and boom,
- 52:53that's it?
- 52:54SPEAKER_0: Yeah.
- 52:55So honestly,
- 52:58I was grateful that we noticed it all because in the worst case,
- 53:02you develop the entire game.
- 53:03SPEAKER_0: You spend two years and then you notice that doesn't work.
- 53:06So whenever I notice relatively early that something doesn't work,
- 53:11it's not like,
- 53:12"Ah,
- 53:12whatashame."
- 53:12SPEAKER_0: It's more like, "Phew.
- 53:13SPEAKER_0: We dodged a bullet there."
- 53:16SPEAKER_0: It's more that feeling.
- 53:17SPEAKER_0: So it's more a feeling of relief than anything else.
- 53:23And then once you,
- 53:24okay,
- 53:25figure it out,
- 53:25this is a concept,
- 53:26this is a game that we're going to go.
- 53:29SPEAKER_1: We're happy with the prototype and let's continue on.
- 53:32SPEAKER_1: How do things look like from there?
- 53:34SPEAKER_1: Because I assume that that's when things change, right?
- 53:36SPEAKER_1: Did you start to do some sort of planning?
- 53:39SPEAKER_1: Is it just more kind of keep building?
- 53:42I'm kind of poking to,
- 53:44at some point,
- 53:45did you feel that you need to bring in more structure?
- 53:47SPEAKER_1: You're still just two people.
- 53:48You've already built two games,
- 53:49so you kind of know what you're doing here.
- 53:51SPEAKER_0: Yeah, exactly.
- 53:53So as mentioned after the gameplay prototype,
- 53:56we had another phase for the visual prototype because the visuals are also
- 54:00very important,
- 54:02and you repeat the entire process.
- 54:04SPEAKER_0: You basically have the gameplay already done, and what you do is you...
- 54:07SPEAKER_1: Sorry.
- 54:07Can you just help me understand for the gameplay prototype,
- 54:11what can we imagine?
- 54:12Is it squares and circles moving around or super low fidelity versus the visual?
- 54:18SPEAKER_0: Exactly.
- 54:18The gameplay prototype is essentially what we call programmer art,
- 54:22which is just a bunch of squares,
- 54:24sand boxes with colors.
- 54:26And for the art prototype,
- 54:29what we do,
- 54:30this is our process,
- 54:31is we scrap all of the gameplay once again.
- 54:33So it's not like we delete it,
- 54:36but we start on an empty project without any gameplay whatsoever,
- 54:39and we just build a scene without any logic.
- 54:43SPEAKER_0: We just open my game engine and try to create a nice looking scene.
- 54:47SPEAKER_0: It doesn't have any motion, doesn't have any logic.
- 54:49SPEAKER_0: We just try to make it look nice.
- 54:52And if you decouple the gameplay from the visuals,
- 54:56you can move a lot faster in your visual prototype.
- 54:59If you try to bring it all together immediately,
- 55:01then you're not prototyping anymore,
- 55:03you're just building the game.
- 55:05So you open an empty project and you start messing around how things should
- 55:12look like.
- 55:13SPEAKER_0: You put little 3D models in there.
- 55:16SPEAKER_0: You experiment with different camera scales, with different zoom levels.
- 55:20And then we had a massive mirror board with tons and tons and tons of screenshots,
- 55:25like hundreds of screenshots of different experiments we made.
- 55:29And then you look at all of them next to each other and once again,
- 55:32try to assess which of them look the best or the most attractive.
- 55:38SPEAKER_0: And yeah, once we found something, we're happy there.
- 55:42SPEAKER_0: Then we move into production.
- 55:44And you're right,
- 55:44that's exactly the point where you have to start getting a bit more organized.
- 55:51SPEAKER_0: In a team of two, it's sort of fine.
- 55:54SPEAKER_0: It's not like there's insane management overhead.
- 55:59You only have to manage communication between two people,
- 56:02which is fairly manageable,
- 56:03I would say.
- 56:06SPEAKER_0: So we just have to agree who works on what.
- 56:11SPEAKER_0: So I usually do gameplay programming and content creation and balancing.
- 56:18SPEAKER_0: So I write most of the gameplay logic.
- 56:22SPEAKER_0: And then Paul is very good at basically user experience design.
- 56:27So he writes a lot of the UI systems,
- 56:30which is a surprising amount of work.
- 56:32The UI system and all of that,
- 56:34it's probably 40 to 50% of the work goes into that.
- 56:40SPEAKER_1: But the UI, what is the difference between the UI and the gameplay?
- 56:44So the UI is basically all of the overlays that you can click with your mouse,
- 56:49like the settings menu and all of the different things that can pop up.
- 56:54And then for the UI,
- 56:56you have to make sure you can control it with the keyboard,
- 56:58you have to make sure you can control it with the mouse,
- 57:00you have to make sure you can control it with a gamepad,
- 57:03it has to also look nice and so on and so forth.
- 57:06SPEAKER_0: So it's a fairly, fairly massive task.
- 57:11SPEAKER_0: But we shared gameplay programming, I would say 50-50.
- 57:14SPEAKER_0: And then Paul did most of the UI stuff.
- 57:18SPEAKER_1: Nice.
- 57:19And then what was the point where you actually had a more traditional
- 57:23schedule in place of like,
- 57:25okay,
- 57:26we now know what we're doing.
- 57:27SPEAKER_1: We need to build the core engine, the levels, the different structures.
- 57:33SPEAKER_1: I'm just throwing out stuff.
- 57:34I don't know if this is how you actually structured it,
- 57:36but I'd just be interested.
- 57:37How did it look like when you're like,
- 57:38okay,
- 57:38we know roughly how this is going to go,
- 57:41and obviously at what point could you even announce dates?
- 57:46Because I just look back on the history and I saw when people were very excited
- 57:50when they saw the first demos,
- 57:52and of course what they asked is,
- 57:53"When is it ready?
- 57:54SPEAKER_1: When will it be out?"
- 58:00So basically when you have the two prototypes,
- 58:02if you have the gameplay prototype and the visual prototype,
- 58:04then you know very precisely what you're going to make already.
- 58:09SPEAKER_0: And then there are a couple of more questions that you have to answer.
- 58:12So when we build the first level,
- 58:14then we still have to answer questions of how do the actual enemies,
- 58:18not the prototyping enemies,
- 58:19how do the actual enemies look like?
- 58:21SPEAKER_0: How do the actual units look like?
- 58:23SPEAKER_0: How do they actually interact with each other?
- 58:25SPEAKER_0: Which upgrades are there?
- 58:26SPEAKER_0: So the search process definitely continues.
- 58:30SPEAKER_0: You have to keep trying out different ideas.
- 58:33But basically I would say the amount of communication between Paul and I that
- 58:37was required gradually goes down over time.
- 58:40In the beginning,
- 58:41you have to communicate a lot and you have to organize a lot.
- 58:45And then as you know more and more about what you're building,
- 58:48you have to communicate less and less.
- 58:50And then essentially by the end of the project,
- 58:53we talk maybe once a week and both of us just know what we need to work on.
- 58:57SPEAKER_1: And so Paul and you, are you both were in the same city, same country?
- 59:03SPEAKER_0: We are both in Germany and we studied game design together at university.
- 59:09So Paul is also one of the people I made Islanders with at university,
- 59:15and we just teamed up again for Thronefall here.
- 59:20SPEAKER_1: Nice.
- 59:20And then,
- 59:21so you've now gone through the development phase and you've been developing
- 59:27this thing for closer to I guess two,
- 59:30three years.
- 59:31SPEAKER_1: I'm curious, what does a launch look like for an indie game?
- 59:36SPEAKER_1: You launched it on Steam, right?
- 59:38SPEAKER_1: Was it only Steam or did it launch elsewhere on launch day?
- 59:42SPEAKER_0: On launch day, it was only on Steam.
- 59:43SPEAKER_0: Now it's also available on Nintendo Switch.
- 59:48SPEAKER_0: How does a launch look like?
- 59:49SPEAKER_0: It's surprisingly anticlimactic.
- 59:52So there's a button in the Steam backend where you're just like launch the
- 59:57game and you click it.
- 59:59And then they have a couple of things that pop up where they're like,
- 1:00:03"Are you really sure you want to launch the game?
- 1:00:05SPEAKER_0: Are you really, really sure?"
- 1:00:06SPEAKER_0: And then you click, "Yeah, yeah, yeah, yeah, sure.
- 1:00:07SPEAKER_0: Launch the thing."
- 1:00:09And then it's just launch and you sit there and you're kind of like,
- 1:00:14"Okay."
- 1:00:18You have to pick your launch date somewhat carefully,
- 1:00:22but also because everybody tries to pick their launch date carefully.
- 1:00:26SPEAKER_0: It also kind of doesn't matter.
- 1:00:28It's a little bit like trying to outsmart the market when you're buying
- 1:00:33stocks or something.
- 1:00:34SPEAKER_0: Everybody tries to be smarter than you.
- 1:00:36So in the end,
- 1:00:37it doesn't really matter when you launch because the good spots are already
- 1:00:43very crowded and then the spots that are not so good are less crowded.
- 1:00:48SPEAKER_0: So it kind of all makes up for itself.
- 1:00:50SPEAKER_0: It doesn't really matter too much when you launch, I think.
- 1:00:53In theory,
- 1:00:53it does,
- 1:00:54but the market dynamics make it so that it doesn't matter too much.
- 1:00:59SPEAKER_1: Yeah.
- 1:00:59Well,
- 1:01:00I guess beyond some of the common wisdom of software people will not pay too
- 1:01:04much attention.
- 1:01:06But yeah,
- 1:01:06I guess it's nice to hear that the things that people think matter don't
- 1:01:11matter that much.
- 1:01:13SPEAKER_1: One more topic on the development itself.
- 1:01:15What were some challenges that you would say were more challenging with this game?
- 1:01:21I'm just throwing in some ideas,
- 1:01:22may that be performance,
- 1:01:23binary size,
- 1:01:26structure,
- 1:01:27whatnot.
- 1:01:28SPEAKER_1: What made this one more challenging than the other ones that you built?
- 1:01:32So the main challenge for this one,
- 1:01:36for me personally,
- 1:01:37was everything related to pathfinding.
- 1:01:41SPEAKER_1: Oh, interesting.
- 1:01:42SPEAKER_1: Tell me more.
- 1:01:44SPEAKER_0: I'm not sure if you're aware of algorithms like A* and so on.
- 1:01:51SPEAKER_1: Very much.
- 1:01:51SPEAKER_1: You'd be surprised.
- 1:01:53On some interviews,
- 1:01:54if you interviewed to Google,
- 1:01:55Facebook,
- 1:01:56et cetera,
- 1:01:56you are well suited to study these things because they might ask it.
- 1:02:00So even though we don't really use it,
- 1:02:01and this is a common thing with engineering,
- 1:02:04that's actually not true.
- 1:02:05In some of the things,
- 1:02:06there's pathfinding and like nodes,
- 1:02:09computers,
- 1:02:10where to go.
- 1:02:13A typical interview question will be how does Google Search search between
- 1:02:17all these things?
- 1:02:17SPEAKER_1: So in theory we do it, but you actually are using it.
- 1:02:25SPEAKER_0: Yep.
- 1:02:25So the way this works in Thronefall is you see there's basically this blue
- 1:02:32overlay grid here on the ground,
- 1:02:34and every triangle here is essentially a node and they're all connected.
- 1:02:39And whenever a unit has to go somewhere,
- 1:02:41it just basically performs A* pathfinding on these nodes.
- 1:02:47SPEAKER_0: And this is a ready-made system.
- 1:02:50SPEAKER_0: This A* system is something we pulled from the asset store.
- 1:02:53SPEAKER_0: We did not make this ourselves.
- 1:02:55But of course you still have to customize it to a certain degree to your own needs.
- 1:03:02But hold on,
- 1:03:03just so I understand,
- 1:03:04the units definitely don't move on those paths,
- 1:03:06do they?
- 1:03:07SPEAKER_1: That doesn't look like the path that the units take to me, or they do.
- 1:03:12SPEAKER_1: Maybe I'm just misunderstanding it.
- 1:03:14SPEAKER_0: They do.
- 1:03:15They do move on...
- 1:03:17If you want to perform A* pathfinding,
- 1:03:19then first of all,
- 1:03:20you need a node graph.
- 1:03:21SPEAKER_0: Right?
- 1:03:24SPEAKER_1: A node graph, yes, yes, yes.
- 1:03:25SPEAKER_0: So this is the graph.
- 1:03:27SPEAKER_1: Yeah.
- 1:03:27SPEAKER_1: Also, that's a graph.
- 1:03:28SPEAKER_1: Yeah.
- 1:03:30SPEAKER_0: That's not the path the units takes.
- 1:03:31SPEAKER_1: That's a graph that they perform to search.
- 1:03:34SPEAKER_0: Exactly.
- 1:03:36SPEAKER_0: And this graph is also dynamically updated.
- 1:03:38SPEAKER_0: For example, when I build a castle center here.
- 1:03:42SPEAKER_1: It's a node.
- 1:03:42SPEAKER_1: You know it doesn't actually...
- 1:03:45SPEAKER_0: Then you see there's a hole in the graph now where the castle center was.
- 1:03:49SPEAKER_1: And it's now connected that way.
- 1:03:51SPEAKER_0: Exactly.
- 1:03:52And this is all automatically updated and done by the plugin we purchased
- 1:03:59from the asset store.
- 1:03:59So you can see here,
- 1:04:02we can define these shapes,
- 1:04:03which kind of shapes should be cut into the graph and so on and so forth.
- 1:04:08But then actually making the units behave properly and take the correct path,
- 1:04:12it's such a nightmare because you also have walls that certain units can go
- 1:04:18through and other units cannot,
- 1:04:19and then the default path finding doesn't support all of those features.
- 1:04:23SPEAKER_0: So then you have to find workarounds.
- 1:04:25SPEAKER_0: Then those workarounds cause new problems.
- 1:04:28SPEAKER_1: Did you need to worry about unit collision or... I don't think so.
- 1:04:31SPEAKER_1: Right?
- 1:04:31SPEAKER_1: In this game, they can go through each other.
- 1:04:35SPEAKER_0: No, they do collide.
- 1:04:36SPEAKER_0: So there's...
- 1:04:37SPEAKER_1: Okay, so you need to worry about that as well.
- 1:04:41SPEAKER_0: Yes.
- 1:04:42SPEAKER_0: It's partially taken care of by, once again, by the plugin we purchased.
- 1:04:47SPEAKER_0: So it has what's called local avoidance.
- 1:04:52SPEAKER_0: For example, if I write through them, you can see the...
- 1:04:56SPEAKER_1: That's local avoidance.
- 1:04:58SPEAKER_1: And so plugin does that.
- 1:05:00SPEAKER_0: That is all luckily handled by the plugin.
- 1:05:04SPEAKER_1: Just a quick question.
- 1:05:05From a tech perspective,
- 1:05:07is that property,
- 1:05:08would that be code that is executed on each of the units,
- 1:05:12like a mono behavior for example?
- 1:05:14SPEAKER_1: Or is it some more global thing?
- 1:05:17So in this case,
- 1:05:18it's executed locally,
- 1:05:20and that's because our game is not very well optimized.
- 1:05:25SPEAKER_0: It's kind of similar for most strategy games.
- 1:05:27Like most strategy games,
- 1:05:29if you've played any,
- 1:05:30oftentimes they have a unit limit of 200 or so.
- 1:05:33And the reason for that is usually not for gameplay reasons,
- 1:05:36but for performance reasons.
- 1:05:37Because you're more than 200 units,
- 1:05:39then at some point you're going to burn out your CPU.
- 1:05:45So yeah,
- 1:05:45this is all handled on the objects individually,
- 1:05:48and it's not very well optimized to be quite frank.
- 1:05:51SPEAKER_1: I mean it works and we have pretty powerful CPUs.
- 1:05:54SPEAKER_0: Yeah, exactly.
- 1:05:56And then of course,
- 1:05:57you also have the things that they're not exactly moving on the nodes.
- 1:06:02So you basically also have to do some post-processing on those paths so that
- 1:06:11if they can go straight through a node,
- 1:06:14then they should take the straight part.
- 1:06:17And if they're cutting around corners,
- 1:06:19they need to go in the corners here.
- 1:06:21And at the beginning,
- 1:06:23there were all kinds of problems,
- 1:06:24like they're getting stuck on corners and so on.
- 1:06:27SPEAKER_1: Okay.
- 1:06:28SPEAKER_0: Yeah.
- 1:06:29But also the walls cause a lot of problems because you can see my units,
- 1:06:33they can go through the walls,
- 1:06:36but the enemy units,
- 1:06:37they cannot go through the walls.
- 1:06:39SPEAKER_0: So now what should they do here?
- 1:06:40SPEAKER_0: Should they try to go through this store?
- 1:06:42SPEAKER_0: Should they try to go around?
- 1:06:44SPEAKER_0: And it was a bit of a nightmare.
- 1:06:46SPEAKER_0: And there are still some issues with it, but yeah.
- 1:06:49SPEAKER_1: Well, now the enemy meetings are mostly just attack the walls often.
- 1:06:52SPEAKER_0: Yeah, indeed they do.
- 1:06:54They basically pretend like they can walk through it and they don't know that
- 1:06:59they can't.
- 1:06:59SPEAKER_0: They're confused.
- 1:07:02SPEAKER_0: Why can I not go through that wall?
- 1:07:04See,
- 1:07:04but I feel these are the things that as a developer,
- 1:07:07you're probably a little bit pulling your hair about it or unhappy,
- 1:07:12but until we talked about this,
- 1:07:13I never noticed it as someone who played the game.
- 1:07:16So there's this joint of like,
- 1:07:18oh,
- 1:07:19you think it's a problem,
- 1:07:20but the customer or the user doesn't really.
- 1:07:24Yeah,
- 1:07:25but that's also why you need different node graphs here,
- 1:07:29for example,
- 1:07:29there's also one node graph specifically for enemy units.
- 1:07:34And you can see the enemy unit node graph has sort of a hole in the node graph
- 1:07:40here where the gate is.
- 1:07:41And then the player units,
- 1:07:43they don't have a hole here,
- 1:07:44they have a thing that they can go through.
- 1:07:46SPEAKER_0: And then there's also a separate node graph for the flying units.
- 1:07:51SPEAKER_1: Oh, yeah.
- 1:07:51SPEAKER_1: Oh, yeah.
- 1:07:53SPEAKER_0: So to answer your question, what was the biggest hassle?
- 1:07:57I think for me personally,
- 1:07:59the pathfinding was the biggest hassle from a technical perspective.
- 1:08:04And then from a design perspective,
- 1:08:06I would say probably the difficulty balancing was also a very big challenge
- 1:08:11due to the snowbally nature.
- 1:08:13SPEAKER_0: We've already talked about that.
- 1:08:14And also one of the ways we counteract that a little bit is with the mutator system.
- 1:08:18So all of the base levels are usually a little more on the easier side,
- 1:08:22and then if you want to make it more difficult,
- 1:08:24you can just play it with a couple of extra mutators.
- 1:08:27SPEAKER_0: And I feel like, in the end it worked out all okay.
- 1:08:31SPEAKER_0: But there were challenges for sure.
- 1:08:32SPEAKER_0: Yeah.
- 1:08:34SPEAKER_1: Yeah.
- 1:08:34SPEAKER_1: Gen AI, it's everywhere now.
- 1:08:37SPEAKER_1: There's like tools, etc.
- 1:08:38And I'm just curious,
- 1:08:40do you use any tools that are LLMs either for help or development?
- 1:08:45You did mention ChatGPT and also do you see any indie developers using any
- 1:08:51tools or stuff that makes your work easier?
- 1:08:53SPEAKER_1: And is it making your work easier or faster at all?
- 1:08:57It does make my work significantly easier,
- 1:09:03and I think for most people,
- 1:09:05most indie developers who say ChatGPT is not helpful for them,
- 1:09:09in my opinion,
- 1:09:10they have not mastered that tool yet.
- 1:09:12Because it has a bit of a learning curve and you need to learn what it can do,
- 1:09:15what it cannot do.
- 1:09:17But once you know what it can and what it cannot do,
- 1:09:19it is incredibly powerful,
- 1:09:23especially for beginner level questions on any subject,
- 1:09:27it's also incredibly reliable.
- 1:09:31So when we talk about Gen AI and Gen AI tools you use,
- 1:09:33is it ChatGPT mostly for you?
- 1:09:36Yeah,
- 1:09:37I bounce back and forth a bit between ChatGPT and Claude,
- 1:09:41but currently I'm back at ChatGPT.
- 1:09:43SPEAKER_0: I think the o1, the o series is pretty good at coding.
- 1:09:49SPEAKER_1: And what kind of stuff did you do with it or do you do with it?
- 1:09:54SPEAKER_0: So one very common thing I like to do is I like to write skeleton code.
- 1:10:02SPEAKER_0: So I essentially write an entire script, just a skeleton code.
- 1:10:05So there are the functions in there,
- 1:10:08but in the functions,
- 1:10:09there's just a to do write this function or something like this.
- 1:10:14And if you have a skeleton code like this,
- 1:10:17ChatGPT is incredibly good at filling that in for you.
- 1:10:19SPEAKER_0: So that's just a little speed hack that I drew.
- 1:10:24I come up with the architecture,
- 1:10:25I define exactly what I want to happen,
- 1:10:28but I don't implement it myself.
- 1:10:31I'm just like to do implement this function and from the inputs and the context,
- 1:10:37ChatGPT can figure out what I want the function to do.
- 1:10:39And this doesn't work for everything,
- 1:10:41but for boilerplate stuff that you just can't be bothered with,
- 1:10:44it works incredibly well.
- 1:10:46And then also sometimes there are subjects that you just don't know that much about.
- 1:10:50SPEAKER_0: For example, shader coding is entirely different.
- 1:10:54SPEAKER_0: Discipline and shader code looks very complicated.
- 1:10:57SPEAKER_0: It's very difficult to read if you're not familiar with it.
- 1:11:00So I feel like ChatGPT can also act a bit like a translator there where you copy
- 1:11:05in a bit of shader code and ask,
- 1:11:07"Hey,
- 1:11:07what does this do?
- 1:11:09SPEAKER_0: Where should I implement this and that?"
- 1:11:11And it's just pointing you in the right direction because it's not perfect at everything,
- 1:11:17but it knows enough about everything that can help you with those weird
- 1:11:21disciplines that you don't maybe know enough about to deal with yourself.
- 1:11:26And instead of having to learn shader code and spending months on that,
- 1:11:31I can just basically ask ChatGPT and it makes it so much easier and everybody
- 1:11:37who's like,
- 1:11:38"Yeah,
- 1:11:38butithallucinatedonetimeandIhadtorewriteit."
- 1:11:42SPEAKER_0: Yeah, sorry, but that's your fault.
- 1:11:44SPEAKER_0: You didn't use it very well.
- 1:11:47SPEAKER_0: That's I guess my take, yeah.
- 1:11:51And do you use GitHub Copilot at all,
- 1:11:53or no,
- 1:11:53you just use ChatGPT because what you mentioned of doing the to dos cetera,
- 1:11:57Copilot might be able to do that.
- 1:12:00SPEAKER_1: Did you try it or not?
- 1:12:01SPEAKER_1: It didn't stick.
- 1:12:02SPEAKER_0: I actually haven't tried it.
- 1:12:04SPEAKER_0: I probably should try it sometime, but I haven't tried it so far.
- 1:12:08And I'm also a little afraid of what it might do to my workflow because I wanted
- 1:12:14to be intentional when I use it.
- 1:12:17I don't want it to be constantly running in the background and doing things,
- 1:12:22at the very least not yet.
- 1:12:23SPEAKER_0: So I'm fairly happy with my workflow there at the moment.
- 1:12:28Honestly,
- 1:12:28if you have a workflow that works,
- 1:12:31that's one complaint that I have heard and people have turned it off.
- 1:12:34SPEAKER_1: It's not just Copilot, but there's a lot of things where they prompt you.
- 1:12:38It does just show you,
- 1:12:40and after a while it can be annoying and it can get in the way of deep work.
- 1:12:46SPEAKER_0: I want to use it intentionally and when I want to use it.
- 1:12:50SPEAKER_0: And I also don't want to get in the habit of using it when I shouldn't.
- 1:12:57So as mentioned,
- 1:12:58I think there are very specific cases when you should use it,
- 1:13:00and there are also specific cases where I should deliberately not use it,
- 1:13:04and I want to be able to make that call.
- 1:13:07SPEAKER_0: And I am sure you can do that with Copilot.
- 1:13:09SPEAKER_0: You can probably turn it off and stuff.
- 1:13:10SPEAKER_0: But yeah.
- 1:13:11SPEAKER_0: This just works for me at the moment.
- 1:13:14Talking about indie game development as a broader picture,
- 1:13:18what are some things that you wish you knew before getting into indie development?
- 1:13:24Because so far we've talked about what I feel is more of the engineering part
- 1:13:27and a little bit of the art,
- 1:13:28which is the code,
- 1:13:30the design,
- 1:13:30those things.
- 1:13:31But I'm going to suspect that there's a lot of other things going outside.
- 1:13:35SPEAKER_1: I know you do, for example, the YouTube videos.
- 1:13:37SPEAKER_1: You mentioned you do music.
- 1:13:39What were all these other things that oh,
- 1:13:41turns out they're kind of part of building a game with a small team?
- 1:13:46SPEAKER_0: The one thing I hate most is bureaucracy.
- 1:13:49SPEAKER_1: Really.
- 1:13:49SPEAKER_1: What kind of bureaucracy?
- 1:13:53SPEAKER_0: Taxes, filling out forms for Steam.
- 1:13:56SPEAKER_1: Oh, accounting.
- 1:13:58SPEAKER_0: Accounting.
- 1:13:58SPEAKER_0: That's the one thing nobody tells you about.
- 1:14:01Dealing with legal documents,
- 1:14:04creating all of these deals,
- 1:14:06writing back and forth with lawyers.
- 1:14:08SPEAKER_0: It's like I just can't be bothered.
- 1:14:11Luckily,
- 1:14:12it's not a super big portion of the work I do,
- 1:14:14but it's just the most annoying part by far that nobody really talks about.
- 1:14:19SPEAKER_1: Nope.
- 1:14:23SPEAKER_0: Yeah.
- 1:14:23But other than that,
- 1:14:24I think what's pleasant about being a game developer for me personally is
- 1:14:28that you get to wear a lot of different hats.
- 1:14:31So you get to make graphics,
- 1:14:33you get to make music,
- 1:14:34you get to write code,
- 1:14:36you 3D model,
- 1:14:37you texture,
- 1:14:39you do sound design,
- 1:14:41you come up with cool systems and write cool tech,
- 1:14:48and this is a little bit of everything.
- 1:14:50SPEAKER_0: And I think that's exactly what makes it awesome and fun.
- 1:14:54And the one thing,
- 1:14:57as mentioned,
- 1:14:57this is also oftentimes underestimated is the UI coding,
- 1:15:01all of the overlay menus and so on,
- 1:15:04very annoying and super happy,
- 1:15:06I have Paul who's actually good at that and does it with a bit of joy as well.
- 1:15:12SPEAKER_0: That's a huge relief.
- 1:15:14Speaking with some other indie developers that you know,
- 1:15:18if several listeners are software engineers who know how to code very well,
- 1:15:22but they might be thinking of getting into indie development,
- 1:15:25what advice would you have for these people in starting to build their own
- 1:15:30games and publishing them?
- 1:15:33First of all,
- 1:15:34resist the urge to build your own engine,
- 1:15:37unless that's specifically what you want to do and get joy out of.
- 1:15:40SPEAKER_0: If I just want to enjoy building my own stuff, sure, go ahead.
- 1:15:45But if all you want to do is make a successful indie game,
- 1:15:48don't write your own engine.
- 1:15:49SPEAKER_0: That's step number one.
- 1:15:51SPEAKER_0: Just use either Unity, Godot, GameMaker, Unreal.
- 1:15:55SPEAKER_0: There are lots of good options to choose from.
- 1:15:57Pick one of those because as mentioned,
- 1:15:59it does make a lot of it a lot faster.
- 1:16:02And one of the main things you need as an indie game developer is speed,
- 1:16:07because it really is.
- 1:16:10If you're making games alone or in a tiny team of two or three people,
- 1:16:13you need insane speed to even be able to finish your game.
- 1:16:19And even if you are fast,
- 1:16:21you still need to purposefully pick a very small game that's going to be
- 1:16:26manageable for you to make.
- 1:16:29The main thing that people,
- 1:16:31or that new developers I think should know is that games don't automatically
- 1:16:37sell better if they're bigger.
- 1:16:39SPEAKER_0: That's not the case.
- 1:16:42SPEAKER_0: So you need a good payoff to effort ratio.
- 1:16:48SPEAKER_0: That's what you're really after.
- 1:16:49So you want as much bang for your buck,
- 1:16:52and if you spend twice as long,
- 1:16:55then your game needs to make twice as much money to make up for it.
- 1:16:59And that is often not that easy to achieve because the bigger your project gets,
- 1:17:04the more technical depth you build up and the slower everything gets.
- 1:17:08So the bigger your project is,
- 1:17:10the harder it is to make that return on investment.
- 1:17:13So actually smaller games are much,
- 1:17:16much easier to make successful because if you make a game in half a year,
- 1:17:21then it has much lower requirements to be successful.
- 1:17:24SPEAKER_0: And also people actually do like small games, believe it or not.
- 1:17:28SPEAKER_0: People really do small focused experiences.
- 1:17:30SPEAKER_0: I've seen it a lot for the games I build, for some of my friends build.
- 1:17:36SPEAKER_0: There is a market for small and focused experiences, so that's 100%.
- 1:17:42Well,
- 1:17:42I'm going to go on a stretch in a little bit,
- 1:17:44but I'm an example,
- 1:17:46and I think a lot of software engineers who have day jobs working eight to 10
- 1:17:52hours a day at a company,
- 1:17:53going home,
- 1:17:54potentially having other things to do,
- 1:17:57you just don't have as much time.
- 1:17:59And a lot of us,
- 1:18:01we were able to afford the indie game of 10,
- 1:17:5920,
- 1:17:5930,
- 1:17:5940 euros,
- 1:18:06and sometimes I personally feel it's a better use of my time to pay for a game
- 1:18:10that is shorter,
- 1:18:12but very enjoyable because I do not have time to go through the $70 game.
- 1:18:18SPEAKER_1: I just won't be able to finish it.
- 1:18:20And when I see that it's like 80 hours or 160 hours to finish,
- 1:18:23I'm like,
- 1:18:24no,
- 1:18:24it's a no go for me.
- 1:18:26So there's that part which is,
- 1:18:28this is one of the reasons I love indie games.
- 1:18:30SPEAKER_1: You can finish it and feel that it's kind of complete.
- 1:18:33Okay,
- 1:18:33there's a little bit of many things,
- 1:18:34but I'm kind of happy with that personally.
- 1:18:37SPEAKER_0: That's exactly it.
- 1:18:38SPEAKER_0: And you're not alone with that.
- 1:18:39SPEAKER_0: A lot of people have day jobs.
- 1:18:41That's a very normal thing and people don't have endless time to play video
- 1:18:45games anymore.
- 1:18:45So that's why in the indie game market in particular,
- 1:18:50small games are completely fine and quality is way more important than quantity.
- 1:18:56So first of all,
- 1:18:58if you want to go from engineering to game design,
- 1:19:02then don't write your own engine.
- 1:19:04And also not only that,
- 1:19:07you also,
- 1:19:08I think you have to resist that urge to build technical systems right away.
- 1:19:13Even an engine,
- 1:19:16I think a lot of people who come from an engineering direction,
- 1:19:19they have the urge to build their MMO system before they even test it if it's
- 1:19:24fun or not.
- 1:19:25So take your time,
- 1:19:27take it slow,
- 1:19:28approach it from more of a design perspective where you do care about the user
- 1:19:33experience first and only once you figured that out,
- 1:19:36then you can start worrying about how you want to engineer the system behind it,
- 1:19:41but figure out the experience first and then go into the engineering part of it.
- 1:19:46SPEAKER_0: I think that's very important.
- 1:19:48SPEAKER_1: Thank you.
- 1:19:49In terms of learning how games are built,
- 1:19:55again,
- 1:19:56coming from a background where you do know coding,
- 1:19:58so that's not a problem,
- 1:19:59but the frameworks are different,
- 1:20:01the tools are different.
- 1:20:03SPEAKER_1: What kind of resources did you use to learn?
- 1:20:06SPEAKER_1: And also you did something that a lot of listeners will have not done.
- 1:20:09SPEAKER_1: You've actually done a degree in game design.
- 1:20:11I'm curious on how much that actually helped you become a better game developer,
- 1:20:16and would you recommend a more focused course like this,
- 1:20:20which is not just a watch a YouTube tutorial kind of thing,
- 1:20:23but actually spending a bit more focused effort and how that worked for you?
- 1:20:30I think it's completely possible to be 100% self-taught when it comes to game development.
- 1:20:34SPEAKER_0: There are enough resources out there to learn it yourself.
- 1:20:41I think the main thing university did for me is that it connected me to a lot of
- 1:20:48great people.
- 1:20:49SPEAKER_0: I really have to give a big shout-out to my game school for that.
- 1:20:53I studied game design at HTW Berlin,
- 1:20:56the bachelor game design degree,
- 1:20:58and it was very,
- 1:21:00very valuable.
- 1:21:01SPEAKER_0: I just want to make the very clear, it was super valuable for me.
- 1:21:05They did have great coaching,
- 1:21:07they did have great courses and so on,
- 1:21:08but all of that stuff you can teach yourself.
- 1:21:12Maybe it's a little more efficient if you do this in a specific way or something,
- 1:21:16but you can 100% teach that to yourself.
- 1:21:19But one thing that was just immensely,
- 1:21:21immensely,
- 1:21:21immensely valuable was just the people I met there because they basically
- 1:21:29curated a list of really awesome people,
- 1:21:31and that was incredibly valuable as it turned out,
- 1:21:37because I went on to start a company with some of them.
- 1:21:42And I guess part of the reason is that they have an application process where
- 1:21:46obviously they only select a portion of the people who apply.
- 1:21:51If you go to a different game school where the only requirement is that you pay
- 1:21:54them a lot of money,
- 1:21:56then you won't have such a nicely curated list probably.
- 1:22:03So if you want to go to a game school,
- 1:22:05honestly,
- 1:22:05that's one of the main things I would look for is how they curate the list of
- 1:22:13people there.
- 1:22:14Because honestly,
- 1:22:15the more difficult it is to get in,
- 1:22:18the more awesome the people you will likely meet there.
- 1:22:22SPEAKER_1: I like that.
- 1:22:22SPEAKER_1: Yeah.
- 1:22:23SPEAKER_0: Other than that, don't be worried.
- 1:22:26SPEAKER_0: You can be self-taught.
- 1:22:26SPEAKER_0: It's not a problem.
- 1:22:28How do you see success as an indie developer for those who want to get serious
- 1:22:32about it?
- 1:22:33You are reasonably successful,
- 1:22:35if I'm kind of under rating it,
- 1:22:37but you've had two big hits already,
- 1:22:40and even the third game is I think what a lot of developers would dream of.
- 1:22:44What do you think helped your success and when other indie developers ask you
- 1:22:49for advice,
- 1:22:50what did you tell them?
- 1:22:53Well,
- 1:22:53the honest answers,
- 1:22:55you have to get lucky to a certain degree,
- 1:22:58but the luck isn't in what happens after you press the launch button.
- 1:23:01The luck is in where you are born and which people you meet along the way.
- 1:23:06SPEAKER_0: I feel like especially extremely lucky with the people I met.
- 1:23:10Paul is just such a fantastic person to work with,
- 1:23:14really happy about that,
- 1:23:15and there was a lot of luck that we got to connect like that.
- 1:23:21Then besides that,
- 1:23:23I think the main thing you need to do if you really want to succeed with making
- 1:23:26indie games is you need to find the correct overlap of something you want to
- 1:23:32work on and something that also has a chance to do well in the market and
- 1:23:35figuring out what can do well in the market.
- 1:23:38That is a little bit of a science by itself,
- 1:23:40and we could probably fill an entire podcast episode about my theory
- 1:23:45crafting about that.
- 1:23:46But if I had to sum it up very quickly,
- 1:23:50it needs to be appealing,
- 1:23:51it needs to be fun,
- 1:23:52it needs to be a good game.
- 1:23:54SPEAKER_0: So the super short summary would be just make a great game.
- 1:23:59SPEAKER_0: But the problem with that is it also needs to be the right game.
- 1:24:03So a metaphor that somebody on X recently helped me refine a little bit is
- 1:24:09imagine you're selling ice cream.
- 1:24:13SPEAKER_0: It's not enough to sell the perfect ice cream.
- 1:24:16All there needs to be the correct kind of ice cream because if you're making
- 1:24:19perfect garlic ice cream,
- 1:24:22everybody's like,
- 1:24:23"Yeah,
- 1:24:23sure,
- 1:24:24it's perfect garlic ice cream,
- 1:24:25butIdon'twantgarlicicecream."
- 1:24:27So you need to make great ice cream and also needs to be a flavor that people
- 1:24:31actually want,
- 1:24:33and don't open your ice cream stand next to a bunch of other people who are
- 1:24:37already selling the same kind of ice cream.
- 1:24:39SPEAKER_0: Like a pretty decent analogy.
- 1:24:42SPEAKER_0: So you need to...
- 1:24:43SPEAKER_1: Well, yeah.
- 1:24:43I guess you need to be aware of the actual what is happening in the world,
- 1:24:47because right now,
- 1:24:48if you start to sell Dubai chocolate ice cream,
- 1:24:51it will be popular because the past few months,
- 1:24:54it's actually been a trend.
- 1:24:55SPEAKER_1: But if you did that a year before or a year after, probably not.
- 1:25:00SPEAKER_1: Those kind of things as well.
- 1:25:02Short-term trend chasing doesn't work very well with game development
- 1:25:05because it's such a lengthy process,
- 1:25:07and by the time your game comes out,
- 1:25:08the trends have already moved on.
- 1:25:10So you're really looking for those long-term trends and what really does
- 1:25:17well in the long run.
- 1:25:18You have to have a finger on what people really crave and figuring that out is I
- 1:25:25think one of the main challenges.
- 1:25:27And then also accepting that you're not making just your own dream game,
- 1:25:31but that you have to make a game for others.
- 1:25:35That is the other half of the challenge that some people struggle with,
- 1:25:39where they're like,
- 1:25:40"Yeah,
- 1:25:40butIreallywanttomakethisandthiskindofgame."
- 1:25:42And if you tell them,
- 1:25:44"Yeah,
- 1:25:44sure,
- 1:25:45you can make that game,
- 1:25:45but I'm not sure if it's going to sell all that well," then they're just like,
- 1:25:50"La,
- 1:25:50la,
- 1:25:50la."
- 1:25:54If you want to make whatever you want to make,
- 1:25:56more power to you,
- 1:25:57that's obviously perfectly fine.
- 1:26:00But if you want to succeed,
- 1:26:02then you also have to think a little bit about what is likely to succeed.
- 1:26:08And it's not as pure,
- 1:26:12it's not as idealistic as just make great games,
- 1:26:16just follow your passion,
- 1:26:17but you need to strike some compromise.
- 1:26:22SPEAKER_1: Yeah.
- 1:26:23SPEAKER_1: For sure.
- 1:26:23SPEAKER_1: Yeah.
- 1:26:24SPEAKER_1: Thanks for that.
- 1:26:24SPEAKER_1: So with that, we'll close it up with some rapid questions.
- 1:26:28SPEAKER_1: If you're okay with that, I'll just ask and then you fire back.
- 1:26:31SPEAKER_0: I'll see how rapid I can make it.
- 1:26:32SPEAKER_0: Well, I'll try my best.
- 1:26:34SPEAKER_1: Yeah.
- 1:26:34SPEAKER_1: What is the game that you enjoy playing and would recommend?
- 1:26:36SPEAKER_1: And obviously you cannot say any of the games that you made.
- 1:26:41SPEAKER_0: Specifically to engineers, I would recommend Opus Magnum.
- 1:26:44SPEAKER_0: If you haven't played, it's a great puzzle game.
- 1:26:46SPEAKER_0: You should play it.
- 1:26:47SPEAKER_0: And just in general, I would recommend everybody should play Outer Wilds.
- 1:26:52SPEAKER_0: It's a bit more tricky to get into, but give it some time.
- 1:26:56SPEAKER_0: Play Outer Wilds.
- 1:26:57SPEAKER_0: Thank me later.
- 1:26:59SPEAKER_1: I'm going to give it a go and I'll see if I'll thank you for it.
- 1:27:03SPEAKER_1: What is your favorite programming language and why?
- 1:27:07SPEAKER_0: Depends on the use case.
- 1:27:09SPEAKER_1: Oh, haven't heard this before.
- 1:27:12SPEAKER_1: Very practical.
- 1:27:12SPEAKER_1: Okay, tell me.
- 1:27:14Yeah,
- 1:27:14I think both game engines as well as programming languages,
- 1:27:20they have different pros and cons,
- 1:27:21and depending on what you're trying to do,
- 1:27:23you can use different tools like pick a tool that is appropriate for the job
- 1:27:28that you're trying to get done.
- 1:27:30SPEAKER_0: Yeah.
- 1:27:31SPEAKER_1: Spoken like a true game designer.
- 1:27:33I think maybe,
- 1:27:33I don't know enough programming languages to really make a great judgment
- 1:27:37call about this.
- 1:27:38SPEAKER_0: I know C#.
- 1:27:39SPEAKER_1: That's fair.
- 1:27:40Software engineers are often biased towards one language or the other,
- 1:27:45the strengths or the weaknesses,
- 1:27:46but I like the practical aspect of this.
- 1:27:50SPEAKER_1: What are two books that you'd recommend reading?
- 1:27:54If you want to get into game development,
- 1:27:56I would recommend 10 Steps to Making Your First Game Successful by Wlad Marhulets.
- 1:28:03SPEAKER_0: I hope I didn't screw up that name, but I can show the book real quick.
- 1:28:06SPEAKER_0: Tada.
- 1:28:08The reason I like this book is because it's a fairly easy read,
- 1:28:13very,
- 1:28:13very big font.
- 1:28:14You can go through this relatively quickly and it essentially touches on
- 1:28:18everything you need to know about making a full on video game.
- 1:28:23SPEAKER_0: It's a bit surface level, but it tells you a bit about everything.
- 1:28:25SPEAKER_0: So I think it's a very, very good starting point.
- 1:28:28SPEAKER_1: Awesome.
- 1:28:28SPEAKER_1: Any other book or one book also works.
- 1:28:31There's another one you should at least know about when you want to make games,
- 1:28:34and that is Flow by Mihaly Csikszentmihalyi.
- 1:28:38I'm not sure you necessarily have to read that book,
- 1:28:41because this one is certainly not an easy read.
- 1:28:44It's a bit exhausting to read,
- 1:28:46honestly,
- 1:28:47but maybe you can read a summary about it or something.
- 1:28:50SPEAKER_1: Awesome.
- 1:28:50Well,
- 1:28:51thank you very much for sharing all of these proper behind the scenes of how a
- 1:28:56game is truly made.
- 1:28:58SPEAKER_1: I've had a really good time just taking it all in.
- 1:29:01SPEAKER_1: Thank you.
- 1:29:02Thank you for Jonas for taking us to behind the scenes of building of the indie game,
- 1:29:06Thronefall.
- 1:29:07SPEAKER_1: The game is available on Steam and on Nintendo Switch.
- 1:29:10Jonas also documents his indie game development journey on his YouTube channel.
- 1:29:14SPEAKER_1: Check it out.
- 1:29:15SPEAKER_1: It's linked in the show notes below.
- 1:29:16For a deep dive of how to build a simple game using Unity and for the basics on
- 1:29:20game development,
- 1:29:21see The Pragmatic Engineer Deep Dives,
- 1:29:23also linked in the show notes below.
- 1:29:24If you've enjoyed this podcast,
- 1:29:26please do subscribe on your favorite podcast platform and on YouTube.
- 1:29:29SPEAKER_1: Thanks and see you in the next one.