Multimedia works and the “weakest link” principle

Things Ain’t How They Used to Be

A long time ago, I read an article on the internet that wondered about how great all the movies used to be. In the forties, it said, all the movies were so good and now, most are terrible. This, of course, is completely false. This was written before the term “blog” was even introduced and was probably the words of someone who was then very young. A much more likely hypothesis is that bad works tend to be forgotten and that time is an very effective (though sometimes unfair) quality filter.

But still, are there really films of the quality of Casablanca these days? Or, my personal Hollywood favorite, The Maltese Falcon? It not possible to objectively quantify quality, but most people would agree that something is missing to most contemporary films. They have better image quality, better special effects, in many ways they have much more polished acting, more sophisticated editing; they’re shown in bigger, better theaters and even home media is of better quality than most theatrical releases of their time. Surely, we can pull off another movie of the quality of Casablanca, right? But if so, why hasn’t it happened?

This question brings to mind other issues. The apparent low quality of the average movie is not an isolated occurrence. In the same vein, why are so many video games bad? Why are so many Broadway musicals so embarrassingly silly? Did culture peak just a few decades ago? Have we just gone by our equivalent of Ancient Greece’s turn of the 6th century B.C.E.?

Well, I for one don’t think so. Talent abounds. Similarly, our demands in term of what constitutes quality have also risen sharply. To get back to Casablanca as an example, from a purely logical point of view, its story makes absolutely no sense. If a similar story were released today, it would be mocked by any educated critic and blogger. But most likely, before that occurred, its script would be altered to make up for these mistakes. These alterations would most likely severely hinder the suspension of disbelief that the film allows. Some of its sense of idealism and romance is not restrained but is in fact exacerbated by the logical blurriness of its plot.

Bigger is Better, Except When It’s Not

This consideration about Casablanca‘s plot is not the only aspect that would probably not escape the judgement of a modern viewer. In fact, each aspect of a work of fiction or a work of art is condemned until exonerated by today’s standards. And here  is the crux of the problem: the greater number of  media types one uses in a single work, the more one exposes it to points of failure.

Let’s take the example of a musical comedy on stage based on high quality non-musical play. The musical has all the good elements of the original, plus some good music and choreography. In all logic, it should be better. But in reality, that’s rarely the case.

First, let’s look into the hypothetical original. Why was it successful? It had a good text, good acting, good direction, good sets, good sound, good costumes, good lighting and was staged in a good theatre. Now, one could break this down even further. What constitutes a good text? What makes a good theater? But bear with me for now.

Here comes the musical adaptation. It’s much more complicated to stage. In all likelihood, it will require more stage performers who sing and dance, it will require choreography and voice direction, lyrics and music. Let’s say one of these are bad. Let’s say it’s very bad. That would usually mean the whole show it bad. A musical with bad music is a bad musical, no matter how good the text, acting and costumes are. If the music is bad, the whole show is bad.

Now you can explain that really, if you stop and consider how good the text and the costume and the actors are, independently from the music, you’ll find spectacular quality. And that may be true. And you’ll probably be able to convince people. But the overall show will still be bad.

Each time a new type of media is added, the number of parts that can go wrong increases. And it does not increase linearly, it increases exponentially. Adding special effects to a film does not only add the need for special effects to be good, it also requires their aesthetic to be consistent with the overall aesthetic of the whole film, it requires the live performers to know how to work inside of a partially virtual environment and for their direction to be adequately guided in relation for that.

Each medium is not self-contained but affects every other. Any addition complicates every other aspect. If everything is done well, a new medium will add to the overall experience, but if any  single aspect is done poorly, it can ruin everything. I remember when Star Wars Episode I: The Phantom Menace was released, among its numerous criticisms was the fact that the font used for its subtitles was inconsistent with the one used in the previous films. I remember it bothered me, and I was not that much of a fan.

This is the weakest link principle: a multimedia work of art or fiction is only ever as good as its least well used medium. And the more media there are, and the more they are intertwined, the more harshly that rule applies.

A video game with a bad interface is a bad video game, no matter how good the rest of the game is. A play staged on a badly lit stage is a bad stage experience, no matter how good the rest of it is. A TV show with with bad camerawork is a bat TV show, no matter how good the acting or the lines.

The Space Captain and the Orphan Girl

Let me now quickly plug two TV shows I love: Babylon 5 and Candy Candy.

Babylon 5Babylon 5 was a TV series created by J. Michael Straczynski. It first aired between 1994 and 1998. It is not very popular among the general public, but was extremely influential on television writing overall. This  is mostly because of the huge focus that Babylon 5 placed on continuity and character development at a time where most TV series tried to make every episode self-contained. On most TV shows, at the end of each episode, the series was reset to the situation where it was at the beginning. On Babylon 5, however, most episodes took place within a story arc and the overall series plot evolved within the episode and the differences made in the world were permanent.

For example, on Star Trek: The Next Generation, the first officer of the Enterprise, William Riker, meets several women along the course of the series with whom he forms romantic entanglements. They are usually never referred to again in subsequent episodes. In Babylon 5, when the the character Londo Mollari forms a romantic attachment with a woman, Adira, not only is it never forgotten but eventually used against him as leverage later on in the series.

The complex and subtle nature of the series’ plotlines, the number of intertwining stories, the way they were kept in balance with one another is unprecedented tour de force for television, one that led the way for other television series from that point on to eschew the reset format of self-contained episodes in favor of a continuity systems. For example, this influences dramatic series that might otherwise have placed much less emphasis on continuity like Buffy the Vampires Slayer (1997-2003) or ER (1994-20014). It also influenced sitcoms like Friends (1994-2004) or Sex and the City (1998-2004), which show a degree of focus on continuity very rarely seen in previous instances of the format, frequently referring to events of previous episodes, rewarding faithful viewers at the possible expense of casual ones. This was much more prevalent in later seasons of both Friends and Buffy.

And yet, Babylon 5 was, in many respects, a bad series. Some of its dialog was poor. The phrase “Most amusing,” for example, was often used by many characters even though it often fell flat. Some of the acting was, by any measure, poor, while some was excellent. Some sets, costumes and special effects were below-par. Many of that can be explained by the relatively low budget of the series. On average, each episode of Babylon 5 cost half as much as an episode of a Star Trek series produced around that time. But explanations, as explained earlier in this post don’t matter. The fact of the matter is many aspects of Babylon 5 are simply sub-par.

The anime version of the main character of Candy Candy: Candy White Ardlay

A similar assessment can be made of the 1970s anime series Candy Candy, which originally ran from 1976 to 1979 in Japan. The series was a gigantic success in almost all of the countries where it was aired. The only two exceptions were the United Kingdom and the United States, the two countries where the whole of the story takes place.

That success came even though the series was produced extremely quickly. The animation is choppy and there are many factual inaccuracies. Books in English are bound on the right, like Japanese books and not on the left, American servants bow to their employers like Japanese servants, family structures are very hierarchical in way that very foreign to the Western world in which the series is supposed to take place. And yet from South America to East Asia the series was extremely popular with extremely devoted fans throughout Europe.

The flaws in Candy Candy were not limited to the series itself but continued with its distribution. The series was often very badly dubbed. In many cases, the dub was translated not from the original Japanese but from the Italian dub: Silvio Berlusconi’s media group, MediaSet used to buy the rights for Japanese animation, cheaply dub them and resell the Italian language versions to be re-dubbed. This included Candy Candy.

And so it seems that my weakest link theory has been proven wrong. Despite their array of flaws and imperfections, Babylon 5 and Candy Candy seem to be two perfect examples of works of fiction whose qualities made up for their flaws. But is this really the case? Maybe not.

Finding Hal Wallis

Getting back to Casablanca, where is our modern-day equivalent of it, if it can and therefore must exist?

Again, there is a lot of subjectivity involved in ranking works in terms of overall quality. That said, I have an opinion on the matter. It would be silly to name names here, as any specific example would be besides the point, but whatever more or less lines up with some of the Hal Wallis classics nowadays would probably be a high-polish independent work. (Actually, the game Don’t Starve as well as the film Primer by Shane Carruth comes to mind.) However, being independent, they are, by their very nature, distinct from classical works in their overall status.

We are much more likely to accept imperfections in something that is not touted as being the state of the art: artisan bread is supposed to unevenly textured, handmade pottery is not supposed to be decorated in a perfectly symmetrical way. Their roughness becomes an asset rather than a flaw.

But then, what about the inaccuracies in Casablanca? Well, in all fairness, they were never inaccuracies for their intended audience. The vast majority of moviegoers in the forties did not care about such details. And now, the movie has become a classic and this, rather than exacerbate its flaws, transforms them into artifacts of their time: something to be loved and treasured.

What then of Babylon 5 and Candy Candy? They were not classics when they were first aired. And they were certainly flawed.

Well, yes, but their imperfections contributed to their suspension of disbelief. The were coherently imperfect. It sounds unfair and maybe it is unfair, but it works. Had they been polished in all aspects but one, than one rough aspect would have ruined the whole series. But they were rough all over. Their incredible qualities existed not in spite of that roughness but within it. The bad dialog never got in the way of Straczynski’s subtle politics. The silly and incoherent translations did not in fact create obstacles for Candy’s journey through a completely impossible and inaccurate America but made the world she explored more acceptable on the surface of the canvas it was set up on. It’s a work where everything is a little off to begin with, so nitpicking is by definition pointless.

Fiction, art and entertainment are not literal. Through their many layers of allegory and figurative meanings, it’s easy to lose track of what’s what. I maintain that my weakest link principle holds. But the weakest link in that figurative chain has to really be a weakest link. It has to stand out from the rest in terms of its quality as well as its nature. A link made of paper is not the weakest link on a paper chain.

The next question is: will some technical aspects of the current big budget film industry fade away or are they here all to stay? The question is not as absurd as it seems. There are still black-and-white films being made today. Miyazaki’s Ponyo on the Cliff was made entirely without computer graphics. It is not inconceivable that there might exist at some point in the future a trend to make big works of screen entertainment that boast little or no digital trickery and adopt a style closer to the more naive one of classic Hollywood, may it be for cultural reasons or, more likely, for financial ones: there are new kinds of media competing with feature films in the limited realm of paid entertainment.

I don’t actually think this is going to happen, though, or, to be more precise, if it is going to happen, it’s not going to happen that way. The aesthetic motivation is most likely simply too weak. As for the proliferation of different media, I do think it will continue to increase, making the more popular ones diminish their reliance on expensive and superficially spectacular feats. But even that is a long shot.

Example of a MongoCaseClassListField in Lift

Here’s a couple of hours days I’d like to get back: figuring out how to use the Lift Web Framework‘s oh-so-elusive and yet alluring MongoCaseClassLiftField  class. The idea seems just too wonderful to be true: you can store pretty much any object into a list, save it as a document in Mongo and get it back, pristine.

Of course, by “any object”, I mean any set of data you want to define. The objects have to be made in the Scala way: case classes that all inherit from a common regular class or trait.

In this example, I’m going to store different kinds of animals inside of a list.

You must override the  formats  variable in the way shown above, and you must set it INSIDE of the  MongoCaseClassListField  object, otherwise Very Bad Things will happen.

Now, you can do this:

Notice how, even though Dog and Cat have the same fields, Lift stores each object back to its proper type. This is because Lift has placed type hints inside of Mongo in extra “jsonClass” fields (you can override the name of the field if you need to):

So now, you can easily take advantage of Mongo’s document system and Scala’s type classes for pretty much free.

Why no dialog trees in Go, Jill!

My current side project is a text adventure tentatively called Go, Jill!. I want it to be a mostly-free roaming world with a main linear story where the player character, the titular Jill, will be able to talk about a lot of things to a lot of people. But one thing I don’t want is dialog trees.

Interactive story and branching

Dialog trees are very similar to the concept of branching stories. Usually, when people hear the term “interactive story” they think of branching story. It seems to make sense, right? How else is a story going to be interactive? In fact, there are many arguments that can be made both in favor of and against branching in interactive stories. Most of them were masterfully presented in the book Interactive Storytelling for Video Games.

In general, branching gives a better sense of agency, and that’s a good thing. But, as counterbalance to that, branching carries many downsides, some of which are:

  • It’s hard to write one good story, let alone several good ones.
  • Similarly, in a scripted story (as opposed to an improvised one), a good plot is usually made by planting narrative seeds that will bear fruit later. This is further complicated if the story branches.
  • A story should generally be surprising. If it branches, people will either be progressing at random or not be surprised.
  • Generally, the end of a story either presents a conclusion or a clearly purposeful sense of non-conclusiveness (like The Sopranos). If the story branches, one may always have the impression that the conclusion they saw is only one of many and that often feels wrong.

An ending being only one of many if fine if the game one plays is really set to make people construct their own narrative. Several role-playing games are made precisely to allow that. However, while they are clearly set in a narrative-like world, they don’t have an actual narrative in the generally accepted sense of the term. The ending the players arrive at simply did not exist before they played. It is not one of many pre-existing ones.

Dialog trees

Dialog trees are mostly a form of branching. Even if great care is placed in making sure that they never have negative consequences (like Ron Gilbert did) every time a choice is made it usually prevents another one. In a game of strategy that’s good, but in a narrative context, that’s bad. Furthermore, most dialog trees don’t take the care Ron Gilbert did and actively use dialog trees to alter the course of the story and branch it out.

And here, we have many problems. The first one is that characters usually know more about their own world than the player does. That’s something that very visible in David Cage’s work. A character can open a drawer and find a photo than makes him sad. The player had no way of knowing that the photo would be there, but the character did. At the end, such choices are just random to the player.

Dialog trees are just like that only more so. When we talk to someone in life, we usually have a good idea of what will offend them and what will make them happy. In games, it’s mostly luck. It’s actually worse than luck because the narration of the games forces it to be surprising, on an innocent-sounding phrase is unpredictably likely to turn out to be offensive to a character for the sake of drama. If it weren’t, the story would be boring.

Also, some of the choices offered in dialog trees might be a lot less subtle than what the player has in mind. Let’s say a character asks the player “Should I go talk to my friend about her husband being unfaithful?” and the possible choices are “Yes,” “No,” and “I don’t know, maybe.” And answer like “Yes” can lead to

  • “You totally should. You’d be a horrible friend if you didn’t.”
  • Or “Yeah. I think so. If you don’t and she found out you knew, she’s going to blame you for it.”
  • Or “If you want. I mean, it’s your decision.”
  • Or “Sure. I’ll go with you. I can’t wait to see the bitch go down!”
  • Or “Yes. Let’s go to the café that just opened downtown.”

Even if the whole first line is given, the conversation might end up having the player character say things that the player never expected.

This is randomness, and randomness and storytelling don’t go well together. This is one of the areas where it is particularly tough for story and gameplay to merge. As Jesse Schell is very found of teaching, randomness is generally good for games. He also likes to say that story is often good for games as well. For my part, I’ll add that randomness is usually terrible for stories.

My alternative

Let’s be sensible: for point-and-click games, dialog trees are still the best solution. But Go, Jill! is going to be a text adventure. For that medium, dialog trees can easily be a bad decision. It’s very important to use one’s medium as much as possible. And I have a blog post about just that topic. For a text adventure, I always found dialog trees to be clunky. A sort of haphazard interface inside of the main interface. Text adventures do not have a perfect interface, obviously, but throwing a dialog tree in the middle of it takes away their main attribute: free exploration or at least the illusion of it. If I’m playing a text adventure, I like to feel like I can type anything. I know that only a few words will actually work, but if I play along and the game is well made, that feeling can still hold.

Some people often like to say that text adventures are misleading because they claim the user can type anything in the input field but only very few of these commands will work. First of all, a list of suggested commands were usually distributed with games at the time. Second, all games restrict actions. Try and have Mario walk in front of a pipe in the 2D games! Get Nathan Drake to talk the people who are shooting at him into changing sides! Take a saw and try dividing up those Tetris tiles! Go ahead, do it! Games are restrictive by nature. Text adventures, like all games, try to use their limitations to be better from them, as opposed to artificially build clutter and pretend that those limitations do not exist.

What I intend to do with Go, Jill! is to encourage the players to have Jill ask about and tell about as many things as possible to the non-player characters, with a specific focus on relations between people. It’ll be a lot of content, but I’ll try to make it work. Again, this will mostly be about exploration. The main consequence to most of that content will be the way the player explores and understands the story. With some exceptions, the actual gameplay will be unaffected. So, for example, Jill will be able to ask character A what he thinks of his romantic partner’s relationship with his mother. This will not be a suggested topic, just not I’ll throw in there. If the player tries it, there will be a response.

The idea is that from one same mass of text, each player will be able to explore the parts of the story that they want at will. Progress will depend on them following the main story path, but it will truly be an interactive experience in the way most of the backstory and underlying relationships will only emerge if the player seeks them out.

There is no negative consequence to picking the wrong option because there is no option to pick. There is no frustration for getting to the wrong ending because there is only one ending. But if a player is not interested in an aspect of the backstory or a character’s opinion, they simply won’t have to pursue it. If, on the other hand they want to learn all they can about what most of the characters think about things, that will be available to them with no in-game downside.

This will definitely not be a game one plays to win but one that one plays to explore.

Tex Murphy: Mean Streets

Box cover from Mean Streets

Box cover from Mean Streets

I played the first game in the Tex Murphy series today, Mean Streets. I didn’t expect much and that’s just what I got. I played the third and fifth of the five games way back when and I loved them. The second one had something of a good reputation, but not the first. Now, I understand why.

Many good ideas, but…

There’s actually a lot of good stuff in Mean Streets. A lot of good stuff. And that’s part of the problem. Many of the ideas are good but:

  • aren’t finished,
  • don’t work well together,
  • don’t belong in this game and
  • while not bad get in the way of gameplay rather than improve it

Still, many of these good ideas are very typical of the early days of video game design, particularly of narrative-based video game design: too much freedom was given to the player, which requires more meaningful content that can or even should be produced.

Let’s look at this in more detail.

Mean Streets had a fully-explorable 3D world in 1989

That, in itself, is impressive. It’s similar to L.A. Noire in concept: the player gets to move at will throughout a city. At specific areas, there are items to interact with. In L.A. Noire, I was impressed the by amount of work that had gone into that system, but I didn’t think it was particularly fun. In Mean Streets, the fact the developers got it to work at all is extremely impressive, but it’s a huge burden on the player and not fun at all. In the end, the player is regularly given four-digit “navigation codes” to be entered in an autopilot system that clumsily navigates through the 3D city.

This system just adds unnecessary steps to get to a destination, when just selecting them from a list would have been much more comfortable. Furthermore, the model for the city is ridiculously simple. It’s just a few shapes on a flat map with in extremely low resolution seen from a tiny viewport. Again, the concept was daring and it’s impressive that it worked technically, but the actual gameplay of it brings nothing but frustration. It takes a lot of time to get from one place to the next, and most of the time, there’s nothing to do but watch very slow movement within an environment and a few numbers changing on the screen.

In the story, the 3D world is navigated with a 3D car. It is possible to fly the car manually and go anywhere. But the controls are so awkward and complex that it is in fact almost impossible to get anywhere by doing that. A fully-polished flight simulator in a rich, detailed world might have been a fun games, but it would not have been an adventure game, at least not in 1989.

Mean Streets allows free input dialog

That’s part of the dream for adventure game developers: allow your player to have rich, detailed, subtle conversations with your characters. Mean Streets goes further and, like Maupiti Island, once a characters has answered a question, the player character, Tex Murphy and either threaten them or bribe them for more information. This is most likely suppose to give a strong sensation of freedom. But it’s not what happens in practice at all.

What actually happens is that both in the manual and in in-game dialog, the player is instructed to write everything down, with numerous repeated advice to check for spelling. The instructions to check for spelling are repeated several times in the manual, sometimes several limes per page in bold, capital letters. What this means, is that one has to write down outside of the game any name that is given and type it back exactly inside of dialog text input boxes. Any deviation will cause the characters to be confused. Bribing or threatening hardly ever worked. It actually never worked when I tried it. I can only guess that it does eventually, if not it would not be in the game.

There’s in built-in help system

It’s possible to pay an informer for hints, but Tex has limited money and there’s no way to know if the informer will have any information or how much she’ll charge for it. This makes the whole process random and frustrating.

The intent and the result

The goal of all this was obviously to hide the linearity of the game. One of the buzzwords of the time was “non-linear.” We now know that there’s nothing essentially wrong with linearity in games. Super Mario Bros. is completely linear and is still considered one of the best games of all time. This absolutely extends to narrative games: the games in the Ace Attorney series are mostly linear and are also very highly praised. The way it’s possible (although not practical) for the player to roam around and the way money can be spent on bribes and informants give the impression that one can reach the end of the game in many ways.

In order to add an action element, there are short combat sections, not unlike in the games of Quantic Dreams. I found they mostly lead to a game over and if one had not saved, a lot of gameplay is lost. But it’s not like the combat sections are announced. They can come at any time and the conclusion of a failed combat section is a game over screen. Combat is generally a bad idea in an adventure game, but unannounced combat that interrupts gameplay based on conversation that just ends the game is even worse.

The game also tried to vary mechanics, much like God of War did successfully years later. But what we got instead was what Yahtzee Croshaw would call a schizophrenic interface. There is:

  • a free-roaming 3D interface for the flying car
  • a non-interactive 3D view for autopilot in the flying car
  • a side-scrolling view for combat
  • a face-to-face view with text input for dialog, and another, equivalent one for phone calls,
  • a visual-novel-like themed interface for locations,
  • white-on black text popups for narration

and others that I might not have encountered. Many of those are not bad, again, they’re just out of place, or unfinished, or too numerous, or a combination of the above.

There’s also a huge contradiction between the views of the city in the flying car and in the side-view action sequences. It’s simply impossible that these two worlds have anything in common. Again, not bad as such, but completely incompatible. That is also true of visual-novel-like sections, which have detailed, rich graphics that don’t match either the 3D views or the combat sections.

And, as Tex spends most of his time flying, the title Mean Streets doesn’t make much sense. Tex seems to spend very little time on streets. Yes, the only time the player sees the streets in question is during combat, but that part of gameplay seems so removed from the rest that it seems odd that it would become the titular feature. It’s not like when the title of a work is an deceivingly inconsequential detail, like Slaughterhouse Five or The Perfume of the Lady in Black. It just seems that that title was given because it was a cool title, reminiscent of a cool movie.

The good stuff

There are many, many good things in Mean Streets that are worthy of praise. Many of these have been kept in future games.

First of all, Mean Streets uses technology that was definitely bleeding edge, such as 3D, video and voice. These were very much ahead of their time in 1989. The got in the way of gameplay or were frustrating, but I’m confident that the failure of Mean Streets is what made the subsequent games so good. After their first Tex Murphy game, Access had figured out what to keep and when to use it.

This game also makes me glad for having taken the class Building Virtual Worlds at Carnegie Mellon’s Entertainment Technology Center and Jesse Schell’s class on game design. These were specifically designed to avoid problems like the one in Mean Streets. I can’t honestly say I would not have done the exact same thing at the time myself.

Heidegger, in retrospect

My last project at the ETC was Heidegger, at our Silicon Valley campus. The client was Electronic Arts and we were very lucky to be able to work with several people from the Dead Space team at Visceral. Our project was about finding a way to deduce player types though gameplay analytics and from there predict how likely people will be to like another game.

I worked on the interface with the very talented Anabelle Lee. She took care of aesthetics and I was in charge of functionality. I took that opportunity to improve my skills with the HTML 5 Canvas and jQuery. But, most of all, I got to experiment with Websockets and the fascinating Tornado web server, written in Python.

I also wrote and edited our promo video. I did not film it, though. That part went to other members of our team.

I would like to take the opportunity to thank Ben Medler, our fantastic client contact for just being so awesome.

SEECQUEL in restrospect

I just realized I never put up our promo video for SEECQUEL, my team from last semester, on this blog. Well, better late than never, I suppose. Here is, with a bit of a delay, a video about Nature Quest, an application that helps connect children with nature.

I did some backend programming work for that project and a LOT of writing. Even though I saw it coming, it was still a shock to find out how much writing it takes to get a few minutes’ worth of gameplay experience to have good dialog and good interaction.

A web server optimized for websockets

As part of my OCCO project, I made a web server that makes the use of websockets easy. I din’t make it from scratch, of course, I made it with Tornado. Tornado is a very lightweight, flexible and extensible web server written in Python. It makes the use of websockets trivial.

My whole code is on GitHub:

This site is a mockup of a modification of the interface of Electronic Arts’ Origin game distribution system. My team added a panel that informs the player of their Bartle player type. My websocket feature allows me to change the player type in real time during presentations. This was really made to have a good reason to use websockets more than anything else. The Javascript part of websockets never changes. It’s the part that’s on the server that’s often problematic. In this case, I have a page with the player type chart and one or more pages with a remote controller to change it. The code to handle this is absolutely trivial:

I keep a list for each of the two types of websocket handlers and keep them updated as the sockets are connected and disconnect. And, as message come, I just pass them along to the relevant pages. That’s really all there is to it.

Tornado also requires me to deal with the delivery of files manually. That was new to me, coming from Apache, Lift and Zope. It was interesting and made me aware of many details.

Why do we even have adventure games?

Illustration from Pride and PrejudiceNow that I’m among people who love and make games all the time, a question that has surrounded me for years keeps presenting itself in ever-varying ways: why do we even have adventure games? How did they ever get popular? Why are so many people trying to bring them back?

Surely, adventure games aren’t really games, are they? There’s usually one possible outcome. You follow a story that you don’t even get to influence, unlike role-playing games, where the players actually get to make the story in many ways. Sure, there are a few puzzles to solve, but really you might as well watch a movie or TV series and you can get pretty much the same thing and not have to click for hours to get it.

Actually, there is something to that last point: adventure games are in many ways closer to TV series than to many other games. And their purpose is much closer to television than to, say, a fighting game.

A few days ago, I was watching an episode of the TV series Once Upon a Time with my roommate. That episode ended with a revelation about how a character in the “A” plot matched a character in the “B” plot. This a very common technique in Once Upon a Time. About two-thirds through the episode, my roommate exclaimed, “I just figured out who he is!” There was an implicit tone of contest: I had not figured it out. I actually had not even figured out that there was a new connection made in this episode. After that point, I started thinking about it and I figured it out too. When the episode ended, our assumption was confirmed: we had gotten it right.

In many stories, though, the fun actually comes from getting it wrong and being surprised by that failure. In his game design class at Carnegie Mellon, Jess Schell refutes the claim that some entertainment, like television, is passive, and some, like games, is active. He claims — and makes a very good case for it — that all entertainment is active. The way my roommate and I put active effort into figure out that part of Once Upon a Time is a clear illustration of that.

Note that here was no explicit challenge presented to us. Nor was there an explicit mystery in the show, unlike, for example, in a murder mystery where the identity of the killer is presented as an explicit challenge. The implicit nature of the mystery did not make it in any way less compelling.

Now, one could argue that the challenge was, still mechanical and that it comes from one of the series main, for the lack of a better word, “mechanics.” But this sort of engagement is present throughout fiction. Let’s take Jane Austen’s Pride and Prejudice as an example. Jane Austen was certainly not writing a television series nor a video game. In it, two characters make a claim directly related to each other’s moral and social status: Mr Darcy claims that Mr Wickham is an immoral man who should not be trusted and who, if one allows oneself to give him any credit, will use his influence to perform harmful actions. Mr Wickham, on the other hand, claims that Mr Darcy is cold ad unfeeling and that he takes pleasure in belittling others in order to increase his own sense of heightened self-esteem. The reader is asked to take sides, just as implicitly and just as actively as in Once Upon a Time. And the challenge is just as balanced as any video game is balanced. On the one hand, the central character, the though who we actually view the story, is very much inclined to side with Mr Wickham. She presents evidence against Mr Darcy that is reinforced by the fact that it is the point-of-view character that’s presenting it. On the other hand, we also know that Mr Darcy is one of the main characters and we know that the title of the work is “Pride and Prejudice, or First Impressions” which strongly indicates that false perception will be a important component of the story.

A fan painting of Guybrush ThreepwoodA more explicit way of seeing this is when a story is told in person. One should always make the most of their medium in all circumstances. I have another blog post precisely about that. When telling a story in person, it’s usually a good idea to tell it in such a way that the person (or people) you’re telling it to can interrupt. Actually, scripted stories in which a story is told very ofter use that technique. If someone who’s telling a story in person in a way that could allow interruptions outright rejections them, for example by saying something like, “Please, don’t interrupt me. I‘m telling the story”, they are simply neglecting their mediam.

Adventure games reverse the order in which that participation occurs in the story. Instead of leaving places where to say, “guess what happens now?”, they are constantly saying, “Guess what happens now?”

Unlike games like the Professor Leyton series, an excellent series of games, but not adventure games, in actual adventure games, the story is not present to frame the puzzles, but the puzzles are present to enhance interaction with the story. Tim Schafer’s Day of the Tentacle provide an excellent example of puzzles that work to enhance storytelling-focused gameplay. While action games give players the opportunity to direct fighting parts, or the navigating part of stories in an interactive format, adventure games let players play with the “Guess what’s next?” part. There’s more to it of course, but this is the main spirit that drives them.

So, in short, adventure games are a digital medium that is centered on the part of storytelling that makes us feel like saying, “Let me see if I can guess what happens next.”

Adding a toolbar to Frotz: harder than I expected

I’ve just spent a few hours trying to add a simple MFC toolbar to Frotz. I took a class on Visual C++ about ten years ago, and I think I’ll need to roll back and look into MFC again.

For the sake of clarity, MFC is the Microsoft Foundation Classes: it’s a set of object-oriented tools that create a high-level layer to use Windows functionalities like menus, button or, for example, toolbars. But using MFC is not obvious. At least it’s not to me. And Frotz for Windows is a fairly complex application. As much as Frotz itself is easy, even though I secretly expected it to be hard, Windows Frotz that I thought would be relatively straightforward is much more complex than I expected it to be.

What I must do now, is create a new MFC application with only the functionality I want to add to Frotz and then and only then add that functionality to Frotz. It feels a bit frustrating, but if I want to make this project useful, I think it will be necessary to step back, gather myself and then come back to the present point.

Main process loop found and other news

I’ve just been reading more of the Frotz code and I actually found the main process loop. It was much simpler than I anticipated. Actually, it delegates all the operations to an array of pointers to a function. In that way, it’s remarkably similar to an interpreted language, I think. Here’s the actual main loop:

One thing I’d like to figure out now is what the  finished  variable does. I’ve figured out it’s used to simulate interrupts, or at least I think it is.

This code links to the actual opcodes. They are stored in things like this:

This is an array of pointers to functions assigned in-line, which I find extremely cool. All the pointers are void to void because they take their arguments from and return their values into the Z-machine’s registry.

There will be more on this later in this blog, but even though these are op-codes, the ones I’m showing in the current blog post are actually directly related to interactive fiction: they move and look into game objects. This too is extremely cool.

So the main loop goes down the op codes in the game file, and executes the matching function based on which number in the array shown above or one like it a pointer to the function that executes the functionality of the op-code actually is. Again, there will be more about these functions later.

Finally, about two weeks ago, when I could not get Frotz for Windows to compile at all, I bought a boxed version of Microsoft Visual C++ on line to be physically delivered to the ETC-SV. It has still not arrived. I’m glad that I ended up not relying on it after all. I found a copy of Visual C++ 2003 online, as explained earlier in this blog. Then, of course, David Kinder told me he himself he used Visual Studio 2008…

UPDATE: The variable finished  was not, as I first suspected, about interrupts. It’s the stack of functions going on inside the Z-machine! So when it reaches zero, it means… I still don’t know but I’m going to figure it out!

UPDATE 2: The macro CODE_BYTE  expands to:

This is obviously how the Z-machine steps through its memory. Though I’m still not completely sure of what all of the pointers mean. There’s *pcp , *zmp , which I think stands for “Z memory” and a few others. I’ll have to figure that out as well.