How does one learn inform 7, when examples dont compile?

Hey Everyone

i really want to learn Inform 7, but i am having some major issues on understanding how the program functions at even it’s basic levels. I keep getting weird errors that are poorly explained and don’t show me working examples. It really doesn’t help at all that when you try to compile the examples given alone (in the tutorial) you get the same errors. I find it incredibly frustrating, and i am on the verge of giving up, as it just seems very reserved in the tutorial and doesn’t really explain in detail what exactly is going on.

Is there any other way of learning Inform 7? i tried to watch some simple youtube videos which worked great, but they seem super limited and very simple and there aren’t many out there.

All the examples given in the manual should compile out of the box, except I believe two which have been reported as errors to the maintainers. Which ones are you trying, and what errors are you getting?

Inline Hyperlinks by Erik Temple, the Survivable Mode and Maze example doesn’t compile
Basic Hyperlinks by Emily Short, the Mossy Bank example doesn’t compile either.

i realise now i misunderstood the role of the extensions in the engine, and that the standard examples in the tutorial are supposed to be done by clicking the arrow. However the examples of those extensions still don’t compile and im not really sure what im doing wrong.

Edit:
Problem. In the sentence ‘Commands (continued) linknum replacement 1 “north” 2 “south” 3 “take lantern”’ , I can’t find a verb that I know how to deal with.

See the manual: 2.1 > 2.1. Creating the world

(from Mossy Bank)

It looks like your stops / indentations / tabs are going wrong; that shouldn’t be a single sentence, but several lines in a table. How are you copying the example into the IDE?

i just tried to replicate the error, but don’t seem to be able to do so, now im getting entirely new errors, they are listed below;
(I used a fresh project and clicked the “insert button” from the example itself)
My Input:

“Mossy Bank”

Include Basic Hyperlinks by Emily Short.

Mossy Bank is a room. “The shore here is made up of round rocks, very heavily grown over with a slippery grey-green moss. To the [set link 1]north[end link] is a small shack.”

Small Shack is north of Mossy Bank. “This little shack opens to the [set link 2]south[end link].”

A lantern is in Small Shack. “There’s [set link 3]a lantern[end link] on the floor.”

Table of Hyperlink Glulx Replacement Commands (continued)
linknum replacement
1 “north”
2 “south”
3 “take lantern”

My Errors:

Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 1 (linknum), the entry ‘1’ (row 2) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘a number’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)


Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 1 (linknum), the entry ‘2’ (row 3) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘a number’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)


Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 1 (linknum), the entry ‘3’ (row 4) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘a number’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)


Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 2 (replacement), the entry ‘“north”’ (row 2) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘some text’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)


Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 2 (replacement), the entry ‘“south”’ (row 3) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘some text’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)


Problem. In ‘Table of Hyperlink Glulx Replacement Commands’ , column 2 (replacement), the entry ‘“take lantern”’ (row 4) is a genuine, non-blank entry: it’s a specific value. That’s fine, of course - the whole idea of a table is to contain values - but this is a column which already contains a name of a kind: ‘some text’ .

Names of kinds are only allowed at the top of otherwise blank columns: they tell me what might eventually go there. So the kind name has to go. You can replace it with a blank ‘–’, and then either let me deduce the kind by myself, working it out from the actual values in the column, or you can put the kind in brackets after the column’s name, at the top.)

(no more errors from here)
I really don’t understand why it’s making the errors, it looks sensible to me which only makes me more confused

In each of these lines:

linknum replacement 1 "north" 2 "south" 3 "take lantern"
the space between the two items should be a tab (not just a space or a couple of spaces). Perhaps there’s something wrong with that? Try putting tabs in the table, and see whether that works.

(Very often, weird Inform errors arise because there’s something wrong with indentation or tabs; it’s hard to detect for the compiler and often leads to seemingly unrelated errors in the general vicinity.)

Ah, which version of Inform are you using? To the best of my knowledge those extensions haven’t been updated past 6F95. It sounds like you may have installed extensions intended for an earlier version into a newer copy of Inform 7, leading to problems. (Sort of like if you try to install a Python 2-specific module into Python 3, it’ll give lots of strange errors and not work properly because features of the language have changed.)

This version of Basic Hyperlinks and this version of Inline Hyperlinks should work in the newest version of Inform.

Oh, i never thought about versions since i got my extensions form the official site. I kinda feel retarded now. Works fine now thanks :slight_smile:

Yeah, there are multiple extension repositories for different versions at the moment and it’s kind of a mess. The best places to look are the Public Library (look in the Extensions pane within the IDE) or the GitHub repo I linked before.

You’re not the one who’s retarded. The inform7.com Extensions page really, really ought to contain a great big WARNING at the top explaining that the Extensions on that page are mostly obsolete. The fact that there’s no warning is, frankly, inexcusable.

If you haven’t downloaded a copy of my Handbook (from http://musicwords.net/if/i7hb.htm), you may find it useful as you get started.