combo: a script for combing rare beach tiles

Recently (in the geological sense) a number of players generously "donated" beach comb data as a public resource available here. combo is a script that uses this data to efficiently comb the beach for you. You can install it by entering git checkout https://github.com/loathers/combo.git release into the gCLI, and then pressing "enter." I like to think it's pretty good!

If you have a problem or suggestion, you'll get a faster and probably better response by posting a github issue than by posting in this thread.


combo is meant to be called in one of three ways:

  1. calling combo 37 (or whatever number you so desire) will cause combo to comb the beach that many times.
  2. calling combo (with no arguments) will cause combo to burn all of your free combs combing the beach.
  3. calling combo lifetime will print information about what items you've combed using combo. This uses the real-life notion of lifetime, which is to say that it doesn't reset on ascension.
combo is meant to be pronounced comb-oh, and not like the popular shorthand for "combination." Inclusion of the B is a personal choice--I personally end up pronouncing the tail end of the B on the way to the O, but you have to really squint to see it.
Combo's source code is available here, if you want to follow along at home. Combo starts by parsing a file called raretiles.json into a large array of beach tiles. It then performs a deterministic shuffle on the array, unique* for every player. It then checks mafia preferences to determine where it last left off, and progresses through the array. When it looks at a tile, it first asks "is this rare tile combable given the current state of the tides?" If the answer to this is a resounding "no", then it moves on to the next tile. If the answer was instead a "yes", it wanders the beach for an appropriate number of minutes, then surveys the land and asks "is there a whale here?" If combo finds a whale, it combs it. Otherwise, it looks at the tile it went out to find, and asks "has this been combed recently"? If it hasn't, it combs that; otherwise, it asks "are there any twinkles around I can comb?" and tries for the twinkle instead. As a last resort, it will comb the already-combed tile because it can't exactly leave.

It does this until it has combed the requisite number of times. Then, it writes down the tile it left off on (so it can remember it later) and exits the beach comber choice adventure.


* I guess if we ever have more players than there are orderings of that set, this will not be true.
Combo strives to be locally optimal. It goes in a big loop over the set of all rare tiles instead of going randomly because it doesn't want to comb a tile it knows for certain has been combed recently. Doing a loop maximizes the distance between combs of the same tile. It shuffles the list differently for each player to ensure that we don't get "clumps" of players who have been running combo starting at approximately the same time all combing the same tile at once.

The decision-making process for picking which tile to comb once we've already wandered the beach is the best we could think of, and it's not entirely clear what best behavior would be for the case of "the rare tile we want has already been combed."

EDIT:
combo still exists, and I plan for it to continue existing for quite some time. However, Veracity's BeachComber.ash now has access to all rare tile data, and has (for the most part) a strict superset of combo's features. Consider switching!
 
Last edited:

Veracity

Developer
Staff member
I use this now, rather than my own BeachComber script, and am very happy with it.
Which should tell you something. ;)

Thanks for making a forum script announcing it. Now we can add it to the Script Manager registry.
 
Top