Tag Archives: programming

Adventures in AI scripting





Object selection problems and selecting objects in FPS mode






Moving Platforms






A few theoretical thoughts about magic systems, allegory, programming

I don’t think about theory much these days, focusing more on creative projects. For the last couple of days I’ve been doing some preparation for my classical myth and media class, which sparked a few theoretical thoughts.  Also, I’m continuing to think about magic systems, inspired in part by a podcast ( on which Roger Travis graciously invited me to be a guest) about this subject and its relation to Arcana Manor. Magic systems have become the focus of my creative design work and my research, and I tend to think about them through the lens of interactive or procedural allegory, a system of expressive rules.

This will make more sense to readers (hopefully) when the podcast is posted.

A magic system is a set of core mechanics (spell-casting is one of them, maybe the primary one) for  simulating supernatural powers and abilities rigorously and symbolically.

Quests, because of their relationship to narrative, tend to be scripted within an engine through quest flags and state changes.

Magic systems can be partially scripted within an engine (depending on the engine’s flexibility), but truly innovative mechanics have to be programmed.  New mechanics tend to require, at the very least, modifications to an engine’s source code and may require the development of new engines (or at least sub-systems within an engine).

What matters to me is allegory as system, as organized matrix of rules for generating symbolic meanings. This is distinct from a linear procession of symbols (i.e. narrative) or from free-floating pool of symbols merging into each other (collective unconscious, dream). In linear mediums, allegory manifests itself as narrative (although I wonder if poetry, in its capturing of de-contextualized images, may be allegorical without being solely or even primarily narrative). Rimbaud’s Vowels or Baudelaire’s Correspondences are dense symbols without narratives. Dante’s Divine Comedy does chronicle the adventures of one pilgrim (Dante) through Hell, Purgatory, and Heaven, but the descriptive focus of the poem is the spatial organization of these realms and their inhabitants. The afterlife is a cosmological system for representing the punishment of sin and the rewarding of virtue.

A mythology (whether real as with the Ancient Greeks or invented as in the Cthulhu Mythos) is a system (a pantheon, a set of places, artifacts, recurrent events, themes). Many narratives can occur within a mythos, but many systems can also be generated by a mythology. When I was thinking about quests, I was trying to connect narrative and system, to explore their generative interplay. As I think about magic systems, I am more and more concerned with dynamic, procedural systems, which can be expressive in interactive, procedural, re-configurable ways.

Ritual is a key middle term.  Ritual is enacted myth, enacted symbolism.

Eric Zimmerman says that there is magic in games but argues that this magic is the thrill of creativity and problem-solving, which are distinct in his mind from a mage’s 8th-level fireball spell or the mystical experiences of organized religion.

I don’t see these three aspects of magic as inevitably distinct.  There are all sorts of connections to be woven between them.

That’s why I have a Clive Barker quotation above my desk, which in condensed form says “magic is the first and last of the world’s religions: a religion whose profoundest ritual is play.”  The quotation is longer but would require a detailed gloss to do it justice, because the idea is too important for me to treat lightly.  But the main point is that in Barker’s mind the three aspects of magic in games are intertwined expressions of one another.  (And he puts his money where his mouth is, since this quotation is from the introduction to his Imajica collectible card game, and he has also discussed the metaphysical implications of the magic system in Undying.  Incidentally, the magic system in Undying may be my second favorite magic system, just beneath Eternal Darkness.)

(A sidenote on Jung: Jung coopts the concept of the symbol for psychoanalytic purposes, but the term comes to prominence in Western thought in Romanticism (English, German, French), which precedes Jung chronologically. (e.g. Coleridge, Baudelaire, Rimbaud, Nerval).  In the game Eternal Darkness, the narrator invokes Jung, Freud, and Skinner as possible correspondences to the three Ancients, but then dismisses these psychoanalysts as inadequate to the horror and majesty of the beings represented by the runes. This is a nice way of suggesting that, while Jung is a key figure in understanding symbols, their content and operation eludes his unitarian and trans-historical attempts to explain all symbols as products of a psychoanalytic entity (the collective unconscious) which he invented. A theoretical entity which originates in his own German Romanticist/early modernist context and his Freudian training.)

And allegory precedes Jung also (Plato, Spenser, Dante).

I need to read Angus Fletcher’s Allegory: Theory of a Symbolic Mode.

Question for further research: what are some of the most innovative magic systems, both in terms of mode of spell-casting, effects, and symbolism?

Mage: The Ascension and Mage: The Awakening (tabletop)

Magic: The Gathering (cardgame)

Betrayal at Krondor (crpg)

Arx Fatalis (crpg)

Loom (Adventure Game)

Eternal Darkness: Sanity’s Requiem

New team member Shaun Walsh

Shaun Walsh, an experienced programmer in the process of learning Torque, has graciously agreed to be on the Arcana Manor.  Shaun is interested in conceptual code design, i.e. planning out how to implement various features, such how to program a magic system in which the player will trace runes and sigils on the screen to produce various magical effects.  This is a tremendous addition to the team given the difficulty of programming and how slow I am at learning it. :)

Shaun has experience in Php, C/C++/C#, VisualBasic, and a host of other languages.  As an example of his coding facility, here is what he was able to come up with very quickly regarding the implementation of the mechanic for tracing runes:

So, this wouldn’t be an overnight project by any means. Your drawing of the spells to the screen is interesting. Castlevania for the DS had the same concept, but they had built in functionality for that. How it would work is you would have to have a file that stored 2d coordinates of the first mouse click on the screen (where he starts drawing) and then does a match function to determine the roundabout next point he would have to draw to, something like a direction map. Heres an examples

User starts drawing at 25,25



1: +25, -30

2: -25, -30

3: -25, +30



Something like that would have taken me hours to figure out, which shows why recruiting team members if important.  Welcome aboard, Shaun.

Programming: first steps

I’ve been working in Torquescript, using The Game Programmer’s Guide to Torque by Edward Maurina (which is published by A.K. Peters, the same company that publishes Quests).

Specifically, I’ve been working on setting up a GUI or Graphical User Interface for an inventory system, using some resources and tutorials on the GarageGames site.  The process of scripting such a system is extremely complex, because a game in the Torque Game Engine Advanced is a maze of directories and sub-directories containing thousands of scripts.  Even when working with a pre-existing resource, a programmer has to figure out exactly where to put specific snippets of code in many different files on both the server and client side.  My license of TGEA actually allows me full access to the engine’s source code, which can be modified in C++ and then re-compiled to add functionality to the engine, but this is both a blessing and a curse because their are now hundreds of thousands of lines of C++ code than can be potentially altered and recompiled.

And, despite the complexity of all this (or maybe because of it) I absolutely love the process of programming, which is like solving a vast and intricate jigsaw puzzle.  When I have a working interface, I’ll post screenshots.

Magic Systems and Meaningful Scripting

Runes in Eternal Darkness

Runes in the Magic System of Eternal Darkness


Questions for research include:

  • Most importantly, as relates to programming practice:
  2. How do custom NWN scripters make their own spells?