Video Game Development - by Paul LoweWhat is video game development? Essentially, video game development is a specialization of software engineering specifically focused on the implementation of game engines and their associated subsystems.
Commercial grade video game development has traditionally been a black art -- which meant it could only be done by and learned from underground experts -- or learned/developed on one's own; it traditionally did not exist in academia. It was not taught in universities, and written literature was generally limited at best. Only in recent years, due to the booming video game industry, have specialized game development schools been established. Whole bookshelves of publications on the topic can now be obtained, and the internet is full of game development websites, forums, and freely available engines (with publicly available source code!).
Is video game development really similar to art? If one defines "art" as any creation or activity that intrinsically draws upon human expression, then yes, video game development is very much an art. Developing video games requires the developer to use his mind and imagination in order to form artificial, abstruse representations of every-day concrete concepts and ideas that can only exist in an abstract domain. Is video game development similar to engineering? Definitely. Engineering is defined as the application of high-level math and science in order to manipulate the surrounding material environment such that it could be beneficial to humans. Video game development differs from this definition (aside from questionable beneficience to society) in that the environment manipulated is actually an imaginary abstract world that only exists inside digital computers, with a form derived by heavily drawing upon metaphorical representations of equivalent objects and concepts. Since this imaginary world (located inside a computer) is implemented inside our real physical world (the inside of a computer, which is a physical object), math and science are still valid, but they can also be bent.
Contemporary advanced video game engines are about as complex and abstract as software can get. Their manifestation requires heavy utilization of many disciplines. Today's game engines draw heavily upon artificial implementations of Newtonian Mechanics. Their three dimensional graphics systems are based on all sorts of tricks to make a two dimensional surface (the viewing screen) appear as though it truly has three dimensional depth. These tricks are achieved through comprehensive utilization of trigonometric calculations and special effects derived from the observed physical models and properties of optics (refraction, reflection, diffraction). Contemporary game engines also employ some of the most state of the art data structures available from the field of Computer Science in order to tie together and relate the visual and mechanical aspects of a scene, while also guiding the interactive script or fate of the game world. The fusion of these three areas of study: Mechanics, Optics, and Computer Science, allows for the synthesis of quite the convincing artificial world.
Of course, knowing how to program and write software is a given requirement -- but depending on the type of game one might want to make, a specific group of conceptual understandings will be required. For instance: most well-made games will generally require, to some degree, a general understanding of Linear Algebra, Trigonometry, Mechanics, and data structures. Two dimensional games can frequently be made with a much more limited subset of the aforementioned topics, and three dimensional games are usually made by extending these concepts into a third dimension, which far increases their complexity -- especially when the fourth dimension, time, must be taken into consideration. For example, consider two square objects moving in a two dimensional plane and colliding. Doesn't sound very complex, right? Now, consider three soldiers running through a castle firing bullets having a finite velocity through hallways and windows. The equations definitely become more involing.
The following, as a hypothetical example, provides a listing of understandings generally required to make certain types of games:
This above is only an example -- and exceptions do exist. There are 2D games that have implementations obviously far more complex than some 3D games (although usually the opposite is the case). Obviously, more knowledge is required to make ever complex games.
Getting started will require that the developer gain access to the following resources:
There are already hundreds of game engines -- many of which are freely available on the internet. Starting from scratch can be satisfying (e.g. not using a pre-existing game engine, graphics package, or add-on libraries), though the path of starting from scratch leads through the forest of debugging, frustration, and cyclical redevelopment and improvement until something decent is achieved. Though one of the benefits of starting from scratch is that the game engine can be developed such that all components are well-designed to work together.
Designed by Paul Lowe