Previous column

Next article


Game programming – The “Why”, “What” and “How” with Graphics Objects

Lakshmi Prayaga, Lecturer, Computer Science Department, University of West Florida, Pensacola

space COLUMN

PDF Icon
PDF Version

Abstract

Game Programming is the latest buzz word in the computer science educational curriculum. Many universities across the world are offering complete CS degree programs in game programming while others such as the Art institute of Portland have summer camps for teens in game programming (Ai of Portland, 2005). This brings us to three interesting questions, The “ Why”, “What” and “How” of game programming. This paper serves the purpose of analyzing these questions within the context of a Visual basic.Net application. A discussion on the choice of Visual Basic .Net as the environment to create and manipulate the objects in the game is also presented. The code used is also included in the paper.


1 WHY GAME PROGRAMMING?

The idea of using games for educational purposes in K-12 and also for higher education is well documented (Dempsey etal, 1997, cited by Seay and Scott). However, educators are split on the idea of using games in a class room. Some feel it is very effective to teach a concept while others feel it takes up valuable class time. But research (J.C.Herz , in JoyStic Nation, p 1-2 cited by Seay and Scott, Affisco, 1994, p.171 cited by Feldgen and Clua) shows that students these days have a totally different way of learning. They react more to interactive learning. In fact Affisco coins the word ‘Edutainment’ a combination of entertainment and education and points out that if students are not entertained while they learn, the instructor has lost them. Herz argues that, “If your memories have pop soundtracks or big-screen kisses, if you've ever told an anecdote with instant replays or a coda of stadium applause, it's because you've been brought up with media that furnish those conventions. Video games provide a new set of conventions, which are being rapidly assimilated, as you read this, by a legion of six-year-olds. Their mental grammar is going to reflect that, just as the baby boomers' worldview echoes the impact of television. But whereas TV turned kids of the fifties and sixties into a nation of screen watchers, videogames have created a cadre of screen manipulators ( p.1-2).” Continuing on this thought, Lave(1991) and Mcllelan(1995)argue learning happens within a context and culture of a society, i.e. it is situated. The typical student today(2000 – present) is very well versed in playing games on the computer. They acquire high levels of skills in playing these games and in trying to beat the computer. In addition, many argue that (Coleman et al. 2005) “videogames are the initial draw to technology for a number of students in the first place”, (Pleva 2004) they provide a “stepping stone for kids into the world of technology. Students who play computer games tend to be more comfortable with the technology and more adept at using it.”.

Ideas such as these expressed by educationalists show that games are here to stay and are being used as educational tools, and are in many cases successful at delivering educational content in a way that students internalize those concepts being presented. Seay and Scott cite a reference to an article in the American Scientist which shows that the IQ of present day students is increasing and one of the theories for the increase in IQ “is that our increased exposure to visually rich mass media---television, computers, video games -- has enabled us to perform better on spatial-visual tests. The theory states that the ability to interpret different forms of information from different media and make some kind of sense of it is what these IQ tests actually test for.”

The game environment is almost like a comfort zone for the student by which he is not intimidated. It is in fact his preferred choice of context to work in. It is therefore an area that can be used advantageously by educators to motivate students to be focused in and complete their assignments. In fact Feldgen and Clúa show that most students in the year 2003, chose the context of the game environment for their projects compared to the context of engineering, calculus or business and were also successful in completing their projects. This shows that the gaming environment has a heavy influence on the students mind and therefore also acts as a good motivator. Not surprisingly, many universities (GameDev.Net05) such as University of Pennsylvania, University of Denver, Middlesex University UK, University of North Texas have now started to think seriously about including game technology into the CS curriculum.

2 WHAT IS GAME PROGRAMMING?

“Game programming is a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby. Most software engineering students program games as exercises for learning a programming language or operating system. In fact, the Unix operating system and the C programming language exists because the original programmers wanted to play games” (Wikepedia 2005).

Game programming is both an interdisciplinary and an intra-disciplinary field. It is an intra-disciplinary field of computer science because it includes (Masuch, Freudenberg 2002). “Computer graphics, AI, simulation, user interface design are core components of every game. And more: network techniques, multimedia, databases and many other disciplines take part in game development”. It is an interdisciplinary fields due to its heavy dependence on photography, physics, imagery, audio and video technology, in short all elements of multi media technology.

The above topics provide the necessary background knowledge to deal with the complex relationships among many abstract and concrete components of game programming. Some of these components are the story line, picturization, characters, shapes, sound, interactivity and other multimedia effects. These components can broadly be classified into two categories, visual and non-visual. This paper focuses on creating and using graphics objects as the primary source of visual representation of the game being planned. Graphics objects form the core of game programming because images used in any game have properties which are similar to the properties of a graphics object. An example is that of an image bound within a rectangular or circular graphics object. We show how geometric shapes can be made into objects that have properties, events, and methods suitable for game programming.
In addition to introducing students to the idea of “objects”, game programming can be used to introduce introductory data structures such as arrays and records. Together, these topics form the core of an introductory object oriented programming (OOP) course with gaming as the context. As discussed earlier, students can relate to this context, and hence there is a better chance of meeting and improving student learning outcomes in an introductory OOP course. In recent years game programming is being introduced into the CS curriculum in many different ways such as (deLaet et al. 2005)“a games course for women, a software development course that uses games as projects, an introductory games programming course in Java, and an advanced graphics course that focuses on games”.

Regardless of which way a game programming course is introduced, there are some essential elements of the subject which must be taught. These include graphics objects, animation, physics of collisions, collision detection, collision response and multimedia effects. The elements of game programming presented in this paper implement the recommendations of Cunningham et al. (2004) as shown in Fig1.

Figure 1

Figure one provides a framework that explains the design process and is discussed below:

  • Problem statement: In order to create a game, it is important to formulate the story line, followed by identification of the individual components participating in the game and their relationships. An example is to visualize a scenario when in which a group of objects appear on the screen and start moving randomly.
  • Model: Once the statement of the problem is verbalized, the next step is to conceptualize or abstractly visualize a model that represents this problem.
  • Geometry: This conceptualization must now be translated into figures, outlines or geometric shapes. For example the objects can be thought of as spherical, rectangular, triangular or polygonal objects which have geometric properties such as points, angles, vertices and lines. Objects may also have irregular shapes, with pictures of trees, birds, animals etc.
  • Image: The last phase is to visually depict this model on the screen of a computer by using an image that corresponds to this model.

These four phases constitute the building blocks of game programming. As shown in fig.1, looping back to the initial phase (or to any phase from any phase, similar to the waterfall life cycle model in software engineering - Schach02) may occur many times during the design of the program. Only one loop back is shown in the figure to avoid clutter. The next section is a discussion on the implementation of these core concepts.

3 THE HOW OF GAME PROGRAMMING:

We discuss the implementation of the principles of game programming based on fig1 with reference to a specific game environment being designed. Graphical reusable/replaceable objects are used to illustrate the use of the four elements of game programming discussed above.

The problem statement/ story line of the game: The game being designed is a combat operation between different geometric shapes. The user/player controls one of the objects and the rest of the objects try to hit the user/player object and destroy it. The elements required at this stage include creation of objects for the game, the movement of these objects (animation) on the game board, the collision of objects, the result of this collision and audio clips to add sound effects to the environment.

The model: A model is an abstract visualization of the problem being discussed. The model for this game is the interaction between the two sets of objects, system/game controlled objects and the user controlled object. These shapes do not have any social skills, so when they interact with the user object the user object is either destroyed completely or shattered into smaller pieces. So, the outcome of the combat is collision, destruction or the survival of some objects

Geometry: The geometry is the crucial piece of game programming. It is at this stage that decisions regarding the size of the game board, the types of objects, the shape of the objects and the location of the objects on the board, have to be made. During the game, various geometrical transformations of the objects have to be performed, such as rotations, translations, scaling, etc. Students designing the game must therefore be particularly familiar with coordinate geometry, linear algebra and trigonometry to be able to make these decisions. The importance of geometry in game programing is also evident as it is included as one of the major courses students wishing to major in game programming must take. (Coleman et al. 2005). We assume that students entering to take a course on game programming have this pre-requisite knowledge.

Image: The images on the screen follow the decisions made in the geometry phase. Images translate the model into a visualization. Depending on the expertise of the programmer, imagery can become a very complex element of game programming.

Why Visual basic.Net: The choice of Visual basic.Net as the programming language to introduce students to game programming was the result of an experiment conducted on a batch of at risk high school students. These students were ninth graders who were participants of the “reach for tomorrow” program which is designed to motivate at risk students to acquire military scholarships and pursue higher education. (Reachfortomorrow.org) The students had no prior computer programming experience and were also not very comfortable using the computer. The limitations under which the experiment was conducted were:

  • Limited amount of time (two and a half hours)
  • Students having limited computer experience
  • Zero programming experience

Given these limitations, I needed to choose a language that was user friendly and did not have a high learning curve. Visual basic.net seemed to fit this bill. I used VB.net to get the students develop a simple game that included the basics of game programming by

  • using picture boxes to hold the objects used in the game
  • simulating animations and movements with timer controls
  • simulating ideas of velocity, speed, direction
  • including the idea of collision detection and response

The result of this experiment was that the students enjoyed the experience. In fact students at this stage were motivated enough to experiment with changing the speed, direction, size and other aspects of the objects used in the program. This shows that choosing the proper context (games) and providing the proper and easy to use programming environment (user friendly VB.Net tool box) generates the required motivation for students to pursue their goals. Visual basic.Net is a very user friendly language because of its rich GUI environment. Presented below is the design of an application that includes the basic elements of a game program discussed so far.

4 DESIGN

The table below shows the design of the game in terms of the elements used in the game and their corresponding VB.Net elements.

Game Element VB.Net Element
An area to play the game PictureBox
The Players Graphics Objects
Movement of players Controlled by timer Controls
Collision - detection Intersectswith property
Collision – Response Simulation of Explosion and collision

The graphics objects used in this program are created by instantiating the shape object named ObjectShape. Since the objectShape is an object, we can reuse it and instantiate it as many times as necessary. The ObjectShape object has properties and events as follows:

  • Properties:

    Color, shape, size

  • Events:

    Click

Using this method we set up six small ellipses which are the opponents in the game and one slightly larger ellipse which is controlled by the user. The user controls his piece with the mouse, so he can move around the play ground.

5 THE WORKING OF THE GAME

To maintain clarity and for demonstration purposes the elements of game programming incorporated in this example are kept simple. These include animation/movement of the objects, velocity, collision, graphics objects and audio rendition.

Animation

Animation is provided by using a timer control. The timer control’s tick event is used to move the graphic object on the screen, horizontally, vertically or diagonally. The timer control’s tick event also checks for collision occurrence and if collision occurs, the function collide is called to swap the velocities of the objects. The code for moving the objects is included in the moveAround sub procedure.

Collision

Collision detection and response are other key elements of game programming. There are several kinds of collision responses that occur when objects collide. We discuss three types of collision responses - one in which an object bounces off a wall, one in which two objects have a head on collision and bounce off each other and a third in which an explosion or shattering occurs on collision

  • A ball hits a wall and bounces off. (code in the sub procedure moveAround)
  • A ball collides with another ball and the two balls bounce off of each other. (code in the sub procedure collide) In the sub procedure collide the velocities of the two objects are interchanged.
  • The collision response resulting in an explosion is achieved by disposing off the object (user controlled object) and creating six smaller objects on the screen. This creates the effect of an object being shattered and explode into small pieces.

Sound:

The next element used in the game to provide sound effects is audio. SoundWav.vb is a simple class file used in the application to provide the functionality of playing a wave sound file when necessary. This is a modified version of a class file available on the internet (soundFile) We have used two different sound files for collision between the game objects and collision between the game object and the user object. When collision occurs between the game object and the user object we have a “crashing” or “exploding” sound, and when collision occurs between game objects we have a ‘ding’ sound. This completes the design of the game elements.

User Interface:

The program has two buttons, Wall Collision/Dispersion and Ball Collision (Figure2). The Wall Collision/Dispersion checks for

  • Collision of the small balls with the wall and if collision occurs the balls bounce off the wall.
  • It also checks for collision between the small ball and the large ball and if collision occurs the large ball shatters into small pieces. (Figure3)

The Ball Collision button checks for

  • Collision between two small balls on the screen and if collision occurs, the swapping of velocities takes place. (Figure4)
  • It also checks for:
  • collision between the small ball and the larger ball which is the user controlled piece and if collision occurs the user control is disposed.
  • Wall collision is also included in this button. See figures 1, 2 and 3 for the game in action

Figure1

Figure 2

Figure 3

6 CODE FOR THE PROGRAM

Part A – The Class file - Object Shape:

Part B Class for Sound File –

Part C – Main program:

7 CONCLUSION/FUTURE WORK

Game programming can be a useful and powerful tool. It can be used in educational settings to help students understand abstract concepts through games, with which most students are familiar. Examples of introducing abstract concepts through game programming include OOP, data structures, principles of physics, chemistry and mathematics. We also believe that game programming can exert a positive influence on at risk students by providing them with much needed excitement and motivation to pursue higher education as was evident by our experience Additionally, game programming is also a good field with plenty of opportunities as a career choice. Several web sites such as International Game developers association(igda.org) provide detailed information on the type of jobs available in the gaming industry along with the salary ranges. In attempting to promote this idea of introducing game programming to students, our future work will concentrate on developing a set of tools for the most commonly used game programming techniques with a grounding in physics as applicable to the gaming environment.

REFERENCES

[Ai05] Art Institute of Portland, retrieved on July 10th, 2005 from: http://www.aipd.aii.edu/summerteen.html

[Seay,Scott97] Jerry Seay, Robert Scott, Education and Simulation/Gaming and Computers, 1997, retrieved on July 10th, 2005 from http://www.cofc.edu/~seay/cb/simgames.html

[Feldgen,Clua04] Maria Feldgen, Osvaldo Clua, “Games As A Motivation for Freshmen to Learn Programming”, 34th ASEE/IEEE Frontiers in Education Conference, October 2004

[Lave,Wenger90] Lave, J., & Wenger, E. (1990). Situated Learning: Legitimate Periperal Participation. Cambridge, UK: Cambridge University Press.

[McLellan95] McLellan, H. (1995). Situated Learning Perspectives. Englewood Cliffs, NJ: Educational Technology Publications.

[Coleman etal05] Ron Coleman, Mary Krembs, Alan Labouseur, Jim Weir(2005), “Game Design & Programming Concentration Within the Computer Science Curriculum”, ACM SIGCSE 2005, pg 545.

[Pleva04] Greg, Pleva. (2004), “Game programming and the Myths of Childs Play”, Journal of Computing Sciences in Colleges, Volume 20, Issue 2, pg 126.

[Fernald05] Joseph Fernald (2005) “Game Development Schools – Part 1”, on July 10th, 2005 from: http://www.gamedev.net/reference/business/features/schools1/

[Wikipedia05] online encyclopedia, retrieved on July 10th from http://en.wikipedia.org/wiki/Game_programming

[Masuch, Freudenberg02] Maic Masuch, Bert Freudnberg, Teaching 3D game programming, retrieved on July 10th from http://isgwww.cs.uni-magdeburg.de/~bert/publications/Masuch-2002-TCG.pdf

[Delaet etal] Marianne deLaet, Kuffner James, Slattery michael, Elizabeth Sweedyk, “Computer games and CS Education: Why and How”, retrieved on July 10th from http://db.grinnell.edu/sigcse/sigcse2005/Program/viewAcceptedProposal.asp?sessionType=panel&sessionNumber=16

[Cunningham etal04] Steve Cunningham, Werner Hansmann, Cary laxer, Jiaoying Shi, “The Beginning Graphics course in Computer Science”, Computer Graphics, Volume 38, Number 4, November 2004, pg 24

[Schach02] Stephen R. Schach (2002), Object Oriented and Classical Software Engineering, Fifth Edition, Chapter 3, pg66

[Coleman etal05] Ron Coleman, Mary Krembs, Alan Labouseur, Jim Weir(2005), “Game Design & Programming Concentration Within the Computer Science Curriculum”, ACM SIGCSE 2005, pg 547.

[reachfortomorrow.org] retrieved on July 10th, 2005, from: http://www.reachfortomorrow.org/01about.htm

[soundfile] “Play an Embedded sound file”, retrieved on July 10th, 2005, from: http://www.vb-helper.com/howto_net_play_embedded_sound.html

[igda.org] retrieved on July 10th, 2005, from: http://www.igda.org/breakingin/career_paths.htm


About the author



space Lakshmi Prayaga is a lecturer in the Computer Science Department, at the University of West Florida. She is the co-author of a text book, “Programming the Web with ColdFusion MX and XHTML”. She has presented several papers in conferences and workshops such as ACMSE, ELearn, EdMedia and NCEI. Her research interests include building visual tools to serve as teaching aids, web server technologies and computers in education.

Cite this article as follows: Lakshmi Prayaga: “Game programming – The “Why”, ”What” and “how” with Graphics Objects”, in Journal of Object Technology, vol. 4, no. 9, November-December 2005, pp. 39-58 http://www.jot.fm/issues/issue_2005_11/column5


Previous column

Next article