If you’re interested in programming games from scratch, you’ve probably agonized over how to get started.
You could use an existing tool, write everything from scratch, or do a little bit of both.
I like the idea of programming everything by hand. Learning to use an existing engine like Unity or Godot isn’t easy. If you’re going to invest hours upon hours into learning something, you may as well apply yourself to building something from scratch.
When deciding on a language, I knew I wanted the following:
I considered the following languages:
Each language has aspects that appeal to me.
When you’re learning, it’s really helpful to have an abundance of resources, and because C has been around forever, there are many examples of how to make games using C. My favorite resource, Handmade Hero, is a prime example.
I like writing C and enjoy programming with it, but I would like to have a few more modern conveniences if possible.
I appreciate Rust’s toolchain and learning resources. I wrote Rust professionally for about 6 months while working on a Substrate-based blockchain, and all of these resources helped me be productive.
But I’m sorry to say I don’t like Rust very much as a language. I found it tedious to follow along with all the traits, type aliases, impls, etc. I like simplicity, and Rust is complex.
Couldn’t I just write my own Rust code to be less complex? Of course. But Rust has one more thing I don’t like – ownership semantics.
Rust has a particular approach to memory management. It is A way to write code, not THE way. And while ownership semantics may work well in many applications, I don’t find the approach particularly compelling in a gamedev context.
I chose Odin for many reasons.
Odin is simple like C. The language is practical and offers many useful features like array programming, slices, bit sets, and more.
Odin is fast and modern like Go, but it doesn’t have a garbage collector. I want to get more experience with manual memory management, and using something like Go doesn’t allow me to do that.
Odin offers officially-maintained bindings for helpful libraries like SDL2. Unlike the Rust bindings, which are more “idiomatic”, Odin’s SDL2 bindings are identical to C, so any gamedev tutorials using C are easily translated to an Odin program.
Visit the official site for a full list of Odin vendor libraries.
And finally, as icing on the cake, I have been regularly impressed by the care and thoughtfulness that has gone into the language’s design. This is true for C and Rust, too, of course, but I want to highlight that Ginger Bill has put a lot of thought and care into how Odin works. He has made a deliberate effort to create a language that is incredibly powerful but easy to learn, and fun to program with.
At the end of the day, I want to enjoy the language I’m using, and Odin certainly delivers.
Did you like this post? Tell us
Leave a comment
Log in with your itch.io account to leave a comment.