2D Game Engine Development - Fundamental Architecture


Details
CLASS DESCRIPTION
NOTE: THE ROOM AND TIME WILL BE DIFFERENT FROM LAST WEEK:
- Room: 2.130.1
- Time: Sunday, 29th of June, 2pm - 5pm
We went over it a bit last time, but this week we'll be covering in more detail the fundamental structure of a game engine, particularly the game loop. We'll also be looking at how to expand and organize your engine and so you can start adding features and systems beyond what is reasonable to cram into a single file.
COURSE DESCRIPTION
Hey everyone, it's Massimo Gauthier, and I'll be hosting a course to pass on what I've learned in the past year and a half of making my own low-level 2D game engine.
Working with your own custom game engine and tools can be extremely rewarding, creatively freeing, and will make you a much better programmer in general, so I highly recommend it to anyone with an interest in games programming.
This course is intended to help you get a jump-start on low-level programming, enabling you to get a simple game up and running in a matter of days, and your own proper engine (should you choose to pursue it) in a matter of months, rather than years. Even if you choose not to fully dedicate yourself to a custom engine, this course will give you a much better understanding of:
- Engine internals; what parts and systems game engines are made of
- Manual memory management and Data-Oriented coding practices
- How projects like these are compiled and built
- How to write organized and performant software (no matter what tools you use)
This course will be primarily aimed at those with some existing experience programming games in a third-party engine such as Unity, Unreal, Game Maker, etc. By this, I mean anyone who has hands-on experience with an existing game engine, as well as a good grasp of high-level programming basics (variables, conditionals, arrays, loops, functions, structs/classes). However, everyone is welcome, even total beginners, and I'll do my best to cater to whoever shows up. Since we've had a number of people already familiar with low-level languages show up looking to get into game development, I'll also do my best to touch on general game coding topics you might pick up working with an existing engine.
We will be mostly working with the Odin language and SDL2, since that's what I'm most familiar with, but the course will be focused on teaching general concepts that should apply to most systems programming languages (C, C++, Zig, etc.) and low-level frameworks (Raylib, glfw, SDL3, etc.). You are not required to have any knowledge or familiarity with low-level languages and frameworks to participate in this course.
Please bring your own laptop, with the following installed:
- Visual Studio 2022, with the “Desktop development with C++” package installed. Necessary for code compilation on Windows (if you're on Linux, you don't need this).
- The Odin compiler. You can get the latest release here: https://github.com/odin-lang/Odin/releases/tag/dev-2025-06.
- VSCode: For editing project files. If you have a different preferred IDE, feel free to use that. You can see which IDEs support the Odin LSP here: https://github.com/DanielGavin/ols?tab=readme-ov-file#clients
- Github Desktop: For tracking and backing up changes to your project(s). If you have a different preferred solution for source control, feel free to use that.
If you're struggling to install anything, don't worry, we can help you get up and running. However, for the sake of time, please at least make an attempt to get a "hello world" program working. You can find instructions on how to do so on Odin's overview page: https://odin-lang.org/docs/overview/
IF YOU DID NOT ATTEND THE INTRODUCTORY CLASSES I would highly recommend familiarizing yourself with the following resources before attending for the first time:
- The first class slides. These cover the basic theory and philosophy behind why one should build their own engine, as well as some fundamental low-level concepts: https://docs.google.com/presentation/d/1gfxF_gJYaTLY4c2dd9YdqwpTsejZPIDaBk_iZXGJejo/edit?usp=sharing
- The Odin website’s Overview page and FAQ. This is the best free resource for understanding the basic features of the language: https://odin-lang.org/docs/overview/
- Understanding the Odin Programming Language by Karl Zylinski. If you have 20$ to spare, this covers the basics of the language in a much more approachable and structured way compared to the overview page: https://odinbook.com/
- My Blog, specifically the posts covering how I wrote my own engine. This is aimed at non-programmers, but can be useful for gaining a high-level overview of what we’ll cover in this course: https://blog.massimogauthier.com/p/game-engine-dev-explained-for-non
- Core Dumped on YouTube. An excellent channel which can help you understand what actually goes on at a low-level and in hardware. Many of his videos are not immediately relevant to even low-level programming, but they can help give you an understanding as to why certain low-level practices exist: https://youtube.com/@coredumpped?si=bCOXZY0nKkQ4hhnH
(Note that the course will not cover creating your own renderer or any sort of graphics programming outside of the very basics, but I may do so in a future course.)


2D Game Engine Development - Fundamental Architecture