My 2019 guideline: build a game from scratch

This time it's decided, I'll try to create my own game from scratch to understand the complexity a game hides. Each time I play a game I can't stop asking myself "How does it work?", "How many lines of code does the codebase have?" or "Will I be able to do this?". I can't live any longer without the answers to these questions, so I will try to create my own game from scratch and see through experimentation what I'm able to understand and implement.

I already tried this once, a few years ago, but I had chosen to do it in C because I also wanted to understand how low-level memory works, and I think it was a mistake. You can't deal with too much complexity at a time, so I will set the memory part aside, even if I'm still interested in this aspect of programming, and I will focus on the game itself. How do you create a world? How do you create the AI? How do you deal with the many things a game has to manage, like the audio, the graphics, the file system or the gameplay itself?

To put all the odds on my side this time, I decided to do this in C#, the language I know best, even if it seems that it's not the best choice to develop a game, but it's clearly acceptable for a first one. I don't want to develop the most optimized and complex game ever but just a complete working game. Maybe my next challenge will be to redo this in C, but for now I'll keep that complexity for another time.

I have already read some books about game programming; the last one, "Game Programming Patterns" by Robert Nystrom, was really absorbing and it's maybe one of the reasons why I'll try to implement a game on my own. I bought "Game Engine Architecture" by Jason Gregory yesterday to complete the picture of how a game is designed and implemented, but I think the time has come to try by myself.

The next step is obviously to find an idea for a game to develop, even if the game already exists. Why not try to redo something existing like SimCity, it could be interesting. I'm giving myself a few days to find a game concept that I could create from scratch, then I'll try to do it. In parallel, I have to decide what my strategy for the design will be. Should I use a game engine like Mono or Unity? Or even create the engine from scratch? I have decided on C# but I have to think a little more about the approach I'll use to do this.

See you in a few days or weeks for the next phase of this project.

October 24, 2018
  • .NET Core
  • Game programming