2024-11-26
About
Why this site
What if you had a book about programming, but you could also run the code examples? That is the thought behind this site. The goal was to create the tools that I would have loved to have if I had to start over.
A core aspect of this site will be sharing knowledge about what is helpful to know as a game developer. You will note that I tend to directly explain concepts through code wherever possible. That’s because coding a lot is really important. Once you get the main concept you can dig deeper in the theory that’s explained afterwards or just go ahead and use the tools in practice.
If you go to college or university to get a degree in computer science you will get to know a lot of theory behind programming. That theory is certainly very helpful once you get deeper into programming and it will provide you with great tools for problem solving. However for most of a game developers daily tasks you don’t need this theory. Hard math problems are usually provided as libraries you can use without you ever having to spend time understanding the roots of it. One example is vector math, you don’t have to know how the cross product is derived, but it’s really useful that it’s a tool you can use to create perpendicular vectors.
About me
I’ve been making games ever since I was around twelve years old using a tool called GameMaker. It was fantastic and really easy since you could just drag an drop assets, add some logic and voila! You have a game! Countless hours during high school computer science classes have been spent creating and of course testing these games. Programming in GameMaker (1.0) could be done in two ways: you could add logic by dragging some predetermined blocks or write your own code in a scripting language. The image below is how the backend of all of my earliest games looked:
When I first started out I tried to plow through a lot of simple boring examples to learn Java, but I always wanted to reach the end where the fun stuff was: creating visuals. Since then I’ve made games using XNA (which is now continued through Monogame) in C#, some clones of retro games using PyGame in Python, and most of my working career has been in C++. Picking up a different programming language is very simple when you have some experience with programming in any language, but it’s also extremely hard to master any programming language. This duality seems inconsistent but it’s only natural: the goal of many languages is to make a tool for a specific problem or domain to be solved better than existing ones, however it should also feel as familiar as possible in order to make transitions easier.
Game programming has been my hobby for a long time and I made a career out of it. I’m fortunate to work with a set of amazing and experienced programmers (some of them have 25+ years in the industry) as well as engineers just rolling out of college, all of which probably get paid a lot more then they would earn doing any other branch of software engineering. I’m not sponsored to write any of this.
Making games is challenging, and that’s what makes it so interesting to work in this industry. You get to work with state of the art problems on a regular basis. There exists a separate engineering job for any specialization you can think of: AI, UI, audio, physics and graphics to name the big ones. We’ll take a look at all of them here!
Credits
This project would not have been possible without the following projects: