I started being interested in GameDev waaaaay back in about 1999. That’s a long time ago, more than 20 years. And in that 20 years I have released 0 games. I’ve made a lot of half-completed games, games that I could play and think were fun. I’ve even completed one game, completed in the sense that it had everything a release would need, but it wasn’t anywhere near interesting enough to release.
But then that’s not why you make games as a solo hobby dev. If that’s your intent, you’re going to probably fail. Games take time and money to make. And if you think you’re going to release and sell a game, hahahaha, no. No you won’t.
A few years ago, maybe you could have. There was a brief period where people were buying small solo games. But then, as the market increased, the quality of games increased, and the expectations of people increased, and so the quality you needed to compete increased. Now you need a team of ex-industry employees with Kickstarter funding and a publisher in order to have a successful release.
That’s not to say that you can’t be successful as a solo hobby dev. Just that you will likely not strike gold and become rich. And be honest, you likely won’t make anything interesting and quality enough to try and sell. Release it for free on Itch.io, some other people might like your quirky idea.
With your expectations out of the way, how do you get started?
Learn Programming
The usual advice you’ll find online is to learn C++. C++ is a wonderful language, it’s what I use.
But it’s not easy to learn. The basics are, sure. But there’s all sorts of things in the language that inevitably will come up: template metaprogramming and polymorphism come to mind. Memory management can really throw some people for a loop.
The reason most sources will mention C++ is it’s what the industry, for the most part uses. It’s a powerful language, and it’s fast.
But you’re not making a bleeding-edge AAA title. You’re making something that requires less processing than Doom. You can use any language.
Javascript has a C-like syntax, but is a bit easier for new people. C# has so many libraries available, out of the box, that you’d never really need to do much engineering on your own. Java is a bit in the same boat as C#. There are lots of languages.
As much as you probably wish it wasn’t the case, you can’t really avoid this one. You’ll need to learn programming.
Learn and Engine, or make your own
I choose the latter option because I enjoy making the systems and architecture.
You might not. One of the things you need to discover, is why you want to make games. I want to make them because I find the systems and the engineering a fun challenge, even though I don’t make many games. I find talking about it, even if no one is listening, fun.
If you don’t find those systems and the architecture fun, then don’t do it. Learn Unity, or Love2D, or SFML, or Unreal, or Source. Every engine nowadays is free. Pick one and go with it. Don’t worry about what features they have, you won’t use most of them. Just pick the one that loads fastest on your machine, and let’s you make something fun the quickest. You’ll probably need to download all of them to work it out.
If you do find those systems and architecture interesting, then you’d want to visit learnopengl.com and Game Programming Patterns. Outside of these, you’re on your own, but that’s what makes it fun.
Start Small
This is always the advice given for all new ventures. Start small. Your ambitious project cannot be completed, you don’t have the time, multi-disciplined skill-set, or money.
Your first game should be something like Pong, or Breakout, or Tetris. Well-known games. You know exactly what you need to do (or you think you do). There’s plenty of free versions you can get your hands on to check specific things, like exactly how does the ball bounce off your racket in Pong? How many squares wide is Tetris?
Pac-Man? Forget it. That’s not a good idea for your first game. Let’s compare Breakout with Pac-Man:
Feature | Breakout | Pac-Man |
---|---|---|
Graphics | Coloured Rectangles | Sprites |
Sound | – Bounce – Break – Game Over | – Walking – Eat pellet – Eat fruit – Eat ghost – Game Over |
Music | – Game playing – Game over | – Game playing – Can eat ghosts – Game over |
A.I. | No | – Path-finding – Behaviour |
Physics | – Collision detection – Bouncing | Collision Detection |
Progression | Faster ball | Levels with increasing difficulty |
You get the idea, Pac-Man just has more. All of those things requires more from the developer. Not only do you need to make or find each sound effect, you also need to handle additional game-state that you didn’t need to handle before. The A.I. is a pretty big deal, real games tend to have one or two people dedicated to just coding the A.I..
The increasing levels is a hard one too. It’s hard enough to make a game that plays, but to then add levels, all that content takes time. In a real game, there’s a whole department dedicated to content that is separate to the department responsible for the programming.
Finish
The last step is the most crucial. Finish Pong, or Breakout, or whatever game you’re working on.