HACKER Q&A
📣 yosito

How can I learn to build a game?


I've been an app developer for 15 years, mostly making enterprise web apps and map-based apps. Stronger on the front end than the back end. I've got an idea for a multi-player game that I've been developing in my free time. I'm using Nakama game server, but I'm really feeling unsure about things architecture-wise and how a game should work. I'm using Nakama because it has implemented some of the core game features that I might need and I don't have to thing too much about that. But I'm not sure if Nakama is the right choice, and even building things on top of that, I'm feeling a bit uncertain. FWIW, the game is a simple card-based game, with gameplay similar to Cards Against Humanity at the core with some elements like Heads Up. Basically, I have a stack of cards with text, a group of players, and on each turn, a player gets a card and can do things with it. Players can also add their own cards, before or during a game, and create different decks. I have some other features I want to build on top of it, but that's the basic idea. How can I learn what a good architecture is to build such a game? And what tools should I be using? This game will be a multiplayer game that is playable from iOS, Android and web, with matches that can be joined using a QR code or a link, with or without an account.


  👤 capableweb Accepted Answer ✓
What I regret not focusing on earlier:

- Make a simple and complete game, with the full flow of "Loading > Starting > Playing > Finished > Published" as soon as you can, and do this for each "concept" you want to explore

- Try to focus on one concept you want to learn per game made

- Don't give up on the current game but force yourself to go through the full flow, even if the game itself is trash and you're 110% sure no one will play it.

- Accept that the first 10 games will be absolute crap and show almost no progress, but after that you'll see that you improve

- Note down flows and architectures that works for you when implementing those games, iterate on those ideas in future games

What engine you use is almost irrelevant, as long as you pick one and stay with it. Also, it depends on what type of game you're trying to develop.

- Unity 3D if you want something quick and basic that will be easy to find people to collaborate on in the future

- Unreal Engine if you want something complete and complex, and are fine with a slightly steeper learning curve, but also easy to find collaborators in the future

- Bevy if you want something experimental that focuses 100% on code (for now), with a large focus on parallelism and be able to write code with Rust

- Godot if you want something similar to Unity Engine but FOSS and not as feature complete (yet).

- Finally, write your own game engine in whatever language you want if you don't actually want to create a finished game but you'd rather fall into rabbit hole after rabbit hole trying to create a better engine. Lots of fun and educational, but not productive if the end goal is a published game.


👤 verdverm
Youtube, tons of long-form content & playlists

I'd pick Unity, despite the recent shenanigans. Good support for the mobile targets