Amazon ad for book on using Inform 7 (I.F. builder)

Discuss text adventures here! The classics like those from Infocom, Magnetic Scrolls, Adventure International and Level 9 and the ones we're making today.

Moderators: AArdvark, Ice Cream Jonsey

User avatar
Tdarcos
Posts: 9341
Joined: Fri May 16, 2008 9:25 am
Location: Arlington, Virginia
Contact:

Amazon ad for book on using Inform 7 (I.F. builder)

Post by Tdarcos »

In my e-mail I got an item from Amazon.com about constructing video games (I've bought a couple of books or looked around because I'm trying to learn Blender). One of the ones it mentioned is a book on how to write games using text-based Interactive Fiction builder Inform 7. Full disclosure: the link below does give me a commission if someone buys something, but as you guys do use these tools I figured this might be useful. I mean, I didn't think IF was still important enough that someone was writing books about creating it.

Creating Interactive Fiction with Inform 7
Image
"I really feel that I'm losin' my best friend
I can't believe this could be the end."
- No Doubt, Don't Speak

ICJ

Post by ICJ »

Oh hell yeah!

I actually bought that book a couple weeks ago. It's pretty great. I think when I get done with my current text game project, I am going to try something in Inform 7, using that as a guide. A lot of shit I am OK with coding, but don't feel like coding for the next project (involving classes) seem to be taken care of with a few words in Inform 7.

Cmdr Tdarcos, are you aware, at all, of the documentary about them?????

User avatar
Flack
Posts: 8832
Joined: Tue Nov 18, 2008 3:02 pm
Location: Oklahoma
Contact:

Post by Flack »

Off the top of your head, are there any major reasons for me to switch from I6 to I7?
"I failed a savings throw and now I am back."

User avatar
Ice Cream Jonsey
Posts: 28922
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

Post by Ice Cream Jonsey »

Keeping in mind that I haven't written a line of code in I6 since 1999, and my knowledge of I7 just comes from browsing Aaron's book...

I guess the one advantage *I* can talk to, at this point in time is in object hierarchy. I deal with this shit at work every day. butt implements chicken, which extends nnnnghhh and so forth.

I understand it all fairly well and I *wanted* to implement all that in Cryptozookeeper by hand. Er, not that I had a choice. (And I am also effectively saying that I6 and Hugo are similar.) Four years ago I wanted to work with objects and classes, even in my hobby.

For the next project, I can give a crap. The next project, which is probably an I7 project, I just want to write a story and finish it as quickly as possible. And being able to type "piracetam is a kind of nootropic" and having dozens of lines of real code effectively result from the natural language lines of code is great.

But I don't know enough about I7 or I6 to speak to things other than that.

I *think* if I were doing a game with a lot of arrays, I6 would be better? Not sure if there is an I7 expert around. For some reason I thought I read about how it's easy to inline I6 for stuff involving arrays. Christ, this e-mail may very well be the Twin Towers of misinformation.
the dark and gritty...Ice Cream Jonsey!

User avatar
pinback
Posts: 17698
Joined: Sat Apr 27, 2002 3:00 pm
Contact:

Post by pinback »

The sense I have of I7 is that it's easy to implement easy crap, but any time you want to do anything remotely interesting, you have to revert to I6, at which point you're like, why don't I just write this in I6?

That's just the SENSE I have.

Prove me wrong, internets!
I don't have to say anything. I'm a doctor, too.

bruce
Posts: 2544
Joined: Tue Jun 04, 2002 10:43 pm

Post by bruce »

pinback wrote:Prove me wrong, internets!
You're wrong, you retarded fuckbag.

There are only a very few I6 injections in my WIP--certainly far fewer than Hot Beef Injections--and I think ICJ can confirm that it is at least mildly interesting.

Bruce

User avatar
pinback
Posts: 17698
Joined: Sat Apr 27, 2002 3:00 pm
Contact:

Post by pinback »

bruce wrote:you retarded fuckbag.
=(
I don't have to say anything. I'm a doctor, too.

User avatar
Ice Cream Jonsey
Posts: 28922
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

Post by Ice Cream Jonsey »

Oh, it's interesting. And DEPRAVED.

This is kind of nice, though - a bunch of people who don't know much about Inform 7 talking about it, with one guy who wrote thousands of lines of it nearby.

What sort of thing did you end up using I6 for in Stiffy?
the dark and gritty...Ice Cream Jonsey!

NihilVulture

Time for my 2 Cents, ooooo! oooooo! Pick me Picke!!!

Post by NihilVulture »

Look here, I7 is wayyyy different language then I6! No one should argue over this stupid thing! Yes it compiles as I6, but I7 is a different language totally... Shame on you two for arguing like two retard teeanagers!!!! I am getting wwaaaaaaaaaayy too old for this shit!

User avatar
Ice Cream Jonsey
Posts: 28922
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

Re: Time for my 2 Cents, ooooo! oooooo! Pick me Picke!!!

Post by Ice Cream Jonsey »

NihilVulture wrote:Look here, I7 is wayyyy different language then I6! No one should argue over this stupid thing! Yes it compiles as I6, but I7 is a different language totally... Shame on you two for arguing like two retard teeanagers!!!! I am getting wwaaaaaaaaaayy too old for this shit!
You heard him guys! So quit bumping this thre-- oh.
the dark and gritty...Ice Cream Jonsey!

bruce
Posts: 2544
Joined: Tue Jun 04, 2002 10:43 pm

Post by bruce »

Ice Cream Jonsey wrote:Oh, it's interesting. And DEPRAVED.

What sort of thing did you end up using I6 for in Stiffy?
Well, here we go:

Code: Select all

[Remove this before real release ]
Include (- Constant DEBUG; -) after "Definitions.i6t".
So that's so that I and my testers can actually use test commands when running the released game. Will go away at actual release as the comment says.

Code: Select all

To forcibly set the female pronoun from (O - an object):
	(- (SetPronoun('her', {O} ) ); -).
	
To forcibly set the male pronoun from (O - an object):
	(- (SetPronoun('him', {O} ) ); -).
	
To forcibly set the neuter pronoun from (O - an object):
	(- (SetPronoun('it', {O} ) ); -).
I wanted fine-grained control over the pronoun stuff. Pretty sure there are Pronouns extensions that do this now, but, well, I've got this.

Code: Select all

To suppress the inventory information:
        (- c_style = c_style &~ (FULLINV_BIT+PARTINV_BIT); -).

Code: Select all

To check Unicode compliance:
	(- unicodecompset(); -);

Include (-

[ UnicodeCompSet;
	(+ unicode compliance +) = glk_gestalt(gestalt_Unicode,0);
];

-)
Actually totally useless now: I7 requires a Unicode-compliant terp to run, and has for a good long while.

Code: Select all

Part Twelve - "Text Styles"

To set note style:
	 (- glk($0086,6); -).
	
To set normal style:
	 (- glk($0086,0); -).
For my purposes, easier than screwing around with Custom Text Styles for what I wanted to do.

Code: Select all


Part Thirteen - "Current Row"

The stored row is a number that varies.

To decide which number is the current row: (- ct_1 -).

Part Fourteen - "Testing Check"

To decide if testing is in progress: (- (TestCheck()) -).
To decide if testing is not in progress: (- (~~TestCheck()) -).

Include (-
[ TestCheck ; if (test_stack-->2 > 1) rtrue; rfalse; ];
-).

Part Fifteen - "Silent Score-Setting"
	
To silently set the score to (val - number):
	(- score={val}; last_score={val}; -).
Three minor items: one, expose the currently selected row in a table as a global variable, for a well-hidden Easter egg in the code with a lot of randomly-substituted-at-runtime text.

Two, have a way to determine whether we're inside a test command, so that I don't wait for a keypress at the places I'd usually clear the screen if we are (useful for regression testing).

Three: There's a point in the game where the protagonist changes, and the new viewpoint character has a different score. Didn't want score notification when the viewpoint shift happened.

So I count a total of fourteen places I dropped into I6, which are really eight different uses of it, since some, like the pronouns, have multiple thematically-similar calls.

There are eighteen scoring opportunities.

In summation:

Suck it.

Bruce

User avatar
Ice Cream Jonsey
Posts: 28922
Joined: Sat Apr 27, 2002 2:44 pm
Location: Colorado
Contact:

Post by Ice Cream Jonsey »

Did you use any form of automated testing for the upcoming Stiffy game? How do you feel about the tools I7's IDE give you for that, bruce?
the dark and gritty...Ice Cream Jonsey!

bruce
Posts: 2544
Joined: Tue Jun 04, 2002 10:43 pm

Post by bruce »

Ice Cream Jonsey wrote:Did you use any form of automated testing for the upcoming Stiffy game? How do you feel about the tools I7's IDE give you for that, bruce?
Indeed I do.

I have a whole bunch of scene-based unit tests. Although I've mostly gotten lazy and made these happy-path scene walkthroughs, or at least maximal-point walkthroughs. It also gives me a way to fast-forward to a particular scene, without all the did-I-get-the-world-state-right of just stocking the player's inventory and moving him to a particular location. While the test suite is very fast on the CLI Linux/amd64 port, and acceptable on a Core Duo OS X box, it's painful on GNOME Linux on an Intel Atom, and glacial under Quixe in a browser.

Recently, Graham has made it even easier on authors in that we can fix the random number generator seed, so the random stuff that happens in the game is repeatable. This would allow me to regression-test the game as I went along, but I haven't bothered to set any of that up. Mostly if I can "test winning" after a new build, and nothing blows up, I figure I'm OK.

I don't really use the source-level debugging tools in the IDE...but then I don't in real life, either. I'm a fan of debugging with print statements.

Bruce

Post Reply