Rika said:
I have several questions about gamedev industry. I know that there are special websites about it but I want to collect more data and I know that many people on this forum work in this industry.
I'm going to get my B.Eng. in Engineering Physics very soon and after that I want to start Master's degree and double major in graphic design and management. Then I want to work in game industry as a game designer or a concept artist or (which is my biggest dream) start my own, small indie studio.
In order to boost my portfolio I'm working on a big indie project with my classmates as a lead designer. I think that intership in gamedev company (level design position) would be a good idea too. My speciality is creativity and when it comes to practical skills I'm good at writing and drawing. I'm weak in level design and understanding programmers but I'm working on it.
Here are my questions:
1. Is game industry hard to get into?
2. Is it hard for small indie studios?
3. If I'm not a native speaker can I become game designer?
4. What about payment? Is it decent?
5. What about working environment?
6. What can I do in order to get into it?
Those are quite popular questions but I hope for credible answers.
Hey there, I did some work in the industry so I can tell you some things based on my experiences.
1. Is it hard to get into
Yes it is. The other programmers that I worked with were very very competent programmers who were very hard working. Everyone had a specific skillset but they were all very good programmers. We had two teams, engine and gameplay. Engine programmers had people focusing on different areas like graphics and algorithms, console programming (XBOX360), systems programming (example writing platform code to port engine to console, stuff like memory routines and other platform stuff) as well as juniors being delegated tasks like adding things to the game editor, features artists want and so on.
Gameplay is different. You have to do rigorous test cases that testers can do (ie create automated scripts that do something like for example get AI to follow a path), and you have to cover a lot of stuff like AI (A* algorithm), computational geometry, and common stuff like hit detection: there is a lot of stuff that you cover.
I haven't even talked about the "programming" stuff like design, structure and so on of code. The Unreal Engine is a monstrosity of code. To get your hands dirty and understand it, you need to have experience with a similar project. Game engines are very very complex pieces of software: they are designed around certain principles like having a common scripting language interface and also around automated network synchronization. The thing is you have to be able to see the forest from the trees and get things done quickly.
2. Is it hard to get into an indie studio?
The one thing that games companies needs is funding. Publishers provide funding. Its hard to get quality talent in any industry to do it for free. Games companies are no exception.
3. Native speaking in game design.
Communication is VERY VERY important. If you're not a competent communicator, work on it before you apply.
4. Payment
Don't go into this job for money. You are salaried and like many development jobs you are working against a deadline. You will stay back especially if you are starting out (and even if you are not you will be working hard!)
If you love games, love testing them, love hanging around gamers, have that gamer culture, then ok. You will be putting in a lot of hours but in a good company you will be treated like a person (my experience) and not as a chinese factory worker (sorry china).
5. Working environment
You are with people who are very good at what they do, like what they do, and have high standards with developing themselves and their skills. If you like that kind of environment and pressure and the people, you would enjoy it.
6. What to do to get in
I'm going to tell you what I think you need to get a job in a funded company (ie the company has a publisher to fund them)
1. Communication skills
Do not underestimate this. You need to have high communication skills and be able to formulate ideas in a short concise manner. Keep it simple, don't waffle and don't try and sound important: keep it simple and learn how to deal with different kinds of people: artists, testers, programmers, designers, managers and so on: I can't outline this enough
2. The personality and passion
You work in games because you love them and because you will see a project through no matter what you have to do. Projects can be really hard on you when you have lots of bugs, short time frames for objectives, and being behind schedule.
You need to communicate to the company that you will get **** done no matter what you have to do.
3. Technical expertise
You will probably be surprised at how much stuff you need to know about so many things. I did say before that you have specialties, but everyone still has a lot of understanding and practical experience on many things.
C++ is the language that you work in. If you use a pre-developed engine or modified engine (like Unreal) you will need to write script.
The best thing you can do to get people to notice you is to compile a portfolio that shows of something "cool" that has a "wow factor". I spent about three years developing an engine when I was working in another programming job and also when I did a diploma project where I was part of a team that made a fully functioning game demo.
You need to know math and how to apply it. Most people think of vectors, matrices, and some calculus. Throw in some numerical analysis for interpolation: used in everything from animation, cameras, smooth surfaces, add in things like convex hull in any dimension for collision detection, and rendering things with the right normal vectors for lighting.
Computer graphics is a huge field and knowing things in this will help you get the basics down for 3d engines. SIMD instruction sets implementing vector and matrix routines are important for performance.
Then you have to add all of those things you learn about general programming. All the algorithms (sort, hash, graph stuff), data structures, optimization, networking, audio, and specific stuff: there's so much stuff I am taking for granted knowing that I can't tell it all at the moment.
You've also got all the technical stuff in C++, and language anomalies, good design, good paradigms (like event driven design, interfaces, all kinds of templates like factories, base script classes and script integration, resource management, etc).
It took me years and years to learn the stuff that I did. I started young and I spent a lot of my youth in isolation taking apart the quake engine, reading stuff from michael abrash, reading the architecture documents from intel outlining the 386 32 bit instruction set just learning stuff. You don't typically have to write any assembly code nowadays, but you need to keep track of many things at once and know how game engines work inside out.
If you have the motivation go ahead and learn, just expect that you will have to invest a lot of time. Download the Quake 3 source code and go through it: I started going through the Quake source myself learning stuff like the geometry (BSP trees, portals) and so on: it will give you a good idea of what you will have to learn that is domain specific to games.
Also one last piece of advice: don't let my advice put you down. Be confident that you will learn no matter what: when I was young I was naive, who had no idea that I would be making so many mistakes and taking so long to learning: you be the same. Don't focus on the time, the progress (at least initially), or the mistakes you make. If you get a buzz out of getting something showing on screen or to make a simple game (maybe even 2D), then you will eventually get the experience.
Good luck!