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
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
Please log in or register to post a reply.
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)
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
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
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
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
But of course my dream is to be hired from a game dev company
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
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
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.
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
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++
Thanks everyone! Time for more practice and research!