It’s time to sum up where I’m at on my IF projects, mostly for my own sake so I can remind myself to get off my lazy hump.
[W] Brickhouse – ALAN
[M] Burn the Koran and Die – I7
[D] Marelithia – RenPy
[M] New Cat – I7
[D] Occupied – I6
[W] Seasons — I6/Glulx
[M] Zegrothenus – I6
The chart measures state and intensity of effort, with brighter colors regarded as more intense; green is working; red is blocked; brown is design; blue is maintenance; grey is stasis (no active development). My development process goes from design -> working -> maintenance. Stasis is a state for projects on the back burner or projects that I’ve decided not to update any longer.
Individual project comments:
- Brickhouse — Yeah, I need to get back to this.
- Burn the Koran and Die — I have some feedback I’ve been avoiding (mostly because I expect it to be obnoxious), but I doubt there’s anything left to do on this one.
- Occupied — This will be a lot of fun to write. It’s going to be a political satire of the Occupy movement. *rubbing hands together in glee* This should virtually write itself.
- Marelithia — Medieval dating sim. Ren’Py has come a long way. The big holdup for this will be the graphics, because my drawing skills are rudimentary. But I figure if I do line art and then apply a sepia filter to it, it will evoke the middle ages the way that the Avernum series does (the first four games, anyways).
- New Cat — I probably will update this again someday, but right now I don’t feel like it, due to an obnoxious review(er) on IFdb. New Cat took a good six months of my life, had no beta testers (despite several calls for them) and now the complainers show up to berate me? A hearty “screw you” to all such unhelpful people — especially when the contact info is in the game. Private emails I do a reasonably good job of responding to, but public humiliation doesn’t motivate me in the slightest.
- Zegrothenus — I have some feedback from a while back that I’m churning through. Now that I have some vacation time, I can put some effort into it.
I’ve been hanging around the IF forum for a while now, and there is a commitment to use the still-in-beta I7 that puzzles me. Two particular misunderstandings leapt off the page at me.
One is that people generally recognize that the Inform 7 docs suck (as I’ve pointed out in several articles here, and here), yet they continue to use the language anyways. Why? Maybe they were where I was, thinking that their game was small enough, or easy enough. Maybe they think that other people learning stuff and telling it to them piecemeal on a forum is enough. Maybe they have some kind of faith that the docs will eventually end up in a useable format.
If it’s the first of these, I can understand that pall of benighted intellect; I too thought I7 was a realistic environment for a game of about 20 rooms. I was wrong, and while my code didn’t end up look as bad as Weischaupt Scholars, it got uncomfortably close. If it’s the second reason, they are fools and are doomed to be frustrated, and if it’s the last, their faith is horribly misplaced.
After three years in beta, the Inform 7 docs are not going to reach a state of usefulness any time soon. They are not written like a technical manual and in order to get them to that point, they will have to be rewritten entirely (see the whole rationale here). In other words, there’s a reason why other manuals for I7 exist. Even they are not enough, as the frustrated folks on the forum attest.
Another person blithely thought that someone could learn English by learning I7. *expression of gape-jawed incredulity* That statement would deserve a pass if I7 modeled English’s word-order flexibility, its natural synonyms, and its general robustness (leaving out an article doesn’t render the sentence wholly incomprehensible, for instance). However, I7 does none of these things, which guarantees that prospective learners will not understand English, but at best will master elevating their own heart rate unproductively. Unfortunately, they will learn how to despise a caricature of a language, and believe that the caricature is the language itself.
First, I7 assumes that there’s only one way to word your sentence: e.g. Now the boat is floating (works), is not the same as The boat is floating now (fails). Learning I7 would not teach anyone about English’s word-order flexibility. You would learn a set of arbitrary rules, not the language, and even those rules would be erroneous (that ‘now’ must come first in any sentence is wholly false).
Second, I7 teaches that words have few or zero synonyms, which is about as far from the spirit of English as possible! It teaches that you can never use options as choices for verbs or prepositions — that selling the baby or the sock doesn’t make sense. Yet, that phrase is structurally sound English and simply comprehended. Another example: the phrase in the bathroom or the bowl, likewise isn’t understood by I7.
I7 was never designed to be English, so any dreams of learning English by learning I7 are woefully misconstrued. Other computer programming languages, although they using a handful of phrases in idosyncratic ways (with in VB, for in C, picture in COBOL, etc), do not read like English, and at best read as some sort of pidgin language. The text surrounding their appropriated phrases is clearly not English and that makes it easier/easy for the programmer to craft a separate semantic space for the new language. When learners scan a block of text, they are able to tell quickly, “Ok, this is VB. I will understand ‘with’ in the VB way.” However, Inform7 doesn’t allow you to do that. When you look at I7 code snippets (not real games — they look like this) at first blush, they seem to be English — only, frustratingly, their words don’t mean what English words mean. So you have to keep reminding yourself that this is not English and that the words you see don’t mean what they mean in English and most frustrating of all, that they can’t be used like English words. The lack of typical programming language constructs confuses and makes understanding the language a constant challenge, because whenever you attempt to use I7 like English, there’s only a small chance that you’ll guess what its idosyncratic designers designed the language to do. Programming in Inform is much like learning to conduct a symphony with your right hand when you are a southpaw that suffers from hearing loss. The context doesn’t help you interpret the language. It tells you that you are reading or writing, and you aren’t.
Finally, what I7 teaches the prospective English learner about English itself is that it is: changeable by only a few (false), highly resistant to change (false), that it does not adapt to the needs of its learners (false), that it consists of a maze of one-way streets (false), that it is poorly documented (false), that it is brittle (false), and that it is unsuited for long works (false).
If I had realized earlier the true nature of I7 (brittle, deceptive, poorly documented), I would not have used it for New Cat. I would have gone the I6 route or even the Alan route. What did I learn? Even a relatively small game will end up in pages and pages of confusing quasi-English that becomes almost impossible to parse. The problem there is that the prose isn’t a narrative, so there’s no built-in way for you to understand it, and artificial distinctions don’t make sense from a linguistic perspective. As a point of comparison, Seasons is ten times the size of New Cat (at least) and because of its semantic shortcuts and non-English nature, it is only a quarter more difficult to understand.
Liberate te ex infernis.
Lately, I’ve been feeling like Dr. Frankenstein, while working on Seasons. Not to mean that I’ve been busy visiting graveyards at midnight (although that would be cool), nor that I’ve been busy stealing the dead, but rather that I’ve been hooking up all matters of distinct parts to one another. Some parts don’t match as well as I thought they would. Others must be attacked with a circular saw. Others must be finely-woven at the very depths of OR Library hackery. I’ve even found myself customizing the compiler, due to the way that I6 presents status messages (another annoyance: there’s only one way, and it includes a carriage return at the end, which prevents you from continuing status messages on the same line).
I guess that’s a common experience when you craft a large game or you craft many games, this feeling of being in an operating theatre, focused on the details. Hopefully the end result will turn out more attractive than Frankenstein, but because the effort is so gargantuan, I’ll be satisfied if it moves, talks, and can see! Along that same line, I’m up to the 21st internal revision of the code, with probably 40% more to go. And like Dr. Frankenstein, I’ve often lost heart and threw up my hands (not my lunch) in frustration. There was a period of time where I didn’t even touch the code for a year and some months.
Still, I will succeed, and it looks like probably the end of 2012, Seasons should be ready for the world. I have no idea how the beta-testing will go, but I don’t place much hope in there being many volunteers. Then there’s still the site to create, the music, the sound effects, and the hint guide (with all those lush illustrations I see in my mind’s eye). Whew. Just thinking about it all can be tiresome.
Along the way, I’ve had to heavily customize and/or create my own tools, which is more effort still, although that effort makes the remaining work easier. Hopefully some of these mods will be released when Seasons is, if not before:
- Compiler: Inform 6.3.2 patch to allow compiler messages to continue on the same line as the previous message
- Library: English.h – allow listing of just the objects on a supporter with no other verbiage
- Library: Parserm.h – allow turning off inference messages
- OR Library: Combat – a quick and dirty combat system with healing, AC, and weapons of variable damage
- OR Library: Messages_Off – ability to turn off the compilation messages for OR Lib modules
- OR Library: Physics – a harnessing of the physics extension
- Working example of Glulx game that doesn’t use Blorb
Well, back to work!