Tuesday, April 8, 2008

My Adventure Heroes


They say you can learn a lot about somebody by knowing who their heroes are. Of course, it seems cool to say you have no heroes, but, deeply, having no models means something quite uncool ...
This is a list of people whose work in adventure games I admire. I may add more people and more info about them in the future.


Tim Schafer
Just the best of them all, showing how you can evolve the genre without diluting it. Sadly, when he was starting to show the world what he is capable of, Lucas Adventures folded.

Brian Moriarti
From Infocom, through Lucas creating a wonderful and still not surpassed mythic tale with Loom. His career is just awesome.

Ron Gilbert
The guy behind SCUMM (with Aric?), Maniac Mansion, The Secret of Monkey Island. Licensed SCUMM to create Adventures for children. He has been "underground" for some time, it seems that he is coming back to mainstream.

Jane Jensen
The best writer-creator of computer games. The creator of the best series: GK. Each game is a model in a style of game. Has a couple of good mainstream novels. Next year, a new series will start!

Rafael Latiegui
From Igor to world-wide success with Runaway. A model career in gaming, never compromising his principles. Though his games are well-known he is not.

Hall of Shame of Adventure:
Doom's copycats: They are in the hundreds ...


Lucas*rts: The Empire Stroke Back, who cares? The Jedis are Returning!

These days I took a look around the Monkey related sites ... I read what the corporate entity said about a Monkey sequel (something like by 2018 we will think about it) and it is not only mean and ruthless but self-damaging. To the little tool who said that: I do not know where I'll be by then (if I'm alive, I´ll be breathing adventure), but I´m pretty sure that you won´t be around LucasArts or LucasArts will be no more ... Adventure may or may not suit your tastes but it is the most creative, deep inmersion (deep as in emotional as opossed to "Sith" -reptile mechanic - hand eye coordination) genre computers have given us (yes, I could not pass level 54 in commandos joyturd!).

Gone are the days when everybody and their dog said the Adventure genre was dead. It is peculiar that those days predate the IT is dead .com crash by a few ´millenium bug´months but that´s another story ... or is it? There is much to be written about sw as a business (a ship full of captain pirates in a shark infested archipielago. Where is Guybrush when you need him?). I had the perfect timing to finish U in the crash, but that is another story indeed!

The history of Luke-Lucas and the seeds of SW (not to be confused with software) are now part of folklore. It seems now clear that not much originality can come out of Lucas*rts, be it in the adventure genre or elsewhere. It seems now clear that the creative sparks that had to leave in the crisis are returning. With "Luke" the question is: is Empire Strikes Back a self-fullfilling prophecy? Has not George "Lucas" Skywalker become the one he feared most: Darth "Corporate Tool" Vader ? 

At least Sam and Max escaped alive ... Tim´s new game is clearly Tim´s view of what LucasArts killed (adapted to these no-thinking 3rd generation console years surface and I think the game will be full of deep, creative irony). An older, now lost, Lucasfilm(tm?) would have created Ron´s version of Pirates of the Caribbean years before Disney´s did. I´m afraid we make be shocked this summer to see Indy dying a long sad death too ... Indy´s adventure has been postponed.

It is clearly not the same "Luke" that fought for creative control of his brainchild the one that killed the brainchildren of other Jedis. At least, he let Pixar be ... What has this "Luke" seen in the cave? Well, the Jedis are returning ! 


Monday, April 7, 2008

Inform 7 (or a NL DSP for IF !)

DISCLAIMER: This is going to be perceived as a critic of I7 (it is in part), because it is something NEW and DIFFERENT, which is quite GOOD so: I find I7 EXTREMELY interesting and a joy to experiment with (it´s been more than a decade since I were involved in IF and I´m coming back just because of I7). Also, I´m probably going to contradict myself multiple times ... I may even agree with what I write :) I only dissect things I really like, what I do not, I just ignore ;) .

This post is based on a discussion on rec.arts.interactive-fiction in March 08 about some writers choosing TADS instead of Inform 7 for a course.

  •  I find the whole IF (including Graphic Adv) to be conceptually OO to the core. What attracted me to it was all the model/simulation aspects of it (in the broadest sense possible ...). 
  •  I do not think an IF writer (vs modeler or developer or library creator) must be interested in the internal mechanisms by which his definitions get finally executed in minute detail.

I find Inform to be a lot more difficult to explain than other, less tied systems, like advsys (to put a lispy-oo example). Likewise, internally SCUMMVM is surely much more complex than Wintermute ... To grok Inform you may have to grok VMs, partially the historical development of ZIP, Inform 6, how Inform 7 notation gets translated into I6 (law of leaky abstractions of sw).


  •  I detect a (partial) rejection of I7 based on its GUI ( writers are used to simpler editors or word processors, idea processors or even script tools) and pure text is their core competency. It is even fashionable to consider TUIs as superior (just more expressive in exchange for being more opaque). It takes time to master an IDE, but it is not worth the fuss for just a few weeks of use. The UI is the SW.
  •  Another dissonance may be with presenting a uniform pseudo NL for all parts of the work. I think some writers may feel I7 syntax is a bit of a transvestite ... It is hard to modularize rule sets without experience, guidance. With a pure OO model you just look for responsibilities (responsible object).

Most of us devs, can look at I7 source for rules and mentally translate to Horn clauses or whatever formalism suits us best, but probably a writer with no formal training on math cannot. And some may be getting the message: hey you are not good at your core competency. I do not find the current form of rules in I7 (I'm just starting using them) to be the best representation. I find the NL approach to describe the object relations, static structure, containtment hierachies ... superb.

  • Procedural code/stateful programming is EASY to grasp, specially if given in small doses (just the part of the algorithm I am concerned about, the one that this method of this object has to deal with ...). Flags and simple vars have always been part of (almost) any IF tool.
  • Otoh, Event programming (concurrency too) is hard to grasp, and most notations/practices suck for this (actors being one of the best, and actors are OO to the core). A simple REPL loop is easy to master (user input-system response) but when you have cascading triggers and reactions: not well modularized rules are hard, even objects without scenarios/collaborations are hard, but you can always fall back on to an object structure/class inheritance tree with responsibilities. Multiple hooks require you to know the whole algorithm the framework follows to some depth (hiding the alg does not help at all). We are very bad at following the execution path so rule systems seem to
  • Declarative prog is harder to grasp: you have to be a good modeler, you have to be good with complex logical expressions and transformations and you have to be able to relinquish control (when, where, how is this exactly going to be fired, executed or even implemented, have I covered all cases? ....). Hell (sorry), the whole "professional" sw scenario is an example of letting declarative prog enter little by little (from configuration, to containers, to business rules, to object creation, to initialization of complex structures...). Anyone with enough experience developing knows that more declarative code is the way to go but it takes a lot of time to accept/embrace it, at least to those with a deep procedural background (most?) ...

I7 is still too new, there seems to be missing yet good examples and collective experience in it strong points and faults. I sense leaky abstractions there ...

But choosing is fearsome specially if you do not have enough experience to evaluate and I7 seems to make a point of being minimal (less in the core, more libraries) and letting you choose more. This is GOOD for flexibility but to beginners it can be bane ! Too much can also be daunting (but I have no experience with TADS libraries) The JDK is a monster but beginners love they have it there and can selectively pick up things (they usually implement things that are there already or search for things so particular that really have no place in a SDK .... but sometimes they are there too!).


I7 strings or formatting/printing facilities are a bit cumbersome (all that you cannot write ", ...) and maybe underpowered. Why not use escapes and references? Strings should be one of the most powerful abstractions in an IF language. This surprises me as I though Graham would have done this (I had him for a quite perly guy). Even the NL references (pronouns) I feel are underpowered (cumbersome).

Also, in i7, not having some sort of mixins, traits, multiple inheritance, interfaces or the like makes a OO implementation conceptually crippled (though simpler typewise). Not that you cannot find a way to simulate-implement this but this should be at the language level (perhaps in I8?).

  • You usually start implementing (your firsts) IF works by creating objects (definitions, declarations, rows, structures) and then adding (code) snippets for special functionality. IF presents a TUI that consists of "verb with objects" commands, and rather than create some sort of cascading switch in verbs (the easy route) you'd rather put code in the objects. This is object based "prototype" programming.

Rules, as has been said (Plotkin even has shown it can be rules all to the bottom), are more flexible and can go from the "use level" (global switches) to the minimal and most specific event in the most special situation but you are forcing me to think ahead (and not about what I naively may think is the important part). By the way (sorry we all OO heads have to say this), rules are objects too ...

Even the IF practice shows it is easier to exchange objects behind the scenes than to transform them radically. (Non) likewise it is many times simpler/safer to copy and modify than to refer to the same shared data ... It is safer to always declare functions and internally use whatever is best (constants, variables).

In the end I think this boils down to: It is easier to objectify than to abstract. It can be objects all the way down, rules all the way down or in between (probably the best but you are forcing me to think ...) ... give me patterns, give me guidance, give me the ten testaments, when I do not need them I´ll break them, don´t worry ...

PD: Inform is in better shape than ever, the GUI is an ELEGANT piece of sw, I feel I will not need to delve deep into the generated files or I6 except in very special cases and it may be a good  declarative frontend (perhaps with a little bit more of punctuation or structure) to other backends, VMs ...