The Stack Overflow Podcast

The open-source game engine you’ve been waiting for: Godot

Episode Summary

Juan Linietsky, cofounder and lead developer of the Godot Engine, joins the home team for a conversation about what led him to create an open-source game engine, how open source is shaping game development, and the well-worn path from playing video games to learning to build them.

Episode Notes

W4 Games is dedicated to strengthening the open-source Godot Engine, a cross-platform game engine for 2D and 3D games. Their mission is “to help the video game industry reclaim their control of the technology powering their games and reverse a dramatic trend where they have to rely on proprietary solutions from an ever-shrinking number of vendors.”

To start learning more about Godot, explore some of the best games made with Godot or join the community.

Connect with Juan on Twitter, GitHub, or LinkedIn.

Today’s Lifeboat badge winner is Martijn Pieters for their answer to 'While' loop one-liner.

Episode Transcription

[intro music plays]

Cassidy Williams Hello everybody, and welcome back to the Stack Overflow Podcast, your place for all things software and technology. My name is Cassidy Williams and I'm here with my wonderful co-host, Ryan Donovan. Hey, Ryan.

Ryan Donovan Hi, Cassidy. That's a sweet intro. 

CW Oh, thanks. I'm new to it. I'm very excited to have our guest today, Juan Linietsky. He works on the Godot Engine and W4 Games and all kinds of cool game development things, and I'm geeking out over having you on the show. Juan, welcome. 

Juan Linietsky Thank you. It's a huge pleasure to be. 

CW It's really exciting to have you on the show. I think game dev in general, it feels like it's growing tremendously, and games published to Steam using Godot has been growing so strongly. It's really, really exciting to see how popular and accessible it's become, because I feel like back when I was first starting coding and everything, it was not easy to get up and running to make a game, and now Godot is doing impressively well. 

JL Thanks. Yeah, I think it's something that kind of took a while. I mean, even when I started doing game development in the late ‘90’s even playing video games wasn't something mainstream at the time. Some people would like to buy the PlayStation or the Nintendo 64 and it's something that some kids had, but I think the majority wasn't really into that and was still more niche. If you see the units sold, maybe worldwide some of them sold 30 or 40 million, and for something worldwide at the time, it was still very niche to have a game console and PC gaming wasn't very mainstream either. So I was still wanting to do games and it wasn't something mainstream and there was nothing I could use at the time. There wasn't any game engine. You had to start from scratch making your own technology from zero. Even in the ‘90’s you had what's called the frame buffer, which is like a cached memory region where you would write to and then the pixels would appear. Not even an API call, just right to this memory. And the consoles weren't very different. It was something very, very low level. And so my problem also was that I wanted to work on video games and I was from Buenos Aires so there was no game industry. If I had to work on games, I had to go live in the US or maybe France or UK or Japan and that was it, all the countries where games were made and that was it. So I was more into founding the industry here in South America. I created with other people the first companies in the very early 2000’s, like 2001 and 2002. And from there I was used to making my own game technology. And it's very interesting because I think both video games, as you say, became more mainstream but also making games became more mainstream. And for me, I was doing this as a super niche thing that nobody else understood what it was in the late 90’s, and now it's so mainstream. Everybody wants to make games and play games and it has changed so much. So I'm very happy that the world changed towards this side so it's not something so obscure and suddenly all the young kids now that go to high school want to make games. And when I was in high school, nobody had a clue what it was or even wanted to do that, or they found it very weird to make games. So I'm very happy about all these changes and all these trends and making one of the technologies that is allowing this to happen now, especially in the open source side because before Godot everything mainstream was entirely commercial. That makes me very happy. I mean, it's an awesome position to be in that was by luck in a certain sense, but I'm very happy that this is happening. 

RD Yeah. It's interesting, you say it wasn't that popular, but I remember when I was in elementary school back in the ancient days, I had a program on my Commodore-64 called Gary Kitchen's GameMaker, and it had a full Sprite studio, full synthesizer. I never actually figured out how to make games with it, but it's been, like you said, interesting to see the progression of the tools and then the engines. My experience with the engines has been with the Unreal and seeing those out there as commercial engines. What's it like working on an open source engine and what are the tools that you're building for it?

JL So that's a really good question because originally when I started making game technology it wasn't meant to be open source. The tools I started creating, maybe they were a bit different than what was out there because in my region in South America we didn't have a lot of budget to make games. Finding investment was more difficult because the investors had no idea what games were at the time. Even if you told them that at the time it was bigger than the music industry they just won't believe you. So we used to work with very constrained budgets to make games, and one of the reasons I created technology was to make it easier so you need less programmers to do things and have more visual tools, so the 3D artist, the 2D artist, the animators, the game designer, could just go into the tool and make this, and this is why I started doing these kind of tools, and also why it's a bit different. If you look at Godot and maybe Unreal or Unity, it's not the same thing. It's not like you can see something copied the other. The way Godot works is quite different. So what is very interesting is that philosophy was created out of necessity– making something very accessible, very easy to use, so the programmers who are super expensive could be reduced in the team and you could use maybe less skilled programmers working on scripting rather than C++. That was all things that happened out of necessity rather than out of vision, you could say. But what has been interesting is that when I stopped doing entrepreneurship in South America in 2014/2015, because the region is super unstable and will have to move to Spain, that having put everything open source, it looks like the kind of tools I was making, even if they weren't made for public consumptions, people still liked what I made basically. It was very lacking compared to Unreal or Unity at the time in 2014, but people still liked it. It was accessible. You could do a lot of things. So I still kept working mostly as a hobby on this for a couple of years. And fixing it and following the feedback from the users, I still was doing mostly business consulting for game companies, finding them investors, publishers, because I have my own company and have a lot of experience with that. But since I love making technology, I was still doing it as a hobby. And it was, I think from what you mentioned, it was 2017 or 18 when this French guy, GDQuest, he put out a Kickstarter saying that he was going to make a tutorial for making games in Godot, because I am a technical person who sucks at making documentation. I have no idea how to make good docs. They're still very complicated and very technical. So Nathan, his company GDQuest, was like, “Let's do a Kickstarter. I'm going to make Godot tutorials if I can make 8,000 in my Kickstarter.” And the next day he had like 50,000. It was completely crazy how many people really wanted to use this technology and how much they cared about something open source to make games that didn't depend on a company. And I think one of the things, from what you mentioned, what makes people want to use it if it's open source, what's the key point? We try to do a lot of polls and follow a lot of the feedback of the community, the Godot community, to understand exactly why they prefer it. Because you have Unity, you have Unreal and why do people still use Godot? Just less than an hour ago I had access to the numbers of games from the Global Game Jam that finished I think yesterday, and Godot has been used for about 7% of all games. In comparison to Unreal, maybe 9%, and Unity is much bigger, like 60%. But if you look at some years ago, Unity was at 80 and Godot didn't exist, and now Godot is at 7 and Unity is at 60 so it's closing the gap. And this is just with something that is entirely open source that never had any kind of publicity, investment in evangelization. We never go to any school to tell them, “Hey, teach Godot,” even though we have a lot of schools that are teaching it. So I think there is a huge demand from the general public about something like this. I think half of it has to do with the feeling of freedom that something open source gives you, like the feeling of ownership. I mean, you feel that this is something that is as good as if you owned it. If you use Unity, you don't own Unity. I mean you pay for it or maybe you use the free version, but you don't feel that you own it, that it's something that you can modify, you can talk to the developers who do everything in the open. You can't contribute much to what's going on. There's this big company and behind closed doors they make a product and you're completely at the mercy of whatever they want. But with Godot, most of the community is very passionate about participating in all the discussions and they try all the pull requests that are made and they give a lot of feedback. We opened recently a proposal system where Ian leads a request that even the lead developers and the lead contributors still open proposals before doing anything so the community can give feedback. So we have this very rich ecosystem where there's proposals open and the community will discuss. They will give feedback, they will tell us this is great, this sucks. This is missing the point, actually. You should be focusing on something else in this topic. So it's very, very interesting. So I think probably most of it has to do, as I say, with the ownership feeling, like it's something that you belong to. It's something that you can use of it as if it was your own. But the other thing that I think is making it successful is the way that we really focus on listening to the user. It has to be very user friendly. It has to be chasing the most common use cases. It's not something that has to be for the very technically skilled people. I mean the technically skilled people have all the APIs and they need to make something, they’re great. But we are focusing on making something that is for most people. They just come download it, use it easily. It has to work. So I think it's the ease of use and also the feeling of ownership. 

RD We hear a lot of people who got into programming because of games, and I think this is a low barrier to entry for people to start experimenting with programming because it's free and open source. 

JL That makes sense, yeah. The thing with Godot is that it uses by default –and this is one of the things that we had to double down at the beginning because when you're doing something new, you get lots of criticism of course. And one of the criticisms we got at first by people is that Godot uses its own scripting language, like a domain specific language. It's very similar to Python. It's like Python for games pretty much, but it's very self-contained. It only exists within the engine. The engine has the code editor inside. So it's a very, very contained environment. And this is one of the things that the existing developers at the beginning were like, “I want to use Lua or Python or something like that.” And the reality is that when it was closed we went through the work of supporting other programming languages and the friction with integrating something that is not designed for your technology was very, very strong. There were problems all over the place. And most people doing technology say, “Well, that's what it is. I can't do it better.” But for Godot, me and Ariel, who co-wrote it with me, we were very obsessive that we wanted the best possible user experience, because the easier it is, the more easy we could get new programmers to work on this and they would use the platform and it's going to be cheaper to develop with this. So magically this worked for actually people getting into a platform, because at the beginning we got lots of backlash like, “This is a custom language. Why should I learn this?” But then nine years later, we open sourced it almost nine years ago, and most of the community is very happy that we went with our own custom programming language because it's so accessible and so easy and you find everything and everything happens within this domain so you write your code and then the autocompletion happens not just with the code, but with every object that happens in your game so it's very accessible. So I think that that decision is what made it more accessible. As an example, if you look at, where all the young programmers just start writing games and publish games, if you look at the statistics there, I think you can say that there's like a hundred games, indie games, small games, published using Unity and maybe 50 using Godot, like half of it. So it shows that for those wanting to learn Godot, having such a self-contained environment but still being very powerful so you can do really complex games, that really paid off in the long term. 

CW Yeah, it's kind of like one of those things where if you have the right guardrails in place, people figure out how to be creative within those boundaries. And I feel like that can be necessary because if everything is possible then that means everything can break. And especially if you are trying to make it more accessible for new developers and people who are trying to make games for the first time, it's good to have those limits in place and APIs in place so that people can take it and then run with it, and then they can figure out the limits on their own rather than running into them by breaking everything. 

JL Yeah, it's exactly as you say, Cassidy. We have our code editor and you write the code for the game, and anything that you potentially can do wrong, the engine tells you, “Hey, this is not going to work,” or, “Are you sure you want to do this?” And then for example, you can connect events to the editor, but you can see in the code that you have an event connected to something. You couldn't do that in a regular C# or C++ editor. It guides you so you make less mistakes and you understand what is going on. So I think that really did help a lot. And most programmers generally, and especially in open source, it's my feeling that when you look at things made in the open source domain, what most programmers do is something for the other technically. If you look at things like Git as an example, Git is super, super complex and most people use it even though they don't get it and the usability is really bad, but it is the industry standard so you still use it, and this is usually a problem for a lot of people. So now we have all those tools. Git has an IDE so that it makes it easier. So the users need these kinds of things in place to make sure they don't mess up and they understand what is wrong, even if they become very skilled eventually. For learning it's very, very useful.

RD Yeah. You talked about earlier, the old systems having a frame buffer that you wrote directly to, and I know graphics is a big sort of issue for a lot of game programming. How does the Godot engine implement and simplify the graphics process for people? 

JL That's a really good question because when I started doing graphics, as I was saying, you had just this memory region, the VGA memory that was mapped to the main memory. It was 16 bits in the 286, and that was everything you had. You just write into it and that's it. And then you got the graphics APIs like Direct3D and OpenGL, but they were still more or less something that you could understand. And learning OpenGL is something you could do in a weekend and it was okay. But if you fast forward to today, you have things like Vulkan which are amazingly complex. I can't explain going from OpenGL to Vulkan, it's easily two orders of magnitude more complex, and I am not kidding. You probably have seen all the memes about drawing a triangle with Vulkan requiring 7,000 lines of code and it's no joke. I mean, there is a reason why it is like that. It's very useful that you can have so much control over everything going on when you know what you're doing. But if you don't know what you're doing, learning Vulkan is almost impossible because you don't know what things are for. Even if you do a tutorial, you are going to be learning a tutorial, but then you still don't know how to use the things that you see. And this is very, very worrying to me, and this is creating a world where people who are able to make their own technology is more rare and more rare. And you may think that it only affects the small developers, but in truth, if you see companies like CD Projekt who made The Witcher, are now switching to Unreal because for them it's too expensive to make their own technology, or 342 Studios. Lots of studios are moving to pre-made game engines because it's so expensive to do this technology now. The in-house game engine is kind of dying, and this is why I think it's so important that something like Godot exists because at least you can have something to work with that you own. It's open source. So I think open source is super important in this age where it's so difficult to make your own now. So yeah, at least you need to have something that you can work with the high complexity of everything in the graphics and other parts of the engine.

CW Yeah. Well that being said, thank you so much, Juan, for being here on the show. We are so excited to be able to talk with you about Godot and see all of the different possibilities with it. I think having an open source game engine, like you said, is something that's so important for the game dev community to grow and thrive and be accessible to beginners. If people want to get started, where should they go? 

JL I think the best is still to go to the website and try to get to do the official documentation. I know we are still a bit behind the times because all the young people prefer to just look at YouTube videos and learn to make the games. But I think it's still good to go to official documentation, which is very well thought out and very well designed by the contributors doing documentation. And then once you go there, you can look at video tutorials from people like KidsCanCode or GDQuest who make amazing tutorials on Godot. But I think it's better to first familiarize with the official stuff. We have it in many languages, so it's very accessible. 

CW Awesome. 

RD And what's the URL for the website?

JL Just pretty much, and you can go to docs and from there you have everything. 

RD Perfect. Thank you. 

[music plays]

CW It's time to shout out a lifeboat badge. A lifeboat badge is an answer score of 20 or more to a question score of negative 3 or less that goes on to receive a score of 3 or more. And this one is awarded to Martijn Pieters, who answered a wild loop one-liner. So we'll check that out and put that in the show notes. That being said, my name is Cassidy Williams. I'm CTO over at Contenda. You can find me @Cassidoo on most things. 

RD I'm Ryan Donovan. I edit the blog here at Stack Overflow. You can find me on Twitter @RThorDonovan.

JL I’m Juan Linietsky. I have a Twitter. Just search for me, I suppose, where I post Godot related stuff. But if you have never checked out Godot, I think I really recommend you do it. You're going to have a lot of fun tinkering with it.

CW Yeah! All right, thanks everyone. Bye!

[outro music plays]