James, thank you so much for the comments. Rather than paste the entire code here, I wonder if it would make sense just to post most of the things you commented on or that I had questions about?
James put his comments in [!!!---- ----!!!].
I was splitting the code into sections using comments. James said:
[rant][!!!----Why don’t you use Chapters and Sections instead of Comments? The source code would be splitted for better control ----- CHECK THE CONTENTS TAB UP ABOVE----!!!][/rant]
Ha, I didn’t even see the contents tab. Thank you, that’s a better way to organize it!
[rant]White Room is a room. [!!!----The description of the white room is ----!!!]“You are in a room that is entirely white. A heavy desk faces one wall. Beside the desk is a door.”[/rant]
I thought I read somewhere that “The description of the room is” is optional if the description directly follows “X room is a room.” That’s why I left it out.
Smelling while in a room:
[rant]Instead of smelling while in the White Room, say “You smell paint fumes.”
[!!!----- You dont need the “white room” part -----!!!][/rant]
So it’s not needed because it’s the only room in the game? I wonder if, in general, it is better to act as though you will have more than one room, in case you decide to add one later? I think my approach so far has been inconsistent with that.
I was trying to account for the possibility of the player typing in “look room,” and my attempt didn’t work. James suggested doing it this way:
[rant]Scen_room is a backdrop. It is everywhere. Understand “room/around” as Scen_room. [!!!----“It is everywhere” will work if your game has more than one room----!!!]
Instead of examining Scen_room, try looking.[/rant]
Thanks for this! That works a lot better! I also did not realize you could separate different items to “understand” with a slash. That’s good to know.
For when the player types “help,” I had written
[rant]After reading a command:
If the player’s command matches “help”:[/rant]
and James suggested saying “includes” instead of “matches” in case the player types more than just that word in the command line. Makes sense to me, although what if someone types “Ask Bob for help”? Maybe it is better to assume the player wants the help menu.
For the part dealing with whether or not the player has heard the voice for the first time (and thus knows it exists), here’s what I had, and James’ comments:
[rant]Heardvoice is a number that varies.
Heardvoice is 0.
The voice is scenery in the white room. The description of the voice is “[if heardvoice is 1]You can’t see the source of the voice.[otherwise]You can’t see any such thing.”
Instead of touching the voice, say “[if heardvoice is 1]You can’t touch the voice.[otherwise]You can’t do any such thing.”.
Understand “listen [something]” as listening to.
After listening to the voice, say “[if heardvoice is 1]The woman’s voice has stopped speaking.[otherwise]You can’t hear any such thing.”
[!!!----I guess you are missing a “end if” at the end of your “if” rule ----!!!]
[!!!---- Also, I so much prefer when you put periods out of the “if” rule, so that you have to print it only once and the linebreaking works better. Look here:
After listening to the voice, say “[if heardvoice is 1]The woman’s voice has stopped speaking[otherwise]You can’t hear any such thing[end if].”
I don’t know why I didn’t include “end if.”
I did notice that my line breaks didn’t work well at times, so hopefully putting the period where you said will take care of that.
Also, I wonder if it would be better to use a truth state or something else (instead of a number) to keep track of whether the player has heard the voice yet? Does it make a difference?
- Here’s what I had for singing. “Makenoise” is stuff that happens whenever the player does something that makes noise.
[rant]The block singing rule is not listed in any rulebook.
Understand “yodel” as singing.
After singing, say “You sing loudly.[makenoise]”[/rant]
Here’s what James had:
[rant]Ouch, this is awkward. I don’t think you need the “block rule”. Just use an “Instead” rule in place of the “After”:]
Instead of singing, say “You sing loudly.[makenoise]”
[!!!----And I hope your “makenoise” ends with a full stop. Anyway, it is always better to leave punctuation out of say phrases.[/rant]
The “do not block singing” part may have come from an example I saw somewhere, but you are right that the game seems to work fine without it. I don’t exactly understand why “instead” works better than “after” here but I will read more about it.
Why it is better to leave punctuation out of “say” phrases? In this case, if I move the period or leave it out, the text is no longer punctuated correctly when you play the game.
- Here’s what I had for a new action, “conversing”:
[rant]Conversing is an action applying to one topic.
Instead of answering or asking or telling, try conversing.
Understand “talk” or “talk [text]” or “talk to [text]” or “ask [text]” or “say [text]” or “speak” or “tell” or “tell [text]” or “yell” or “yell [text]” or “shout” or “shout [text]” or “scream” or “scream [text]” as conversing.
Say “[one of]‘Are you saying something, Charles?’ asks[if heardvoice is 0] a woman’s [otherwise] the [end if]voice. ‘I can’t hear you over my white noise machine.’[or]‘If you want to talk,’ says the voice, ‘why don’t you come in here where I can hear you?’[cycling]”;
Now heardvoice is 1.[/rant]
[rant][!!!----Again, don’t use “after” when you need an “instead”. Your new actions (verbs), anyway, lack a Report rule:]
if the player is in White Room: [!!!----Again, this is useful in games with more than one room----!!!]
say “[one of]‘Are you saying something, Charles?’ asks[if heardvoice is 0] a woman’s [otherwise] the [end if]voice. ‘I can’t hear you over my white noise machine.’[or]‘If you want to talk,’ says the voice, ‘why don’t you come in here where I can hear you?’[cycling]”;
now heardvoice is 1;
say “No one in the universe wants to hear you sing. Really.”.
[!!!----- CHECK THIS FOR THE SINGING VERB TOO-----!!!][/rant]
I will have to read more on this, I think, to understand when to use instead, when to use after, when to use report.
- James makes a good case for using the default response at times. I had written:
[rant]Instead of putting something on the wall, say “You don’t have a way to attach anything to the wall.”[/rant]
[rant][!!!---- Is this needed? The default answer for trying to do something pointless is already built in Inform. It goes by the lines of: “Putting things on the wall would achieve nothing.”
As per convention, if a(n experienced) player sees such an answer (You don’t have etc.), he will try and find something to attach things on walls. If you DO NOT INTEND on having the player do such a thing, don’t tease him. ----!!!][/rant]
That’s a good point–I didn’t think of that!
I greatly appreciate all the work you put into this. I wasn’t expecting such extensive notes, so thank you so much.
I’ve asked some questions here in case anyone wants to clarify, but please, nobody feel obligated to spend more time on this unless you really want to…I am glad to have gotten even this much of a response.
Also, I’m not sure if the tabs worked correctly when I pasted the text. If not, sorry!