I’m struck by the rather limited kinds of magic that one finds in spaces where, technically, anything should be possible. Understanding why some kinds of magic don’t “work” should help us map the limits of our physical intuition when applied to non-physical worlds – like information systems.
In his seminal 2001 paper, Ted Castronova compares the current crop of virtual worlds (VWs) with their predecessors, the failed first generation “avatar spaces” like Alpha World. He observes:
Their failure helps identify the source of the success of VWs, because there really is only one major difference between these avatar spaces and VWs: Scarcity. Nothing was scarce in the avatar space. A user could create as many avatars as desired; all avatars had equal abilities; the user could build without limit, as long as the desire to write code persisted. The activities of one avatar posed no real obstacle and imposed no significant cost on any other avatar's activities. And, somewhat shockingly, scarcity is what makes the VW so fun.
It’s hard work to add scarcity to synthetic world, since the “natural state” of software is perfect, free, infinite replication. Here’s a Second Life Herald report on a mania for hand-made tulips that is raging in that world:
In a world sated with freebies and copies of just about everything bulging the avatar inventories, the exquisite prim-crafted tulips of Desmond Shang have sparked a Tulipmania worthy of the old meaning of the term for creating scarcity and paying high prices in secondary markets.
Shang is reported to have said that, “concern that they might be duplicated somehow did prove to be a huge headache.”
Three kinds of magic
If we use the term magic to describe things which don’t occur in the physical world , we can define three kinds:
- Magic we can’t imagine
- Magic we can imagine, and that is found in games
- Magic we can imagine, but that is not found in games, or that is found but doesn’t seem to lead to “interesting” game play
I can’t give examples of the first category, by definition. It’s a squishy category since some people are more imaginative than others. However, I believe that this is a non-empty category, and one that might shrink over time as our imagination is trained through cultural development.
Category 2 (magic found in games) includes the following:
- Accelerating existing effects – healing, teleportation
- Humans doing what natural forces do – lighting bolts, water spouts
- Changing nature of materials – strengthening armor, transmutation of elements, summoning something from nothing
- Non-physical effects, eg invisibility
(Finding/creating an authoritative taxonomy of workable game magic is a ToDo of mine; any pointers gratefully received.)
Category 3 (magic we can imagine, but that is not popular in games) includes features which are technically easy to implement, but which game players (and by assumption, humans in general) find hard to deal with:
- Abundance – scarcity seems necessary to make worlds fun. Exhaustion and constraints apply to magic in category 2: one can make fire appear, but are then exhausted for a period.
- Living in three dimensions – not just flying from point to point, but living in a way not constrained by moving in a plane
- Richly linked stories – hypertext narratives were all the rage a decade ago, but have proven sterile as a genre; humans need a beginning, middle and end
This third category provides a tool for understanding the limits of cognition applied to knowledge-based systems
Relevance to Software
Software seems to be Category 3 Magic: we can (obviously) imagine it, but it goes against the grain of our intuitions.
- Abundance is a given with software, and with digital goods in general: they’re perfectly copiable at zero marginal cost
- Software is a high-dimensional artifact. As Allen Brown pointed out after I gave him my “hypercube” example: “The mathematical abstraction of problems with any sort of dynamics seems to result in a state space with four or more dimensions. [The] problem of concurrency is exactly such a problem: (at least) two agents execute two pieces of code on two time lines. This results in four dimensions.”
- A program executes in a richly linked way as soon as it can call sub-programs. One can’t describe its functioning as a story that would be intelligible to a human being.
We begin to see why large software projects so often go wrong: they’re hard for humans to think about. (See my earlier posts Software project management: an Innately Hard Problem and Hard Intangibles) Since software is a good model for complex, real-time interlinked processes in general, one might expect that these, too, will provide a challenge for unaided human thought.
 Some resources listing kinds of magic: