I’m a software developer (official position: “senior principal software engineer”) in my early 40’s. I’ve been in the industry for almost 20 years now, have a leadership role among a team of at least 15 developers, and love to solve problems via programming. What I don’t love is everything else about software development: meetings, planning, estimation, ridiculous customer problems, lack of time to address technical debt, code reviews, etc. In my lead role, I only get to really code probably 40% of my time, and honestly that’s probably high amongst people in my position… but only because I push for it.
I hadn’t taken much PTO yet this year, and I was beginning to get burnt out and cranky, so I took a random week to stay at home and do nothing while my wife still worked. I got really bored. I always want a project to work on, but the only projects at home that I can ever think of are using tools that I know how to use (Java and many of its libraries). Being a gamer, though not as dedicated of one as in my youth, I’ve always been curious about making games. So, why not try and teach myself how to do so?
My biggest blocker in starting game development in the past has been my complete inability to create graphical assets. I don’t have an artistic bone in my body. With a lot of the generative AI these days, however, I may be able to generate some usable assets… or, I now realize I could just pay someone to make them for me if my development ever gets that serious. Armed with that confidence, I began researching game engines and which one I should learn about.
I really considered four, which seem to be more or less industry standard:
- Unreal
- Unity
- Game Maker Studio
- Godot
Unreal was immediately eliminated because it’s not great for 2D. Honestly, I didn’t do a lot of research of Godot, so while I didn’t really eliminate it, I didn’t choose it either. My real decision was between Unity and Game Maker Studio. While GMS is perfect for 2D games, its proprietary language GML turned me off, while Unity is also a standard in the industry, but uses C# which is actually significantly closer to my typical development language Java. And so, I chose Unity.
To learn, we must have a goal. I decided that my goal would be to re-create a sad imitation of the original Mega Man (or some bastardized version). Now I have a goal and an engine to accomplish it, so we begin to learn.
This blog, if I keep it up, is intended to document my learning and development process. Maybe it’ll be helpful for others, but mostly I just want something to look back on if I forget how to do something, or need something to re-energize me, since I usually lose momentum on my projects typically.
Can I finish the job, or will I lose my sanity once I begin juggling both learning and work at the same time? I guess we’ll find out!