Sunday, November 05, 2006

Fauxnetics and Tipos

Playing a text based game is somewhat of an anomaly in today’s computer graphic intensive world. Interacting with them can be difficult at time, even when immersed in the game.

The English language is full complex spelling rules. “ph” sounds like ‘f”; “tion” sounds like “shun”; and my personal favorite the silent “e”. The Qwerty keyboard is designed to slow people down when typing which increases typos when people rush. The most commonly typed letters are moved off of he home row and the only vowel on the home row is on the left pinky; for most right handed people, their weakest finger. There are also colloquial spellings that complicate interaction. In the fantasy world, a Brit may attempt to cast a ‘colour spray’ or ‘color spray’ at his foe depending on where the thought the game creators are from.

For native English speakers it can be frustrating at times. Much of this has been made much easier by the standard and advanced features of MUD clients. But, there are still frequent situations where typing of unfamiliar things is required.

We focused some of our time at what players were typing to find help. We noticed that about 90% of all entries that didn’t return a result were misspellings. The other 10% were topics that were either not covered or just use a different reference. We corrected the latter relatively easily. The suggestion was made to correct the typos or misspellings by applying an algorithm based on phonetics.

We did a little investigation and testing and think that probably 90% of the typos will be corrected by this implementation. It’s particularly important to us because of the number of non-native English speakers we have.

As usual, this was a group effort. Kjartan came up with the suggestion, I did the coding and Splork did data gathering and testing. The coding was much harder for me than it should have been, though. I often switch languages depending on the project I working on. In this case, there isn’t much choice since the game is coded in mostly in C. For some reason I got quite confused on how C uses pass by value instead of pass by reference. Specifically, I wasted several hours of time debugging and rewriting the same 20 lines of code until I used examples in Wikipedia which reminded me I needed to use pointers to pointers to accomplish what I intended.

At any rate, it’s not a huge improvement in the overall experience, but a small step in the right direction. We’ll keep working on the “slothy” feel we have that tries to reduce the amount of mechanical things required including fixing typos and misspellings.