Date

Lecture Date: Wednesday, November 9

See the remaining code for jumping_puzzle.py at http://cs1110.cs.virginia.edu/code/gamebox/. Note that the level that is loaded from a file in part 4 is included as a comment at the top of jumping_puzzle_pt4.py.

We will look at infinite_jumper.py and some other example code and finish up with a discussion about game design.

First, what makes up a game?

Here are a couple of definitions:

  • "Playing a game is the voluntary attempt to overcome unnecessary obstacles." -Bernard Suits
  • "A game is a system in which players engage in artificial conflict, defined by rules, that results in a quantifiable outcome." - Salen & Zimmerman, Rules of Play

Another way of thinking about it is that all games have:

  • goals - something to work toward
  • rules - the framework around the game
  • feedback - letting the player know what's going on
  • voluntary participation / players - people willingly playing the game

Let's consider these things in the context of the games we play.

When we make a game, we have to consider our requirements for the game somewhat differently than a "normal" program we write. When we want to write a program that reads in election data and do a calculation, for example, we can pretty easily test to see if we are successful. Games, however, have what we call the "second-order design" problem. When we make a game, we might want a player to feel excited or scared or something else. But the code we write doesn't explicitly create "excitement." It makes a player character, walls, coins, etc. The only way we can know whether we are successful is playtesting. A lot of playtesting.

No audio today due to recording error.