What to know in order to be able to do game programming?

In summary: I'm sorry, but I cannot provide a summary for this conversation as it does not contain enough relevant information about courses for working in the gaming industry.
  • #1
preceptor1919
35
0
I just want to know what are the possible courses that one should take to have a background that you need to be able to work in the gaming industry?
 
Physics news on Phys.org
  • #2
Hello
I think if you want really helpful answers you may need to narrow the field some. This has become an extremely broad field and your question as stated is like asking "How do I get in the movie business" The list of credits are similarly long in both endeavors because they each require so many different (and similar in each field) specialty elements.

Game Design is very different from AI development is very different from audio/sound effects creations, etc etc. There are also many different approaches from large corporations to single individuals (a la Minecraft) and thankfully crowdfunding has made them viable. So please try to narrow down to what interests you most. If you're not that far into it yet, there are free raw tools, sponsored tools, commercial tools, game mod engines, and even online universities where you can "get your feet wet".
 
  • #3
I want to be able to work in a team that builds the foundation of the game. The gameplay, data etc. I don't really want video game design as a career but I think it would be pretty cool to join a game design team in my coop
 
  • #4
I'd say data structures, algorithms, graphics, AI if you're interested in that, and know your C++. Because I'm an amateur, I program my games in Java, which I found easier to get started on, but it's not so popular in the industry, except maybe Android or something. That's the basics, at least. Beyond that, I think you just have to go at it or there are some courses that deal specifically with game development. You can start simple, with side-scrollers or even text-based games. There are a lot of tutorials on the internet to show you how to do that.
 
  • #5
For basic game programming, I suggest simply taking intro CS courses up to courses related to Data Structures and Algorithms. Coursera offers two Algorithms course: one from Princeton and the other from Stanford. I think some other important aspects of game programming is knowing the various design patterns. I came across this article that I thought was pretty useful: http://gameprogrammingpatterns.com. Writing good algorithms is one thing, but don't forget that software engineering plays a big role in software development as well.
 
  • #6
Hey preceptor1919.

I used to do this so I am speaking from personal experience.

If you want to program games you need to be prepared to learn anything and everything. Although a basic foundation of coding in a procedural language along with some standard computer science subjects like Algorithms, and Data Structures will be required - it's not enough to really do a good job.

The thing about games and game engines is that they are really complex. Apart from all the design issues, data structures, and algorithms involved you also have a lot of API's (Application Programming Interfaces), Scripting Systems, Physics, Visualization and Rendering, and all of the other systems that facilitate the game simulation - from user interfaces, to networking systems - and the thing that makes it difficult is how things are integrated.

The integration itself ends up making a lot of engines quite messy. It's not that the programmers aren't competent - they are. What happens though is that once you keep piling on features to engines that weren't really designed to work in a particular way, then the code gets fragmented and keeping track of everything gets more difficult. Engines are usually reworked to make everything cleaner and easier to use and maintain, but you can only do so much.

To understand 3D you need to understand mathematics and this means geometry, linear algebra, calculus, and algebra as well. All of the spatial classification and rendering code uses all of this and if you don't have a good intuition for three dimensional geometry then you will need to develop it.

The scripting language is becoming an essential part of making games: often you don't even need to touch the engine source code - all you need to do is learn the scripting language, the API, and how to use it. You can literally make very good and complicated games without touching a single line of engine code if the engine is well developed.

Writing a game engine requires every kind of programming you can every imagine - and most complicated engines are written by teams of programmers who have many many years of experience under their belt. Everything from operating systems, to compilers, to data structures, to algorithms - and even all the way to the coding in assembler is needed at some point. If you name some area of computer science then chances are it will be in a game engine in one form or another.

You can download a game engine source code if you want (Torque 3D is one example) - The professional engines themselves can be in excess of half a million to purchase, and professional companies do fork out the money. You don't need that of course, but it's a reminder of how complex and how much these things cost to purchase and develop.

If you want to make a game then you can learn a good engines scripting language and go from there. If you want to understand the specifics, then you will probably need to get the source to a game engine and basically go through it step by step.
 
  • #7
preceptor1919 said:
I just want to know what are the possible courses that one should take to have a background that you need to be able to work in the gaming industry?

Strictly speaking you don't need any courses. And a lot of academic course in comp sci teach you algorithms well, which is important, but the nitty gritty optimization for game programming and all the deep understanding of C and C++ and the underbelly and all they don't touch at all for the most part, and, in fact, most academic programmers get too caught up with levels upon level of OOP and other horribly slow, at the micro level, practices and it's been that way since the beginning. Although they often use pretty solid algorithms so much that is coded these days is a fat, piggish mess from hell and for all the talk about the magic of high level and auto memory managment and so on it seems like people produce even more and worse bugs than ever before when they knew more about and dealt with the depths more. Heck in the late 80s and 90s, for a while, almost all arcade type games and demos for home computers were coded by European hackers who learned stuff on their own (heck eventually the demos even became known as "eurodemos"). Most of the academic programmers from the U.S. didn't have much skills for hitting the metal or writing crazy tight code it seemed. And then you had some of the Japanese programmers doing a lot of console coding for Japanese consoles. Of course things have changed since then and much of modern gaming is too complex for a single person to handle and you don't tend to use assembler or hit the metal much anymore. However, it still pays to known how to not let the parts of OOP that bog things down occur and so on and so forth.

Anyway some good stuff to know: everything about basic data structures and algorithms, the basic math and methods behind 3D graphics and rendering, basic linear algebra, quaternions, should have a truly deep knowledge of C and C++, where you really known what is going on at a deep level and what is slow and what is not and how memory management and so on and so forth work what the compiler might do in certain cases and so on an so forth (certain adventure type games sometimes use scripting type languages for certain things down in addition), these days it's also good to know extreme parallel GPU computing methods too, DirectX/OpenGL and such, all sort of tricks to help speed up this or that type rendering effect, how to do various types of animation and interpolation both through CPU or with GPU/HW assist, doesn't hurt at all to know the basics of mechanics in physics.

Be prepared to be worked like a slave though if it's a big house team. In recent times I hear some reports that they tend expect lots of 7 days weeks, working during holidays, sleeping on the couch, etc. they like young people who will work like slaves like mad and then when they burn out they replace them.

Tablet type games are the sort that a single programmer working for themselves can still write games all on their own though in a good number of cases (for Android it sadly means Java, yuck. For Apple it's better, not C/C++ sadly, but the custom Apple version of C++ is at least close enough and nicer to deal with and a bit more efficient than Java. For Windows tablets it's easy since it's just C/C++ I believe?). Things like Call of Duty are just so gigantic that it would takes insanely long for one person to do the coding alone and then you still need all the 3D models and graphics and sounds and animations and... it's just mostly beyond a single person these days for that sort of stuff. Although it's not impossible to make PC type games all on your own even still.

You can take course for the basics of C/C++/data structures+algorithms/linear algebra/3D graphics or learn some of most of that on your own.
 
Last edited:
  • #8
Thank you for all of your responses. The reason I'm asking is because I am currently in associate of com sci degree and I want to switch to engineering once I finish this degree(so I don't want to become too theoretical). But before I go to engineering, I would love to try working(even if it's just internship or coop) for a gaming studio here in vancouver(or anywhere actually, but my main target is EA here and Ubisoft in toronto) to do game programming.
Right now I am learning Java and will try to learn other languages once I know the basics of programming.
 

FAQ: What to know in order to be able to do game programming?

What programming languages do I need to know to do game programming?

To do game programming, you will need to have a strong understanding of at least one programming language, such as C++, Java, or Python. It is also helpful to have knowledge of scripting languages like JavaScript or Lua, as they are commonly used in game development.

Do I need to have a degree in computer science to be a game programmer?

While a degree in computer science or a related field can provide a solid foundation for game programming, it is not always necessary. Many successful game programmers are self-taught or have learned through online courses and tutorials. The most important aspect is to have a strong understanding of programming concepts and a passion for game development.

Are there specific software or tools I need to know for game programming?

Game development often involves the use of various software and tools, such as game engines like Unity or Unreal Engine, graphics software like Photoshop or Blender, and version control systems like Git. It is beneficial to have knowledge of these tools, but they can also be learned as you begin working on game projects.

What are some important skills to have for game programming?

Aside from strong programming skills, game programming also requires problem-solving abilities, creativity, and attention to detail. It is important to have a good understanding of game design principles and the ability to work well in a team environment, as game development often involves collaboration with artists, designers, and other programmers.

How can I improve my game programming skills?

Practice and experimentation are key to improving your game programming skills. Start by working on small projects to gain experience and then gradually take on more complex projects. It is also helpful to read articles, watch tutorials, and participate in online communities to learn from others and stay updated on industry trends and best practices.

Similar threads

Replies
5
Views
1K
Replies
3
Views
976
Replies
11
Views
2K
Replies
12
Views
2K
Replies
3
Views
1K
Replies
6
Views
2K
Back
Top