Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×

Coding is a Text Adventure 122

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.
This discussion has been archived. No new comments can be posted.

Coding is a Text Adventure

Comments Filter:
  • Usability and Games: 17 Excellent References [digg.com] -- "If you're interested in video games and computer games, as well as usability and user experience (UX), this is exactly the list of references for you."

  • Restart? (Score:5, Funny)

    by jyuter ( 48936 ) <jyuter@gm[ ].com ['ail' in gap]> on Wednesday March 15, 2006 @02:22PM (#14926478) Homepage Journal
    I've already been eaten by a grue.
  • by Perseid ( 660451 ) on Wednesday March 15, 2006 @02:25PM (#14926500)
    "PUT KEY ON HASH TABLE" Segmentation Fault: Wumpus Detected
    • by Mayhem178 ( 920970 ) on Wednesday March 15, 2006 @03:06PM (#14926856)
      No no no, you're doing it all wrong.....

      "INSERT INTO Door (Keyhole) VALUES ('KEY') WHERE Door.Locked = 1"

      "UPDATE Monster SET Monster.Dead = 1"

      "INSERT INTO Inventory (SELECT Loots FROM Monster WHERE Monster.IsDead = 1)"

      "UPDATE Princess SET Princess.Saved = 1"

      I win! That means...

      "SELECT Baby FROM Hero INNER JOIN Princess"
      • by Doc_NH ( 898298 ) on Wednesday March 15, 2006 @03:41PM (#14927164)
        "SELECT Baby FROM Hero INNER JOIN Princess"



        Am I the only one here that has never seen SQL porn before?
      • by Anonymous Coward on Wednesday March 15, 2006 @05:11PM (#14928117)
        would the join clause details be considered pornography?

        (the following contains pornographic material, viewer discretion is advised)

        SELECT Baby FROM Hero INNER JOIN Princess ON Hero.Sausage = Princess.Taco

        I suppose that wouldn't quite be right, since we all know that sausages do not equal tacos. Well... I suppose some people might be confused.
        Maybe it would be better written as

        INSERT INTO Princess (Taco) SELECT Sausage FROM Hero WHERE Hero.id = 'me'

        This also has the advantage of not producing a Baby result.

        Additionally, for those of you who don't have a Princess, you can create one by using the SELECT...INTO statement. But this method suggests transvestite/transgender properties, as explained below.
        SELECT Sausage INTO Princess FROM Hero WHERE Hero.id = 'me' (results in Princess having a Sausage, transvestite results)
        or
        SELECT Sausage AS Taco INTO Princess FROM Hero WHERE Hero.id = 'me' (results in Princess having a Taco, but you're calling your Sausage a Taco, transgender indications)
        • If people wrote "Learn SQL in [x] Days" books like this, that would kick ass!
        • I can fix the first one. Instead of:

          SELECT Baby FROM Hero INNER JOIN Princess ON Hero.Sausage = Princess.Taco

          ...use this:

          SELECT Princesses.Baby FROM (Heroes INNER JOIN Sausages ON Heroes.oid = Sausages.HeroID) INNER JOIN (Princesses INNER JOIN Tacos ON Princesses.oid = Tacos.PrincessID) ON Sausages.Location = Tacos.Location WHERE Princesses.Saved = 1 AND Heroes.oid = 'me'

          Of course, this still tends to result in at least one row containing a Baby. To fix this, you should probably run this prior
      • I don't know, but INNER JOIN just takes out all the romance to me.
  • by Daysaway ( 916732 ) on Wednesday March 15, 2006 @02:27PM (#14926514)
    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.
    • Re:Sounds familiar (Score:5, Interesting)

      by Rei ( 128717 ) on Wednesday March 15, 2006 @02:32PM (#14926565) Homepage
      I agree; this is just so perfect. Some of my most fond coding memories were coding for an lp mud. The ability to "see" every object that you have, and at the same time to be able to, say, call functions on the body of the person that you're talking to, was just so much fun. I loved to patch myself to impersonate a message board or hide inside other objects. And don't get me started on "coding wars", when someone creates an object to dest you, you create a counter for the dester, they work around the counter, you come up with a convoluted counter-counter, etc.

      From a practical standpoint, it makes a lot of coding intuitive and makes "plugins" nearly automatic. For example, objects can look at what is in their "environment" (i.e., what is holding them). If you have an object that calls "insert_foobar()" on every object sitting inside a message board object when someone tries to foobar the board, if you were to take it out of the message board and stick it in a player's inventory, it would try and foobar their inventory when someone foobars the player.

      The fact that you can simply pick up and move objects around makes visualizing your tasks so simple. You can even have fun with how people interact with your objects; if you want an object that will perform some actions on someone's player object, for example, you could make it be a bread that they eat. You could have an object that displays information be a firework that you light and launch into the sky. The possibilities are endless.
    • I remember one of the best times I had in my life was back then in 1985 when I was playing "Collosal Cave Adventure" on 8086 and since I could not figure the game out I started disassmblying the game and patching the binary executable image to get to the next room... or get en extra object...

      I still remember the unwelcome sunrise and amber glow of monochrome Hercules terminal... "Plugh"...
  • by specht ( 13174 ) on Wednesday March 15, 2006 @02:28PM (#14926522) Homepage
    ... 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" :)
  • Wonderful (Score:5, Funny)

    by IflyRC ( 956454 ) on Wednesday March 15, 2006 @02:28PM (#14926524)
    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.
  • I guess it was just too difficult to look at your code in a nice editor with color coding and intellisense.

    I'd much rather navigate to my function with:
    North
    North
    East
    North
    Look
  • addictions? (Score:5, Funny)

    by gEvil (beta) ( 945888 ) on Wednesday March 15, 2006 @02:31PM (#14926551)
    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...
  • What fun! (Score:5, Funny)

    by Geldon ( 444090 ) on Wednesday March 15, 2006 @02:33PM (#14926575)
    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.
  • Uh oh (Score:3, Funny)

    by Pearson ( 953531 ) on Wednesday March 15, 2006 @02:33PM (#14926584)
    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!!!!
  • by MooseByte ( 751829 ) on Wednesday March 15, 2006 @02:34PM (#14926585)

    "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...)

  • by kisrael ( 134664 ) on Wednesday March 15, 2006 @02:40PM (#14926627) Homepage
    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
    > move all files from c:\wherever\ and below that end with .jpg to c:\backup\, preserving the directory structure

    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...
    • Literal english commands, just like you described would be great for tech support. No more fuss & muss with exact syntax.
    • It has already been done. Check out infodos [ifarchive.org].
    • by Carthag ( 643047 ) on Wednesday March 15, 2006 @02:54PM (#14926749) Homepage
      Looks kinda like AppleScript.

      *insert examples here*
    • There's a reason programming and shell script languages look like they are. Well there are multiple reasons, of course. But one problem with a sort of natural command language like that is that it tends to be ambigous at times. I'm too lazy to come with examples at the moment, but still. The only way I can imagine this working at the sort of complexity you describe is when there's an explicit confirmation listing the changes the command entails. If you've seen the confirmation of a complex refactoring comma
      • I think it might not be as ambiguous as you imply...frankly I think the problem is the extra typing, shell languages tend to be pretty concise (especially Unix...) and like you say if there is ambiguity, it could ask for clarification...and ideally you'd be able to say "the latter, and remember that as the default for that phrase"

        Of course not all shells are created equal...I heard in some you can do something like "move *.log *.log.bak" and it knows you mean. (Admittedly I'm playing fast and loose with she
    • Probably apocryphal, but I remember a story of a Compaq being demo'd with its mostly unique, but primitive, voice command interface. Somewhere in the speil, someone in the audience yelled out something like this after the demodroid opened a DOS window:

      "C-colon-backslash, enter" ...promptly followed by someone else of like mind:

      "delete star-dot-star, enter, yes" ...with much humor and glee by most of the audience, and who-knows-what on the demoer's face...

      This was, of course, in the Windows 3.1 days. Securit
  • Slightly OT... (Score:2, Interesting)

    by DarthChris ( 960471 )
    FTFA:
    "Imagine using a bank where you move transparently between the automated and human-assisted interface because they occur in the same mode," says Webb. "The human can show you how to use the ATM, which is over at the side of the room".
    And the phishers can watch as you enter your PIN...
  • by digitaldc ( 879047 ) * on Wednesday March 15, 2006 @02:45PM (#14926668)
    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?
  • by rubberpaw ( 202337 ) on Wednesday March 15, 2006 @02:47PM (#14926687) Homepage Journal
    This is not a new idea...

    (Mud Shell [everything2.com], now defunct, was featured on Slashdot in 2001.

    There's also the New Adventure Shell, based on Doug Gwyn's Advshell [ifarchive.org], and John Cocker's Advsh [ifarchive.org], 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,

    It treats the web and APIs as just more objects and places, and is a platform for writing and sharing your own code to manipulate those objects and places


    Now, that's pretty cool.
  • by mustafap ( 452510 ) on Wednesday March 15, 2006 @02:51PM (#14926726) Homepage

    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

  • Bad design... (Score:4, Interesting)

    by __aaclcg7560 ( 824291 ) on Wednesday March 15, 2006 @02:57PM (#14926771)
    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?
    • Was this bad game design

      Yes

      or was I being too literal in following the instruction manual?

      The entire game trained you to interact with the world in a specific way, then required you to completely break with the convention, end your suspension of disbelief, and "think outside the box" in order to beat it.

      I think it's just as bad as a prose author lying to the reader. What if you got to the end of a mystery novel and then found out on the very last page that something given to you as fact earlier

    • I say it was bad manual design, which I suppose could have been circumvented by not taking it literally ;-) I tend to take things pretty literally too though.
    • Your problem is that you read the manual.
      Nobody ever reads the manual.

      (And I'm a tech writer... *sigh!*)
    • Re:Bad design... (Score:1, Interesting)

      by Anonymous Coward
      I had that with the text-based Star Trek adventure. I tried every "open communicator" "use communicator" "contact ship" I could think of.. and the answer hit me one day.. it was "Kirk to Enterprise"
    • ..playing Enchanter. I'd got past the 3D maze, past the stone dragon, past the mine and the temporal puzzle and I'd worked out that I had to swim out into the bay and dive down to the seaweed but I couldn't do it. I tried SWIM DOWN, DIVE DOWN, GO DOWN, SINK DOWN and so on for h o u r s. My flatmate came in and asked how it was going and I explained. "Oh" he said and typed D. >Underwater >you are underwater. There are weeds here gaaa!stupidassgame!
  • now i can buy my code some much needed int and con.
  • Productive (Score:2, Informative)

    by EnsilZah ( 575600 )
    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...
    • A coding MMORPG! You first have to spend hours leveling up your project by grinding with specification issues, then you can finally class change to Alpha and start implementing stuff (and if you're really good a high-level issue might even drop a unique solution!) - and if development takes too long you have to go gold farming in PHB territory. Once you have reached the Final class there's not much more to be done but PvP, though.
  • A Cow Says "MOO!" (Score:5, Interesting)

    by TexVex ( 669445 ) on Wednesday March 15, 2006 @03:02PM (#14926823)
    MOOs were like chat rooms, except the members of the community could create new objects by programming them into the virtual world in a dedicated programming language, shaping the game as it went along.
    MOO is interesting for a lot of reasons. It merges the concept of an object in the programming sense with the concept of an object in the game world sense, and it merges the concept of a method call with a game action.

    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.
    • Re:A Cow Says "MOO!" (Score:2, Interesting)

      by nuzak ( 959558 )
      Funny thing about MOO's command/method equivalence, I always considered it one of the weakest features. One of the very first things we did elseMOO was decouple the command interpreter from methods. We pretty quickly got a pattern matcher with arbitrary predicates (not just "any" or "this") and any static strings you wanted, not just hardwired prepositions (regexes were also doable). Programming the method the command was linked with became easier, because the command matcher would take care of resolving
  • by Ranger ( 1783 ) on Wednesday March 15, 2006 @03:03PM (#14926824) Homepage
    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 [wikipedia.org]
  • So....... (Score:1, Funny)

    by Anonymous Coward
    Does anyone have screenshots?
  • Random rewards (Score:5, Insightful)

    by Lord_Dweomer ( 648696 ) on Wednesday March 15, 2006 @03:21PM (#14926988) Homepage
    For visualizing code, I'd say this is something very interesting...however when it comes to making work fun by combining it with a game....

    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.

    • Remember the guy who was doing some system administration with his hacked Doom/Wolfenstein3D? Processes would be cast into the room as bad guys, with some logic to factor in exactly which picture to use. To kill a process, he shot the image of the bad guy. Seem to recall he wrote a thesis on it as well...

    • My experience with programming is like this:
      First, you make an estimate that to code this you would need about a week. Out of your lifetime of experience you know that it would be prudent to say 4 weeks to the customer. Then, in 4 weeks you figured about 4 problems. But, shit, you got one left. It should take about a week. In a week you solved that problem, but, shit, you got one left. It should take about a week. In a week you solved that problem, but, shit, you got one left.... Repeat previous 2 sentences
  • by yppiz ( 574466 ) on Wednesday March 15, 2006 @03:23PM (#14927008) Homepage
    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.

    http://ptufts.blogspot.com/2006/03/playsh-playful- shell.html [blogspot.com]

    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 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
  • by Tired_Blood ( 582679 ) on Wednesday March 15, 2006 @03:29PM (#14927044)
    >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!"
  • > turning your coding into a MUD-style adventure...
    > Great, now they are combining two of the most horrible addictions in my life.

    And if, by coding, you gain access to an object room and open the chest, and there's pr0n goldpieces in there, you'll really be in for it!
  • Great! (Score:4, Funny)

    by wootest ( 694923 ) on Wednesday March 15, 2006 @04:33PM (#14927704)
    Now all I need to write is xyzzy!
  • After reading this, it has become apparent to me why I always feel like I'm fighting dragons and monsters at work all day.
  • how about running an application like it's a MUD? that would be fun.
    multiply two matrices?
    LOOK:
    - you're on the row 12, column 32, the diagonal is under.
    GO LEFT:
    - you're on the row 12, column 33... aaa, sorry, 31.
    ADD PREV:
    - prev who?
    ...
  • I did business process automation workflow development after graduating university. I spent a fair amount of time at university playing on and creating content for MUDs. The approach I took to creating business process maps was the same as creating quests and areas for MUDs. I just had to be careful with my code comments. The director of finance probably wouldn't appreciate being referred to as the huge ugly troll guarding a pile treasure.
  • All the jokes are funny, etc, but, come on guys, you do realize that this is complete nonsense, right ? RIGHT ????

    Programming is hard enough without adding absurd layers of abstraction and indirection. This reminds me of the ridiculous 3D "programming environments" in movies like Swordfish (which I though was a very enjoyable movie, btw).

  • You can get all the text adventure I want, and then some, just with an interactive python prompt [ibm.com]!

    Now combine that with coding/testing Zope 3 [zope.org] from a command line... and you've got some serious grue.

  • Once upon a time there was Adventure http://jerz.setonhill.edu/if/canon/Adventure.htm/ [setonhill.edu] which was really an analogy of the development of systems and the code required for that activity. So coding has been a game since at least 1975....about time you guys caught up.
  • Someone already mentioned it, but OpenCroquet [opencroquet.org] is probably the next MOO, plus a whole lot more. I recommend watching this [mediasite.com] fairly recent video (October of last year) to see what it's all about.
  • this could be fun, we just have to make everything an adventure game. Shopping, working, fighting, oh christ.. it's ender's game. if you could hook it up so you controlled a robot through your text adventures actions, you could even turn cleaning a room or cooking into an experience gaining activity and have a clean room and dinner. muds are amazing! ;)

As of next Thursday, UNIX will be flushed in favor of TOPS-10. Please update your programs.

Working...