Old Zarf code

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:

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.)

| Comments (4) | Tweet this | Share this on Facebook

Tags: , , , , , , , , .

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.

Other news...

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.

| Comments (0) | Tweet this | Share this on Facebook

Tags: , , , , .

DayZ and new experiments in interplayer violence

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.

Continue reading DayZ and new experiments in interplayer violence.
| Comments (6) | Tweet this | Share this on Facebook

Tags: , , , .

Purposes of archiving

This was a big week for IF events -- Spring Thing ended and ShuffleComp voting started. There were unexpected wrinkles in both of them, but I want to discuss the less dramatic one.

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.)

Continue reading Purposes of archiving.
| Comments (6) | Tweet this | Share this on Facebook

Tags: , , , , .

Inform 7 update

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?

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.

| Comments (0) | Tweet this | Share this on Facebook

Tags: , , .

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.

Wacky, huh?

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.

Onward.

| Comments (0) | Tweet this | Share this on Facebook

Tags: , , , , .

Raetikon, Fract

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.

Continue reading Raetikon, Fract.
| Comments (4) | Tweet this | Share this on Facebook

Tags: , , , , .

Zarfplan: March update

I will keep this short, because I just noticed that I have to run to the Boston IF meetup soon, and I want to get this post out before then. (A late-night blog post would wind up dated "April 1", and do any of us need that additional cognitive stress? I think not.)

In the past month I have completed thirteen rooms, with all the objects, descriptions, recipes, and messages that appear therein. As usual, some of these rooms are fairly bare (corridors) and others are crowded with stuff.

I have also completed the tutorial -- which took nearly two weeks on its own. The tutorial is intended to hold your hand through the first room. That's basically the content of the teaser game. It requires more code than you might expect. It's done, though.

I have mapped out the "environmental spell component" that I mentioned last month, and started coding it up. That's not a huge task; it was just a corner of planning that I kept sweeping around, and now I've gotten to it.

Continue reading Zarfplan: March update.
| Comments (0) | Tweet this | Share this on Facebook

Tags: , , , , .

Zarfplan: February was kind of nuts

I suppose you want the room count, don't you. I will give it to you. When? Now, I should think. You look forward to it, do you? I think you do. ...Nine rooms, I got done this month. All clues, all descriptions, all scenery, all actions handled. I can play through those nine rooms and it is a solid, playable IF game.

This is most of what I call "chapter 0" in my notes. After another couple of puzzles, the player transitions to "chapter 1". That's where most of the game opens up, at least a little bit.

But how many rooms are there in this game? I hear you cry. Okay, that's a fair question. There are 82. So you might conclude that I am 11% done with this thing and have eight months of work remaining. And that's... not a completely terrible estimate.

I don't mean that it's my estimate. Or that it's accurate. Rather, I guess, that the possible errors fall in both directions. So I can't say it's definitely too long or too short.

Continue reading Zarfplan: February was kind of nuts.
| Comments (0) | Tweet this | Share this on Facebook

Tags: , , , , , , .

An IFDB quick-add bookmarklet for Twine games

Twine superhero Leon Arnott has created a bookmarklet that allows authors or curators to quickly add new Twine-based entries to the IFDB. Once this JavaScript one-liner lives in your browser’s bookmarks, you can navigate to an online Twine game, open the bookmarklet, and follow the prompts.

(An improvement, should anyone feel up to it, would involve letting one back out of the process via the resulting dialog’s Cancel button. Feel free to tell me about the existence of improved versions. I share this code as-is because helping the Twine community sit at the larger IF table makes me happy, and also because lazy.)

| Comments (0) | Tweet this | Share this on Facebook

Tags: , , .