If I have learned anything from the internet, it is that for everything there is to learn, there are no less than 1025 YouTube videos, websites, and blog posts about someone’s journey learning it. So I figure it’s time to ask not what the internet can do for me, but what I can do for the internet, and what I can do for the internet is push it one step closer to Datageddon. How will I do this? By ensuring that Google search results yields for “Game Development for Beginners” reaches a count of 1025 + 1.
Sarcasm aside, I hope to share with you what got me started in finally trying game dev, what I have learned/done so far, and why I landed on Unreal Engine 5 as the tool I will use going forward. I will leave out some of the grittier details on all of this for a follow up post on the actual project I’ve been using as a first foray into making a “simple” game.
The Final Push to the Beginning
So how did I get started trying this stuff out? If you read my prior post I mentioned that a goal of mine this year was to go full throttle on software and try to rekindle some of the fun I used to have when I was learning all of it for the first time. Around the time that I made this decision I just happened to stumble on a Tweet from Free Radical/Deep Silver that the Time Splitters franchise was being rebooted and they were looking for developers. Not only did this game make a massive impact on the way I perceive what multiplayer games should be, it’s also a game that introduced me to some basic game development concepts like level design, AI, and gameplay through it’s map builders and various unique game modes. That being said, StarCraft did show me some of the same things, but at a time when I was a bit too young to really get it.
Knowing that such a job was something I was woefully unqualified for, but that video games were something I always loved and wanted to try my hand at, I figured why not start small and see how I feel about it. After all, it had been a long time since I tried GameMaker Studio as a 12 year old and realized that I was in way over my head.
So I decided to pick up a book that could help me as a Software Engineer (in line with my existing goals) and give me some exposure to a different side of things. With that in mind I picked up Software Design Patterns by Robert Nystrom. Gaining some knowledge on design patterns, while always considering them with a bend towards game dev was everything I needed to have the self-realization that I need to try this shit out for myself.
What I’ve Been Doing
So the next question is obviously, how do you execute on your goals? With lots of stops and starts of course! As much as I wish that I was the kind of person who just decides they want to do something, finds a lesson plan, and then goes through it without interruption while learning everything they can on the way, that is not me.
Through the hobbies I have stuck with I have learned that I will often start and stop things as I find time for them, good resources to learn them, and motivation to participate in them. I don’t think this is a unique characteristic so much as a deviation from the 80’s montage of learning a skill that we’re all taught from movies is how things work. Though I want to punch the frozen cow carcasses of knowledge until my knuckles are flattened and I can develop a AAA quality game alone, with my eyes closed, that’s just not how it works.
Instead I bounced around, found helpful bits and pieces, got an understanding of the field from different perspectives, watched videos, read things, and took a few stabs at everything myself. I was able to find the /r/gamedev community on Reddit, the well known lazyfoo tutorial for beginning game programming, and several great YouTubers discussing game development at a high level (Pontypants, Mark Brown, BadGameDev), as well as those discussing at a lower level (jdh, PatchQuest).
These resources gave me a plethora of information on game development, where some of the most significant pieces of advice I was able to glean from them were: game development is a beast, don’t expect to make a fully-functional game in a month, and start small. These lessons, topped with good demonstrations on the complexity of writing a game engine from scratch lead me to wanting to work in either Unity or Unreal, especially given their marketability as a skill and wide range of available resources for learning them. Given my prior experience in C++, lack of desire to learn C# while also learning game dev, and general deference towards suffering, I landed on using Unreal 5. I’m sure at least one person laughed at this paragraph starting with “start small” followed by “I’m using Unreal”, but that’s how it goes sometimes.
Going through a beginner tutorial on some basics of Unreal 5 enlightened me to use of the tool at a high level and helped me gain some basic insight into the power of the tool as a whole. This tutorial further went through some of the impressive features new to Unreal 5, such as Lumen and Quixel MegaScans, which got me even more excited to be using the latest and greatest. That being said, in my short time using Unreal 5 I have caught more than a few bugs and have logged one officially with Epic. Them be the breaks when you decide to use a newly released tool, however, coming from a professional background of being locked into older technology stacks, I felt it best to start with the latest available, and learn it as it grows. I may end up regretting that in the near term, but one way or another Unreal 5 is the next step…
Before I ramble further, I will end this post more or less abruptly as I previously mentioned that I want to create a separate post to give some more detail on my next steps and a basic project that I plan to complete as a means to learn. The jist of that project being a basic horde survival FPS. Emphasis on the basic as I truly do want to go forward with the most consistent piece of advice I have received, start small.