Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adventure game scenario #1136

Merged
merged 1 commit into from Mar 6, 2023
Merged

adventure game scenario #1136

merged 1 commit into from Mar 6, 2023

Conversation

kostmo
Copy link
Member

@kostmo kostmo commented Feb 27, 2023

This is my attempt at a longer "adventure game"-style quest.
The primary mechanic of this scenario is in bridging different regions of the map by crafting paths.
The quest is not entirely linear; there a few things that can be done in different order.

A few observations:

  • I make heavy use of the "drill". Having the use command described in "use" command as generalization of "drill" #1007 would be nicer.
  • Some recipes (e.g. using lava) might overlap in their ingredients, so to force a certain output you may have to temporarily drop (place) the ingredient for the undesired recipe.
  • I start the player off with a few items in their inventory with zero quantity so that the associated recipes can be browsed. For some of these items, especially the non-portable ones, it doesn't really make sense to be under a heading called "Inventory". Perhaps something like "compendium" or "library" might make more sense for the title of that pane in the UI, since it represents things that you "know" about?
  • I developed the "solution" code simultaneously with designing the map, so I've never played the scenario with "fresh eyes". So I don't know how much of a "slog" it will feel like to a new player. I imagine that playing it through for the first time may generate a few ideas about improving the swarm UI, perhaps regarding saving progress, or exporting REPL content to a .sw file.
    • Navigating through a twisty passage and encoding this as commands can be a bit tedious. Using "pilot" mode is easier. But you will have to exit creative mode again when it comes time to drill something ("use" command as generalization of "drill" #1007). Inputting "landmark" strings into the REPL at the beginning and end of a piloting sequence could make it easier to find within the REPL history for copy-pasting.
  • I am quite interested in feedback about making the scenario more or less challenging, what clues might be helpful, potential lore, and stylistic improvements.
  • To emphasize the aspect of swarm as a "programming game", I included lots of repetition.
  • A large map like this is fertile ground for "easter eggs". I've added a couple so far.
  • Since --autoplay implies --cheat, the "hidden/optional" goals are displayed in the popup. It would be better if they were ordered below the mandatory active goals, so that when sitting back and watching the --autoplay, the next "logical" goal text gets displayed by default instead of the optional ones.

image

Demo:

scripts/play.sh --scenario Challenges/bridge-building.yaml --autoplay

@kostmo kostmo force-pushed the bridge-building branch 3 times, most recently from 3e58754 to 6960946 Compare March 4, 2023 07:46
@kostmo kostmo marked this pull request as ready for review March 4, 2023 08:08
@kostmo kostmo changed the title forging paths through different mediums adventure game scenario Mar 4, 2023
@kostmo kostmo requested a review from byorgey March 4, 2023 09:49
@byorgey
Copy link
Member

byorgey commented Mar 5, 2023

@kostmo This is amazing!! @noahyor and I had a lot of fun playing it together, we just finished. Some more feedback/thoughts coming soon!

@byorgey
Copy link
Member

byorgey commented Mar 5, 2023

Overall this was fantastic! Had a lot of fun solving the puzzles, figuring out which items I was supposed to use to do what, coding up some automation for some of the more tedious parts, etc. Took me probably about 45 minutes to an hour of active play time. Of course it helps that I have my own previously-developed library of useful functions that I could import.

  • Having the use command... would be nicer

100% agreed. I was able to figure out what the recipes meant, how I was supposed to use them with drill, etc. because I already know how the mechanics of drill work, but I imagine it could be rather confusing to a lot of players.

Even beyond having to drill vs use, another part that is confusing is how the recipes don't make any distinction between inputs which are in your inventory and inputs which are in front of you. e.g. someone might see a recipe that says 1 swampy bog + 2 coconut + 2 flimsy board = 1 floating boardwalk, and wonder how the heck they are supposed to get a swampy bog into their inventory, when in reality you are just supposed to stand in front of one and drill/use.

  • Some recipes (e.g. using lava) might overlap in their ingredients, so to force a certain output you may have to temporarily drop (place) the ingredient for the undesired recipe.

We didn't have any issues with this. We did realize that when obtaining lava to melt a path through the glacier, you needed to empty out your water tank first so you didn't just turn the lava into obsidian. But I thought that was a nice little puzzle.

  • For some of these items, especially the non-portable ones, it doesn't really make sense to be under a heading called "Inventory". Perhaps something like "compendium" or "library" might make more sense for the title of that pane in the UI, since it represents things that you "know" about?

That's a great idea. I filed #1139 .

I've never played the scenario with "fresh eyes". So I don't know how much of a "slog" it will feel like to a new player.

It wasn't too bad. The parts that were most annoying were indeed navigating through the mountains in the northeast and the maze of boulders in the southeast. But in many cases I was able to figure out some nice tricks to automate things, e.g. placing hemp as a "waypoint" so I could say things like until (ishere "hemp") move, or using things like until blocked move rather than moving a specific number of times, so that the same program would continue to work no matter how long a certain causeway/path that I was building got. Overall I thought it struck a nice balance of encouraging the development of automation (since otherwise it would be too tedious) but also not making it trivial to just automate everything.

Re: driving mode, I still really think we should do #102 and then if we want to allow the player to "drive" to relieve some of the tedium we can just start them out with whatever device enables input handling. I think it would still be too tedious to do the whole thing "manually", even with driving mode, so it would still encourage/facilitate programming.

We did not find the easter eggs, but saw them in the .yaml file after completing the challenge. I'm not sure why I didn't go in the other guy's house --- I thought about it but then got caught up doing puzzle-solving instead of exploring. =)

@kostmo kostmo added the merge me Trigger the merge process of the Pull request. label Mar 6, 2023
@mergify mergify bot merged commit 8556d54 into main Mar 6, 2023
@mergify mergify bot deleted the bridge-building branch March 6, 2023 01:36
@byorgey byorgey mentioned this pull request Mar 8, 2023
@byorgey byorgey mentioned this pull request Apr 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merge me Trigger the merge process of the Pull request.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants