Adventure (Colossal Cave) for ZIL: Beta Testing

I have downloaded this latest version to my android where I can easily fit checking it out into various cracks in my day. More soon, before the weekend likely, or during.

2 Likes

Uploaded version 0/150719:

  • Fixed some typos.
  • The descriptions of floating objects (e.g. the bridges) appear more predictably.
  • Added CROSS as a synonym for ENTER.
  • Fixed a compiler bug that caused a few words to lose some of their meanings (e.g. PLOVER only worked as an adjective).
  • The troll can now be referred to.
  • Fixed game crash when listing the contents of a container.
  • Fixed odd behavior when omitting the noun in a command that requires the object to be held.
  • Added SCRIPT and UNSCRIPT commands.
  • Fixed hint condition for the Alike Maze.
  • EAT now requires the object to be held.
  • Multiple objects are now only allowed for certain verbs (like TAKE and EXAMINE).
  • The caged bird and bottled water/oil no longer count against the inventory limit
  • Things other than the bird can no longer be put in the cage.
  • GET X AND Y now gives an error if one of the objects is not present instead of ignoring it.
  • GET X now searches your inventory if the object isn’t found in the location.
  • The rare spices can be found.
  • The game asks whether you want a transcript immediately after starting, so the transcript includes your lucky number.
  • Added the XLUCKY testing command, which can be used to replay the randomness from a previous game.
  • Added OPEN/CLOSE X WITH Y syntaxes as an alternative to UNLOCK/LOCK.
  • CLIMB works with no noun when there’s something climbable nearby.
  • The nest of golden eggs is singular.
  • The cave closes once all treasures have been found, allowing access to the endgame and all 350 points.
  • Fixed capitalization and formatting for generic sentences listing NPCs (as seen in the endgame).

I downloaded and playtested on the new version. Seems fairly polished already! Good job. Nevertheless I found plenty of little things to quibble about. I will private msg them to you.

New build, 0/150725; the latest link is in the OP.

Major changes (please try to break these!):

  • Implemented orphaning (a.k.a. disambiguation). You can now answer the parser’s questions, like “What do you want to take?” or “Which do you mean, the red cube or the blue cube?”, by typing a noun phrase at the next prompt. The orphaning code has gone through many revisions, but there may still be bugs left, especially in interactions between different types of questions/clarifications (e.g. inferring a missing noun). Also, the way it works internally is quite a bit different from what Inform does, so let me know if anything about it feels awkward.

  • Reworked the pronoun system. Type PRONOUNS to see what they’re referring to.

  • Added several debugging verbs. Note that “[object]” in the description here can be an object name or number; the numbers shown by XTREE are the only way to reference rooms and out-of-scope objects.

    • XTREE: Shows the position of all objects in the world model.
    • XTREE [object]: Shows a subset of the tree centered on one object.
    • XGOTO [object]: Sends you to a location.
    • XMOVE [object] TO [object]: Moves an object. Omit the “to” part to move it to your inventory.
    • XREMOVE [object]: Removes an object from play.
    • XLIGHT: Toggles yourself glowing.
    • XEXITS: Shows the exits from your location.
    • XOBJ [object]: Shows some information about the object, mainly its flags.
    • XIT [noun phrase]: Sets the meaning of a pronoun.
    • XLUCKY [number]: Advent-specific; reseeds the RNG. Note that the number now goes on the command line.
    • XLOOT: Advent-specific; shows the state of the treasures.
  • Added the ability to parse numbers (-32767 to 32767). You can use a number in place of any noun; if you manage to do something crazy with a number, please report.

  • Improved the way the parser guesses which syntax you’re trying to use when a command is incomplete. One effect is that an extra preposition is no longer ignored; “LOOK AT” by itself asks what you want to look at, and “LOOK UP” is an error.

Minor changes:

  • Fixed object listing bug where the first element was inappropriately capitalized.
  • TAKE STREAM works inside the building.
  • TAKE INVENTORY works as an alias for INVENTORY.
  • “Safely deposit” message when dropping a treasure in the building.
  • Changed parsing of object names involving nouns that are also adjectives.
  • Rough stone steps aren’t described when they’re unusable.
  • No more out-of-place “They almost form natural stairs” message.
  • No more redundant mention of the scrawled inscription (which can now be READ).
  • Fixed various typos and formatting nits.
  • Added FEED as a synonym for GIVE (preferring edible objects).
  • The parser asks “Whom do you want to <partial command>?” instead of “What…” when it’s expected to be a person/creature.
  • Reworked OIL/WATER and related verbs. POURing and EMPTYing liquids should now respond more sensibly.
  • Added LIGHT/UNLIGHT as synonyms for TURN ON/OFF. (ON/OFF LAMP also works.)
  • The bottle starts out full of water.
  • Verbs involving attacks (e.g. KILL and THROW) and tools (LOCK/UNLOCK) should do a better job of inferring nouns.
  • Added ATTACK X WITH Y syntax.
  • Added response for ENTER WHIRLPOOL.
  • Cleaned up the golden chain’s in-room description; it’s described along with the bear when appropriate.
  • DROP ALL ignores objects you can’t take in the first place (like the water inside the bottle).
  • The parser will try not to infer you, the player, as a noun unless it really can’t find anything better.
  • CLIMB without a noun works to traverse the rough stone steps.
  • Added the grate description to Below the Grate.
  • Curtains are plural.
  • The note on the giant bivalve is a hint that costs 10 points to see, as in the original. What a value!
  • The magazines respond to READ.
  • Fixed the bear caution sign and limestone formations being missing.

Great stuff - but isn’t UNLIGHT, er, unusual English?

Also, FEED = GIVE is a good idea. Have you thought about the prepositions, though? Is the system ready to distinguish FEED/GIVE BIRD THE SEEDS from FEED/GIVE BIRD TO DRAGON?

GIVE BIRD SEEDS isn’t very natural, of course, but FEED BIRD is. That’s why I’m asking.

Yes, just like UNWEAR. :wink:

Yes, the parser can distinguish between those. Where you might notice trouble is when you only include the first noun and make the parser guess your intent: if you only type GIVE BIRD, the parser can infer either syntax (GIVE OBJECT TO OBJECT vs. GIVE OBJECT OBJECT), and it’s currently weighted to prefer the first one… which is correct for GIVE, and probably most verbs, but wrong for FEED. So, whoops, this is what happens now:

> feed bear
You aren’t holding the large cave bear.

> feed
[the tasty food]
[to the large cave bear]
The bear eagerly wolfs down your food, after which he seems to calm down considerably and even becomes rather friendly.

I think the solution here will be to include a one-noun syntax (FEED OBJECT) that searches for an indirect object and redirects, which is how FILL BOTTLE also works.

Brilliant. That would work nicely. And I think it’s a nicety most Inform games don’t have; the output for the bear there is very familiar to me…

The only place I remember seeing a PRONOUNS command like that is the MS game “Corruption.” Did you see one of my write-ups about it, or is that present in other games, too, or did you come up with that on your own?

Anyhow, very cool, as smarter-pronoun-setting is one of the things I’ve wanted to do with Hugo. Anything I considered a success with Hugo, I hoped to transfer over to ZIL at some point, but very cool that you have your own ideas on the matter.

One thing I’ve run into in going over the Zork implementation in Hugo is that I noticed that in “tall” listings, articles of object contents were not capitalized. I changed this to match Zork’s behavior, but I figured the non-capitalization in Hugo was intentional based on some other game that Kent based his design around. I just find this interesting because it brings up the question of how easy does one want to make it for authors to configure this kind of nitty gritty behavior without ripping out whole routines?

Anyhow, the parser developments and debug verbs sound very exciting!

(Looks like AMC put Adventure online as part of some kind of promotion for their “Halt and Catch Fire” show: http://www.amc.com/shows/halt-and-catch-fire/colossal-cave-adventure/landing )

Hmm. I think I’ve seen it in other games occasionally, but what gave me the idea this time was seeing it used (or trying to be used) in a tester’s transcript.

Ideally, every function of the standard library would be in a definition section so it could be replaced, and the most common customizations would have simpler interfaces… like an Inform-style library message system, to avoid having to rewrite all the code just to change a report message, and a way to remove/replace all the syntax or handlers related to some verb.

Having some equivalent to “after” routines would help a lot. I wonder if that can be done without diverging too much from the Infocom manual.

Are you planning on including OOPS? I found myself trying to use it just now.

EDIT - Also - multiple UNDOs? I’m impressed!

That online link is worth playing for the artwork alone.

I also like the hints VERY much. Not only do they ease non IFers into the format - in fact it looks like a wonderful tutorial system, and the first really non-intrusive IF tutorial I’ve seen in a game - it will also dull the edge of the odd difficult puzzle or two, making it more accessible to modern sensibilities.

1 Like

I’ve added it to the todo list, so eventually.

Hey, I’ve been enjoying seeing your changes in BitBucket.

Soo hooray to you and all the testers. It’s neat to follow on a small scale (each new change checked in) and big one (updates posted here) – and also to see what others are finding.

Folks, if you want to, you can subscribe at https://bitbucket.org/jmcgrew/zilf/overview …

1 Like

Uploaded version 0/150803; see new link in OP.

Miscellaneous parser and game changes:

  • The parser won’t infer a trailing preposition (turning TURN FOO into TURN FOO OFF).
  • FEED is different from GIVE in a few ways. Most usefully, FEED [object] interprets the object as the creature you want to feed, not the thing you want to feed to a creature.
  • Score and rank are shown when you type QUIT.
  • XEXITS debugging command can take a room number to show exits in faraway rooms.
  • A missing noun will never be inferred to be the player.
  • XOBJ debugging command lists the object’s adjectives and nouns, and any local-global (floating) objects.
  • Movement command parsing is stricter, no longer allowing such avant-garde sentences as 1234 WEST or LOOK FOOD THROUGH UP FROM IN THROUGH PIRATE BUT.
  • Pronouns are automatically set in many cases after the game writes a sentence about an object. This happens most often during room descriptions, but also after some verb responses and plot events.
  • The pronouns for several objects have changed to better match the text: the keys and jewelry can be either IT or THEM; the bird, snake, and dragon are IT; the bear is IT/HIM.
  • The parser understands object names that contain multiple nouns joined with “of”, such as SET OF KEYS, WRECKAGE OF BRIDGE, and RECENT ISSUES OF SPELUNKER TODAY.
  • The status line shows “Darkness” instead of a room name when in darkness.
  • Suppressed in-room descriptions for various objects in the endgame area.
  • Room names appear in bold on V4+.

Alternate syntaxes and names:

  • Added CATCH IN/WITH as a synonym for PUT IN.
  • CATCH/RELEASE can be used as TAKE/DROP in most cases.
  • Added alternate syntaxes: PUT BIRD IN CAGE, DROP BIRD, DROP BEAR, ENTER PIT, PUT WATER ON PLANT, GIVE WATER TO PLANT.
  • The bars of silver can be called BAR.
  • The construction sign can be referred to.
  • Tweaked the nouns for the magazines.
  • The body of water can be referred to as RESERVOIR.
  • Added Y as a synonym for the verb YES.
  • Added DISTURB as a synonym for WAKE.

New responses, changed responses, missing objects:

  • Added response for attacking the dwarf with something else that looks like a weapon.
  • Added various responses for examining numbers.
  • Added response for FUM.
  • Added default responses for SING and DANCE (and a special response for SING in one location).
  • Added responses for eating the egg-like treasures.
  • Added response for watering the plant from outside the pit.
  • Added response for putting the bird in the water.
  • Clarified the description of the sewer pipes and added response for putting things inside.
  • Tweaked the response to GIVE ME [anything].
  • The rough stone steps can be referred to from both rooms where they appear.
  • Added the enormous mirror to the endgame area.
  • Implemented the sign next to the troll bridge, the sign in the endgame area, and the tunnel and eerie light near the plover room.
  • Clarified description of the hole seen from the east Twopit Room.
  • Tweaked DRINK response to be sensible when the stream isn’t present.
  • GO without a direction gives a more sensible response.
  • Eliminated redundant text in OPEN CAGE response.
  • Fixed typo in the dwarf’s response to GIVE.
  • Shortened verb reports when acting on multiple objects to eliminate redundant text.

Bug fixes:

  • The V4+ status line scrolls correctly.
  • Implicit takes now follow the same checks as normal ones, e.g. you can’t implicitly take out of a closed container or bypass the inventory limit.
  • HELP, INFO, and CREDITS no longer advance the turn count.
  • AGAIN state is saved for movement commands.
  • UNDO always undoes the last command (unless it was UNDO).
  • Fixed a few paragraph spacing issues.
  • Fixed a few bugs that caused interpreter warnings about invalid object access.
  • Fixed bug where some verbs, when inferring a noun, would unexpectedly prefer the lamp if it was lit.
  • Fixed bug where score changes caused by timed events would sometimes not be announced until the next turn.
  • Fixed bug where intercardinal directions (NORTHEAST) weren’t equivalent to their abbreviations (NE).
  • Fixed bugs related to the aftermath of leading the bear over the troll bridge and falling into the small pit.
  • Fixed bug where a pronoun would be assigned to the library internal object ROOMS.
  • Fixed bug where FILL X WITH BOTTLE got the response for FILL BOTTLE WITH X.
  • Fixed bug where GO [object] would treat it as a direction (usually saying “You can’t go that way”, but sometimes surprisingly not).
  • Fixed number parsing for -32768.

BTW, I’ve been receiving testing reports from some forum users - if you’d like to be listed in CREDITS, please let me know how your name should appear.

X ALL

I find it amusing. :slight_smile: I know you’ll want to disable it, but I almost wish you wouldn’t. It saves on the lawnmowering! If I could >X ALL when I enter a new room in about 98% of IF games, I’d be pretty happy indeed.

EXAMINE ALL is allowed on purpose… I somehow got the impression Infocom allowed this, but I might be wrong.

Again, I’d love it if more games did that. Sure it’s mimesis breaking, but who cares, it’s a gameplay technique to save time. I don’t know whether Infocom did it, and am rather pressed for time to check, but even if they didn’t - you might as well!

BTW:

Zork (Dungeon) doesn’t allow it.

Zork I does.

AMFV doesn’t.

Ballyhoo does.

Bureaucracy doesn’t.

Starcross doesn’t.

Deadline is ridiculous, it prints “There’s nothing special about the all”.

So, they did allow it at some point, then thought better of it.

1 Like

Interesting! I’ll leave it in for now.