Advertisement

So what do the pros exactly use?

Started by September 02, 2011 04:01 AM
15 comments, last by vreality 13 years, 2 months ago
Hi everybody. I recently graduated from college with a BSc in CS, and I'm pretty interested in the game industry. For certain reasons I will not be able to work in the next couple of monthes, so I want to study and learn whatever would be more useful for me trying to get a job in the industry. I am already an experienced programmer (Java, C++) but I don't have any experience with anything game-related. After reading various articles and forums, I decided to start learning OpenGL and I bought the book "Beginning OpenGL Game Programming" by Dave Astle and Kevin Hawkins. Great book by the way, I just started it and it's pretty easy to follow. Although I'll keep learning OpenGL, I have a few questions in general about the game industry, that I hope somebody who's inside or knows about it can help me with. Here we go:

-What do companies REALLY use to program videogames? I'm finding certain parts of OpenGL quite tedious. If this is all there is into it, I'll shut up and just keep learning. But I also know there are engines (Unreal?), or high level tools like XNA that would make one's live way easier to get a videogame working. I understand that the industry is so big that of course every single tool is going to be used at some place at certain moment, but I would like to know what is the standard for making a common videogame. Do they start coding in C++/OpenGL from scratch? Do they use OpenGL libraries with pre-made models? Do they use a whole pre-made engine like Unreal?

-Am I doing the right thing by learning OpenGL at this point? My aim would be to land a job in the industry in a few months. I grew up playing videogames and I would like to be part of it, but I don't want to develop videogames as a hobby, only professionally (if I have the opportunity, of course). So I don't want to know what I need to learn to be able to program a videogame by myself, but what I need to do to improve my chances of being part of the videogame industry. I figured the easiest entry-level job for me to land would be as a programmer, and that I would need to learn something else besides just knowing C++ (which seems to be the standard language). However, I would be opened to any position that got me inside the industry. So my question is, what else can I do right now to improve my chances? Would it be better to stop learning OpenGL and learn something else? Like getting a game engine and get a mini-game or demo quickly working in 2 monthes so that I can show anybody?



Thank you!

Hi everybody. I recently graduated from college with a BSc in CS, and I'm pretty interested in the game industry. For certain reasons I will not be able to work in the next couple of monthes, so I want to study and learn whatever would be more useful for me trying to get a job in the industry. I am already an experienced programmer (Java, C++) but I don't have any experience with anything game-related. After reading various articles and forums, I decided to start learning OpenGL and I bought the book "Beginning OpenGL Game Programming" by Dave Astle and Kevin Hawkins. Great book by the way, I just started it and it's pretty easy to follow. Although I'll keep learning OpenGL, I have a few questions in general about the game industry, that I hope somebody who's inside or knows about it can help me with. Here we go:

-What do companies REALLY use to program videogames? I'm finding certain parts of OpenGL quite tedious. If this is all there is into it, I'll shut up and just keep learning. But I also know there are engines (Unreal?), or high level tools like XNA that would make one's live way easier to get a videogame working. I understand that the industry is so big that of course every single tool is going to be used at some place at certain moment, but I would like to know what is the standard for making a common videogame. Do they start coding in C++/OpenGL from scratch? Do they use OpenGL libraries with pre-made models? Do they use a whole pre-made engine like Unreal?

-Am I doing the right thing by learning OpenGL at this point? My aim would be to land a job in the industry in a few months. I grew up playing videogames and I would like to be part of it, but I don't want to develop videogames as a hobby, only professionally (if I have the opportunity, of course). So I don't want to know what I need to learn to be able to program a videogame by myself, but what I need to do to improve my chances of being part of the videogame industry. I figured the easiest entry-level job for me to land would be as a programmer, and that I would need to learn something else besides just knowing C++ (which seems to be the standard language). However, I would be opened to any position that got me inside the industry. So my question is, what else can I do right now to improve my chances? Would it be better to stop learning OpenGL and learn something else? Like getting a game engine and get a mini-game or demo quickly working in 2 monthes so that I can show anybody?



Thank you!


If you're starting to learn OpenGL now you probably won't land a job in the industry in a few months, sorry. (Most CS students aiming for the games industry will have made a few games in their spare time while working on their degree) (I even made my first game using OpenGL in high school).

Professionals don't use "OpenGL libraries with pre-made models" (Whatever that means) , models are data and those are loaded at runtime (These are made by artists using 3d modelling tools).

Exactly what professionals use vary greatly, most studios are using third party engines, a few make their own engines (Most studios who make their own engines also license those engines to other studios), in both cases a relativly small number of programmers actually deal with OpenGL or Direct3D directly.

Unless you are specifically interested in engine programming you'll be far better off grabbing any free engine (it doesn't really matter which one) and make a game, complete and as polished as you can.

If you want to be an engine programmer 2 months isn't anywhere near enough time but you'll have to start somewhere anyway, don't try to make an engine, make multiple games and try to reuse as much as you can between them instead and refactor those parts so that they are easy to plug into a new project. (The reusable parts will make a far better engine than anything you'll throw together without a clear use for it).

You'll probably have to rethink your stance on hobby game development aswell, its one of the best ways to get some of the experience you need to land a job in the industry.
(Any form of hobby programming is plus really, even if its not directly related to games the skills do transfer fairly well between fields)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
Advertisement
Thanks for the answer.

I don't understand why having just started with OpenGL would hurt my chances of grabbing a job in a few monthes, since you're saying that most companies normally use third party engines and only a few programmers actually deal with OpenGL. Sure you're more informed that I am about this, but I don't see why would they ask for years of experience in OpenGL if you're actually never going to directly develop on it.

I'm not really interested on being an engine programmer, I would like to pursue a career in the videogame industry as a game designer but I figured you would have to start in the bottom before anybody let you design anything. I thought in my case it made sense to start as a programmer.

So what do you recommend me do in my case? Grab a free engine and try to create a whole game by myself? I see you say it doesn't really matter what engine, but could you give me any recommendation?

Anything else you recommend me doing to start a career in the game industry? I want to go in the right direction, even if I am unable to land a job right away and have to start somewhere else before.

.. I'm pretty interested in the game industry..., but I don't want to develop videogames as a hobby, only professionally (if I have the opportunity, of course).

This is the difference between a job and a passion. The game industry seems to be looking for passionated developer and not so much for high numbers of developers.



Do they use a whole pre-made engine like Unreal?

This is the seen very often nowadays.


So I don't want to know what I need to learn to be able to program a videogame by myself, but what I need to do to improve my chances of being part of the videogame industry.

There're several ways. Like an artist you should build some kind of portolio containing atleast one or two demos/small games. You don't need to make the most funny game ever (this is the job of an game designer), but you should present some important skills.
Here are some ideas:
1. An AI demo, using some of the AI algorithm needed in game development (A*,BHT,STRIPE,..)
2. A graphic demo displaying many of the technology currently used in games, using either DirectX or OpenGL.
3. Scripting a mini game in one of the most used game engines: i.e. UDK,Unity,Cryengine
4. A small flash game.
5. Writing a small article about a certain technology (comparing shadowmapping algorithm in a terrain renderer etc.)
6. Writing some helpful tools.

Picking one of these would be a good start. Using newer, impressive technology would be a big plus. But be careful not to invent the wheel, do some research. Many in the game industry present their techniques used in certain games.

Good luck :wink:
Some commonly used C++ development IDEs in the industry are:
Microsoft Visual Studio
Codegear, later Embarcadero

It's difficult for me to tell what graphics libs people use, but I'd think OpenGL is becoming more popular with all the games for mobile platforms.

Thanks for the answer.

I don't understand why having just started with OpenGL would hurt my chances of grabbing a job in a few monthes, since you're saying that most companies normally use third party engines and only a few programmers actually deal with OpenGL. Sure you're more informed that I am about this, but I don't see why would they ask for years of experience in OpenGL if you're actually never going to directly develop on it.

I'm not really interested on being an engine programmer, I would like to pursue a career in the videogame industry as a game designer but I figured you would have to start in the bottom before anybody let you design anything. I thought in my case it made sense to start as a programmer.

So what do you recommend me do in my case? Grab a free engine and try to create a whole game by myself? I see you say it doesn't really matter what engine, but could you give me any recommendation?

Anything else you recommend me doing to start a career in the game industry? I want to go in the right direction, even if I am unable to land a job right away and have to start somewhere else before.


Its not going to hurt your chances, but a few months isn't that much time (Many CS graduates will have been making games as a hobby for several years, getting the equivalent experience in just a few months is possible but will take alot of very hard work) (Allthough if you did other projects on the side during your education those might help you, even if they're not directly related to games)

Going with a third party engine lets you get more relevant experience faster (atleast if you're not aiming to be an engine programmer) but even then it will take more than a few months to build your skills and a decent portfolio, if your goal is a design job you might want to consider making mods or even just maps for a popular game aswell.

I can't really make a good recommendation for a third party engine myself as i havn't really looked at the newer ones in depth, the last engine i worked with that i didn't write myself was idTech3 (Which is quite old now).
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
Advertisement
Moving to Breaking In.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]


If you want to be an engine programmer 2 months isn't anywhere near enough time but you'll have to start somewhere anyway, don't try to make an engine, make multiple games and try to reuse as much as you can between them instead and refactor those parts so that they are easy to plug into a new project. (The reusable parts will make a far better engine than anything you'll throw together without a clear use for it).

I understand your point and I partly agree but to say "if you want to be an engine programmer don't make an engine" sounds a lot like a zen monk saying "you'll be ready when you'll be ready". :D

My point is developing even a simple game requires time so honestly once I have an animated 3d model walking around a room it is of little use from a rendering point of view to have 10 animations instead of two, supporting 5 actions instead of 1, etc. I don't think somebody is going to decide to hire an engine programmer just because there are 10 animations instead of 3... rendering quality and speed are more important. So yes, start with a game but keep it simple also because for a beginner the reusable parts will definitely NOT make an engine.

I understand your point and I agree, focusing on a game is great because:
- you understand how to do something.
- you have code working in practice, not in theory
- you learn what to do and (more important) what NOT to do to build a flexible component

But that doesn't make an engine because if you focus on developing a game there are one million shortcuts you can (and eventually will) take. Not everthing which is good for a game is good for an engine. Actually often it isn't..

I don't want to start a D3D/OGL war... I think DX (not D3D), as a whole, has a small advantage over OGL. Being a set of different libraries and not just a renderer, you get everything you need in a (more or less) coherent style. Using 5 different libraries with 5 different programming styles and carefully make them work toghether into a robust framework/engine isn't easy. I think this is often understimated, you can't just download a library and throw it inside your engine... actually you can but that's not an engine that's some freaky puzzle!

I understand your point and I partly agree but to say "if you want to be an engine programmer don't make an engine" sounds a lot like a zen monk saying "you'll be ready when you'll be ready". :D


Not exactly. The word "engine" is very very abused in game programming. An "engine" is a set of tools and API that allow an "integrator" to put together a game. In order to become good at making engines you need to understand what things make an engine good or bad, and, contrary to naive belief, that hasn't much to do with performances (up to a point).
To become good at designing a clear software interface means being able to avoid things such as making variable XY a public field of class Z when a bogus value of XY could crash the entire game.. this isn't some kind of "magic wisdom" that comes as a gift from above to some lucky developers, it's just sign of experience made by making that same mistake over and over again.. so now you know better and design software in a more robust way.

Every game is an engine.. that's what people mean when they go "make games not engines"... but the difference between a game and an engine is that a game has "computable values": is it finished? does it work? does it crash? is it fun? An "engine" is a never ending tale with no real tangible elements to judge it.

A game becomes and engine when some of its part can be reused.. but what's the point in reusing something that isn't even working in one single game?
I see this mistake over and over on the internet... I will do a game engine that does this this and that and people will use it to make games.. no they won't, unless you prove it's actually able to deliver.

sorry to go a bit OT from your original question but the line I quoted deserved a dedicated answer.


EDIT: As for the usual api-war rant.. seriously it isn't worth. Use what you want to use to get your software done and get over with it... unless you have 3-4 completed projects behind your back using different technology you just aren't in the position of making any call.. so just pick the one with the sexiest name for you start coding and stick with it... and once you'll have 3-4 completed projects on your back you'll discover it just doesn't matter which damn api you use cause that's about 10% of your code anyway.. the time people waste on forums debating over which api is the best is inversely proportional to their real knowledge of 3D.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni


[quote name='undead' timestamp='1314951518' post='4856645']
I understand your point and I partly agree but to say "if you want to be an engine programmer don't make an engine" sounds a lot like a zen monk saying "you'll be ready when you'll be ready". :D


Not exactly. The word "engine" is very very abused in game programming. An "engine" is a set of tools and API that allow an "integrator" to put together a game. In order to become good at making engines you need to understand what things make an engine good or bad, and, contrary to naive belief, that hasn't much to do with performances (up to a point).
To become good at designing a clear software interface means being able to avoid things such as making variable XY a public field of class Z when a bogus value of XY could crash the entire game.. this isn't some kind of "magic wisdom" that comes as a gift from above to some lucky developers, it's just sign of experience made by making that same mistake over and over again.. so now you know better and design software in a more robust way.

Every game is an engine.. that's what people mean when they go "make games not engines"... but the difference between a game and an engine is that a game has "computable values": is it finished? does it work? does it crash? is it fun? An "engine" is a never ending tale with no real tangible elements to judge it.

A game becomes and engine when some of its part can be reused.. but what's the point in reusing something that isn't even working in one single game?
I see this mistake over and over on the internet... I will do a game engine that does this this and that and people will use it to make games.. no they won't, unless you prove it's actually able to deliver.

sorry to go a bit OT from your original question but the line I quoted deserved a dedicated answer.
[/quote]
I agree but that looks a lot like what I said:


focusing on a game is great because:
- you understand how to do something.
- you have code working in practice, not in theory
- you learn what to do and (more important) what NOT to do to build a flexible component
[/quote]

:blink:

The only difference is I think "a game isn't an engine". First of all different games require different features and to focus on a game won't automaGically deliver reusable components. Example: a few years ago I wrote an ENGINE for mobile games in java and at that time Nokia Serie40 1.0 dominated the market. Because of size limitations ( 180kb memory on VM and 64kb jar size) I had to strip down the code by taking ugly shortcuts. I had exactly 8 sprites on screen so I created an array with fixed size 8 in the main class then removed the sprite factory and manually loaded them at startup. As of AD 2011 (but also 2005) if you are creating a set of sprites with a new inside a for loop and then you have to take care of them all you have is a sprite class, not an engine. Yes the class can be awesome but still that isn't an engine: it's a sprite class.

To stretch this to the extreme, 100k of spaghetti code can turn out to be an entertaining game, but no way this is even remotely an engine.

This topic is closed to new replies.

Advertisement