Now here is where i get confused and the crisis hits my door. My thesis was a small video game on Unity thus i have experience on that game engine. The thing that gets me confused is how to proceed. Should i invest my time on C# that is a modern language and unity that i feel comfortable with? Or keep working on my c++ skills? If i choose the c++ way, how should i approach graphics via directx?
Any and all advice would be usefull.
Thanks in advance
Depends where you want to work.
C++ skills are more useful in the professional market, a good c++ coder can work in many fields and if you get fed up with working in games (as I did) you can do other things, I have designed mobile phones, written motion detection based input systems, operating systems, all sorts of things because I am a good coder rather than a (insert game engine here) specialist.
Things like Unity are an easy way to get into the game, but in the long term they will hold you back.
Unity is not supported on every device, hell our code runs on more real world devices than Unity does.
I would avoid getting into technologies that are platform dependant. I spent a lot of time writing XNA code, then Microshaft changed everything and all that code is now useless. C# is very nice to work with, but not supported on many devices.
So what do you want to do?
Do you want to work on a particular platform?
Do you want to live in a particular place?
Treat you next step as a coding challenge. Decide what is important to you and not up for change, decide the things the you would like to do, and decide the things you do not want to do.
Once you have a list of those things do some research. If the only company where you want to live uses Unity, get good at that and go see them.
If you have a bunch of possible employers, or you are flexible about where you live, look at the employment market and see what skills they are asking for.
Thanks for the answer Stainless it's very informative! I am from Greece and especially right now this isn't the best place to be picky about a job, so i would like to be ready to work first even if it's general programming or something. But of course my dream is to be hired from a game dev company and i really like the gameplay programmer position and the technical artist.
My country though is a bit behind in game development scene, with most of the companies working on iphone and android games and not any console or pc titles and although that aint a problem i think there are diferrent languages used in any of this scenarios. I am open to relocating to another country too, so it might not be a problem in the end.
So i should continue learning c++ get a good grip to it and challenge myself with harder problems each time seems a right way. Would you have any advice too about how i should proceed graphics if i stay with c++? Learning Direct X would be the way?
Learning c++ is always a good thing.
However doing it without an aim in mind becomes boring and you tend to fail.
So start a project of your own, don't start out writing a MMORPG, start small and simple.
As for display technology, steer away from directx. Opengl would be a good start.
But of course my dream is to be hired from a game dev company
Funny. The people on the outside want in, the people on the inside want out
Game development today isn't quite the way it use to be. Learning C++ is only the beginning, your baby steps towards a much bigger world. The same goes for learning rendering APIs like DirectX and OpenGL. Once you learn these (and it's a good idea to know both), you then have to learn how to use other 3rd party libraries to do things like load images, add scripting support, playback audio, etc. Or if you want to get really technical you can learn to do this entirely on your own. Then you have to spend additional time researching game related topics like how to do AI, multiplayer networking, skeletal animations, rendering effects efficiently, good OO-design practices, etc. This list drags on further than you'd like to know.
Thanks very much for all the answers. What you said TheNut is simply the sad truth. Technology is a vast world ready to consume you and as a "beginner" you have to learn everything and it's easy to get lost on the way doing it. I am thinking if a way of planning is to follow a bit the stream of my master and right now that it focushes on c++ i should give it a bit of priority and meshing with unity and c# on weekends or when i am getting a bit stuck on c++.
Game development feels nice and right but for sure isn't neither easy nor the best thing for everyone. But even all the hardships i still like programming for a game centered aim than a bank or something.
So on the c++ learning path. I am kinda getting bored with the console applications. How should i move? Towards win32 app's or towards open gl and try playing with graphics that way?
You can use libraries like SDL to create the window and OpenGL context for you or you can roll your own using the win32 API directly. I personally rolled my own because SDL is not that good and I wanted a better designed framework. From here on in, it's all about setting up vertex buffer objects (VBO), creating texture objects, optionally creating framebuffer objects (FBO; advance subject you can leave until later), compiling shaders (vertex, geometry, fragment) and putting them together in something called a shader program. In your render loop, you load the shader program you want to render with, bind your VBO, bind any associated texture objects, then draw the bound VBO. That's the gist of it. Once you have all that in place, you'll be spending most of your time creating and manipulating shader code to render graphics. Might sound easy, but MS dropped OpenGL support long ago and the default headers in Visual Studio are out of date. You need to update them by using the latest glext.h, include it in your project, and then manually bind the GL 2.X and newer functions because they're not defined in the opengl32 library. The easiest way to do this is to use GLEW.
If you have visual studio, you can get things like Tao which provide you with an OpenGL component you can drop into a windows form application.
This works in both c++ and c# so could be really useful for you.
opengl, direct x, cuda, open cl, these 4 are the big gpu api's that get your applications running real quick. gpu programming is essential to learn for any tech-artist type applications - including games.
I dont see why you shouldnt just jump straight into opengl with c++ right now.
Thanks everyone! Time for more practice and research!