Princess revisited
1. Post-jam jam game
I'm satisfied by my post-jam lispmoo2. I mean, look at the jam game.
{ @create $room :named start-locn } x { @describe start-locn :as #:|A place of beginnings; try '{ north } x'| } x { @create $room :named forest } x { @describe forest :as |A fantasy forest.| } x { @describe forest :as #:|There is a path to the west and a distressed-princess aside from trees| } x { @describe forest :as #:|Try '{ talk distressed-princess }'| } x { @describe forest :as #:|Or '{ @give gold-ring :to distressed-princess }'| } x { @create $room :named clearing } x { @describe clearing :as #:|(The gold-ring is right there)| } x { @describe clearing :as #:|A trail leads into the trees east| } x { @describe clearing :as #:|Try { @take gold-ring } x| } x { @create $player :named you } x { @create $player :named distressed-princess } x { @create $thing :named gold-ring } x { @go start-locn } x { @dig north :to forest } x { north } x { @dig south :to start-locn } x { @dig west :to clearing } x { deploy distressed-princess :to forest } x { @put clearing :with (:contents (gold-ring)) } x { @verb distressed-princess :is (com-talk (cond ((member 'gold-ring (get 'distressed-princess :inventory)) (print "Oh, thank-you for finding my gold-ring!")) (:otherwise (print "Help! I lost my gold-ring in the clearing to the west!")))) } x { west } x { @dig east :to forest } x { deploy you :to start-locn } x { setcur you } x { look-around } x
There are some prickles but I'm satisfied.
2. There's no difference between making the game and playing it
I guess since the goal of the game isn't to competitively kill other players, (so far as I can tell), the things to do in the game are the things to do in the game. Explore the world as it stands; build, storytell…
I did all of the above in emacs slime, and just saved the commands I issued into a text file afterwards.
Admittedly, the game engine is hella slow, but it sort of adds to the pacing of things with all those little pauses, doesn't it?
The reason is that when an action (ie verb call) happens, the engine expects that literally anything could be true, but has faith enough to still try.
In principle, performance is very upgradable with even a little caching, but I think that introducing the category of performance optimisations will muck up the simplistic beauty I stumbled across.
3. How to play this?
I think this will work:
- apt install sbcl, and get quicklisp from quicklisp.org like it says
- Clone both https://codeberg.org/tfw/moonclimb and https://codeberg.org/tfw/lispmoo2 into ~/common-lisp/
- (ql:quickload :mcclim)
If 3 worked, everything should work. I guess in your slime repl, or terminal I guess,
(asdf:load-system :lispmoo2) (in-package :lispmoo2/user) (glist) (gload "game0")
and you can watch the game world emerge step by step, and then you can play the somewhat fancier game. Here's a log of me playing it anyway:
CL-USER> (asdf:load-system :lispmoo2) <snipped> CL-USER> (in-package :lispmoo2/user) #<PACKAGE "LISPMOO2/USER"> LISPMOO2/USER> (gload "game0") SCREWTAPE @creates $ROOM :named START-LOCN. SCREWTAPE @creates $ROOM :named FOREST. SCREWTAPE @creates $ROOM :named CLEARING. SCREWTAPE @creates $PLAYER :named YOU. SCREWTAPE @creates $PLAYER :named DISTRESSED-PRINCESS. SCREWTAPE @creates $THING :named GOLD-RING. SCREWTAPE leaves NIL SCREWTAPE goes to START-LOCN You are in START-LOCN. A place of beginnings; try '{ north } x' Objects here are: Players here are: SCREWTAPE Exits here are: SCREWTAPE digs from START-LOCN to FOREST SCREWTAPE @verbs COM-NORTH of START-LOCN. SCREWTAPE goes through NORTH. SCREWTAPE leaves START-LOCN SCREWTAPE goes to FOREST You are in FOREST. A fantasy forest. There is a path to the west and a distressed-princess aside from trees Try '{ talk distressed-princess }' Or '{ @give gold-ring :to distressed-princess }' Objects here are: Players here are: SCREWTAPE Exits here are: SCREWTAPE digs from FOREST to START-LOCN SCREWTAPE @verbs COM-SOUTH of FOREST. SCREWTAPE digs from FOREST to CLEARING SCREWTAPE @verbs COM-WEST of FOREST. SCREWTAPE @verbs COM-TALK of DISTRESSED-PRINCESS. SCREWTAPE goes through WEST. SCREWTAPE leaves FOREST SCREWTAPE goes to CLEARING You are in CLEARING. (The gold-ring is right there) A trail leads into the trees east Try { @take gold-ring } x Objects here are: GOLD-RING Players here are: SCREWTAPE Exits here are: SCREWTAPE digs from CLEARING to FOREST SCREWTAPE @verbs COM-EAST of CLEARING. You are in START-LOCN. A place of beginnings; try '{ north } x' Objects here are: Players here are: YOU Exits here are: NORTH T LISPMOO2/USER> { north } x YOU goes through NORTH. YOU leaves START-LOCN YOU goes to FOREST You are in FOREST. A fantasy forest. There is a path to the west and a distressed-princess aside from trees Try '{ talk distressed-princess }' Or '{ @give gold-ring :to distressed-princess }' Objects here are: Players here are: DISTRESSED-PRINCESS YOU Exits here are: WEST SOUTH NIL LISPMOO2/USER> { talk distressed-princess } x "Help! I lost my gold-ring in the clearing to the west!" "Help! I lost my gold-ring in the clearing to the west!" LISPMOO2/USER> { @give gold-ring :to distressed-princess } x YOU tries but fails to give GOLD-RING to DISTRESSED-PRINCESS. "." LISPMOO2/USER> { west } x YOU goes through WEST. YOU leaves FOREST YOU goes to CLEARING You are in CLEARING. (The gold-ring is right there) A trail leads into the trees east Try { @take gold-ring } x Objects here are: GOLD-RING Players here are: SCREWTAPE YOU Exits here are: EAST NIL LISPMOO2/USER> { @take gold-ring } x YOU takes GOLD-RING (GOLD-RING) LISPMOO2/USER> { east } x YOU goes through EAST. YOU leaves CLEARING YOU goes to FOREST You are in FOREST. A fantasy forest. There is a path to the west and a distressed-princess aside from trees Try '{ talk distressed-princess }' Or '{ @give gold-ring :to distressed-princess }' Objects here are: Players here are: DISTRESSED-PRINCESS YOU Exits here are: WEST SOUTH NIL LISPMOO2/USER> { @give gold-ring :to distressed-princess } x YOU gives GOLD-RING to DISTRESSED-PRINCESS DISTRESSED-PRINCESS LISPMOO2/USER> { talk distressed-princess } x "Oh, thank-you for finding my gold-ring!" "Oh, thank-you for finding my gold-ring!" LISPMOO2/USER>
anyway, the immersive game world is very natural to experience, while just inside your regular lisp environment, whatever it is.
Get lispmoo2
lispmoo2
Status | Prototype |
Author | screwtape |
Tags | common-lisp, emacs, lisp, mcclim, moo, new-kind-of-society, swank, Text based |
More posts
- LISPMOO2 INSTRUCTIONS (IMPORTANT)9 hours ago
- repeatedly-eval-qt - good old-fashioned AI, in my lispmoo2?3 days ago
- Richard Waters' Series and lispmoo24 days ago
- Itches Of Mine Lispmoo2 Scratches5 days ago
- My very own computing revolution16 days ago
- A moonew language for itneraction.19 days ago
- Defining north between two rooms with the low engine19 days ago
- Figuring out how my moonclimb worked19 days ago
- LISP kind of society urgently needed27 days ago
Leave a comment
Log in with itch.io to leave a comment.