[HN Gopher] Evennia: MUD/MU* creation system
       ___________________________________________________________________
        
       Evennia: MUD/MU* creation system
        
       Author : raytopia
       Score  : 67 points
       Date   : 2023-08-31 15:49 UTC (7 hours ago)
        
 (HTM) web link (www.evennia.com)
 (TXT) w3m dump (www.evennia.com)
        
       | dlyons wrote:
       | 13 year old me learned to write code on FurryMUCK. No idea at the
       | time what a Furry was, or why strangers in game were trying to
       | "yiff" me.
       | 
       | It was incredible though; I was big into books like Redwall,
       | Watership Down, etc. So a social game of animals seemed fun.
       | 
       | The language was MUF; Multi User Forth. Stack based, push, pop,
       | etc.
       | 
       | I helped port software into other MUCKs, like FluffMUCK. The
       | people there were so kind and taught me all sorts of things about
       | Linux, programming, building PCs, etc. I wouldn't be who I am
       | today without the early MUCK communities.
        
       | serf wrote:
       | I recently tried to play a 'modern MUD' . I loved MUDs as a kid,
       | surely modern is better.
       | 
       | In a popular shard, with a prime-time population of 110 people,
       | there existed 60usd 'cosmetic' item for sale in a _very modern_
       | cash shop.
       | 
       | Unable to wrap my brain around the concept of a MUD cosmetic
       | item, nor a MUD cash shop, I shop-lifted the item.
       | 
       | I now give this , free, to you fine folks on HN : "prismatic
       | crystal"
       | 
       | Wear it with pride; I quit on this whole modern MUD thing until
       | my brain re-solidifies.
        
         | BlarfMcFlarf wrote:
         | I dunno, I have no problem with them using an f2p model to pay
         | for full time ongoing development, moderation for events, etc.
         | 
         | And a cosmetics cash shop isn't more baffling then fortnight or
         | whatever: you basically just took a screenshot, but that still
         | doesn't let you walk around with it in game on your character.
         | 
         | No, the real problem is that it takes a strong direction for
         | this sort of system to not devolve into selling power, and
         | making the game shitty and grindy for free to play players to
         | push them towards buying skips, and as far as I know, a lot of
         | those Iron Realms muds have failed this hurdle.
        
         | klibertp wrote:
         | On the MUD I spent most time on, when the feature of making
         | haircuts (and later tattoos) landed it was a Big Deal. There
         | were very few designs, you had to go to a remote location
         | (through dangerous areas) and pay a lot (in the in-game
         | currency) to get it done. All the effort for literally one
         | short line of text added to the description of your
         | character... It might seem strange, but that's kind of the
         | point of MUDs (for many people).
         | 
         | Cash shop? Possible and imaginable. There were always people
         | willing to pay others to level their character, for example.
         | Should it be actually (and officially) implemented, though? I
         | have some doubts here...
        
       | NikkiA wrote:
       | I too miss MUD/Moo/MUSH/MUCKes
       | 
       | I remember trying them all back in the early 90s, spending some
       | time on lpmud instances and Amberyl's pennmush mostly, before
       | writing my own.
       | 
       | More recently I played a hellmoo inspired moo for a couple of
       | years back around 2015 before I just stopped playing for some
       | reason. Maybe I should try it again, it seems to still be running
       | (good mud/moo/mush/mucks never seem to truly die)
        
         | qvrjuec wrote:
         | > good mud/moo/mush/mucks never seem to truly die
         | 
         | The original hellmoo is finally dead! Which fork were you
         | referring to?
        
           | NikkiA wrote:
           | Inferno
        
       | VikingCoder wrote:
       | Off on a wild tangent...
       | 
       | I feel like people should be running MUDs on Linode $5/month
       | servers... using xterm.js, websockets, and some back-end.
       | 
       | The back-end I'm playing with is .Net Core, and I'm using
       | async/await to make the code seem more like a normal terminal
       | application.
       | 
       | ...and I'm just in love with how LambdaMOO natural language
       | parsing and matching works... But I want to use C#... so I'm
       | implementing verb matching using Method Attributes. And I'm
       | trying to layer that on top of how Inform 6 works... Not using
       | Z-Machine. Or the language of Inform 6... but the declarative
       | style of Inform 6 room and object descriptions really appeals to
       | me.
       | 
       | I get that I'm giving up the flexibility of user-created content
       | in a scripting language...
       | 
       | ...but if I still allow players access to the GitHub repository
       | for the content... And make it easy for them to stand up test
       | servers... That feels like a decent compromise?
       | 
       | I'm not even sure I want to make a MOO... or just a server with
       | single-player Infocom-like Interactive Fiction games...?
       | 
       | But this is my hobby project right now.
        
       | Graziano_M wrote:
       | I used to love MUDding (I mostly played _Alter Aeon_). I tried to
       | run my own mud (when I was 11 or so), and I remember learning a
       | lot of C, toolchain stuff, etc, just trying to compile SMAUG.
        
       | jerrysievert wrote:
       | I miss building muds. I miss it so much that I've extracted all
       | of the sillymud rooms, objects, and mobiles into json to play
       | with at some future point.
       | 
       | so many lost months in mud-dom.
        
         | ctoth wrote:
         | Several years ago, I built an area reader for a bunch of
         | Merc/Diku/other old .are files which you might find useful[0].
         | 
         | [0]: https://github.com/ctoth/area_reader
        
           | jerrysievert wrote:
           | I wrote mine in c, but I haven't released it yet. it's
           | complete, and includes the sillymud extensions (figurine,
           | etc).
           | 
           | thrilled that more people cared enough to do it as well,
           | though!
           | 
           | likely I'll build one for epic as well.
        
       | klibertp wrote:
       | How nostalgic. It's like 15-20 years old at this point, no? From
       | what I remember, I didn't like the Web-based content creation
       | system back then. I grew up playing and coding LPMUDs - which are
       | basically a text-based Smalltalk environments with vaguely C-like
       | syntax - so the model where objects' features are part of the
       | engine and objects are static data seemed too simplistic. I even
       | tried writing a "real MUD" in Python at the same time Evennia was
       | starting out. Obviously, I quickly realized that Python is not
       | Smalltalk (though I'd only learn about Smalltalk many years
       | later), and that I'm light-years away from being able to hack the
       | interpreter enough to make LPC-like environment. Meanwhile,
       | Evennia got some contributors and the project took off the
       | ground. Evidently, simpler is better :)
       | 
       | Kudos to the author for keeping it alive and updated.
       | 
       | BTW: There's also this: https://www.amazon.com/MUD-Game-
       | Programming-Development/dp/1... - a pretty good book that taught
       | me how to connect compiled and scripting languages. Now that I
       | think about it, while I did start programming before having
       | access to the Internet (QBasic FTW), it was MUDs that made me
       | really interested in coding. Without them, I don't think I'd be a
       | programmer today.
        
         | Griatch wrote:
         | Evennia does have a web admin, but main development work is
         | intended to be done in Python code, really; what would be akin
         | to 'hardcode' in LPMUDs, I presume. Evennia's extremely
         | extendable, but not so much over the telnet command line; the
         | choice was made to instead make it easier to develop a game in
         | Evennia using modern dev workflows, using version control and
         | proper code editors. All a matter of taste of course. :)
        
         | guessbest wrote:
         | The site itself is 'dated' as it has a massive right margin of
         | blank space, a texture background and the following code:
         | 
         | <!--[if !IE]>
         | <script>fixScale(document);</script>
         | <![endif]-->
         | 
         | Doesn't mean I'm not currently trying to install it. I am.
        
         | deltarholamda wrote:
         | >Without them, I don't think I'd be a programmer today.
         | 
         | Same. LPC was ridiculously powerful considering how limited it
         | was, and it was easy to learn things just by reading other
         | source files. Not having to worry about graphics--you just
         | described how things looked, can't get any easier--and making a
         | thing that could walk around and act sort of independently was
         | very satisfying.
         | 
         | I wish there was something similar today. LPC and LPMUDs are
         | still around, but the license is somewhat restrictive, and
         | trying to get people to download and use a MUD client is too
         | steep of a barrier for casual gamers. I get motivated every now
         | and then to do it myself, but it's a lot harder than it seems.
        
           | klibertp wrote:
           | (Started replying to Griatch, went on a tangent, it'll fit
           | better here I think. Skip the first paragraph to go straight
           | to LPC advocacy :D)
           | 
           | Last time I looked at Evennia it wasn't even in alpha, it
           | just started out (and I was a jealous teenager that wanted to
           | do everything himself, too). Since it was so long ago, I only
           | remember (roughly) the basic ideas and some funny
           | interactions on the mailing list, where the creator tried to
           | convince some would-be contributor that no, you don't need
           | money to start such a project... :)
           | 
           | I do remember LPMUD stuff way better. You're right that, at
           | least in the beginning and on the MUD I played and later
           | coded on, the most common way of writing code was... a clone
           | of `ed`. Really, the line-oriented editor, the one just a
           | step before "magnetic needle and a steady hand". You wrote
           | the code in Notepad, then ran `ed` over telnet, pasted the
           | code and observed it being sent, line by line. You quickly
           | learned what \n is and why it's important thanks to that :)
           | Sometimes you missed a semicolon, so you also naturally
           | learned about `s` and regexes, to ease the pain a little. At
           | some point, though, admins figured out the permissions and it
           | became possible to upload code via FTP. Progress!
           | 
           | As for the architecture, the only "hard"-coded part was the
           | "driver", which was just an interpreter/VM for LPC, plus some
           | code to handle network and disk IO. Everything else was
           | written in LPC. LPC was unique in a bunch of ways: it was
           | gradually typed, it was object-oriented but didn't have
           | classes and used prototypal (and multiple!) inheritance on
           | top of providing #include. Imagine a cross between Ruby and
           | JavaScript coupled with object database/object persistence
           | built-in. Everything was an object, and the system was fully
           | reflective - you could manipulate and change parts of the
           | running system from within. Even the source files on disk
           | were objects within the system - as soon as the file got
           | created, it was already an entity you could manipulate with
           | code (that `ed` clone was written in LPC, too).
           | 
           | It was incredibly powerful and fun way of coding. Version
           | control was a problem, of course - since code was a dynamic,
           | run-time construct, versioning _just_ files wouldn 't cut it.
           | It's the same problem Smalltalk images suffer from. It's
           | possible to solve, but you'd have to code the version control
           | system into the driver, and guys capable of hacking on the
           | driver were few and far in between. Once again, simpler
           | triumphed - although modern Smalltalks do offer VCSes
           | comparable in features with mainstream ones.
           | 
           | Much, much later I realized that what made it all possible
           | was a version of "become" method from Smalltalk: a way to
           | replace one object with another completely and invisibly. The
           | lack of this primitive operation was what made all my
           | attempts to fully recreate the environment in Python fail
           | (along with problematic object model in Python 2.x, but
           | that's another story). In the end, some ten years later, I
           | learned both Smalltalk and Self, and realized I could get
           | what I wanted by writing a rudimentary telnet server in
           | Pharo. By then, though, MMORPGs ate most of the mindshare
           | that kept MUDs alive, and I got distracted with other
           | projects. I did a few prototypes while learning strange
           | programming languages, but always stopped at ~2-3k loc and
           | never finished any of them. I used these as tools for
           | learning only, believing there's nobody who'd be interested
           | in this way of playing by programming (or programming by
           | playing.)
           | 
           | > I wish there was something similar today.
           | 
           | TL;DR: I researched ~20 programming languages and
           | environments, and got reasonably close to the LPC experience
           | in two of them: Io and Smalltalk. Io is not very actively
           | maintained (last I checked), but there are mature, stable,
           | and free Smalltalk implementations out there. An added bonus
           | is that you get MUD client along with the environment and you
           | don't need to build Web-based admin interface (most
           | Smalltalks provide a GUI).
           | 
           | I have some code I can share if you're interested; I get the
           | same urge to build this thing from time to time, but never
           | really followed through with any of the attempts. Though, I
           | suspect the story would change a little if even just one
           | other person was interested :)
        
           | jstarfish wrote:
           | > I wish there was something similar today.
           | 
           | AI Dungeon is pretty close. Too freeform for my liking
           | though.
           | 
           | > trying to get people to download and use a MUD client is
           | too steep of a barrier for casual gamers.
           | 
           | This one'll let you connect over telnet, ssh or a provided
           | in-browser client.
        
       | audiodude wrote:
       | As someone who has contributed to the Evennia codebase (Hacktober
       | 22), I can say that it's OOP systems are largely well thought out
       | and very flexible. There are hooks for things like when your
       | object gets created/destroyed, picked up/dropped, etc.
       | 
       | Per another comment in this thread, it does seem like everyone
       | wants to create a MUD but no one wants to play them. All the
       | people in the Discord seem to have several years long projects to
       | create "their game", but I didn't hear much about anyone actually
       | playing any of these games.
        
         | cmrdporcupine wrote:
         | That's been the rub with all these things since the mid-90s.
         | They're fascinating to build and author in. But it's like a
         | Trotskyist sect or an indie rock band or something: everyone's
         | got one of their own, and nobody wants to join anybody else's.
         | :-)
        
         | klibertp wrote:
         | It's entertaining to create a world. It's excruciating,
         | painstaking work to finish it and make it into something others
         | can enjoy.
         | 
         | Plus, people like different aspects of MUDs. Creating it from
         | the inside (like in LPMUDs) with others is fun in its own
         | right, even if no player ever logs in. It's like a slow-paced,
         | continuous hackathon, where everyone tries to make "something
         | interesting" to show to the others.
        
       | Ancapistani wrote:
       | Sigh.
       | 
       | I guess I'll build a MUD, then.
        
       | giraffe_lady wrote:
       | Mudding is such a small niche, the one I've been playing for
       | decades has a few hundred active players still.
       | 
       | A really curious thing about muds is more people seem to want to
       | make new ones than play them. There is probably about one unique
       | mud per active mud player these days. Most have no one playing
       | them though.
       | 
       | And the established muds have a hard time finding people to work
       | on them, since they are gnarly legacy codebases based on deeply
       | out of favor programming paradigms. Much more fun to roll your
       | own platform, even if it never gets played.
       | 
       | I wish people would just pick one of the dozen or so active muds
       | and play it. Mud client programming is a great outlet for
       | recreational coding imo. The line between my character and the
       | code I've written to manage it is very fuzzy in a good way.
       | 
       | Plus everyone is always talking about how great lua is. Mud
       | scripting is mostly lua, so it's a great way to find out that lua
       | is just as bad as any other language.
        
         | User23 wrote:
         | It's kind of the next step up from writing your very own IRC
         | bot.
         | 
         | On another tangent, I wish I had known Common Lisp back when I
         | cared about MUD implementation enough to actually pour a few
         | hundred hours into it. Of course you'd face the problem of the
         | extension language, at least in the naive implementation, being
         | entirely too powerful. Still, it could potentially make it easy
         | to script truly interesting custom object behaviors.
         | 
         | If I were to make a pass at it now, I'd try to structure the
         | game system in such a way that it could power a roguelike or a
         | MUD, since roguelikes have considerably more legs these days.
        
           | Griatch wrote:
           | The roguelike bits are mainly client-side; there are people
           | using Evennia to develop roguelikes (not sure if any are
           | actually released, but it can be done).
        
             | User23 wrote:
             | Yep. So long as you separate concerns well it's quite
             | doable. The heavy lifting is deciding how to turn roguelike
             | tiles into MUD rooms, or vice versa. There were some MUDs
             | doing procedural content back in the '90s, and others that
             | had a minimap, so there's plenty of demonstrable overlap.
        
         | Griatch wrote:
         | Evennia is Python though, not lua. But yeah, there's a lot of
         | people wanting to make MUDs. Makes for a nice learning project
         | too.
        
           | giraffe_lady wrote:
           | I meant client side scripting sorry. Most of the main clients
           | expose lua APIs only.
        
         | npunt wrote:
         | > A really curious thing about muds is more people seem to want
         | to make new ones than play them.
         | 
         | I think it makes a lot of sense that the remaining MUD players
         | are those that have the most complete affinity for the system.
         | While MUDs draw a technical distinction between making and
         | playing, I think psychologically the lines are very blurry,
         | because part of playing _is_ making.
         | 
         | One reason Minecraft really took off is that embedded in the
         | choice to "live" in an expansive virtual world is a desire to
         | affect that world. It mirrors the malleability of our world but
         | on a larger scale. Climbing up an RPG power curve is only a
         | pseudo-satisfier of that desire; you're not actually changing
         | the world, just changing your position in it. Actually being
         | able to modify the world you occupy is the base desire. In that
         | respect, Minecraft is really the spiritual successor to MUDs.
        
         | CobrastanJorji wrote:
         | I think it's fantastic that MUDs inspire people to want to
         | create them. There's something really great about crafts that
         | look approachable enough to not scare people away. Something
         | about text makes people confident that they can do it
         | themselves. So many people are happy to take a shot at writing
         | a book or a screenplay or a text adventure or a MUD that would
         | never try to get into, say, 3D modeling or stained glass. Is it
         | perhaps that everyone has enough intuitive know-how that they
         | can start making something immediately with no study, even if
         | they need just as much practice and study as the other
         | disciplines to make something of quality?
        
           | Griatch wrote:
           | Yes, I think this is very true; following the Evennia
           | discord, there's a lot of newcomers in there - newcomers to
           | game development or even to programming overall, using
           | Evennia/MUDs as a vehicle to learn.
           | 
           | Not to mention that a graphical MMORPG is one of the most
           | expensive online games you can develop. Whereas a MUD (a
           | text-based MMORPG if you will) _can_ be created by a lone dev
           | or small hobby team (not to say it 's simple, no multiplayer
           | game is, but it's at least achievable).
        
       | bemusedthrow75 wrote:
       | I would much much rather see a reboot of the MOO concepts
       | (persistent object-oriented world, global time).
       | 
       | I know the existing LambdaMOO core and server are still being
       | maintained, and web-ified, but even though I am something of a
       | dissenter from the whole Rust trend, I'm very interested in this,
       | which is going about it IMO the right way:
       | 
       | https://github.com/rdaum/moor
       | 
       | MOO was a good time.
        
         | citrinebanana wrote:
         | Why much prefer MOO stuff?
        
           | yoz wrote:
           | MOOs, like MUSHes, were much more social spaces than games,
           | though some of them had games built on top of them (e.g.
           | LambdaMOO's RPG). Unlike other systems, MOO was built on a
           | remarkably powerful, multi-user runtime with its own
           | programming language and object database.
           | 
           | What _really_ made it special was that it exposed that
           | programming language to its users, encouraging them to build
           | wild and amazing new objects and interactions in a text-based
           | virtual world. To program MOO, you didn't need wizard /admin
           | powers, you just needed Programner permissions, which were
           | much easier to come by. Just follow a tutorial to get started
           | (such as yduJ's ever popular Wind-Up Duck)
           | https://lelandra.com/joan/moocode.htm
           | 
           | The object runtime had some basic permissions around both
           | ownership and types of interactions. They weren't great, and
           | a determined attacker could usually take the system down if
           | they wanted, but they were enough to prevent most basic (and
           | more importantly, accidental) kinds of mischief.
           | 
           | When you give the users of a social space the tools to build
           | and play and extend the world, amazing things happen. With
           | enough users, six ridiculously imaginative things happen
           | before breakfast. There were games, bulletin boards, puppets,
           | creatures, vehicles, and those are just the basics. I
           | remember an IRC client that appeared as a pair of headphones:
           | don them, you're in a channel.
           | 
           | The wonder of what I'd seen stuck with me for many years
           | afterwards. I ended up working at Linden Lab, the home of
           | Second Life, because of it. SL, while amazing in many ways,
           | was nowhere near as simple and fun as MOO. If you want (say)
           | a goldfish-powered helicopter to crash into your room and
           | transport you away, Second Life demands hours of modeling,
           | coding, and animation. In MOO, a text-based world, you just
           | type an emote.
           | 
           | The MOO programming environment made it wonderfully easy to
           | glue verbs (i.e. object methods) to existing objects. I
           | didn't do much with it myself, but I did take a "throw" verb
           | from a snowball, which could be thrown at anyone across the
           | MOO, and attach it to a Creature, resulting in Fluff the
           | Throwable Sheep. Others did far more interesting things; I'll
           | never forget Tabitha the Living Room, who reacted to things
           | being said and done by the players sitting in her.
           | 
           | In 1993, LambdaMOO showed me what the internet would bring.
           | While the World Wide Web took the concept of a shared, user-
           | programmable social system a billion times further than MOO
           | could ever dream of, I've never seen anything else
           | demonstrate the idea as simply, consistently, and playfully.
        
             | bemusedthrow75 wrote:
             | One of the things that always tickled me in MediaMOO was
             | the way that you could hook up a computer in your room,
             | then climb in it, navigate through DNS like tunnels, and
             | climb out of someone else's computer.
             | 
             | And there were rooms that functioned like mass transit -- a
             | monorail I think?
        
               | cmrdporcupine wrote:
               | Loved the elevator on LambdaMOO. Push the button to go
               | down to 'hell' floor or whatever. Watching my friend work
               | on programming around that kind of stuff taught me the
               | basics of state machines and so on that took me from
               | "played with BASIC & Pascal & Modula-2 as a kid" to
               | "Sure, I'll write your CGI scripts and JavaBeans or
               | whatever" and got me working in the industry
               | eventually...
        
           | cmrdporcupine wrote:
           | LambdaMOO straddled(straddles?) a fine line between being a
           | more "serious" system that looks more like a multiuser
           | Smalltalk & Lisp -- with a persistent shared networked
           | database, a live shared programming / authoring environment
           | with a prototype OO scripting language ... and a "less
           | serious" MUD.
           | 
           | You _can_ (but don 't have to) build a MUD in it -- that's
           | what people did -- but in the TinyM* style not usually RPG
           | type games, more social systems.
           | 
           | But it was sitting on some very cool concepts, especially for
           | its time. Predating the web, kind of another "path" that the
           | Internet could have taken. It took the web 15 years to catch
           | up to the idea of synchronous live interaction, and it's
           | still more ... document based... than the kind of
           | object/thing/room/narrative aspect we had going on in MOO.
           | 
           | It's very clearly inspired by Lisp, Self, and Smalltalk. And
           | LambdaMOO itself was, back then, a hub of some pretty nifty
           | people. 'twas my (embarassing mostly) adolescence. And they
           | handed out "programmer" bits easily, so it was full of
           | people's self-programmed creations.
           | 
           | The _implementation_ certainly didn 't age well. But the
           | foundational concept is very cool. There were later
           | iterations on the idea (CoolMUD, then ColdMUD/Genesis, a few
           | other things) that refined things somewhat.
           | 
           | Others have alluded to LPmud/LPC which had some similar-ish
           | things going on, but that was less "persistent shared
           | creation environment" styled and more "source code in files
           | in a decent OO language for making MUDs" with transient
           | objects/state between world resets. People built MUDs, games,
           | in LPmud, but as said MOOs (apart from some exceptions) were
           | less about games and more about what we'd these days might
           | consider a form of social networking.
           | 
           | Both were very cool, but MOO encouraged a more participatory
           | programming environment, since you could just log in and
           | start creating (cloning prototypes) and authoring (writing
           | MOO "verbs" etc).
        
             | bemusedthrow75 wrote:
             | This is a better explanation than I would have managed.
             | MOO's language model was fascinating.
             | 
             | The best part of 30 years ago I started some research (that
             | I dropped out of) that would have built training
             | environments on top of MOO and similar.
             | 
             | I started out by using the facility to open up a port from
             | MOO and serve a webserver from inside it, that a Java
             | applet integrated with. Which you could do, but something
             | about the way it closed connections interfered with POST
             | requests as I recall.
             | 
             | I loved exploring MediaMOO in particular, and I remember
             | wanting to ask Amy Bruckman a bunch of questions about
             | Moose Crossing; I'm not sure if I ever did. That was
             | fascinating work.
        
             | klibertp wrote:
             | Now I really regret not encountering MOOs back in the day.
             | It looks like it captures the fun parts even better than
             | the LPMUD I knew. You're right that restarts of the server
             | wiped out some objects (some were persisted, of course, but
             | it wasn't a full-blown object database). You're also right
             | about LP being more game-oriented - though I personally
             | couldn't care less, there were normal players running
             | around killing stuff, leveling, role-playing, and all that.
             | 
             | Unfortunately, I didn't know English back then, and the
             | only choice I had was between Diku and LP. Well, it's not
             | too late, this thread got me intrigued enough to take a
             | closer look at MOOs (and MOOR), I think :)
        
             | bemusedthrow75 wrote:
             | Separate comment for a separate thread maybe: there are
             | also a few interesting things that "fell out" of MOO
             | research.
             | 
             | One thing was AstroVR, which was an environment for
             | collaborative control over telescopes. That had an advanced
             | client called Jupiter, which PARC researchers IIRC used to
             | develop a protocol (also called Jupiter?) that supported
             | distributed interfaces and provided correct ordering of
             | event messages.
             | 
             | https://www.semanticscholar.org/paper/High-latency%2C-low-
             | ba...
             | 
             | https://dl.acm.org/doi/fullHtml/10.1145/217279.215128
             | 
             | https://www.adass.org/adass/proceedings/adass94/vanburend1.
             | h...
             | 
             | As far as I am aware, that work pretty heavily influenced
             | SubEthaEdit and Google Wave.
             | 
             | And Pavel Curtis's team eventually ended up providing the
             | backbone of the MS Office live meeting stuff.
        
         | cmrdporcupine wrote:
         | Thanks for the name drop. Come on over and help :-)
         | 
         | Contributions and opinions and musings are welcome.
        
           | bemusedthrow75 wrote:
           | I can't now but I will in a few months! I am really
           | encouraged by your approach. Compatibility is really
           | important.
           | 
           | How are you apportioning time with multiple threads? How do
           | the ticks work?
        
             | cmrdporcupine wrote:
             | It's different than LambdaMOO because it's transactional
             | (or will be). MOO had a global interpreter lock, was single
             | threaded, and each user got a tick based time slice, so
             | there was not really the possibility for state conflict,
             | and there was concurrency but no real parallelism.
             | 
             | At its peak under heavy load on the machines we had back in
             | the 90s, there was some _really_ bad lag as we all waited
             | in turn to f 'ck up the world together.
             | 
             | In my system each task (command) gets a separate thread
             | (well, tokio async thread, so not always a physical OS
             | thread), which is its own fully snapshot isolated DB
             | transaction. State is isolated MVCC style (eventually
             | including all I/O) until commit. If the commit is not
             | successful because of conflict the transaction is rolled
             | back and retried , and the user is none-the-wiser.
             | 
             | It's all experimental of course, but I've spent the last
             | ... some time ... working in and studying database tech, so
             | I'm confident I can eventually make it scale. Right now
             | it's just hoisted over RocksDB as a shim but I'm ...
             | building my own thing on the side which will eventually
             | perform/scale much better for the heavily concurrent
             | multiple-writers scenario.
             | 
             | There's still VM opcode based ticks, as in MOO, and limits
             | on them, but that's more of a resource control / time
             | management system to prevent infinite loops and resource
             | abuse and so on.
        
               | yoz wrote:
               | Fascinating, thanks for the explanation! Makes me wonder
               | if anyone's tried building a MOO in Erlang/Elixir or
               | another actor-based system. (Though I've probably
               | misunderstood how they'd help with the problem.)
        
               | cmrdporcupine wrote:
               | If there's a commonly used (or uncommonly) runtime or
               | language out there, someone has attempted to write a MOO
               | in it. At least I have.
               | 
               | Finishing it, and getting other people to use it...
               | that's another story. I've started building probably a
               | half dozen or more systems over the last 25 years. Some
               | have gotten further along than others, but none ever
               | completed. And yeah, I played with Erlang for it at one
               | point :-)
               | 
               | That's why I just threw my hands up in the air and said
               | "F* it! I'll just make it fully LambdaMOO compatible."
               | Because believe it or not there's still people using the
               | LambdaMOO server (and "Stunt" and things like that) and
               | various cores on it. I can hopefully get their interest;
               | but also it gives you a suite of (really weird, aged, and
               | sometimes questionable...) code to test against, and
               | something to compare to for compliance.
               | 
               | The other thing is it makes sense to build such a system
               | in a "systems" PL like Rust or C++, because it _is_
               | actually a virtual machine, language runtime, database,
               | has a garbage collector, etc. If you end up caring about
               | performance (might not need to, to start), getting closer
               | to the metal makes sense.
        
               | bemusedthrow75 wrote:
               | Ooh, all very interesting. I tried a simple experiment
               | about 25 years back with a really, really lightweight
               | green-threads library that I thought might work but I
               | never really understood the synchronisation elements well
               | enough.
               | 
               | I really think the world is kind of ready for a
               | LambdaMOO/JHM system again so I will try to come back to
               | play with it and I wish you well in the meantime!
        
               | cmrdporcupine wrote:
               | Thanks. The core problem with making something like
               | LambdaMOO multi-threaded is that once you introduce real
               | parallelism you just end up with the potential for race
               | conditions and deadlock. So you need some kind of
               | isolation to make it work. And given that MOO is
               | basically a ... database... it makes sense to crib from
               | those notes.
               | 
               | These days, I'm not as huge of fan of the OO model MOO
               | embraced. At least not in its pure form. While I'm
               | implementing LambdaMOO slavishly compatible, it's more
               | just to keep myself disciplined. I hope to go beyond it.
               | 
               | The 'fantasy' system I'd construct would be look more
               | like a shared Prolog system than a shared Smalltalk/Self
               | system. It'd be constructed around relations & first
               | order logic. Relational but not crappy like SQL. You can
               | build LambdaMOO on _top_ of such a system, but not really
               | the other way around. I just haven 't mentally figured
               | out what a sensible multiuser permissions model looks
               | like in that scenario.
        
       | b800h wrote:
       | Fantastic stuff. Now I can integrate an age-verification system
       | so that don't end up in legal hot-water thanks to the Online
       | Safety Act..... /s?
       | 
       | In all seriousness, this looks like a fabulous project.
       | Congratulations to those behind it, we needed something like
       | this. I have bad memories of leafing through ancient C code to
       | run a MUD. I've just starred it and will roll it out on a Raspi
       | at home, OSA be damned.
        
       | ludicity wrote:
       | Evennia is an awesome project, and the community is fantastic.
       | I've been working with a blind friend over the past two years to
       | gradually piece together a MUD (the only kind of game he's really
       | able to play), and while we've been very inconsistent, the
       | community has had infinite patience for fielding our questions.
       | 
       | It was also very professionally interesting to me - I'm not sure
       | what the situation is for many of the Hackernews FAANG folks, but
       | most of the corporate offices I've been in only require people to
       | glue together Python libraries badly. There's never any scope for
       | writing anything more complex than that, and many people can
       | barely use Git. I've always done much better than that low
       | standard, but there's a huge gap between trying to be good and
       | learning from someone that's actually good. Evennia is the first
       | codebase where, when doing development in my own time, I found it
       | frequently useful to dig into the library's source code to learn
       | about how something has been implemented.
       | 
       | It really raised the bar in my professional life for what I
       | consider acceptable... and it was also very thought-provoking
       | that a free framework for making MUDs blows up what's being done
       | at most shops around the world. We've got a real problem in
       | industry, but Evennia has always been a little Zen garden for me.
       | So thanks to the developers :)
        
       ___________________________________________________________________
       (page generated 2023-08-31 23:01 UTC)