To know why a garden looks the way it does today is to understand not only the histories of its individual parts, but also of the relationships between them, both past and present. In a garden, each individual flower becomes a character in an ongoing story, with a personal narrative arc all its own. This, more than anything else, stands out to me as the key difference between exploration and gardening games. In exploration games, to spend time in a place is to deplete it, to make it less and less interesting until there’s no longer any reason to stay. In gardening games, to spend time in a place is to enrich it, to participate in stories and interactions and relationships that make it more interesting by virtue of your understanding of its inhabitants.
A thing that affords play, then, is a thing that suggests playful uses; a thing that naturally guides its user towards a playful state of mind. The very existence of a reliable undo command is an open invitation to engage in playful experimentation A canvas or sketchbook serves as an “external imagination”, where an artist can grow an idea from birth to maturity by continuously reacting to what’s in front of him. Consider what it’s like to play Super Mario Bros. for the first time. Now consider what it’s like to write, say, a shell script for the first time. In both scenarios, your challenge involves learning how to manipulate a wildly complex system in order to achieve a desired outcome. But so far, I’ve yet to meet anyone who had a harder time learning Super Mario Bros. than learning to program an unfortunate trend in contemporary games is to spell out every detail in a hand-holding “tutorial” session at the outset of a game – unfortunate because it shows both a great deal of contempt for the player’s intuition and a lack of confidence in the designer’s own design. but more than that, it’s a design failure because it tells the player the rules instead of allowing her to learn them. sharp relief Why, then, do people learn to program through tutorials and exercises that tell rather than show? Perhaps because the tools, languages, and environments embraced by modern programming practice are at best indifferent and at worst actively hostile to play. When you first launch Super Mario Bros., you’re greeted by an engaging, reactive first level designed to guide you gently into the world of the game. When you first launch the Unix shell, you’re confronted by an empty, inscrutable command line that will reject, with a tersely worded error message, almost anything you choose to type.