This is a lightly edited transcript of the above Youtube video. It's the first part of a series on game development where I'll be building an entire game step by step and sharing the process in public.
Hi I'm Brass Harpooner and I'm going to take you on a journey through the land of game design and development. I've been wanting to build a fully fledged game for a long time and I'm going to share everything about it on my Youtube channel, from strategic design decisions to the nuts and bolts of game development and even marketing. So feel free to subscribe if you want to follow along.
Before I start please note that while I'm an experienced programmer I'm a novice when it comes to game design and so I'm going to be learning along with you, and you can tell me if you want me to linger on a particular aspect and even suggest improvements to the game.
The game I'll be building will be called Cyberglads, a nice and quaint retro name. You'll learn more about it with every video that I put out.
If you want to support me I've got a Patreon page; you can find the url in the video description below. Among the benefits I'll be offering my patrons (in addition to my eternal gratitude obviously) you can get early access to new versions of the game and even to the game's source code.
So without further ado let's get started.
The first choice that any game designer faces is what kind of game engine we need to build our game. There's an abundance of choice in this day and age, and one of them is still to build your own game engine from scratch. If you're interested in taking that route I recommend you follow Casey Muratori's Handmade Hero channel where Casey builds an entire game from scratch without using any existing engine. If you follow Casey's lead you'll inevitably learn a ton about low-level graphics programming and other hardcore skills.
But while I want to build a completely new game I'm going to cheat a little bit and use an engine that comes with a whole bunch of features out of the box and an underlying architecture that I'm going to rely on to build my game. That's probably going to end up being a pretty good choice for beginners with moderate programming experience.
Choosing the right engine is an important decision that should be guided by the type of game you want to build, the platform that you're targeting - whether it's PC, web, console, mobile, what your business model is going to be among other factors.
I'm going to look at 3 engines - Unity, Unreal Engine and Godot. I shortlisted these three but there are many others that might pique your interest, including Game Maker, CryEngine and Armory. If you want to build your own game I suggest you try some of these out and make up your own mind.
Let's start with Unity. For a lot of indie game devs Unity is a no-brainer. It's beginner-friendly, great for 3D and it supports more target platforms than any other engine. They also have a huge community, good documentation and an amazing asset store where you can download characters, sounds, particle effects and more.
While Unity has a reputation for not supporting high-end graphics as well as Unreal Engine, they've recently taken strides to cater for increasingly elaborate games.
Unity's main competitor is Unreal Engine by Epic Games. Epic was originally and still is a game studio. Unreal Engine is the result of Epic's decision to commercialize the game engine they were using internally.
Unreal is usually considered as having the most advanced graphics capabilities and allowing the creation of photorealistic games. It's ahead of the game in terms of dynamic lighting and particle management. A lot of AAA game franchises are built on top of Unreal Engine, including PlayerUnknown's Battlegrounds, the Bioshock series and of course Epic's own blockbuster Fortnite.
If you want to program games using Unreal Engine you'll need to learn C++ but it also comes with a visual scripting interface called Blueprint that lets you design a game without doing any programming.
Unreal Engine is free, but there's a catch — you'll need to pay 5% in royalty fees on all game revenues include in-game purchases if your games ever make any money. The code for Unreal Engine is available on Github — you just need an account on unrealengine.com.
Now where these last two game engines are probably the most popular around you may not have heard much about Godot.
Godot officially came out in 2014 but had been in development for 7 years prior. Compared to the other two engines, it's entirely free and open source and part of the Software Freedom Conservancy (a charity that supports open source projects).
Version 3 came out recently and its featureset rivals the big commercial engines. It's very lightweight and loads fast and it features a clean node-based architecture.
Its main programming language is GDScript, a Godot-specific scripting language loosely based on Python, but it now also supports C# and C++.
It isn't backed by the same kind of big money as Unity or Unreal Engine, but Patreon backers ensure that the main contributor Juan Linietsky and a core team of contributors can keep working on Godot for the foreseeable future.
Predictably, the list of games that have already been built using Godot is a lot less impressive and doesn't include any household names. But give it a few years and things could look very different. You might want to check out some of the games by OKAM Studio where Godot was first used and the iOS version of Deponia by Daedalic Entertainment.
So you guessed it I'm going go the unconventional route and I'm going to pick Godot to build my game. I'm not saying that it's better than the engines I mentioned previously, but it does have a few advantages.
The fact that it's free doesn't hurt but it's not the main reason, at least for me. It's very easy to get into and it's great for beginners. Picking up GDScript isn't much of an issue for me because I already know Python.
More importantly, Godot's developers obviously care deeply about developer experience and that's something very important to me. They've gone to great lengths to avoid bloat and to make performance a priority. Building games is fun in Godot and games should be all about having fun in my book.
Finally, the type of game I'm looking to build is a good match for Godot. You'll learn more about it in my next video.