Which one should i start learning programming with? C, C++ or C#?

This page summarizes the projects mentioned and recommended in the original post on /r/learnprogramming

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • SFML

    Simple and Fast Multimedia Library

  • So, based on what I've said, these are the steps I recommend that you take: 1. Learn programming in C++. No need to learn the entire language (there's a lot to learn), just the important parts e.g., OOP, the STL, smart pointers. This is the hardest part and will take a long time (6+ months) but it will be foundational to everything else. So, take your time and use all the resources at your disposal. Most game developers use Visual Studio and develop on Windows. But I'd also suggest learning CMake if possible. 1. Learn a simple library like SFML or raylib, (basically anything that helps you out with graphics, audio, and optionally physics) while making some games from scratch. You can follow some decent YouTube channels for guided projects. Try to make at two medium-sized games entirely on your own. This should take 2-4 months depending on how long you want to stay in this stage. You should also learn Git and how GitHub works at this stage. Make sure all your projects are on GitHub. This will contribute to your portfolio while being a future reference for yourself. 1. You can take two routes from this point: graphics/ game engine development or game development. Of course, you've already stated that you want to be a game developer, but I just wanted to let you know that the former is also an option. You can start with a graphics API like OpenGL or DirectX if you choose the first route. Now as for game development, I think you're more than ready to pick up any established game engine that you like. Now in case you don't know already, the world of game engines is basically ruled by a duopoly: Unity and Unreal. Unity targets the general game developer crowd and has the largest community and likewise, most tutorials and guides. Unity invests primarily in the development story while Unreal invests primarily in graphics fidelity. This is the main difference between the engines that you should be aware of at this stage. You've probably heard that game development in Unity involves coding in C# and in Unreal, C++. There's another layer of nuance to this: Unity uses C# for scripting but Unreal uses C++ to extend its engine code. In my experience, developing in Unity is a far more pleasant experience compared to Unreal and so, I think you should start with Unity first. It's perfectly ok to try out Unreal once you're done. Now for learning C#, you can skim through Microsoft's official guides and jump right into Unity tutorials. This should take no more than 3 months ideally. Yup, including learning C#. Your prior C++ experience will really help you out with C#. 1. Now you're finally ready to make serious games. Unity targets a wide range of game genres. You should take a whole year to explore these. You might want to create your own assets using tools like Blender and Krita. Try to make full games with your own assets, and make sure they playable and put them up for display on your GitHub. You can include multiplayer, tweak the scriptable pipeline, play with coroutines, events, scriptable objects and so on. Because of your prior experience of making games from scratch, not only will game development with Unity seem more intuitive, you'll also find picking up other game engines to be a breeze. 1. After two years of game development, you should be capable enough to monetize your skills. You can apply junior positions or try freelancing. You can also pick up Unreal now that you already know how developing with game engines looks like. Unreal makes it easier to develop a class of games that are harder, but definitely possible to make in Unity. Learning C++ is the hardest part about Unreal and you've already passed that stage.

  • raylib

    A simple and easy-to-use library to enjoy videogames programming

  • So, based on what I've said, these are the steps I recommend that you take: 1. Learn programming in C++. No need to learn the entire language (there's a lot to learn), just the important parts e.g., OOP, the STL, smart pointers. This is the hardest part and will take a long time (6+ months) but it will be foundational to everything else. So, take your time and use all the resources at your disposal. Most game developers use Visual Studio and develop on Windows. But I'd also suggest learning CMake if possible. 1. Learn a simple library like SFML or raylib, (basically anything that helps you out with graphics, audio, and optionally physics) while making some games from scratch. You can follow some decent YouTube channels for guided projects. Try to make at two medium-sized games entirely on your own. This should take 2-4 months depending on how long you want to stay in this stage. You should also learn Git and how GitHub works at this stage. Make sure all your projects are on GitHub. This will contribute to your portfolio while being a future reference for yourself. 1. You can take two routes from this point: graphics/ game engine development or game development. Of course, you've already stated that you want to be a game developer, but I just wanted to let you know that the former is also an option. You can start with a graphics API like OpenGL or DirectX if you choose the first route. Now as for game development, I think you're more than ready to pick up any established game engine that you like. Now in case you don't know already, the world of game engines is basically ruled by a duopoly: Unity and Unreal. Unity targets the general game developer crowd and has the largest community and likewise, most tutorials and guides. Unity invests primarily in the development story while Unreal invests primarily in graphics fidelity. This is the main difference between the engines that you should be aware of at this stage. You've probably heard that game development in Unity involves coding in C# and in Unreal, C++. There's another layer of nuance to this: Unity uses C# for scripting but Unreal uses C++ to extend its engine code. In my experience, developing in Unity is a far more pleasant experience compared to Unreal and so, I think you should start with Unity first. It's perfectly ok to try out Unreal once you're done. Now for learning C#, you can skim through Microsoft's official guides and jump right into Unity tutorials. This should take no more than 3 months ideally. Yup, including learning C#. Your prior C++ experience will really help you out with C#. 1. Now you're finally ready to make serious games. Unity targets a wide range of game genres. You should take a whole year to explore these. You might want to create your own assets using tools like Blender and Krita. Try to make full games with your own assets, and make sure they playable and put them up for display on your GitHub. You can include multiplayer, tweak the scriptable pipeline, play with coroutines, events, scriptable objects and so on. Because of your prior experience of making games from scratch, not only will game development with Unity seem more intuitive, you'll also find picking up other game engines to be a breeze. 1. After two years of game development, you should be capable enough to monetize your skills. You can apply junior positions or try freelancing. You can also pick up Unreal now that you already know how developing with game engines looks like. Unreal makes it easier to develop a class of games that are harder, but definitely possible to make in Unity. Learning C++ is the hardest part about Unreal and you've already passed that stage.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts