A month ago I wrote: "I am still fairly confident that I will have a complete, testable game at the end of July." I halfway made it. I have a testable game! ...but it's not complete.
On July 17th I sent mail to the backers who chose the "access to the closed beta-testing phase" reward. (And also to select friends, because what's the point of being in a local IF meetup group if you can't hit them up for some beta-testing.)
At that point I had a version of HL which was playable roughly halfway through. That is, the game was maybe 90% written, but I stuck a barrier at a particular point and said "Play-test up to here. Everything up to this point is 100% complete. Past that, eh, there are a lot of holes."
So for the past two weeks, a few intrepid players have been trying out "chapter one". And sending me transcripts. Useful transcripts! At the same time, I have been pushing forward on the latter part of the game. Filling in holes. Dotting i's, crossing t's.
It's not 100% yet. This game has more i's and t's than an interstitial Italianate witticism about intermittent tintinnabulation at the Interutilitiarian Hittite Institute at Ytterby. However:
All the rooms are done. I couldn't let you folks wait on rooms for another month. As of July 23, the room-counter widget says "93 of 92 rooms are described." ...Yes, off-by-one error there, sorry. The game has a couple of dummy and debugging rooms and I screwed up the accounting. There are 92 actual rooms, and they are all properly described and furnished.
I have almost completed "chapter two". This is where the game scenery starts to change, so it involved some messy things-moving-around code. The code works; I'm missing a few descriptions.
I have done another optimizing pass and sped up a bunch of display code. I've followed up on a bunch of suggestions that came from my testers. I've added a very clever "GO BACK" command which takes you back to the last room you were in. (So you can type "GO TO KITCHEN", grab something, and then "GO BACK".)
Three major rituals in "chapter three". One extremely annoying travel bug. A bunch of descriptions pertaining to things that change in that part of the game. Solidification of the ending scene, which I have hitherto only lightly sketched out because you can't write a decent ending without a game to build it on.
There are 109 "TODO" marks in the source code as of this evening. Don't take this as very meaningful; I've never shipped an IF game that didn't have a handful of "TODO" marks left in it.
When I sent out the test emails I promised that a complete test version would be ready in "mid-August". I still hold to that, although "mid" is intentionally vague. I would really like to get a final test going by the last week of August, because that's when I take off for DragonCon.
There we are. If I don't get completely blindsided by something, the next update post will report the completion of Inform programming for HL. There will still be iOS work to do, plus whatever bugs the testers turn up.
(Other words I considered for the "crossing t's" gag above: tripartite, zwitterion, tritium, irritability, invitation, totalitarian, instinctive, titular.)
itch.io is a quick-and-easy platform for distributing indie games. I figured I'd take a look at it; it's a possible way to distribute Hadean Lands in the non-iOS world.
After a few hours of CSS massaging, I now have three of my old IF games posted:
Happy Canada Day (and pretend I said that in French). 82 out of 90 rooms complete.
I'm not really measuring progress in rooms any more. There were only a few days this month that I'd mark as "wrote some rooms". June was mostly spent on underlying mechanisms which are not located in specific rooms; they're spread through the game. I don't want to get spoilery at this late date, but I have implemented large swaths of code for:
- human figures
- doors that change state
- progressive starting conditions
- ritual environments
- looking through magical lenses at all sorts of things
- the alternative to sheets of paper
- the problem of trying to create two doses of some potion when I've only implemented one
- a cigarette lighter
The cigarette lighter was a late addition. Some rituals require you to set stuff on fire. There's a couple of fire sources in the game, and you can light a bit of wood and carry that around, so it's all workable. But carrying around flaming bits of wood turned out to be annoying. They burn out. You have to get more. It felt like an imposition. So yesterday morning I said "Why doesn't this chem lab have handy butane lighters, anyhow? Real labs do."
(I don't call it a "butane lighter", or a "cigarette lighter" either, but a pocket flame source is a pocket flame source. Perhaps you have fond memories of So Far.)
So I can't put the nail in the room-list this month, but I have checked off lots of the game's remaining tasks. I am still fairly confident that I will have a complete, testable game at the end of July. That could slip partway into August, because every task list has a "last 90%" that trails off into infinity. But the game is filling out fast, and it feels like I finished half of the remaining job last month.
I am excited. And nervous.
Again, there's a chunk of work to do after the "complete game" milestone. I'll need to polish the iOS interface and build its eccentricities. (I'm thinking a tappable encyclopedia of rituals, which updates as you discover them. That will save a lot of "RECALL TARNISH RITUAL" commands. And then there's the tappable map, of course.) So August at least is scheduled for that stuff. But I will have beta-test reports coming in as I do the iOS work, so I can parallelize.
Other June news:
For the first anniversary of Seltani, I posted a little puzzle Age called Salvanas. (That link will take you straight into the game world, although you'll have to sign in to solve everything.) No story, just a collection of Myst-style puzzles -- only in text, of course. Statistics indicate that only seven people have completed it to date! Surely this can be improved.
I also got my butt in gear and posted the source code for nearly all of my Inform games. I've always had the source for Hunter, Shade, and Heliopause on my web site; I've now added Dreamhold, Spider and Web, So Far, and several others. (All are under a "for educational/academic interest" license rather than an open-source license.) If you're curious about Inform 7 source code -- or Inform 6, or actually Inform 5 for the oldest ones -- dive on in.
I've been taking a look at new distribution platforms. If you saw Shade on itch.io for pay-what-you-want, would you pay a dollar? I could set that up. There's also the Humble Store, although that's got an application process and their developer FAQ is a bit thin.
And finally, the 2014 Interactive Fiction Competition is open! Gaze in awe at the brand-new web site, built and run by our blog-host Jmac. Sign-ups and prize donations are now being accepted.
See you at the end of July. With a little luck, I will be into the final stage of development by then.
In a recent blog post, I wrote: "Maybe we'll even make more of a swing towards releasing game source code."
That thought stuck with me. I asked myself why I haven't posted the source code for all my classic IF games.
Some, I have. I posted source for Hunter in Darkness, Shade, and Heliopause because I thought other game authors might be interested in the techniques. But the larger games (Dreamhold, So Far, Spider and Web) have never had public source releases.
Why not? I didn't put it in words, but roughly: players should experience the game, not the software. If there are secrets, they should be ferreted out by people playing the game, not people browsing the source.
Of course there are Z-code decompiling tools, so I can't truly enforce this. Nor would I want to go down the DRM/obfuscation road to stop people from prying. That would just be a huge waste of my time. But if people wanted to pry into the technology, I wanted them to have to expend some effort. That friction matched my feelings about the right way to play the game.
Only I don't feel that way any more. I can't remember why I ever gave a snort.
Oh, I suppose I do a little. When a game is freshly released and players attack it en masse, the idea still applies -- I want the group experience to be about the game. But a year later? It's meaningless. And some of these games are fifteen years old, or older.
So yeah. It's time to knock that habit over. Here are some source links:
- Dual Transform (I7)
- Delightful Wallpaper (I7)
- The Dreamhold (I6)
- Spider and Web (I6)
- So Far (I5)
- A Change in the Weather (I5)
- and more on my IF page.
The I5/I6 games are tar.gz files, because for each I had to pack several source files together with the hacked library code that I used. The I7 games are directly readable as (syntax-colored) HTML.
All of these can be compiled with Inform 5, Inform 6, or Inform 7. The exception is Delightful Wallpaper, which was built with a 2006 version of I7 that's no longer available from the web site. I'd have to update the source to recompile it.
I have not used an open-source license. The games all say what Shade has always said: "This source code is provided for personal, educational use only." You can read it, and copy the programming techniques, but you can't make derivative games. (That is: my game text is copyrighted and I intend to keep hold of it.)
(Academic writing about my games is of course fine. That's fair use in the old-fashioned sense.)
(Fanfic -- riffing on the story or characters while using original text -- is another barrel of cephalopods. I figure I'm in the same position there as any other writer. You've always been able to read my story text, as part of the game, and my source release doesn't change that.)
Hadean Lands is an interesting question. I'm going to charge money for that one; it changes the equation. I guess I'll wait a year after release, and decide whether I feel like doing a source release then? Feels right.
(One of the HL Kickstarter rewards was the source code as a printed volume. I won't wait a year on that, obviously. But that was a limited reward, and will only be distributed on paper, not online; so I'm leaving it out of this discussion.)
Last month: 45 out of 86 rooms complete. This month: 65 out of 89 rooms complete. I did twenty rooms in the past month. The total grew because I decided to split one room in half, and then added two tiny closets.
This covers most of "chapter 1" of the game. In exploring this far, the player can reach 66 rooms and nearly all of the rituals of the game. (It's the tool-collection stage of the story.) Figuring out how the tools fit together is "chapter 2", and that's how you reach the last 23 rooms -- the tricky ones.
It's not all about reaching rooms. There's a lot of... unlocking cabinets? Okay, cabinets aren't much different from rooms. No, the fun of the game (I hope) is in trying to reach certain locations with certain items. It's fairly easy to enter room X if you use up resource R, but to bring resource R into room X is harder. That sort of thing is "chapter 3".
So the game will involve a lot of backtracking. (Yes, I've implemented a "go to room X" command.) This is why I can't just say "I will implement 24 more rooms and be finished." I will probably implement 20-ish rooms in June, but there are several crucial rituals which occur in existing rooms, and I've been saving those for the end. July is for those.
I still expect to move into testing at the end of July.
Then I have to draw a map, polish the iOS interpreter, and work on other presentation issues. But hopefully I can do that in parallel with testing.
The new Inform 7 release arrived on May 7th. People leapt on it with gusto. It's very nice. I've decided I'm not going to shift HL development to it, though. It has no features that I need, and while it's faster in some ways, it's slower in others. Plus -- the time factor. I could easily blow a couple of months updating all my code and validating that it all works the way I expect in the new system. That would be a bad use of my time at this point. So I'll stick to the compiler I've been using.
I have been playing around with an in-game debugger for Inform 6 games. (Built into the Glulxe interpreter, actually.) This is not very useful for I7 games, because it only tells you about the fiddly I6 internals. But it's already helped diagnose a few fiddly bugs. See this source branch and this file if you're interested.
The one-year anniversary of Seltani is coming up soon. I can't let that slip by unobserved, so I'm cooking up a small set of puzzle Ages. Should be fun.
I went to Balticon! It was a fine (working) vacation. (I didn't implement any rooms while away, but I did implement two cabinets.) There was no Lost Pig, but I took part in a handful of panels about IF, narrative game design, and so on. All went well. (Okay, three of them went well. The one on mobile app development fell kind of flat. Next time, I'm sticking to narrative/game topics.)
Speaking of conventions, BostonFIG is coming up again in September. The Boston IF group plans to host IF events there, like we did last year, but we haven't gotten down to specifics yet.
I briefly considered demoing Hadean Lands at FIG. However, friendly voices (thank you jscott) pointed out that it would be tacky to demo the game in public before my backers have seen it. True! So I'm thinking about other game ideas I might whip together by September. The entry deadline is June 20th, so I'd have to whip rapidly, but it might happen...
See you in a month, with -- I hope -- the last room-count progress report.
When the excellent internet-culture podcast TLDR tweeted a couple weeks ago that its new episode featured an interview with someone who witnessed her persona within a certain video game get sexually assaulted by other human players, I had an immediate guess which game they’d name. I was right: the incident occurred in DayZ, a popular MMO with a nominal post-apocalyptic survival theme.
My knowledge of DayZ is quite limited. I’ve never played it. I have had one friend, a inveterate fan of actual role-playing in online RPGs, regale me at length about all the time she’d spent there with an online improv group, experiencing varying success at playing out story-games in its setting. When the game got a wider release on Steam last year, I read a long comment-thread on imgur about all the goofy ways new players had died, with a strange focus on other players force-feeding them rotten fruit or drain cleaner.
And then, earlier this year, I discovered this video, following a link describing it as something amazing that happened in the game. With my lack of knowledge about typical interactions in DayZ, and otherwise not knowing what to expect (outside of the video’s title), I found the first 40 seconds — which isn’t supposed to be the amazing part — very stressful to watch.
Those 40 seconds contain one of the most violent exchanges I have ever seen in a video game, even though (modulo some casual language) the incident, if dramatized on film, wouldn’t rate more than a PG in the US. In one sense, it’s just two men talking; neither so much as lays a finger on the either.
The third man who shows up at the 40-second mark is the star of the video, and immediately changes the tone in an unexpected and genuinely impressive direction. But from context, I take it that one player brandishing a gun and verbally instructing an unarmed player to kneel, humiliated, is such a typical interaction in the game that it doesn’t even bear comment. This video uses it as mere stage-setting; one gets the impression that if the third character hadn’t appeared, this player wouldn’t have bothered posting this video.
ShuffleComp is a music-themed game-jam-like event. I won't do the whole spiel; basically you get a song list and you're supposed to write a short game inspired by one of the songs. I didn't enter, but Jmac did, and he got all electrified about the idea of using Seltani. (Which is... do you read this blog? It's my multiplayer text Myst MUD project from last year.)
So Jmac implemented his idea, and that was great until he re-read the rules and saw:
The only restriction on platforms is that the game you submit must be playable as-is, not reliant on being hosted on a specific server or website. (This doesn't forbid hosting elsewhere - but if your game breaks if hosted on the IF Archive or played offline, that's a problem.)
Our topic for today is: why is the IF Archive, and how does that role change as IF changes?
(Spoiler: I do not have tidy answers. Best I can do is pare the questions into neat slices.)
(Footnote: The ShuffleComp organizer wound up disqualifying Jmac's game, with apologies all round and no ill will. Jmac has posted his game link on his own web site. You should jump into Seltani and try it.)
Graham Nelson has released a new version of Inform 7, the first in over three years.
This release is a major reform of a now-mature language which is widely used, and it has been over three years in the making. Text handling is better, Inform can now generate adaptive grammar, there's real number support, and a new Public Library of extensions is being introduced. There are significant improvements in the user interface for Mac OS X.
-- the very short form of the very long release notes
Also, the app's ancient-mosaic visual theme has been replaced with a stylish modern subway-map motif. Next thing you know, IF will be considered a 21st-century gig, eh?
- Download Inform 7 release 6L02 (Mac and Windows builds available; Linux is in progress)
My big contribution was the General Index of the documentation. This is a rewrite of the unofficial index I did a few years ago. Finding stuff in the documentation has been a perennial complaint about I7, and I hope this goes some way to fill the gap.
To repeat a word of warning: "This will be a disruptive release." Every major release of I7 has changed enough under the surface to warrant caution, and this one is a bigger shift than most. If you load an existing game project into the new I7, it is not guaranteed to compile -- and if it does build, it is not guaranteed to behave exactly the same. Test carefully, and if you prefer stability, keep your 2010 version of Inform (release 6G60) around. (It should be safe to keep both installed on the same machine.)
To be clear, we expect most old I7 code to still build with the new compiler. The major exceptions are if you used deprecated phrases (such as procedural rules), or if you used an extension that has serious I6 hackery under the covers. Such extensions will have to be updated for the new release. Many have been already; check the new Extensions Library.
(In case you're curious, Hadean Lands will remain a 6G60 project. I've got 25000 lines of working code, and I am not going to risk subtle breakages at this stage.) (Yes, I wrote a lot of regression tests. They're geared towards finding mistakes in my code, not changes in the underlying system.)
Congratulations to Graham and the rest of the I7 team for getting this wrapped up. To everyone else -- enjoy the new toys.
Seriously, it was 45 out today. Now it's rainy, but that's good news because it's a warm humid front coming in and we should get a May that feels like April, at least.
It's weird looking back at earlier updates. Last month I was pleased because the tutorial was finally done. In February I was pleased because I had finally started writing some rooms. Now the tutorial feels like it's ages past, and I have 45 rooms nailed down. That's 45 out of 86 total. We are past the halfway point, area-wise.
(Yes, I originally estimated 82 rooms, but a few more tiny ones have slipped in.)
So I did... (quick subtraction)... 23 rooms in April. Plus all the associated furniture and recipes and puzzle elements found in those rooms. Also I hammered in some optimizations that speed up large I7 games considerably (see here if you're interested), and added one of the two special viewing tools. And fixed a typo that's been staring me in the face for about a year and a half.
I have been informed that my last couple of update posts sounded disconsolate and defensive. (Not that you folks aren't supportive.) I really didn't mean them that way! This is the home stretch and I have been accelerating down it. I am aiming to do twenty rooms per month for May and June, and that will carry me to the end of HL's physical area. I'm excited.
The game will not be absolutely done at the end of the 86th room, because there is a final puzzle and some final scenes. (Associated with an existing room, but I will write them last because that's how I work.) Throw in some time for writing tests, and I can reasonably say that this thing will move into testing at the end of July. In fact this is so reasonable that I have now said it to you folks, out loud.
The other news of the day was supposed to be the new Inform 7 release. This has slid a bit but should be out in a few days (see this post). I did a bit of final index-polishing last week, so you have that to look forward to.
This week I tried two different puzzle/exploration games. They were both pretty cool, but I only finished one of them. Does this mean I am going to delve into details of game design? Yes!
Oh, sure, it'll boil down to personal preference -- but details can be fun.