Virtual Developer Workshop: Containerized Development with Docker
This article is brought to you by Premier Press|
publisher of Kevin Hawkins' and Davide Astle's OpenGL Game Programming.
Interactive entertainment has grown by leaps and bounds in the last decade. Computer games, which used to be considered children's toys, have now grown into a multi-billion-dollar market. Recent years have shown a trend of accelerating growth whose end is not in sight. The interactive entertainment industry is an explosive market that pushes the latest computer technologies to the edge and helps drive research in areas such as graphics and artificial intelligence beyond what a research firm alone could manage. It is this relentless drive and growth that attracts many people to the industry, but why do people really make games?
Having talked with many different people throughout the game industry, one thing seems to drive them to learn and succeed at the art of game development: fun. Games have come to be known as one of the more creative forms of software development, and the amazing games that have been released in recent years are a testament to that. Games like Half-Life by Valve Software have pushed the envelope of game design to the point that the industry will never be the same again. Game developers are drawn into this industry by the idea of creating their own virtual world that thousands, if not millions, of other people will one day experience. The game developer strives to be challenged and to discover new technologies and new worlds. According to Michael Sikora, an independent game developer, "It's like a trip I just can't get off." This is what making games is all about.
The World of 3D Games
A screen shot from the smash hit Unreal Tournament.
Since the release of Quake, the industry has been blessed by new technological advancements nearly every few months. The 3D gaming sector has brought on 3D accelerator hardware that performs the 3D math right on the silicon itself. Now, new hardware is released every six months that seems to double its predecessor in both raw power and speed. With all these advancements, there could not be a more exciting time than now for 3D game development. Figure 1-1 shows one of the most recent advancements in 3D game development, Unreal Tournament by Epic.
The Elements of a Game
You may now be asking, "How is a game made?" In order to fully answer this question, you must understand that games are, at their lowest level, software. Today's software is developed in teams, where each member of a team works on his or her specialty until everyone's work is integrated to create a single, coherent work of art. Games are much the same way, except programming is not the only area of expertise. Artists are required to generate the images and beautiful scenery that are prevalent in so many of today's games. Level designers bring the virtual world to life and use the art provided to them by the artists to create worlds beyond belief. Programmers piece together each element and make sure everything works as a whole. Sound techs and musicians create the audio necessary to provide the gamer with a rich, multimedia, believable, and virtual experience.
With each person working on different areas of expertise, the game must be divided into various elements that will get pieced together in the end. In general, games are divided into these areas:
- Music and sound
- Game logic and artificial intelligence
- User interface and menuing system
Each of these areas can be further divided into more specific systems. For example, game logic would consist of physics and particle systems, while graphics might have a 2D and 3D renderer. Figure 1.2 shows an example of a simplistic game architecture.
A game is composed of various subsystems.
As you can see, each element of a game is divided into its own separate piece and communicates with other elements of the game. The game logic element tends to be the hub of the game, where decisions are made for processing input and sending output. The architecture shown in Figure 1.1 is very simplistic, however; Figure 1.3 shows what a more advanced game's architecture might look like.
A more advanced game architectural design.
As you can see in Figure 1.3, a more complex game requires a more complex architectural design. More detailed components are developed and used to implement specific features or functionality that the game software needs to operate smoothly. One thing to keep in mind is that games feature some of the most complex blends of technology and software designs, and as such, game development requires abstract thinking and implementation on a higher level than traditional software development. When you are developing a game, you are developing a work of art, and it needs to be treated as such. Be ready to try new things on your own and redesign existing technologies to suit your needs. There is no set way to develop games, much as there is no set way to paint a painting. Strive to be innovative and set new standards!
In our second article, we will explain what OpenGL is and why it is important to game developers.
About the Authors
Kevin Hawkins is is the CEO of GameDev.net, a development sites on the web for game programmers.
Dave Astle is the COO of GameDev.net where he acts as the chairman and editor-in-chief. He is founder of Myopic Rhino games and is currently a software engineer in Salt Lake City, Utah.
Andre LaMothe is series editor for Premier Press' line of computer game programming books. He has worked in 2D/3D graphics, artificial intelligence at NASA, compiler design, robotics engineering, virtual reality, telecommunications, and has been a consultant to various companies located in Silicon Valley.
This article is brought to you by Premier Press
publisher of OpenGL Game Programming
) Copyright Prima Publishing, All Rights Reserved