Uncategorized

Oracle Game Experiment

04.04.09 | Permalink | Comment?

My friend John Harper recently posted a two page RPG called Ghost/Echo that got some creative wheels turning for a lot of people. The format got me thinking, so I put together my own little ‘oracle game:’ Codename Eliezer.

Games, Play This Thing

Play This Thing: Og

11.03.08 | Permalink | Comment?

Over at Play This Thing, just in time for the presidential election, my review of a game that promotes a level of discourse on par with the presidential debates: Og.

Culture

Halloween

10.30.08 | Permalink | Comment?

Since the price of cricket bats ruled out my Shaun of the Dead costume, but I still needed something zombie themed, I’ll be spending tomorrow as something not quite dead, but definitely not alive either: the dreaded zombie process.

I will feast on the memory of the living!

Edit: Got featued on Boing Boing Gadgets! If you’re here from Boing Boing, take a look around, there’s more here then awesome t-shirts.

Games, Play This Thing

Play This Thing: vs. Outlaws

10.23.08 | Permalink | Comment?

Another review of mine up on Play This Thing, this time it’s a writeup on vs. Outlaws. I’m also now listed in the site’s staff section, so you can keep up with my posts there.

Games

Direct Learning: A Response to Portnow’s Tangential Learning

10.07.08 | Permalink | Comment?

This post won’t make much sense if you haven’t read Jame’s Portnow’s wonderful Tangential Learning essay, or watched the fantastically amusing video. (I found it via the great guys at Rock, Paper, Shotgun.)

Now that you’ve done that, we can get to what I have to say. Sorry, no video from me.

First, let me say that Portnow has a great point. Tangential learning is fantastic and a worthy addition to any game, electronic, pen-and-paper, or otherwise. But there’s another opportunity for learning in games, one that’s actually been used even less then tangential learning. For lack of a better term, I’ll call it direct learning: educational value that comes not from references to fact, or the simple addition of traditional educational material to existing games, but from the actual structure and gameplay of the game itself.

First, let’s talk about what direct learning is. Direct learning is when you get some new knowledge or understand a new idea based on your interaction with the game. You learn from play, not from the fiction layered on top.

To explain this more fully, we’ve got to talk a bit more about the structure of a game. Let’s oversimplify a little (okay, maybe a lot) and talk about games as two parts: the rules and the fiction. The rules define what you can and can’t do, and how that effects the variables of the game. Fiction is anything that is purely descriptive.

It’s pretty easy to see these parts in any game: in Halo, the rules dictate how you fire, swap, and reload weapons, what damage means, what winning means, and so on. The fiction tells you who you are, why you want to win, and gives reasoning for why things are the way they are. The rules of the needler dictate that it has a large clip, it’s bullets home in slightly, and a while after the bullets hit they explode. The fiction says it’s a Covenant weapon, it’s bullets are crystals, and so on.

Direct learning is all about learning from the rules, not from the fiction, whereas tangential learning is mostly based on the fiction. Let’s take an example that Portnow uses: Sephiroth in Final Fantasy VII. Players are inspired to maybe learn something about kabbalah not because of the rules of the game per se, but because the name Sephiroth happened to be applied to one of the characters. It doesn’t make too much difference if Sepiroth is a hero or a villain, a man or a woman, a powerful force or a minor one: all that matters is that the player cares enough to find out more about his name, or happens to search for more information and come across something related.

Direct learning is more unavoidable, but also more subtle. Probably the single greatest influence on my early knowledge of financial knowledge (and to a lesser degree municipal management) was SimCity. It’s arguably an edutainment game, so it’s not the best example (we’ll get to better ones later), but it is very effective at communicating knowledge and leading the player to understand new things through play. The player wants to have the most successful city possible, and to do that they need to learn to balance a number of competing factors, such as taxes, spending, zoning, expansion, and so on. The interesting point here is that the fiction doesn’t matter too much: it’s all about learning how to make the best use of short and long term investments and wisely invest, save, and spend. The units could be completely arbitrary, the player could be managing berries and have to think about issues like sweetness, ripeness, and color, and the mechanics of the game still work. The player may not go off and search for information on ‘broken windows’ social theory, but they’ve learned valuable knowledge about how investment works while playing a game.

I promised some examples beyond SimCity, since that’s arguably in the edutainment category, and there are some (though not as many as I’d like). In the videogame sector, Passage and Braid are often cited as games that say something through their mechanics. I won’t go into much depth on these, since others already have, but they both use the mechanics of the game to communicate knowledge of a sort in that they both have very artistic themes. In fact, this is an area where direct learning far outshines tangential learning: having a reference to another work, character, or historical fact can teach facts, but direct learning can communicate a theme, feeling, or message in much the same way as a movie or novel.

Most strategy games, real-time or otherwise, can also be cited as promoting direct learning, in the same way as SimCity. While Civilization (mentioned by Portnow) has plenty of opportunities for tangential learning, it also has plenty of direct learning. Reading the Civilipedia entry on longbow archers gives knowledge of historical facts, but controlling a brigade of archers and seeing how they effect your tactics is an even more effective way of communicating how the advent of the longbow changed warfare.

Going beyond videogames, there are quite a few boardgames and pen-and-paper RPGs that have some of the same benefits. Tabeltop strategy games are just as adept as their computerized cousins at direct learning (and tangential learning). My Life With Master is a roleplaying game that communicates a theme on the nature of abusive relationships, but with the fiction of a Dr. Frankenstein/Igor relationship, with the message entirely in the mechanics. The Shab-Al-Hiri roach can be said to do much the same for ambition, and carry for the nature of war.

Overall, direct learning is probably lagging behind tangential learning. Most ‘edutainment’ games are closer to tangential learning: games like Math Blaster require you to know math, but the mechanics of the game do nothing to actually further the understanding of the field. A direct learning game about math would have mechanics that lead to a greater understanding of the nature of addition and the natural numbers, instead of basically using a simple math problem as a password of sorts to let the player enjoy another level of a more traditional game. (As a side note, anyone who can make a game that uses direct learning to communicate a greater understanding of Godel’s Incompleteness theorem wins a big smile from me.)

We just don’t see direct learning as often as tangential. Looking over a few games directly in front of me, Bioshock tangentially teaches about Ayn Rand and objectivist philosophy, Soul Calibur at least has a few vague historical references, and Rockband is pretty much bound to introduce you to new music, but very few of these offer any direct learning. The shooter gameplay of Bioshock has nothing to do with the objectivist fiction, Soul Calibur’s fighting has nothing to do with the historical periods it’s combatants are plucked from. Rockband is at least a little closer, but you’re still unlikely to learn much about a period of music based solely on the mechanics of the game.

This leaves the game industry at an interesting point. This kind of direct learning through interaction can only really be done in a reproducible way through games as a medium, and that’s something that needs to be taken advantage of. For games to really be an art form, they need to focus on their unique features, the interactive mechanics that can do anything from communicate meaning to just provide fun, and put less emphasis on techniques borrowed from other media, like movies or books. Tangential learning is great, but the future of games lies is direct learning, the ability for games to say something in a way that only games can.

I hope to return to many ideas mentioned here later and expand some more, but if you have any questions, just put ‘em in the comments.

Games, Play This Thing

Play This Thing: The Shab-Al-Hiri Roach

10.07.08 | Permalink | 6 Comments

I have a new review up on Play This Thing. It’s about The Shab-Al-Hiri Roach, a game that asks a very important question: will you swallow a malevolent ancient roach? What if it gets you tenure?

Games, Play This Thing

Play This Thing: Primetime Adventures

09.02.08 | Permalink | 1 Comment

Another review by me is up on Play This Thing. This time it’s Primetime Adventures, and I think it’s worth a read (but then again I’m obviously biased).

Games, Play This Thing

Play This Thing: Burning Wheel

07.30.08 | Permalink | Comment?

Play This Thing recently posted my article on Burning Wheel, so do yourself a favor and go read it.

Languages, Programming

Java: The Way It Should Be, The Way It Is

05.29.08 | Permalink | Comment?

Recently there was a story on Slashdot about how Java will die of old age. I have some problems with that:

The Title
Since when do languages die of old age? The article actually points out that the most successful language (C) is older then I am. (Assuming you count since inception, not since major revision. C99 anyone?) This is more of a minor nitpick, but it seems like any sufficiently popular language will never really ‘die’ (at least not in the COBOL sense of the word).

That’s Just The Way It Is
All the arguments are made based on ‘how it is’ arguments. Apparently Java will never be replaced because it’s always been more popular, because employers want it now. I don’t buy that some hip new language can’t dethrone Java (or C) because it hasn’t happened yet. On the other hand, I don’t think it’s impossible for Java and C to stay dominant until some paradigm shift in computing demands new languages. Really, I think it’s pointless to predict what language will be dominant. If you learn to code well, programming languages are just tools: you pick the right one for the right task.

Let’s take a look at the arguments, one by one:

Reason number 1: Syntax is very important because it builds on previous knowledge. Also similar syntax means similar concepts. Programmers have to make less effort to learn the new syntax, can reuse the old concepts and thus they can concentrate on understanding the new concepts.

Really, how different is syntax between any imperative, or OO/Imperative hybrid, language? Let’s take Java and Python for example. The difference is really just in the characters used to fill the same roles in the grammar: ‘: indent’ is the new ‘{’, ‘unindent’ is the new ‘}’, move the name of the superclass into some parenthesis, etc. How different, on the syntactic level, is this? Sure, the semantics of what a field is may change, and duck typing means the whole concept of a type changes, but the syntax? Not so much.

Reason number 2: Too much noise is distracting. Programmers are busy and learning 10 languages to the level where they can evaluate them and make an educated decision is too much effort. The fact that most of these languages have a different syntax and introduce different (sometimes radically different) concepts doesn’t help either.

See my argument against reason 1. Additionally, how much programming is really needed to evaluate them? Most people don’t read the first 50 pages of 10 books to evaluate them, or try a year at 10 different colleges. I know that most languages I took up I looked into first and trusted other evaluations, or was told I needed to learn for a job.

Reason number 3: Lack of pressure on the programmers to switch. The market is pretty stable, the existing languages work pretty well and the management doesn’t push programmers to learn new languages.

The ‘good enough’ argument. This is actually a little persuasive. I’m not a huge fan of Java, but it does do many things well enough. On the other hand, most of the challengers are ‘good enough’ too, so it seems reasonable to expect that over time there may be changes. If both Java and Python are ‘good enough’ but new grads (such as myself) pick up Python and prefer it (a phenomenon I see all over the NMT campus), I’d think change may happen. Certainly not quickly, but I know when I start new code for myself I tend to look at Python first. Not out of any deep analysis, but because I really enjoy the language, and unless I have very specific needs it’s a passable tool for most jobs.

Reason number 4: Challenger languages don’t seem to catch momentum in order to create an avalanche of new projects started with them. This can be again due to the fact that they spread thin when they are evaluated. They are too many.

There’s some social issues with change here. I’m not an expert on the subject, but I did read The Tipping Point (like a good portion of the American public, I presume), and change is a strange beast. Given the relative ages of the competing languages, I don’t think any conclusions can be drawn (yet).

Reason number 5: Challenger languages communities don’t do a good job at attracting programmers from established languages. Telling to somebody why she is wrong will most likely create a counter reaction not interest.

I’m not sure what communities the author is talking about. Of course it’s hard to get numbers of any sort, but I’ve been involved with the Perl and Python communities, and I really can’t imagine how they could have been nicer or more helpful. This really boils down to personal experience (on my part and the author’s).

Reason number 6: There is no great incentive to switch to one of the challenger languages since gaining this skill is not likely to translate into income in the near future.

I agree with this, but with a caveat: the incentive may be small, but so are the barriers. In general, picking up a new language to the point of proficiency is not a huge challenge, so even if the reward is relatively small, it’s worth doing. In my experience, many people do pick up new languages with relatively little incentive, but this may be more of a consequence of befriending nerds then anything else.

Reason number 7: The new languages don’t introduce an earth shattering improvement in the life of most of the programmers and projects.

I’m not sure many languages since FORTRAN have introduced earth shattering improvements, but that hasn’t stopped a somewhat steady churn of popular languages.

Reason number 9: None of these new languages has a powerful sponsor with the will and the money to push them on the market. Powerful sponsor translates in investment in the libraries - see Java. All these new languages are born in universities and research institutes or are coming from very specific niche domains.

There are two points here: libraries and sponsors. These may not be the same issue: Perl has CPAN, but no big sponsor. I’d say a sponsor isn’t as big an issue. Sure, anything Microsoft puts their weight behind is likely to make progress, but quite a few of the top languages from TIOBE have no especially moneyed backers.

Reason number 10: Most of these languages lingered around too much without stepping decisively into the big arena.

I don’t know what to say about this one. It’s hard to say if this is true to begin with, or what effect it has.

Reason number 11: “Features” that look and are dangerous for big projects. Since there are not a lot of big projects written in any of these languages it is hard to make an unbiased evaluation. But bias is in the end a real obstacle for their adoption.

If we want to talk dangerous features, let’s bring C (the most popular by all the author’s metrics) into the mix. Pointer arithmetic, arbitrary memory allocation and deallocation, inline documentation only using non-standard tools (CWEB, Doxygen). C is problems waiting to happen, yet is widely used (and for good reason).

Reason number 12: Unnatural concepts (for majority of programmers) raise the entry level. Functional languages make you write code like mathematical equations. But how many people actually love math so much to write everything in it? Object oriented languages provide a great advantage: they let programmers think about the domain they want to model, not about the language or the machine.

Well, this is all well and good for ruling out Lisp, but what about the challenger languages that provide object orientation (but don’t force it, as Java does)? Python, Perl, Ruby, they all have object models of various quality and usefulness. On the other hand, the top language (C), has support for structures (and structures with function pointer members) but no real objects.

Reason number 13: Lack of advanced tools for development and refactoring cripple the programmer and the development teams when faced with big amounts of lines of code.

This one I’m not going to comment on. I don’t have enough experience with large scale corporate development to say what works and doesn’t. I do know that many open source projects get by pretty well without fancy refactoring tools, but that may not be a valid comparison.

This entire experience is a bit pointless. It doesn’t really matter what language you code in, if you’re a good developer it will work. Trying to predict the future, especially in a field like technology, is also more then a little pointless. I’m glad to have a choice of languages, and I’d encourage anybody who writes code to be pragmatic, not dogmatic, about what language you use.

Games

What I’m Playing: My Life With Master

05.24.08 | Permalink | Comment?

I’ve been meaning to say something about this game for some time, so now seems as good a time as any. My Life With Master by Paul Czege is probably one of the best games I’ve ever played. You could just stop reading here and go buy it.

At it’s core, My Life With Master is a game of an abusive relationship. The players take on the role of minions of some evil mastermind, and the game follows them as they develop relationships with other people and eventually rise up against their Master.

The beauty of My Life With Master is in simplicity. Characters are represented by their Weariness, Self-loathing, a More Then Human trait and a Less Then Human trait. Everything else depends on Fear and Reason, constants set up at the beginning of the game. From these basic building blocks, the game grows into a powerful story of escape from an abusive situation. This is one of the few games I’ve played that provokes thought and conveys a message.

I really can’t recommend this game enough. It’s probably not a good choice for beginning roleplayers, but if you play RPGs and you haven’t played My Life With Master yet, you’re missing out on one of the best games in the genre.

« Previous Entries