General advice about Game Development

Hello Everyone,
Seeing behind the scenes of many games got me really interested in the process of making games. The amount of work, dedication and effort that goes into making a gaming simply wowed me. And there is a particular game development studio that won my heart, Naughty Dog.
So, as a kid with great aspirations I began pursuing them. I started learning Unreal Engine 4. But while working on it, I started viewing the job requirements for working in ND. But no where was it mentioned that UE4 will help. It was all about OpenGL and Direct X and C++. Luckily in my college where I am studying they do teach C++. So i started diving into OGL.
Well OGL learning process is going slow but steady.

Now have given all the background, I would like to know what skills I should aquire to land a job in ND. Is it working on OGL, or making my own engine, or making games in UE.
Now there are specific regions one should focus on, like if you are interested in graphics then ogl, if ai then ai. But I have seen people over there being recruited with a very large skillset. Moreover I feel interested in Gameplay, AI and Graphics.
So knowing C++ and OGL according to their jobs page enough. And not necessarily ND, it is a very big and successful complany. What about some other small or large company.
Thank you for reading this. Hopefully someone can just mentor me a bit.

I would say pick whatever you are best at and learn that area to perfection. Also learn rest of stuff but to some hobbyst/amateur level (so for eg. as programmer you can communicate with character artist, or other way around).

TLDR: To summarize this in a list:

-Keep up your programming and math courses
-Practice your shaders and graphics pipelining
-Study the UE4 source code, perhaps with a friend, to understand how a game engine works
-Learn source control (VERY IMPORTANT)
-Practice working with a team (ALSO VERY IMPORTANT)
-Make games

I’m still a student, but I’ll share what I know from my experiences.

If you’re a programmer, you’ll need strong programming and math skills. Video games use a lot of math. I don’t know how far you are in your program, but I’d suggest classes like Data Structures and Algorithms, some AI courses, Discrete Mathematics, Linear Algebra, Vector Calculus, and physics. If you’re in a Computer Science program, then you’ll probably have these classes covered. In fact, if you are going to be a programmer, a CS degree would probably be fine. I’m assuming that you’re already studying shaders and graphics APIs on your own.

To supplement your experience, I’d suggest analyzing the source code for UE4 to understand how the game state manager and update loops work. If you’re feeling ambitious, you can try building an engine of your own using what you learned from the Unreal Engine. If you’re concerned about the EULA, you are allowed to do this as long as you don’t copy the code.

Something very important you’ll need to learn how to use is source control like Git or SVN. Most, if not all, developers use a form of source control. It’s very easy to learn, but if you get hired without any knowledge of source control, your team will be disappointed in you. I’ve heard the sigh of disappointment many times :slight_smile:

If at all possible, try working on projects with groups. The best possible learning experience for you would be to make a game with a team. Not as just a hobby, but with dedicated work times and a set deadline. Teamwork is a very important skill in game development. You need to be able to work with a team through the good times and the bad, and to learn how to deal with drama. The more experience you have working with teams, the more valuable you’ll be to employers. My professors told me about genius programmers who weren’t hired on their teams because they lacked team skills.

Something you might want to consider is a summer project. Plan out a “game” or some other project that you think you can finish by the end of summer, and then work on it. If you work on a game, you’ll find out what parts of development you really like and what ones you don’t. That will help you focus your talents. Also, this will help get you used to project milestones and deadlines.

Finally, don’t worry too much about trying to be a jack-of-all-trades. You only have so much time to get good at something, so it’s better to invest your time in a specialization. If you spread your talents too thinly, you might just end up being so-so at everything. A lot of development teams usually consist of individuals with highly specialized skill sets.

Good luck with achieving your goals.