[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)