Coding is a Text Adventure
Wired News is running a story about a new approach to crossover working and gaming turning your coding into a MUD-style adventure. Playsh is a "narrative-driven 'object navigation' client, operating primarily on the semantic level, casting your hacking environment as a high-level, shell-based, social prototyping laboratory, a playground for recombinant network toys." Great, now they are combining two of the most horrible addictions in my life.
I've already been eaten by a grue.
"PUT KEY ON HASH TABLE" Segmentation Fault: Wumpus Detected
I had always wondered if somebody would attempt to make a mud out of programming. Everytime I start stepping through my debugger, it feels like I am on an adventure.
Colonel Cranium this is Rectal Reconnaissance, we are on a collision course sir, Abort Abort!
... that's what I usually tell people when they ask me if I'm into games. Most people don't know what this is, so I add "it's a text adventure" :)
So the "Person" class is the main adventurer. While he is running through the tunnel to the mainframe lands, he hear's a request from someone calling themselves "User" that states he must first solve a puzzle for reformatting these characters to the one expected by the mainframe giants. 10/14/1999
Later, our hero Person signs up for a banking account and pays his credit card bills using the AutoBillPay spell. Person is then kiilled by the surcharge monster.
Great, now they are combining two of the most horrible addictions in my life.
Hate to break it to you, but heroin and hookers were combined a loooong time ago...
This guy's the limit!
Unhandled Exception: You have been eaten by a grue.
You are in a maze of twisty subroutines, all alike. You may be eaten by a deadline.
I hope Gibson was forward thinking enough to take out a patent on this!
1. Write futuristic novel
2. Patent every concept in the book
3. Wait for people to make it happen
4. Blind-side them with your 1337 patent!
5. Profit!!!!
I...I'm attacking the darkness!
"Great, now they are combining two of the most horrible addictions in my life."
Now imagine how the productivity numbers would skyrocket if they managed to mix programming and pr0n.
(Granted, I've already written plenty of obscene code in the past...)
I always thought it would be interesting to attach a Infocom/Inform like parser to a File Explorer / DOS shell type thing, so you could type stuff like .jpg to c:\backup\, preserving the directory structure
> move all files from c:\wherever\ and below that end with
That shouldn't be too hard, actually, we have systems that can speak Turing-able English so long as you restrict the subject domain...and once you had that, it should be trivial-ish to get the right speech recongnition component in place, if you wanted to go that route...
SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
Don't you just hate it when people reply to your signature?
Please see http://groups.google.com/group/net.unix/browse_thr ead/thread/8a55fc5a43194ad/ca28c53d1020e06c?lnk=st &q=net.cog-eng+spaf%40gatech.uucp+proposal+adventu re&rnum=1&hl=en#ca28c53d1020e06c
which discusses a precursor to this idea from 20+ years
ago.
Wired News is running a story about a new approach to crossover working and gaming turning your coding into a MUD-style adventure.
Go North
Find Door
Open Door
Leave Work
Find Home
Go Home
Find Bed
Go to Sleep
END
Did I win?
He who knows best knows how little he knows. - Thomas Jefferson
(Mud Shell, now defunct, was featured on Slashdot in 2001.
There's also the New Adventure Shell, based on Doug Gwyn's Advshell, and John Cocker's Advsh, both written in 1984.
The basic concept also shows up in the adventure game found in Emacs.
But, playsh looks like it includes a special enhancement which I think is pretty cool. According to the article,
Now, that's pretty cool.
About someone who wrote a Zork styled system for configuring linux, here on slashdot many years ago. One of the comments that came back was this:
>Take SCSI
Cannot do that
>Take SCSI
SCSI did not budge
>Take SCSI
You got SCSI
Open Source Drum Kit, LPLC deve board - mjhdesigns.com
I had a being in a castle with a vampire text adventure for the Commodore Vic-20 when I was a kid. It was so frustrating because I would get to a special door, I would type BREAK DOOR, and the computer would respond WITH YOUR HANDS? Since the instruction manual said that my commands must be a verb and a action word, typing YES never occured to me.
In fact, I would read years later in "Hackers" by Steven Levy that the original Adventure text game would put the player in the similar position and that typing YES was the answer. I was kicking myself for not doing the obvious. Was this bad game design or was I being too literal in following the instruction manual?
Well, atleast it's more productive than killing the same monsters for eight hours so that you can level up and learn a new spell which will help you kill some more monsters to get to the next level...
For example, you might instantiate a class, and the object created then becomes an in-game object that you can manipulate like any other. It inherits its data and behaviors from its parent. But, that object is also a class that you can extend, and others can be instantiated from it.
In MOO, when you type a command, the game engine matches your command against "verbs" (methods ) found on the object representing you in the game world. The first word of the line you typed becomes the command to match, with the rest of the words being parameters. (You can also specify that verbs not be matchable, only allowing them to be called from within code). It's possible to have verbs that work either as commands or are callable from within other verbs.
If you want to add a new command to yourself, you just add the verb and program it. If it's something to be shared, you copy it to an appropriate ancestor, then delete your own copy; you and everyone else inheriting from that ancestor gains the command. (There's security in place; if you're an administrator you can do anything but if not then you need the cooperation of the owner of that ancestor object or an administrator.)
Ultimately, a MOO is just a scripting language and virtual machine, with a network interface and some security features to allow collaboration without granting all programmers full read or write access to each others' code and data. Implementation of the player / room / carryable object paradigm is done in the scripting language, not the engine itself. It's flexible enough to write Web servers in, and pretty damn fast for a language where everything is late-bound and weakly typed.
Interestingly, while most MOOs used internal mail and public forums, and would send email for various purposes (coded right in the scripting language), and many of them listened for HTTP connections and translated part (or all) of the game world into HTML, none of the efforts to create large MOO networks (a la IRC) ever got very far.
Fun with Anagarams! LADS HOST, SHALT DOS. HAS DOLTS. AD SLOTHS, HATS SOLD. ASS HO, LTD.
It's dark. You light a lamp and you see a slashdot poster doing something with his hand. It's moving back and forth rapidly. Suddenly you are blinded by a white sticky substance. You drop the lamp and the light goes out.
Colossal Cave Adventure
"You'll get nothing, and you'll like it!"
The thing people need to understand is that the reason games are fun is because of the random reward structure in them. You don't get random rewards when you code...only random problems with sometimes unlikely solutions.
Buy Steampunk Clothing Online!
I saw Matt Webb and Ben Cerveny demo Playsh at O'Reilly's ETech conference. The demo was pretty neat. I wrote up the talk and took some photos of the slides. You can see more here on my blog.
- shell.html
http://ptufts.blogspot.com/2006/03/playsh-playful
Matt coded 90% of the Playsh environment in-game. Pretty cool.
--Pat
Your monitor glows brightly in front of you. (You also have a small headache, which you've attributed to being stuck with a CRT. However, accounting always tells you to "man up" when you request a flat panel.)
A coworker, Jeff, comes by and mentions that there's a bug in the program you wrote for the company. Seeing as how it's been six months since the last bug report, you eye him cautiously and ask him what he does before the bug appears. "Click a button, or something" is his resposne. You're suddenly reminded that you have a doctor's appointment to check your blood pressure on Monday.
You have:
-a headache
-pencils
-potential high blood pressure
-a nagging coworker
-a deadline
Action:> Attack co-worker
Jeff, who moves around the office as opposed to sitting in a chair for eight hours like yourself, nimbly dodges as you attempt to fling a pencil into his eye. "Uh, sorry," you say. Jeff shrugs.
Action:> Look at Jeff's computer
You follow Jeff over to his computer, where he sits down and violently moves the mouse to wake it up. "Why didn't you leave the screen as is when you came to get me?" you ask. "Oh, this problem is from last Tuesday," he answers. You wonder if you can move the Doctor's appointment up. "Okay," he says, as he opens Acrobat Reader. He presses some buttons, not caring if you're able to see what he's doing, and suddenly gets a blue screen of death. "See?" You realize that all he did was somehow hard crash Acrobat Reader- a program completely unrelated to your work.
Action:> Ponder homicide
There's not a jury in the world.
Jeff is looking at you expectantly.
Action:> give up
As Jeff stares at you expectantly, you suddenly burst into tears. Leaning against the wall of his cubicle, it cracks and sags backwards as you slow sink to the floor and assume the fetal position. The men in white suits arrive a half hour later.
Total score: -2
Play Again? y/n: n
You are on a plain that stretches as far as the eye can see. There are many ones and zeroes whizzing by above your head.
Obvious exits are:
formatData(scroll),
writeData(scroll),
deleteData(scroll).
You see:
a scroll with writing on it.
Email Man, Printer Guy and Browser Boy are here.
>r
What do you want to read? [ijk or ?*]
>?
Variables
i - tmp
j - tmp2
k - tmp3
(to self): "Wait, what were the variable types for each? hmmm... how about "
>j
As you read the variable, they ALL disappear. Your fun weekend plans crumble into tiny threads and fall apart! Debug this five-year-old garbage you wrote instead - oh look, you didn't use comments or naming conventions!
(to screen): "ARRGGHH!! I KNEW I should have dropped everything on the Simulated Altar when I passed it!"
This is not my sig.
Analogies don't equal equalities, they are merely somewhat analogous.
Now all I need to write is xyzzy!
Usability and Games: 17 Excellent References Direct link to source article.../
How to Download YouTube Videos