I am a computer science student and I am developing with C/C++ and Python and I want to begin learning graphics tools to start developing with game engines, especially the Blender Game Engine. So what is your recommendation for me to learn and to read? And recommend me a road map for it.
-
\$\begingroup\$ Possible duplicate: gamedev.stackexchange.com/questions/41/… \$\endgroup\$– Jari KomppaFeb 11, 2011 at 15:02
-
\$\begingroup\$ Sorry what has blender to do with game engines? do you want to use its format? \$\endgroup\$– PhilCKFeb 11, 2011 at 15:40
-
\$\begingroup\$ @Jari Komppa, yeah but i ask for a recommended road map not only resources @PhilCK, i means developing in the BGE \$\endgroup\$– WazeryFeb 11, 2011 at 15:42
-
\$\begingroup\$ @PhilCK en.wikipedia.org/wiki/Blender_game_engine \$\endgroup\$– Jesse DorseyFeb 12, 2011 at 1:23
4 Answers
EDIT START
Not looked into blender game engine for a while, but I'd have thought the only requirement to use BGE would be to learn how to use it, like any other program.
EDIT END
Firstly a Game Engine and Graphics Engine are very different.
A Game Engine could be thought of as lots of little engines, graphics, sound, network, input etc...
A Graphics Engine such as Ogre
, focuses entirely on the graphics side of things.
The single most important thing is Maths
. Maths
, Maths
, and Maths
. Leaving aside the physics.
Vectors
, Matrices
, Quaternions
, Ray tracing
, curves in space
, Projections stuff
, Approximation methods
, it goes on ...
The maths is platform independent and will be useful on ALL
platforms.
Also pick a graphics API such as OpenGL
or DirectX
, I prefer OpenGL for platform sakes, but it doesn't really matter. XNA
would do I guess if you'd prefer C#.
A good general book on Amazon
http://www.amazon.co.uk/Essential-Mathematics-Games-Interactive-Applications/dp/0123742978/ref=sr_1_3?ie=UTF8&qid=1297439659&sr=8-3
-
1\$\begingroup\$ +1 cause this answers the topic of the question, math is very very key to graphics programmers above all other areas of game engines. \$\endgroup\$– JamesFeb 11, 2011 at 16:36
-
1\$\begingroup\$ The opengl superbible has a great chapter specifically about the maths. It's also a great book if you decide to use opengl. \$\endgroup\$– SpideyFeb 11, 2011 at 19:55
You would be best served by learning how to use openGL off their site. It will introduce you to programming for graphics. Only after you are comfortable with openGl then move to creating a game loop and object manager.
Learning to be a good programmer and learning how to use the (relatively obscure and underused) Blender Game Engine are two very different problems. Almost so different that I think you should be asking two separate questions.
That said, learning the Blender Game Engine is like learning any other API or toolchain. Check out the documentation, read and understand it, and practice using it over and over until you are comfortable with it.
That general concept applies to learning how to be a good programmer as well. Generally a programmer will learn by first acquiring some basic skill with a particular programming language and then experimenting in the default environment of that language -- this typically means building text-based, console-IO type programs and games for a while. It sounds like you are there already and want to move beyond that.
At that point the programmer tends to start experimenting with windowing libraries or 2D graphics libraries. There's a big jump between console-based IO and 2D, window-oriented, event-based programming for some. Making games in this space that introduce the programmer to the fundamentals of linear algebra, which is a critical part of understanding the 3D graphics programming that many programmers eventually end up doing. Once a programmer has built a few 2D games, it may be time to consider learning 3D math and APIs (Direct3D or OpenGL, or some higher-level API provided by some engine or whatnot).
At some point during that whole process, which is very focused on the everyday minutiae of being a programmer, you will hopefully acquire a talent for larger-scale problem solving and for considering the design and architecture of the systems you build rather than just the "how to" of building them in particular languages -- this is the thing you want to strive for, this is where you start becoming a good software developer instead of a good code monkey.
In your specific case, PyGame might be a reasonable thing for you to start looking at.
If you're a computer science student, then find out what the graphics course is at your university/collage and its prerequisites. You'll probably want to take both optional and required prerequisites for the graphics, but you also need to get all of the prerequisites for the graphics prerequisites.
For example, the University of Waterloo's graphics course is CS488. The prerequisites are (CM 339/CS 341 or SE 240) and (CS 350 or SE 350) and (CS 370 or CS 371). Each of these will have their own prerequisites that you need to fit into your schedule.
While the specific courses are different for each school, I'd assume a lot of the content is similar. The UW graphics course requires students to build several small scenes and then a ray tracer. They then make a proposal for and implement their final project. You can get ahead in your education by going through the courseware for a lot of universities online: MIT, Stanford, etc... (MIT puts a lot of effort into making their courses available online.)
-
1\$\begingroup\$ (In case you're wondering, I'm a UW grad, but I never took our graphics course.) \$\endgroup\$– idbriiFeb 11, 2011 at 17:14