Advice on Walking Forward

Geoth 101 Dec 09, 2012 at 22:36

Hello all,

Fairly new in here, although i was a kind of lurker till now. I am from a multimedia background and i am currently doing a conversion master degree on computer science to learn more about programming and broaden my knowledge. I am currently teaching myself c++ and have done javascript and c# on my first degree. I am on the stage that i am getting kinda comfortable with classes, pointers and object oriented programming and want to take it to the next level of small games.

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 :D

9 Replies

Please log in or register to post a reply.

Stainless 151 Dec 10, 2012 at 10:15

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.

Geoth 101 Dec 10, 2012 at 10:38

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?

Stainless 151 Dec 10, 2012 at 14:30

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.

TheNut 179 Dec 10, 2012 at 21:11


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 :D

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.

I can’t make any recommendations to you because it will be bias to my own personal feelings. I would recommend studying C++, but I wouldn’t brush off your C# or Unity skills. In fact, if I were in your position I would continue to advance in C# and Unity and learn C++ on the side. Starting first by writing command line tools to help augment your development with Unity. Why would I do this? First off, there’s a job market for Unity developers, as well as C#. This isn’t hobby stuff you do late at night and forget the next morning. Secondly, you’re spending more time developing games, learning how to make them better and become more productive in your development environment. If you scrub all of that, you’re going to start at ground-zero. You will spend an enormous amount of time getting your C++ development on par with Unity. By working with C++ on the side, you can slowly work on it until you’re at a comfortable level to make a switch. Thirdly, technology is a dime a dozen and we as developers are expected to know everything. Things likely won’t stop at just C# or C++ for you. You may find yourself also learning Python, or JavaScript, or Lua. You may one day be expected to learn SQL and RDMS. You may need to learn networking protocols like TCP and UDP. It’s a never ending list of requirements, so you need to work them into your life appropriately. Never shut down one major role in favour of starting another.

Geoth 101 Dec 10, 2012 at 22:51

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?

TheNut 179 Dec 10, 2012 at 23:55

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.

Stainless 151 Dec 11, 2012 at 09:57

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.

rouncer 104 Dec 11, 2012 at 10:59

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.

Geoth 101 Dec 11, 2012 at 11:03

Thanks everyone! Time for more practice and research!