Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

I want to get into game programming, and I have some questions

  1. Sep 8, 2006 #1
    How much math and physics will I have to take? I don't mind taking some courses in these areas, since I already am, but I'm not sure how many I should be taking. Will it have to be very high level math or physics? More what I'm asking I guess is, what specific types of courses would be the most beneficial to take, and how long would I have to spend in each one(estimates are fine, I don't expect anyone to know exactly how long it will take)? Thanks in advance for any help/advice I get.
  2. jcsd
  3. Sep 8, 2006 #2
    Hi Byrrg,

    I'm thinking of game programming as well. At the moment, I'm pursusing a Computer Science specialist in Artificial Intelligence at UofT.

    I can't give you solid advice, but my advice is to take the CS-designed math courses recommended for the general CS degree. That is, take a basic course in calculus, vector calculus, linear algebra, groups, and combinatorics. I haven't taken any physics courses, as they aren't required for a computer science program.

    The only thing my professor could tell me was that linear algebra would probably be important, especially in the area of graphics.

    Having taken the first year programming courses, I found the linear algebra more immediately applicable for some assignments. But I found the mathematical logic/reasoning taught in the calculus to be more important overall.

    Sorry I can't be more help. Hope this helps somewhat,

  4. Sep 8, 2006 #3
    I can't really help you as far as the math is concerned except to say that if vectors are important, and I know they are, then linear algebra is going to be important. That being said, it might be one of those things where you need such a small amount of the subject, that you would be better off learning it as it comes up rather then taking a full course in vector calculus and another course in linear algebra.

    Now, onto the real thing. If your considering a job in game programming, I highly, highly, HIGHLY recommend looking into the field deeply before committing to this course. It tends to be unstable with hellish hours and lower then average pay. It's truly for those that couldn't consider doing anything else in life. If you really love programming and think that programming games would be more interesting then doing the latest QuickBooks release, you may be in for a shock.
  5. Sep 8, 2006 #4
    I want to do whatever it takes to get into the field. Video game programming has been a goal of mine for a while. But it's not as if I'm only taking courses for game programming, I want to keep my options open, so I'm taking physics and math courses, though I'm having some trouble. It seems every day I run into a problem in math, physics, or both.
  6. Sep 8, 2006 #5
    Byrgg, you should probably get a computer science degree and try and teach yourself directX or console graphics programming if your school doesn't offer courses in this area. The CS degree will teach you how to program and give you more job options and learning directX will let you create something to show off during interviews. As I understand it, when it comes to game companies, they are more interested in seeing what you have created and worked on then seeing where you graduated from.

    You will probably encounter math that you are not familiar with and that you will need to teach yourself as you get deeper into directX. Or you could try and take a vector calculus and linear algebra course. Unfortunately, these will probably be taught from the perspective of a mathematics major. As an engineering major, I can tell you that you will most likely be bored as hell through most of it because it won't focus on applications of the material :smile: .

    Another option would be to find a school that is offering a 4 year degree in game design and programming. Many colleges are offering such a degree now and if the curriculum is good, it won't be long before game companies start actively recruiting from these programs if they aren't already. Good luck man!
  7. Sep 8, 2006 #6
    Is the math I'm taking right now good for my goal? I'm only in gr.12 right now, but I've been taking all of the math/physics/computer science courses I can. I'm taking advanced functions and introductory calculus(one course), and then next semester is algebra and geometry. Do I need to take both of them? Of course, as much as I'd like to drop one, I don't I would.
  8. Sep 8, 2006 #7


    User Avatar
    Science Advisor

    I think you only need a lot of heavy math and computer science if you want to do game physics simulation, graphics, or game AI. General programming ability should be enough to do simple games. I wrote a few simple games in C when I was 12, going by a "learn game programming in 21 days" book, so not all game programming requires any particular expertise. If you want to do
    --Physics simulation: I'd guess you want to take courses on numerical computation, and at least some basic physics
    --Graphics: Unless you're just using someone else's graphics engine, you need a lot of math and a strong foundation in algorithms. This is a very mathematical subject.
    --game AI: you need good knowledge of algorithms and an AI course or two
    Also, you can take courses that are specifically designed for these specialties, once you have the prerequisites. Take my advice with a grain of salt--this is just what I think you need, I'm not in the game industry.
  9. Sep 8, 2006 #8
    I appreciate all of the advice I'm getting, thanks.

    What about calculus? Do I need to get into heavy calculus for this? And, sorry if this sounds stupid, but what's an algorithm in math? I'm assuming it's similar to an algorithm in programming, is it?
  10. Sep 8, 2006 #9


    User Avatar
    Science Advisor

    You need calculus if you want to do graphics (beyond the basic), less so if you want to do other things.

    An algorithm is a terminating program for accomplishing some computational task. The study of algorithms mainly covers how to make them efficient (fast-running and occupying little memory space) and how to prove them correct.
  11. Sep 8, 2006 #10
    What other things invlolve calculus? Is it worth taking introductory calculus now in high school?
  12. Sep 8, 2006 #11
    It depends on what type of game, what type of programmer you want to be, what level you want to be in and what level of programming you want to do.

    From what my friends in the business say(toronto region).

    type of game: simple child like games or fast FPS or MMO(dod,hl,bf,sof,q3 WWO etc)

    type of programmer: driver developer, the person who builds ontop of drivers/available APIs or the person who builds on top of pre-existing 3D engines(open src: Ogre3D, cube3D, WildMagic etc, nonopen src: unreal , torque,the new XNA thats coming out).

    level of programmer: junior, intermediate, senior(the top level one)
    field of programmer: as mentioend in orthodontist post but there are more

    PHysics/Math/Graphics/AI(the ones orthodontist mentioned), Scripter/Game Logic/Toolkit/Device Drivers/Sound/Static Geometry(some extra fields)...mostlikly you will be expected to do more than one field.

    If you intend to code ontop of engines then 2nd year university should suffice. Anything more than you will need to take respective classes
    Linear Algebra/Linear Systems: is a MUST for any rendering.
    C/C++/Assembly: if you want the current PC/platform speeds
    Data structures: always important.
    Calculus/Vector Calculus Not so much..depending on how much more advance lighting and texturing you want to do...anything other then image display you need calculus. Oh yeah Physics Based SIms as mentioned above and below and in the paragraph below.

    []Physics: Classical/Analytical Mechanics(3rd-4th year),one that teaches Rigid Body Dynamics/INverse Kinematics is a must and Mesh Development.
    NOTE: classical mech requires calculus/vector calc
    []Physics: Numericals(3rd-4th year) Math class that teaches ODE/PDE/Root finding etc Stay away from matlab/maple classes or persuade your prof to let you code in C/C++/F
    []Rendering: Linear Algebra and Numericals for Linear Algebra...you will normally find a numericals class that teaches both ODE/PDE/Funcions & Linear Algebra

    []Math::GEometry-Calculus and vector calculus and Computational Geometry is important for Geometry & mesh building...also a class in Curves & Surfaces or Nurbs. Take care in learning about Distance Calculations and Predicting Intersections(collisions).

    []AI::much of the AI you can learn on your own as long as you have good references and are willing to take the time to learn and a testbed like a grid. Jsut do well in Datastructures, some STATS will help in AI.

    []Device Drivers: Hardware Architecture, Assembly
    []Sound Drivers: DEs & Transforms/Signal Processing(3rd year level math)
    []IO devices: Transforms (3rd year level math)
    []Spatial Partitioning: all datastructures.

    []FIle formats & Movie making: There's always someone that has done this before but if you wnat to progress to learning your self start early and have this goal in mind. Compression Algorithms which include transforms/wavelets
    A good place to start is too look at a engine or coding packages.
    www.ogre3D.org is open source,Wild Magic use to be. for Coding packages SDL/OpenGL is a good place to start(i started with windows/glut/opengL and it was ugly).
    SDL provides you with simple input-output and rendering with opengl.
    for the math stuff Numerical Recipes(open src) is a good place to start from the programmers perspective but since your young it should only be a starting point. OpenAL/OpenSceneGraph/OpenDE(physics)/Newton/
    OpenCV(i just recently found this one)

    Thes are all libraries that do stuff.Just search google they will come up.

    ...oh yeah go to gamedev.net and register on their forums. It is a huge resource in game development.
    Last edited: Sep 8, 2006
  13. Sep 8, 2006 #12
    oh and if you have the funds some books might be usefull
    David Eberly: 3D Game Engine, not a great book,but it has a huge overview of building his so just take a lookat it from a bookstore.
    Christer Ericson: has a relatively good book Primitive Geometry Collision Detection and Spatial Partitioning(though I'm kinda dislike it cause the code is very little).

    Gary Flake: about simulations COmputational Beauty of Nature...good for AI and Adaptive Learning. I really enjoyed this book...his code is opensrc.

    Eric Lengyel: Math for Gaming is a Decent to really good book. But not as rigourous as one would like

    Computer Graphics: Foley and VanDam good book on graphics.

    OpenGL Bible(or red book).

    James Stewarts Intro to Calculus

    Serways Intro to PHysics

    Try to find the Chris Hecker Lecture series on PHysics Sims for programmers.

    Numerical Recipes: good place to start.
  14. Sep 8, 2006 #13
    Take my advice with a bigger grain of salt.

    Off the bat, Calc I and II will probably do little towards graphics, or game programming. Calc III deals with 3-dimensional volumes, surfaces, paths, etc... the stuff that you will need for doing graphics.
    You'll really need I and II to understand III. Calc I will at least give you a foundation to build on mathematically. If you decide to take the calc series, don't shrug off the earlier stuff and resist it because it is not immediately applicable, because it will be (as a foundation for your learning). It will teach you a different way to think and approach problems.

    You will need calc I and II if you want to learn physics.

    wow... I just noticed neurocomp's post.

    See. You are in good hands at PF
    Last edited: Sep 8, 2006
  15. Sep 8, 2006 #14
    This is my dilemma.... game programming... or going for a major in some field of physics which could help humanity a bit more than game programming would :).
    Or become a Computer Hardware Engineer?
    awww god...

    try learning the new XNA framework from microsoft, it is pretty easy!
    (you should have some basic C# knowledge... or at least basic C++ knowledge)
    Im been programming with it since it the beta framework came out (aug 30) ... in fact I was coding right now until I got stuck on something which I am asking at a forum.

    Im a HS junior. I'm hoping to begin Calculus 2 next semester. Im at a program where I take High School classes at a college as well as College classes. It is wonderful! it allows me to take about 6 college classes a year (+3 HS classes)
  16. Sep 8, 2006 #15
    If you can do game programming(FPS/MMO) from scratch you can code in almost any field. So you would be helping humanity...either in further pursuits of Robotics and navigation, Those virtual Doctor machines that allow a doctor to perform surgery from another hospital.

    FPS/MMO/RTS-Game programming has ties to Everything because it is made from everything
  17. Sep 10, 2006 #16
    Thanks for all of the info, everyone. I really appreciate all of the help, and it seems like I'm on the right track with the courses I can take. One more question though, sorry if someone already answered this, but is University necessary? Will I be able to fulfill the requirements I need with just going to college?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook