Pages: 1
Topic closed
So you want to be a game programmer? In order to be a successful game programmer, you must not only be a good programmer. You must also be good at mathematics, physics, and illusion.
Mathematics
See http://www.developer.com/java/other/article.php/3733176 and http://www.dickbaldwin.com/KjellTutorial/KjellVectorTutorialIndex.htm for some information on mathematics and game programming.
What about physics?
That is another topic for another day.
What about illusion:
From Wikipedia: "An illusion is a distortion of the senses, revealing how the brain
normally organizes and interprets sensory stimulation. While illusions distort reality, they are generally shared by most people. Illusions may occur with more of the human senses than vision, but visual illusions, optical illusions, are the most well known and understood."
An illusionist:
From Wikipedia: "Magic is a performing art that entertains an audience by creating illusions of impossible or supernatural feats, using purely natural means. These feats are called magic tricks, effects or illusions." Thus, to be a successful game programmer, you must be something of a magician in addition to the other required skills.
The 3D illusion
Where does the science and art of illusion come into play in game programming. Let's start with the 3D illusion. Many successful games are generally known as 3D games. Carnegie Mellon, in conjunction with Disney provides a major software development platform named Panda3D. Once you learn how to program in a serious programming environment, you can use this development platform (for free) to create programs that do a very good job of creating the illusion of three dimensions. (Disney has used this platform on several major commercial projects.)
While not nearly as powerful or as difficult to use as Panda3D, the free Alice platform from Carnegie Mellow can also be used to produce convincing illusions of three dimensions. Many other excellent platforms are also available but most of them are not free.
Are there really three dimensions?
However, as geckofreak recently pointed out, because the computer screen is flat and only has two dimensions, a game that you play on a computer is not really three-dimensional. Instead, whenever you write a program that would commonly be called 3D, what you are really doing is attempting to render a 3D scene onto a 2D screen to produce the illusion of three dimensions. However, it is common practice to refer to computer programs that produce the illusion of 3D as 3D programs.
For example, if you go to http://www.youtube.com/results?search_query=DickBaldwin256&search_type= you will find several videos of varying quality, which would be considered 3D videos by most experts in the field. In fact, they are all attempts to render a 3D scene onto a 2D screen in order to produce an illusion of three dimensions. Some of the videos succeed better than others in creating that illusion.
Factors in the illusion of 3D
There are many factors that come into play when creating the illusion of 3D, including:
Light and shadows (see http://www.dickbaldwin.com/alice/Alice0200.htm)
Projection (see http://en.wikipedia.org/wiki/Axonometric_projection and http://local.wasp.uwa.edu.au/~pbourke/geometry/classification/ )
Motion
Most of you, at one time or another, has probably invited a friend to go to a "movie" or "motion picture" with you. Are the characters in the movie really moving? No, they are not really moving. Once again, there is simply the illusion of motion. The only thing that is moving is the movie film moving through the projector.
Movies take advantage of a characteristic of the human eye known as persistence to create the illusion of motion. If the human eye views a series of pictures that are similar but slightly different fast enough, the result can be an illusion of motion.
For example, see http://scratch.mit.edu/projects/dbal/173385 In this project, the repetitive showing and relocation of a sprite wearing similar but different costumes gives the illusion that the sprite (boy) is walking toward the mouse pointer. If you were to slow the execution of the code down, however, it would be obvious that this is simply the repetitive relocation and showing of a sprite wearing similar but different costumes. There would be no illusion that the boy is walking toward the mouse pointer.
A 3D illusion as well
In addition to the illusion of walking, changing the size of the sprite and the length of the stride relative to the proximity of the sprite to the horizon also tends to impart a 3D quality to the scene by introducing a sense of perspective.
Just a cardboard target
It is important to note, however, that the sprite has no depth. Unlike the images of the panda on the YouTube videos referred to earlier, if it were possible to view the sprite from the front or the back of the boy, it would look something like a cardboard target on a firing range.
Nothing more than an optical illusion
The bottom line is that to whatever extent you may see the boy walking on the moonscape, sometimes approaching the camera and sometimes moving toward the horizon, the walking effect and the 3D effect imparted by this project is nothing more than an optical illusion.
Thank goodness for optical illusions.
Without optical illusions, life would be very boring, with no motion pictures and no appearance of motion by the characters that we see on TV.
Thank goodness for light, shade, and perspective.
Also thank goodness for an understanding by artists of light, shade, and perspective. Without them, the famous paintings would be only slightly more interesting than the prehistoric paintings on the walls of caves. (See http://www.dickbaldwin.com/alice/Alice0200.htm#Figure_3 and contrast it with http://www.dickbaldwin.com/alice/Alice0200.htm#Figure_5)
Binocular vision
Thanks also for human binocular vision. Without binocular vision, even the real 3D world around us would appear to be a 2D would because we would have little or no perception of depth.
Broaden your skills.
To be a successful game programmer, you must not only be a good programmer. You must also be good at mathematics, physics, and illusion. Therefore, don't be content to be a good "scratcher." Make sure that you are also developing your skills in math, physics, illusion, and even art. Once you have mastered most of what Scratch has to offer, move along to more powerful programming environments including Alice, Java, C++, C#, Python, JavaScript, Ruby, VB.net, and others.
Last edited by dbal (2008-06-03 18:10:37)
Offline
I've always wanted to be a programmer
Offline
It would be cool.
Offline
Also, it helps to be a good problem solver - creativity really helps you come up with new/faster/more efficient ways of coding.
If you like to be more creative and also enjoy programming, there is also a field of "Technical Artists" emerging - these are the folks who mostly get to work on "illusions" such as particle effects that you see in some really high quality games (smoke, water, vapor, fire, explosions, etc)...particle effects are all done progammatically these days, and take a highly skilled and rare combination of talent...but are so very cool!
Offline
mletreat wrote:
CFCRubiks wrote:
I've always wanted to be a programmer
I personally think that your dancing bear = AWESOME
lol, thanks.
Offline
dingdong wrote:
I'm moving on to Python, twill be interesting for what I create
Good for you. Python is the scripting language used for most Panda3D programming. See http://panda3d.org/wiki/index.php/Main_Page
Offline
mletreat wrote:
Also, it helps to be a good problem solver - creativity really helps you come up with new/faster/more efficient ways of coding.
If you like to be more creative and also enjoy programming, there is also a field of "Technical Artists" emerging - these are the folks who mostly get to work on "illusions" such as particle effects that you see in some really high quality games (smoke, water, vapor, fire, explosions, etc)...particle effects are all done progammatically these days, and take a highly skilled and rare combination of talent...but are so very cool!
I agree that creativity is important for game programming, and that is one of the great strengths of Scratch. By providing great sensory feedback capabilities (sight, sound, motion, etc.), and being simple to learn and use, Scratch makes it possible for students to concentrate on being creative without having to expend large amounts of effort trying to solve difficult programming problems.
Even programmers with lots of experience in other languages might find Scratch useful for helping them to cultivate their creativity. (For example, I personally waste far too much time playing around with Scratch and Alice creating worlds that are of no practical benefit but are loads of fun to create, listen to, and watch.)
Offline
Topic closed
Pages: 1