What programs should I start learning (I am complete beginner) to become game developer?
I always loved video games, especially RPGs. Been playing D&D for decade+. And i would love to work, in future, as game developer. And story developer as well. Any/all feedback will be appreciated!
The Dark Eye for me, but I think if you list your D&D experience in a CV, it is a great plus when applying for a game company!
And i would love to work [..] as game developer. And story developer
Uh... oh... well. From your post, I guess you are still at school or a student (working part time, huh?). The thing is, when you do something as a hobby, you do a lot of things and you can put your ideas and your knowledge into a product. However, when you work at a place, it becomes increasingly difficult to fulfill all those roles. As soon as you start doing things professionally, you will be required to care so much about detail, that you won't have time for so many positions. Most game companies have different teams for different tasks. So, as a software developer, you might be able to input some rough thoughts, but it is quite unlikely that you will be a software developer and game designer. You just won't have the time. That's why I recommend choosing one which you like and try to be an expert at, and do the rest in hobby projects, if you still feel like doing them after joining a company.
What programs should I start learning
Since you are asking on a software developer platform, I will only give a rough overview of most of the stuff used, and instead focus on software development. So, the rough overview of what stuff you might want to take a look at if you would have to fill all roles of game development (assuming a 3D RPG single-player game; with freeware examples), except for software dev:
Now, software development in depth. Creating the software part of a game is a lot of work and usually again divided into several teams, since the tasks are very different all in all. Let's see. There are game engine developers (DO NOT DEVELOP A GAME ENGINE, or you will never ever create a game. Writing an engine is so much fun and creates such a drive, that you just can never ever stop again), FX developers (people who work on effect details, cinematics and shaders), game mechanic developers (the guys who implement the core functionalities and scripted things), AI developers (people who make sure the NPCs act immersively and monsters are the right degree of difficult and fun to fight). Depending on what they do, they might use wildly different tools. So let's take a look at tools they might need:
System IDE: which is an editor with many extra functions for programming, like software project management, compiler management, debugging, SCV,... The choice depends on the language you want to use. If you want some stable and proven concepts, you should go for C++, Java or C# (for example using the Microsoft Visual Studio Community Edition)
Shader IDE: same as regular IDE, just especially for shaders. Mostly a normal code editor is enough, though. VS can help you write HLSL shaders. Other than that, there is e.g. ShaderToy; however, if using Vulkan, you can use any programming language and compile that to SPIR-V (given a compiler exists).
Script IDE: same as regular IDE, just especially for scripts. Mostly a normal code editor is enough, though. One of the most popular scripting languages for games is Lua, though some engine provide their own ones (like Papyrus, in case of the Creation Engine, which was used for Skyrim, or Blueprint in UE4)
Game Studio: Developed by the engine team or a sub-team thereof. However, you might want to prefer to use an existing one (like Unity3D or Unreal Engine). They can also provide an IDE for game system development and scripting.
As you can see, if you want to develop the software side, you will just have to write text in some program specialized for that kind of text. Not much software to learn, but lots of skill and experience to gain to get there.
If you want to start out making a hobby project, I would recommend downloading one of the programs from each "rough" bullet point (my preferred one is the second option respectively). Then get Unity3D and learn JS or C#. Unity also has a marketplace, so you do not have to create everything yourself. Those tools will get you started creating your very own game.
When creating games, it's the same as with creating anything else. The first time might be really difficult, complicated and the result might look bad. Just remember: You are starting out and that was your first try. The more games you create, the better you get, the faster you finish, the easier it becomes and the better the result looks.
Also, once you feel comfy with above tools, try exchanging Unity with Unreal Engine, which is used for a great number of AAA games. It's a bit more difficult to use, because it has many more features and things to set up and keep in mind, however it is the tool used by big studios.
Even later, you might decide to drop the studio all-together and just put together your own engine using separate parts. However, that's more of a journey than a project^^ The advantage is, that you can choose components which are 100% FOSS, so you can even sell the result without worrying about licenses etc. Alternatively you might decide to pay for licenses and go professional :D
Lately, I am on such a journey, however, I want to use unconventional techniques and new ideas. That's why I base my game on a data-driven engine (Amethyst), and write my stuff in Rust. The game should be a MMORPG, though I don't have the money for many big servers, so I want to use distributed computing as the server: every computer on which the game is running is part of the server in a big P2P network. I am excited to see how well it will work out. However, since even basic Rust packages are still in alpha and beta, it is quite a slow development (I don't have too much time either way at the moment).
Marko Vidakovic thank you a lot, I don't know if I deserve that much appreciation :) I only gave you a very rough overview, still. I could write books about it, because there is so much to game development. Well, I never read a book myself, so it might be strange for me writing one. All I write is my personal experience, so you should take it with a grain of salt.
But hey, if I ever come to Serbia (or you ever come to Germany), let's meet and discuss game development over a beer or two :)
Marko Vidakovic by the way, if you have any questions, feel free to ask them, even if they are not of software-development-nature. I really love talking about game development, and that node is far too quiet lately.
Marco Alka
Software Engineer, Technical Consultant & Mentor
Welcome to the club :D
The Dark Eye for me, but I think if you list your D&D experience in a CV, it is a great plus when applying for a game company!
Uh... oh... well. From your post, I guess you are still at school or a student (working part time, huh?). The thing is, when you do something as a hobby, you do a lot of things and you can put your ideas and your knowledge into a product. However, when you work at a place, it becomes increasingly difficult to fulfill all those roles. As soon as you start doing things professionally, you will be required to care so much about detail, that you won't have time for so many positions. Most game companies have different teams for different tasks. So, as a software developer, you might be able to input some rough thoughts, but it is quite unlikely that you will be a software developer and game designer. You just won't have the time. That's why I recommend choosing one which you like and try to be an expert at, and do the rest in hobby projects, if you still feel like doing them after joining a company.
Since you are asking on a software developer platform, I will only give a rough overview of most of the stuff used, and instead focus on software development. So, the rough overview of what stuff you might want to take a look at if you would have to fill all roles of game development (assuming a 3D RPG single-player game; with freeware examples), except for software dev:
Now, software development in depth. Creating the software part of a game is a lot of work and usually again divided into several teams, since the tasks are very different all in all. Let's see. There are game engine developers (DO NOT DEVELOP A GAME ENGINE, or you will never ever create a game. Writing an engine is so much fun and creates such a drive, that you just can never ever stop again), FX developers (people who work on effect details, cinematics and shaders), game mechanic developers (the guys who implement the core functionalities and scripted things), AI developers (people who make sure the NPCs act immersively and monsters are the right degree of difficult and fun to fight). Depending on what they do, they might use wildly different tools. So let's take a look at tools they might need:
As you can see, if you want to develop the software side, you will just have to write text in some program specialized for that kind of text. Not much software to learn, but lots of skill and experience to gain to get there.
If you want to start out making a hobby project, I would recommend downloading one of the programs from each "rough" bullet point (my preferred one is the second option respectively). Then get Unity3D and learn JS or C#. Unity also has a marketplace, so you do not have to create everything yourself. Those tools will get you started creating your very own game.
When creating games, it's the same as with creating anything else. The first time might be really difficult, complicated and the result might look bad. Just remember: You are starting out and that was your first try. The more games you create, the better you get, the faster you finish, the easier it becomes and the better the result looks.
Also, once you feel comfy with above tools, try exchanging Unity with Unreal Engine, which is used for a great number of AAA games. It's a bit more difficult to use, because it has many more features and things to set up and keep in mind, however it is the tool used by big studios.
Even later, you might decide to drop the studio all-together and just put together your own engine using separate parts. However, that's more of a journey than a project^^ The advantage is, that you can choose components which are 100% FOSS, so you can even sell the result without worrying about licenses etc. Alternatively you might decide to pay for licenses and go professional :D
Lately, I am on such a journey, however, I want to use unconventional techniques and new ideas. That's why I base my game on a data-driven engine (Amethyst), and write my stuff in Rust. The game should be a MMORPG, though I don't have the money for many big servers, so I want to use distributed computing as the server: every computer on which the game is running is part of the server in a big P2P network. I am excited to see how well it will work out. However, since even basic Rust packages are still in alpha and beta, it is quite a slow development (I don't have too much time either way at the moment).