My housemate and I are running a short workshop series on Inform 7 (two weeknight sessions, 1.5 hours each, with a group of about 30 middle-school girls). I put together a simplified quick reference for the kids to refer to while they’re writing, and I figured I’d share it with y’all. It’s not beautiful, and if you’re reading this board it is way too basic for you (may I suggest mor’s quick reference instead?), but if you’re in a position to be teaching kids about Inform, you may find it helpful. There’s a diagram showing the relationship between author, compiler, interpreter, and player, and a page each on rules (only Before/After), kinds, properties, and actions.
Interesting, however you should include check/carry out rules and conditional structures. However, as an introduction to Inform 7 for kids, it looks good.
Well, I’d include Every Turn rules and text substitutions before I included Check/Carry out (which are mostly useful when you’re defining your own verbs, which we are Not Even Getting Into), but the “design goal” here was to be as un-overwhelming as possible. I’m definitely going to cover conditionals in the lecture portion, but there’s not a lot of reminder text needed for them (“if [something]:” is pretty intuitive).
Would I be able to get the source text for this? I’d like to try designing a layout.
karlnp: I’m not really sure what you’re asking for. I composed the text in parallel with composing the layout, so there’s not really a single text document that I could send you, and you can copy the text from the multiple textboxes in the pdf as easily as I can. I can send you the master Illustrator document, if you’d like.
This seems pretty easy to read. On your second page, I know I was immediately asking in my mind why it was “move the player to the Ball Factory” rather than “now the player is in the Ball Factory.” It immediately stands out that Inform does something different in that context. You have two “now …” statements and one “move …” statement. It might be good for people to know why that is because I find Inform does that kind of thing a lot.
The only other comment I have is that this reference may be a little to dense in terms of a lot of content shoved into the pages. The content is good but it’s just a lot of it on the eye and it seems to mostly restate what’s in the manual, which means you could just point the kids to those pages of the manual. (Except for certain things like the built-in properties side table you have, which the Inform manual doesn’t make very obvious.)
On your first page I wouldn’t say the interpreter “writes” the story. It doesn’t write it – it just plays it. The author presumably wrote the story.
Overall I’d be curious to know how helpful this reference is for the kids. It does cover some good basics but I also find it covers the basics that are easy to remember once you use Inform for a bit. Inform has lots of little complications and “gotchas” that can crop up and those are the things that you really need a reference for. I mentioned little design heuristics in two threads just today and, again, those are ultimately the things that need referencing for anyone who wants to do serious work in Inform. Maybe for kids just using Inform as a bit of a toy language, that’s not as necessary.
Thanks for your comments!
It’s really not intended for anyone with any Inform experience – it was for use within 1.5 hour workshops, with 20-30 kids. Subtract the first half hour for lecture, and an hour is really not a lot of time to get into intricacies (especially when half the kids are txting their friends or otherwise unengaged) – just getting home the point that, no really, you need to use consistent spelling and punctuation for it to work took the hour for many of the kids. The hard choice for me was in not mentioning other kinds of rules (notably, Every Turn and When Play Begins), but, as I predicted, it didn’t even come up.
The reference was also intended as sort of a stopgap to minimize how much time I had to spend saying “that’s in Chapter [Whatever] of the Documentation,” to better spend my time on helping with actual non-routine questions (and also, it’s not like I know that off the top of my head, either!) – again, 20-30 kids, two of us. The Documentation itself can be kind of a firehose; just working through it could take many times the length of the workshop. Basically, I kept wanting to add pages to this reference, and I kept having to reign myself in.
Lots of content per page was intended to keep printing costs down (volunteer workshop and I’m unemployed).
I included the “move the player” example because that was far and away the thing that most of the kids asked me how to do in the first session (before I put together these pages). Who knew teleportation was such a fascinating narrative concept? (FYI, you actually can just do a “now the player is [wherever],” but you lose some of the player-moving niceness, like printing the new room’s description.)
Hmm, it seems to me that “plays” there would be just as ambiguous – do I mean that the computer really plays the game itself, like with an AI? I think the right word would be “prints,” but I was worried that the kids might think that “prints” means, you know, with a printer.
Interesting point. Depending on the kids, many of them are exposed to little game systems (like Leapfrog) and they’re often told the little device “plays the game” although, of course, really the kids are playing it. I can see your point that “plays” could be interpreted that way. Maybe just the interpreter “presents the story/game” to the reader, just like how a bound book presents the written story to the reader or how a DVD computer game presents the game to the player. On the other hand, if it caused no confusion at all as is it’s probably best to just leave it. In any event, that was more a pedantic point on my part. Overall: I like it; your reference is nice and concise and can certainly stand as a good starting point to look at.
Did the kids find Inform interesting? How easy was it for them to pick up? You mentioned the punctuation stuff but, in general, was it easy for them? Did it seem to be enjoyable? Inform certainly caters to a certain style. As a programmer it leaves me really cold in a lot of ways but I can also see how that would greatly appeal to someone who was “scared” of programming or simply didn’t want to get into the nuts and bolts of programming.
If you haven’t looked at my Inform 7 Handbook (www.musicwords.net/if/i7hb.htm), you might want to consider providing it to your students as well. It’s specifically written for newcomers. It hasn’t been updated since 5Z71, but the basics of I7 haven’t changed.
Yeah, there was a pretty wide range of computer literacy among the kids, from one that immediately said, “oh, I’ve played games like that!” to one who needed help entering a URL into a browser. The particular usage of “writes” didn’t seem to cause confusion, but sometimes it’s hard to tell (they can be kind of shy when they don’t understand something). I like “presents” as an option if I ever edit it, though, thanks!
Well, I’d say the breakdown was as follows: of the roughly 20 kids in the more recent session, about five were barely paying attention (yelling at each other, staring off into space, whatever), about five were totally into it and writing elaborate stories with rules and multiple locations, and the rest were mostly adding things-with-descriptions to a single location, with varying degrees of enthusiasm. Unsurprisingly, many of them spent the majority of the time writing prose for descriptions. I had the top tier reading new stuff in the documentation as it came up – for example, one wanted a lockable door (the very same one who’d played some text locked-room games, not-so-coincidentally…), another wanted multiple similar objects in a room, and one pair wanted win/lose conditions. Many of them at all success levels grumbled that Inform was “a very weird system,” but I don’t know if any of them had much programming experience (though next week’s session is Mindstorms) so it is hard to tell whether they meant in general or in comparison to other programming environments.
As an aside, I definitely have a love-hate relationship with the natural language aspects of Inform, but this is not really the thread to air that. With respect to the kids’ ability learn it, though, I’d say that the similarity to English helped a lot with them understanding what punctuation/spelling they should use (even if convincing them to actually use it was difficult – I suspect their actual English teachers have much the same problems), but of course we had a lot of problems with them trying random English sentences in the hopes that they’d compile. This was especially a problem when they’d go wandering through the Documentation and grab single sentences of example code; looking at the text files I grabbed from the end of the session, I can’t help but think that was the problem for this piece of code:
The basic action is that " Don't be dancing to close together to them, our you can be kicked out." [/code]or[code] The understanding of the theme is that " LETS GO CRAZY is that it really means to have fun and have fun partying, but not having to much fun."
Something that seemed to especially disappoint many of kids was the lack of a simple built-in conversation system. I suspect that part of that is the demographic – a lot of media aimed at middle-school girls is about talking/socializing. (Heartbreakingly, at least one of them was trying to write a game that centered around “flirting with a man,” although equally heartbreakingly many were about “forbidden”-type foods… but to stay on track with the actual programming aspect…) So I’ve been mulling over the possibility of using something like Twine (which creates HTML CYOA) instead – it’s less of an introduction to programming, but it may allow them to make something much closer to what they want to make. Maybe I should look into Ren’Py, I dunno, though that has the major drawback of me having to learn it first.
Maybe it’s my inability to learn anything Pythonic, but I find Ren’Py extremely weird.
The language of Inform 7 is very Pythonic in a lot of ways. You use colons and indentations for the most part identically. Ren’Py allows something like this:
define floyd = Character(“Floyd”)
floyd “Hello, world.”
You can basically define “floyd” as a reference to a Character object and then, in this case, easily display text based on that context. This is what Inform 7 does (at least conceptually) when it makes a decision about double-quoted text being a description or an initial appearance.
What’s (maybe) interesting is that there are more Python books out there geared for kids than for just about any language. There has been certain assumptions that Python is more geared for younger people to learn. Not saying I agree or disagree necessarily; just that it’s a language often used for kid-based language tutorials.
This is very interesting and I really like the layout. Also the kids’ reaction is interesting. I do not have much experience teaching kids of that age (or kids of any age but to me this sounds like a nice success. Around 25% seem to have fully grasped the idea of IF and Inform7 (they made up their own, non-trivial experiements) and probably most of the 50% in the ‘middle group’ could somehow benefit from the experience (if only in some obscure, meta-physical way, hehe). You can’t expect more, I guess. So it doesn’t seem that Inform7 was too difficult or complex, I’d say.
And if only one of the 5 enthusiastic kids ends up publishing stories on IFDB, then the IF community has benefited as well