X-Git-Url: https://jxself.org/git/?p=mudsync.git;a=blobdiff_plain;f=worlds%2Fbricabrac.scm;h=0d49355875a53a43f5dd50ca7a3a4f5e8db3fa06;hp=a21829f2886042b06349afd143e4eb98ceee93d8;hb=9a9bcb8f2f23cd6309cab545a8e5626a2e936b39;hpb=bd2d3b63f0e8df23cd28aec4a9b11acfc52c7770 diff --git a/worlds/bricabrac.scm b/worlds/bricabrac.scm index a21829f..0d49355 100644 --- a/worlds/bricabrac.scm +++ b/worlds/bricabrac.scm @@ -1290,7 +1290,7 @@ the paint, but the wires themselves seem to be unusually sturdy." | [8sync Hive] |======' '-_____ ', M ,' '. @ .' - \\ @ / + \\ @ / '-__+__-' '. @ .' .--------------. \\ / @@ -1356,7 +1356,10 @@ is a map detailing the layout of the underground structure.")) "into the room, then stands in front of the door.")))) (make #:name "north" - #:to 'hive-entrance))) + #:to 'hive-entrance) + (make + #:name "east" + #:to 'federation-station))) ;; map ('underground-lab:map @@ -1644,6 +1647,163 @@ that thing soon.")))) ;;; Inside the hive +(define-actor () + ((cmd-read meta-message-read))) + +(define (meta-message-read gameobj message . _) + (define meta-message-text + (with-output-to-string + (lambda () + (pprint-message message)))) + (<- (message-from message) 'tell + #:text `((p (i "Through a bizarre error in spacetime, the message " + "prints itself out:")) + (p (pre ,meta-message-text))))) + + +;;; Inside the Hive + +(define hive-inside + (lol + ('hive-inside + #f + #:name "Inside the 8sync Hive" + #:desc + '((p "You're inside the 8sync Hive. Wow, from in here it's obvious just how " + (i "goopy") " everything is. Is that sanitary?") + (p "In the center of the room is a large, tentacled monster who is sorting, +consuming, and routing messages. It is sitting in a wrap-around desk labeled +\"Hive Actor: The Real Thing (TM)\".") + (p "There's a stray message floating just above the ground, stuck outside of +time.") + (p "A door to the south exits from the Hive.")) + #:exits + (list (make + #:name "south" + #:to 'hive-entrance))) + ;; hive actor + ;; TODO: Occasionally "fret" some noises, similar to the Clerk. + ('hive-inside:hive-actor + 'hive-inside + #:name "the Hive Actor" + #:desc + '((p "It's a giant tentacled monster, somehow integrated with the core of +this building. A chute is dropping messages into a bin on its desk which the +Hive Actor is checking the \"to\" line of, then ingesting. Whenever the Hive +Actor injests a messsage a pulse of light flows along a tentacle which leaves +the room... presumably connecting to one of those actors milling about.") + (p "Amusingly, the Hive has an \"umbellical cord\" type tentacle too, but +it seems to simply attach to itself.") + (p "You get the sense that the Hive Actor, despite being at the +center of everything, is kind of lonely and would love to chat if you +could spare a moment.")) + #:goes-by '("hive" "hive actor") + #:chat-format (lambda (npc catchphrase) + `("The tentacle monster bellows, \"" ,catchphrase "\"")) + #:catchphrases + '("It's not MY fault everything's so GOOPY around here. Blame the +PROPRIETOR." + "CAN'T you SEE that I'm BUSY??? SO MANY MESSAGES TO SHUFFLE. +No wait... DON'T GO! I don't get many VISITORS." + "I hear the FIBERS system has a nice WORK STEALING system, but the +PROPRIETOR is not convinced that our DESIGN won't CORRUPT ACTOR STATE. +That and the ACTORS threatened to STRIKE when it CAME UP LAST." + "WHO WATCHES THE ACTORS? I watch them, and I empower them. +BUT WHO WATCHES OR EMPOWERS ME??? Well, that'd be the scheduler." + "The scheduler is NO GOOD! The proprietory said he'd FIX IT, +but the LAST TIME I ASKED how things were GOING, he said he DIDN'T HAVE +TIME. If you DON'T HAVE TIME to fix the THING THAT POWERS THE TIME, +something is TERRIBLY WRONG." + "There's ANOTHER HIVE somewhere out there. I HAVEN'T SEEN IT +personally, because I CAN'T MOVE, but we have an AMBASSADOR which forwards +MESSAGES to the OTHER HIVE.")) + ;; chute + ('hive-inside:chute + 'hive-inside + #:name "a chute" + #:goes-by '("chute") + #:desc "Messages are being dropped onto the desk via this chute." + #:invisible? #t) + ;; meta-message + ('hive-inside:meta-message + 'hive-inside + #:name "a stray message" + #:goes-by '("meta message" "meta-message" "metamessage" "message" "stray message") + #:desc '((p "Something strange has happened to the fabric and space and time +around this message. It is floating right above the floor. It's clearly +rubbage that hadn't been delivered, but for whatever reason it was never +garbage collected, perhaps because it's impossible to do.") + (p "You get the sense that if you tried to read the message +that you would somehow read the message of the message that instructed to +read the message itself, which would be both confusing and intriguing."))) + ;; desk + ('hive-inside:desk + 'hive-inside + #:name "the Hive Actor's desk" + #:desc "The desk surrounds the Hive Actor on all sides, and honestly, it's a little +bit hard to tell when the desk ends and the Hive Actor begins." + #:invisible? #t + #:goes-by '("Hive Actor's desk" "hive desk" "desk")))) + + +;;; Federation Station +(define federation-station + (lol + ('federation-station + #f + #:name "Federation Station" + #:desc + '((p "This room has an unusual structure. It's almost as if a starscape +covered the walls and ceiling, but upon closer inspection you realize that +these are all brightly glowing nodes with lines drawn between them. They +seem decentralized, and yet seem to be sharing information as if all one +network.") + ;; @@: Maybe add the cork message board here? + (p "To the west is a door leading back to the underground laboratory.")) + #:exits + (list (make + #:name "west" + #:to 'underground-lab))) + ;; nodes + ;; network + ;; activitypub poster + ;; conspiracy chart + ('federation-station:conspiracy-chart + 'federation-station + #:name "a conspiracy chart" + #:goes-by '("conspiracy chart" "chart") + #:desc + '((p (i "\"IT'S ALL RELATED!\"") " shouts the over-exuberant conspiracy " + "chart. " + (i "\"ActivityPub? Federation? The actor model? Scheme? Text adventures? " + "MUDS???? What do these have in common? Merely... EVERYTHING!\"")) + (p "There are circles and lines drawn between all the items in red marker, " + "with scrawled notes annotating the theoretical relationships. Is the " + "author of this poster mad, or onto something? Perhaps a bit of both. " + "There's a lot written here, but here are some of the highlights:") + (p + (ul + (li (b "Scheme") " was originally started to explore the " (b "actor model") + ". (It became more focused around studying the " (b "lambda calculus") + " very quickly, while also uncovering relationships between the two systems.)") + ;; Subject Predicate Object + (li "The " (b "ActivityPub") " protocol for " (b "federation") + " uses the " (b "ActivityStreams") " format for serialization. " + (b "Text adventures") " and " (b "MUDS") + " follow a similar structure to break down the commands of players.") + (li (b "Federation") " and the " (b "actor model") " both are related to " + "highly concurrent systems and both use message passing to communicate " + "between nodes.") + (li "In the 1990s, before the Web became big, " (b "MUDs") + " were an active topic of research, and there was strong interest " + "in building decentralized systems similar to what is being " + "worked on for " (b "federation") ". " + "(See the network spaces desiderata document.)"))))) + + ;; goblin + + )) + ;;; Game ;;; ---- @@ -1651,7 +1811,8 @@ that thing soon.")))) (define (game-spec) (append lobby grand-hallway smoking-parlor playroom break-room computer-room underground-lab - async-museum gift-shop hive-entrance)) + async-museum gift-shop hive-entrance + hive-inside federation-station)) ;; TODO: Provide command line args (define (run-game . args)