Skip to main content
GameDev.net gamedev.net
🔒 Locked

Math, Science, Etc.

Started by Ack Feb 20, 2000 at 2:32 PM 14 replies 1.2k views
Original Post
Ack
Ack
Is it necessary to know a great deal of math as a game programmer? And science, too? Does one need or benefit from having a Computer Science degree? Is physics really useful when programming a game? Is it a good idea to go to college and get a degree? Thoughts, responses? These are questions I am pondering as a newbie, and I would like as much input on them as possible. College is a big decision ...
Ridcully
Ridcully
when i was a newbie i had the same question...
well, now as an "experienced newbie" i think that you have to have quite a bit of understanding in maths (especially in 3d), and some basic physics knowledge about gravity, movement, acceleration, etc. really helps. but it all depends on what you are going to code.
however i for one think that my basic knowledge from school is sufficient for all this. you can easily acquire the rest through reading books and articles...

good luck anyways
SiCrane
SiCrane
There''s a thread in the lounge already about the benefits of a CS degree. To sum it up: A CS degree makes you much more employable by game companies. If you don''t go for a CS degree at least get a solid foundation in math (Calc 3, Linear Algerbra). I vote that Differential equations is very useful.

As for science, you can''t go wrong with basic mechanical physics. I don''t think it''s really necessary for you to learn, say, thermodynamics, electromagnetism, or quantom physics.

The good thing about a CS degree is that it points you towards areas of the computer that you wouldn''t expect to help with game programming, but do. i.e. Computer Architecture, Compiler implementation and design, Numerical analysis, and so on.
Spellbound
Spellbound
Games move more and more into simulating the real world. Look at radiosity lighting for example, it hasn''t been around in games for very long (since Quake2 I believe, though the theory has existed much longer). To be able to incorporate all these theories that ''real'' scientists come up with (or better yet, come up with your own theories) you will need a solid education. This is where CS comes in.

As a sidenote: I read in FiringSquads interview with J Carmack that he dropped out of school, and still he is one of the top developers out there. So it certainly can be done without getting a degree. But it''s probably safer and easier to get the degree first.
Fredric
Fredric
Hmmm... well, I''m new to game programming, but I''ve been pondering that question a lot recently. Kind of funny how this post came up when it did!
What kind of math is needed to make games? Do you have to be some sort of mathamatition to make advanced games? I''ve got algebra down pat (well... as advanced as Grade 9 Math is), and I know Slope (y2 - y2/x2 - x1) is used in game programming. Ending my babbling spree- do you need to be really good at Math to program good games?
3D Math- The type of mathematics that'll put hair on your chest!
SiCrane
SiCrane
I''ve never seen a poster get so riled up over a typing error before. Yeesh. And if you were literate to any degree, you would have noticed that I said you *didn''t* need quantum.

Yes, by Calc 3 I meant multivariate calculus. I already posted justifications for the advanced mathematics for game programming in the other thread. However, in brief, because obviously we have people who''d rather flame than read, are some uses for higher mathematics:
* Inverse Kinematics, diff eq written all over it
* Fourier transforms need for encoding/decoding file formats such as jpeg and mpeg
* Interpolation and extrapolation methods usually use techniques introduced in multivariate calculus and differential equations, especially when extrapolating positions of moving objects. i.e. Client prediction.
Fredric
Fredric
Anonymous Poster (The One Before the Crazy One)- I''d read the Maths (yes, that''s right anon. 2, MATHS) and physics and that sort of thing if you put it up on a site. I''d be more interested in physics, though.
3D Math- The type of mathematics that'll put hair on your chest!
kressilac
kressilac
One of my better math courses was Discrete Structures. This course taught the theory behind, rings, graphs, trees, binary math, parity, and check summing. If it wasn''t for this course I wouldn''t have the understanding of sorting, searching, and storing data that I do. I am not sure but in some CS courses this stuff might be listed under Linear Algebra.

Oh another class that came in extremely handy was an EE logic class. Having to build the circuits gave me an understanding of what goes on inside the computer as well as a great understanding of boolean algebra. This really helped with Assembler programming and some aspects of C++. Though this course doesn''t claim much credit for my skillset directly, indirectly it can not be measured. I intrinsicly understand why DDR memory is such an amazing new technology for video cards, hence I can better guess where we will be going in the future and build a game for it.

Enough rambling. Education helps, but like all other things it only helps you as much as you want it to. If you learn nothing while you''re in there, it will show once you get hired and the paper degree won''t matter much to your pink slip.
Derek Licciardi (Kressilac)Elysian Productions Inc.
webspynner_99
webspynner_99
CS is Computer Science

The math the you really need is trigonometry. You almost definitly need to have tken physics, unless you want to try and derive the formulas all on your own, stuff that took many highly skilled people years. If you were to get into more complex stuff like reflections on a curved surface, then you would need some calculus, like taking derivatives. Derivates are used to find the slope of a curve at a single point, something pretty hard to do considering that you need two points to find the slope of a line. The derivative (or slope, whatever you want to call it) also represents rate of change, ie acceleration being the rate of change in velocity, or velocity being the rate of change in displacement.
Here is a list of math and sciences to study:
Algebra 1+2 (The base for the rest)
Geometry (helps especially with thought process and problem solving)
Trigonometry (need to fully understand those trig functions and vectors)
some Calculus (rate of change, putting everything together)
Classical Physics (the stuff that deals with the macro world, not the micro)
Chemistry (Background, so you know what goes boom and what doesn''t)
Some Quantum Physics (Light is some pretty strange stuff, and classical physics sucks at explaining it, though many classical physics books today switch to the quantum view when dealing with light)

I can''t think of anything else right now. I have to go, got Calculus class to go to. If I think of anything else, I will post again.
webspynner_99
webspynner_99
I thought of a few more things to study.
Grammar! (You will definitley be adding text to the game, nothing is worse than bad grammar)
Art (for design, color schemes. It also helps with visualization, seeing a problems shape before attacking it.)

Study grammar and rhetoric, rhetoric is the art of persuasion, i.e. getting your point across without boring the player. I can''t stand it when I see a game (or anything else for that matter) with a grammatical error. If you are serious about your game, make it as clear and concise as possible. Nobody wants to listen to the story drag on, they want to play the game.
Study many kinds of art also, from visual to audio. Study sketching for design aspects and modeling techniques, study painting for color coordination. Study music theory for the music in the game. Their is a new game out for the Sony Playstation called MTV Music Generator. It makes making music easy (though it isn''t protable). If you''ve studied music theory, it makes it even easier.
Finally, study everything else that you can. In the real world, you can''t be totally focused on making games. You can speciallize in games, but you need to have some idea of what else there is in the world. Study history, economics (especially), and other things. Be a well rounded person.
Fourier
Fourier
Studying just the things for game programming is good. However, it's a good idea to have some slack when it comes to education. Someone here said that Universities let you study Phsics, Pure and Applied Mathematics and Discrete Mathematics because you'll never know what you'll be doing once you graduate. I mean you might turn out to be a programmer for a physics research team or for a biologist etc.

Studying ang getting the degree(s) is the easy part. Actual programming (or engineering etc.) requires problem solving skills. You'll be amazed at how people say programming is hard when all they lack is a sense of organization or procedure when it comes to problems. You must have a systematic approach when dealing with problems. This is where practicing solving problems help you develop your techniques. Practicing exposes you to different types of problems and teaches you how to go about with them in real life. By practicing you won't have to memorize theories, techniques and so on, because you'll know them by heart.

Edited by - Fourier on 2/27/00 8:02:49 AM
Strauss
Strauss
I was wondering what''s the CS curriculum overseas, here''s from my college:

1st Grade :

* Analitic Geometry.
* Calculus ( Differential and Integral ).
* Computing Introduction ( should be called " Programing in C ").
* General and Experimental Physics.
* Algorithms
* Logic

2nd Grade :

* Linear Algebra
* Data Structures
* Programming Lab (OOP Programming)
* Assembly
* Mathematical Analisis
* Numerical Calculus ( I don''t know if it''s named like this in english, it''s about Curve Adjust, Numerical Integration (Simpsons metod) and etc)
* Verbal Expression ( I, a CS bachelor must know how to speak and write well LOL ).
* Introduction to Electronics.

3rd Grade

* Discrete Math
* Database
* Advanced Computing Topics ( Graphical Computing )
* Computer Arquitecture
* Financial Math
* O.S.
* Statistc
* Hardware

4th Grade

* Compilers
* Data Comunication Engenniering
* Comercial Programming
* Artificial Intelligence
* Mathematical Programming
* Advanced Data Processing Topics

well, that''s my college''s curriculum, I think there''s some things that might be usefull to games programming, and all these disciplines ennhance your "way of think", and that can''t be bad to game programing.

Hope this post is not too large





crouilla
crouilla
My take on the matter is that all that you NEED to know for programming games is some basic algebra. The bulk of the math that you''ll do with 2D games is adding and subtracting (at least it better be if you want your programs to run on normal systems), so knowing how to reverse-engineer formulas is imperative.

Next to that, a good understanding of binary arithmetic is important (knowing how AND, OR, XOR and shifts affect numbers).

The third-most important to know is trig. Doing 2D vector-based caclulations is totally dependent upon knowing your sine from your cosine

The higher-level math you won''t need until you go into 3D, and you probably shouldn''t make it a requirement to know until then.

Some of the items included therein (sets and matrices) are useful for programming, but you can probably learn about them without going through 5 years of CS.

-Chris

---<<>>---
Chris Rouillard
Software Engineer
crouilla@hotmail.com
---<<>>--- Chris Rouillard Software Engineercrouilla@hotmail.com

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.