- Learn the ins and outs of C# syntax - Really get a good grasp of the OOP (Object orient programming) paradigm. It's heavily relevant in game development and will likely take your time getting your head around it - Documentation They're probably the three major pieces you'll need to get out of the way if you've only dipped into the language. I somehow survived formal education at a technical college diving straight into 3D games development using jMonkeyEngine for two years, but you've the time. There are sites out there that throw random pieces of work at you which you can tackle in your prefered language, but since you're making games, you can probably come up with something small yourself. You can by all means dive straight in and get to work on your game, applying your knowledge as you go. Alternatively, you can start off with a console based game (or general application) so you can work on OOP design concepts, data structures, getting a handle on the language and getting results without delving into the realm of semicomplicated graphic and GUI handling right off the bat. Unity and Gamemaker seems to handle a fair amount of the graphical aspects for you through their included development environments, making it somewhat simple to get stuff out there. Theres a train of thought in the programming field that you don't really need to know in depth how most libraries work under the hood, with good reason as they're usually on another level of complexity that really doesn't apply to you. Personally, I'd actually suggest finding alternative libraries that lets you learn how to handle graphics and guis yourself as a seperate excercise. Why? Well, you could probably make Project Zomboid in Unity. However, and this might not be the best example considering how modular Unity seems to be - a situation may become apparent when the engine or the environment may not necessarily handle certain processes or memory in the manner that you'd like them to, leaving you with little to no options but to develop your own. Just something to think about. Theres a handful of other fluff you can work on beyond that - AI, procedural generation, rendering techniques... whatever you need to get the game feature finished. Learn a scripting language (LUA, Python, ...). It'll come in handy for automating some tasks or later on, providing an API for others to insert mods into one of your games that might increase it's longevity or interest. Take some time to learn how to read and write game design documents. For me it was a pain in the rear but it serves its purpose in a team environment. You can be a bit more lenient if your doing it lone wolf, but you still need to somehow keep track of what the hell you're working on, feature wise. Version control and backups are also something to look at, particularly off-site if you end up with hardware issues or don't want some asshole breaking into your studio and stealing all your work and making you start from almost scratch. Ahem, As you've already gathered, it's a long road and theres a mess of stuff that I haven't gone through either (deployment, proper licensing, post-release bug management, ...) - it's a constant learning experience.