Ruby as a MUD language

Discussion in 'Ruby' started by malcolm.ryan, Dec 14, 2005.

  1. malcolm.ryan

    malcolm.ryan Guest

    I'm thinking about building a new MUD server (for those who are less
    ancient than I, think "MUD == text only MMORPG"). I'd like to allow
    players to build and program objects in the world, but I'd rather avoid
    having to write my own programming language. I was wondering whether an
    existing scripting language like Ruby might be useable?

    The first problem is, of course, that I don't want the players to be
    able to do _everything_ the language offers. Their code should only
    affect the running of the world, and they should not be able to change
    or delete files on my system or do other nasty things.

    I'm aware of the $SAFE setting and the tainting procedure, but I'm not
    sure how I could use this to do what I want. Any suggestions?

    Malcolm
     
    malcolm.ryan, Dec 14, 2005
    #1
    1. Advertisements

  2. malcolm.ryan

    Bill Guindon Guest

    Well, this isn't exactly an answer to your question, but...
    Have you heard of FaerieMUD?
    http://www.faeriemud.org/
     
    Bill Guindon, Dec 14, 2005
    #2
    1. Advertisements

  3. This is the usual idiom for "super" safe code:

    Thread.new do
    $SAFE = 4
    eval(code)
    end

    However, someone will always find a way to mess things up. What I
    would suggest is a combination of this plus having the mud running in
    at least two processes. The one on which the user code runs would run
    as a user with almost no filesystem permissions, but would have a way
    to communicate with the other process (such as drb). You then provide
    an API to do things that require persisting stuff to disk. ie rather
    that them doing

    File.open("new_character_class.class", "w") do |file|
    # create a chraacter class
    end

    you have something like:

    CharacterClass.add_class("new_character_class", ...)
     
    Logan Capaldo, Dec 14, 2005
    #3
  4. James Edward Gray II, Dec 14, 2005
    #4
  5. If you are hoping to create a MUD with some object-oriented language,
    then the result would probably be called a "MOO".

    Building an entire MOO from scratch is going to be a lot of work,
    particularly if you want it to be reliable in all the little-boring-details=
    ,
    such as handling many simultaneous network connections (some of
    which will be going haywire...), and not having some tiny memory
    leak which turns into gigabytes of wasted memory after the MOO
    has been up-and-running for 10 weeks straight. You'll also probably
    want some notion of access-levels, such that users can modify the
    objects they create, but they don't modify the objects which
    implement the login-sequence to your virtual world.

    You might want to start with some already existing MOO, like the
    LambdaMOO project at sourceforge, and then change that such
    that the language is more ruby-like. Of course, that would also be
    a project that requires a lot of work!

    Some friends and I use a slightly-modified version of LambdaMOO
    for a chat-system we wrote, and it handles many of the details that
    we probably never would have done right. And even *with* all that
    work done, there is plenty of work in defining our actual "virtual
    world" that we never get around to everything we'd like to do.

    There are many things I like about LambdaMOO, but certainly I
    would like it more if the language "looked and felt" more like ruby!
     
    Garance A Drosehn, Dec 15, 2005
    #5

  6. As far as handling all the connection garbage, the FaerieMUD guys
    have this to offer:
    http://www.deveiate.org/projects/MUES
     
    Logan Capaldo, Dec 16, 2005
    #6
  7. malcolm.ryan

    malcolm.ryan Guest

    Does MUES allow in-game building by players?
    It's not immediately apparent from the web pages.

    Malcolm
     
    malcolm.ryan, Dec 19, 2005
    #7
  8. malcolm.ryan

    malcolm.ryan Guest

    [Followups redirected to alt.mud.programming, as this is getting OT for
    comp.lang.ruby]
    Yes. I've been a long term player and programmer at LambdaMOO. I like
    it a lot, but the language is old and fairly kludgy. I was hoping to
    replace it with something more modern and ubiquitous.
    Yes. Handling concurrency and access levels would be very important.I
    suppose such features would need to be built into the language from the
    word go. Overlaying them on an existing language would probably end up
    being unmanageable.
    Heh. I've looked at the LambdaMOO server source, and I wouldn't touch
    it with a barge-pole!
    My thinking exactly. I was hoping that I could take an existing
    well-designed language and wrap a MUD around it. But I guess it won't
    be that easy. Sigh.

    Malcolm
     
    malcolm.ryan, Dec 19, 2005
    #8
  9. I don't believe MUES is intended to be that high level. I don't
    believe MUES even provides the whole room/object concept. It just
    handles the serving of information to the client and multiplexing the
    IO. Any in-game building would be coded at a higher level than MUES.
    You could look at FaerieMUD itself and see if that provides in game
    building. (I suspect not, FaerieMUD seems to be a very classically
    styled RPG (as opposed to a more Second Life-esque MUD (sorry can't
    remember the acronym for those kinds of MUDs, MUSH maybe?), at least
    in terms of flavor, if not necessarily implementation.)
     
    Logan Capaldo, Dec 20, 2005
    #9
  10. malcolm.ryan

    Tobias Jonch Guest

    ------=_Part_4844_11439745.1135087461607
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: inline
    Hey Gang :)

    I recently joined this list because I too am building a MUD with Ruby.

    Bill, you absolutely must to check out TeensyMUD:
    http://sourcery.dyndns.org/teensymud/index.html

    I doubt you'll find anything more suitable for your needs.

    Regards,
    Massaria

    ------=_Part_4844_11439745.1135087461607--
     
    Tobias Jonch, Dec 20, 2005
    #10
  11. ------=_Part_18244_9403284.1137812291556
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: inline

    Ok all,

    I'm amped on toying with a Ruby Mud...
    WHO is serving one (not "trial size") ???

    Thanks.

    --
     
    Peter Fitzgibbons, Jan 21, 2006
    #11
  12. You shouldn't be here.
    You should be admiring my 1st rails app over at
    http://teensymud.kicks-ass.org
    Well.. then you can come back here if you like. ;-)

    I'm am going to release it, but I fear being arrested for abuse of MVC.
     
    Jon A. Lambert, Jan 21, 2006
    #12
  13. I have a page which lists all the ruby mud projects I know of.
    http://teensymud.kicks-ass.org/wiki/show/OtherRubyMuds

    I think only FaerieMud is close enough to be serving up more than just a
    bite size game.
     
    Jon A. Lambert, Jan 21, 2006
    #13
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.