The things I'm about to share is from the knowledge I've gained through my mentors Jim Edwards, Mark Swinhoe, Ashwin Sudhir, Joshua Jebadurai and Aninda Bal. This blog is intended for those who are absolute newbies(aka noobs :) ) to the Game development industry. This is my very first blog, so please bear if I'm not up to the mark.
Programming Games dates back to long before you can imagine, in the 1940s. The very first games were based on controlling the beam of a cathode ray tube adding user interactivity through input(knobs, buttons etc.) and visual feedback. 'Tennis For Two' is one such example. In a nutshell game programming covers the realms of Gameplay, Graphics, Physics, Artificial Intelligence, Audio and Input(there can be more disciplines like GUI). Since I am a programmer, I will be talking about stuff in a programmer's perspective.
Gameplay relates to the mechanics in-game which may be automated or react upon user interaction, for example, firing weapons in a first person shooter or selecting units and placing orders in a real time strategy game. Since I am a Battlefield series aficionado, I can emphasize on gameplay relating to FPSs. When you fire a gun, the way the gun recoils and the reticule reacts is the work of a gameplay programmer. In a twitch based game where fast button/key presses and motion is required, a gameplay programmer tweaks the parameters which affects the 'feel' of the game. That's where Battlefield feels different from Call of Duty and then again from other similar games. A gameplay programmer is more loosely bound as the exact tasks done by him/her can vary from studio to studio. Some gameplay programmers even cover GUI.
Graphics can be one of the most challenging fields as it covers a plethora of topics including computer architecture, computer graphics, Algebra, Trigonometry etc. You need to be a geek to understand it properly! Graphics controls the visual aspect of the game. The process of displaying objects onto the screen is called rendering, The source can be 2d or 3d objects. For a 3d game, typically this discipline covers the entire process of rendering 3d objects which involves dealing with vertices and triangles. All the 3d objects go through a transformation pipeline which is done by hardware so as to display it on a screen which is only 2d. Earlier games directly manipulated the hardware and code was written for specific hardware, but suffered lack of portability as each hardware had unequal capabilities. With the advent of Graphics API's regularly update drivers from the manufacturers, the problem have dissolved. For a modern game platform to display anything, it requires API's like Direct X, OpenGl, PS3's API etc which is generic and independent of the hardware. The main task of the graphics programmer is to build a system that handles all the rendering and display related stuff like animation, lighting, shadows, normal maps, anti aliasing, texture filtering etc. It is called the Graphics Engine. After the system is built, it undergoes a process of optimization.
Physics is a module which is pretty much self explanatory but is rather difficult to code. It deals with simulating physics both realistic and insane imaginary stuff! Some topics I can think of are: collision, inverse kinematics, rag-dolls, bullet physics etc. Traditionally real time physics was computer using cpu, now-a-days graphics hardware is capable of handling physics. Game engines may use such libraries like PhysX or write their own libraries. Physics coding is also pretty fun but if done badly can lead to disaster!
Artificial Intelligence takes the place of human intelligence in a game to create smart entities. For example, Pacman, where you try to dodge AI controlled ghosts. Game AI can be a lot different from traditional AI as it often simplifies algorithms and uses several shortcuts. Some topics include Pathfinding, Decision making, State Machines, Fuzzy Logic, Behavior Scripting, Tactical and Strategic AI, Learning, Artificial Neural Networks etc.
Although I haven't dealt directly with Audio programming, it is another straightforward module. It deals with programming a system for Sound effects and Music. Similarly Input Programming deals with coding how the user input is interpreted in-game.
Programming Games dates back to long before you can imagine, in the 1940s. The very first games were based on controlling the beam of a cathode ray tube adding user interactivity through input(knobs, buttons etc.) and visual feedback. 'Tennis For Two' is one such example. In a nutshell game programming covers the realms of Gameplay, Graphics, Physics, Artificial Intelligence, Audio and Input(there can be more disciplines like GUI). Since I am a programmer, I will be talking about stuff in a programmer's perspective.
Gameplay relates to the mechanics in-game which may be automated or react upon user interaction, for example, firing weapons in a first person shooter or selecting units and placing orders in a real time strategy game. Since I am a Battlefield series aficionado, I can emphasize on gameplay relating to FPSs. When you fire a gun, the way the gun recoils and the reticule reacts is the work of a gameplay programmer. In a twitch based game where fast button/key presses and motion is required, a gameplay programmer tweaks the parameters which affects the 'feel' of the game. That's where Battlefield feels different from Call of Duty and then again from other similar games. A gameplay programmer is more loosely bound as the exact tasks done by him/her can vary from studio to studio. Some gameplay programmers even cover GUI.
Graphics can be one of the most challenging fields as it covers a plethora of topics including computer architecture, computer graphics, Algebra, Trigonometry etc. You need to be a geek to understand it properly! Graphics controls the visual aspect of the game. The process of displaying objects onto the screen is called rendering, The source can be 2d or 3d objects. For a 3d game, typically this discipline covers the entire process of rendering 3d objects which involves dealing with vertices and triangles. All the 3d objects go through a transformation pipeline which is done by hardware so as to display it on a screen which is only 2d. Earlier games directly manipulated the hardware and code was written for specific hardware, but suffered lack of portability as each hardware had unequal capabilities. With the advent of Graphics API's regularly update drivers from the manufacturers, the problem have dissolved. For a modern game platform to display anything, it requires API's like Direct X, OpenGl, PS3's API etc which is generic and independent of the hardware. The main task of the graphics programmer is to build a system that handles all the rendering and display related stuff like animation, lighting, shadows, normal maps, anti aliasing, texture filtering etc. It is called the Graphics Engine. After the system is built, it undergoes a process of optimization.
Physics is a module which is pretty much self explanatory but is rather difficult to code. It deals with simulating physics both realistic and insane imaginary stuff! Some topics I can think of are: collision, inverse kinematics, rag-dolls, bullet physics etc. Traditionally real time physics was computer using cpu, now-a-days graphics hardware is capable of handling physics. Game engines may use such libraries like PhysX or write their own libraries. Physics coding is also pretty fun but if done badly can lead to disaster!
Artificial Intelligence takes the place of human intelligence in a game to create smart entities. For example, Pacman, where you try to dodge AI controlled ghosts. Game AI can be a lot different from traditional AI as it often simplifies algorithms and uses several shortcuts. Some topics include Pathfinding, Decision making, State Machines, Fuzzy Logic, Behavior Scripting, Tactical and Strategic AI, Learning, Artificial Neural Networks etc.
Although I haven't dealt directly with Audio programming, it is another straightforward module. It deals with programming a system for Sound effects and Music. Similarly Input Programming deals with coding how the user input is interpreted in-game.
No comments:
Post a Comment