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
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.