12 ms·
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 playi
by klibertp 3y ago
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/1592000908 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.
- guessbest 3y agoThe 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.
- Griatch 3y agoEvennia 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. :)
- deltarholamda 3y ago>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 3y ago(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 :)
- gabereiser 3y agoThis fills me with warm fuzzy feelings. MUDs were my jam growing up. So much so that I became a programmer because of it (among others) and like you, have written a few myself. I still maintain old C codebases for modern gcc. Diku, Merc, Smaug, and a few of my own, SWR, exospace. Evennia was always this kind of weird alternative though. The web client was “just enough” and, honestly, was one of the first things people would customize and expand upon. That said, writing multi-threaded socket code isn’t for the faint of heart. Abstractions and libraries exist now - but back then it was a labyrinthine mess of segfaults and kernel dumps. BSD had some of the best tcp socket support and so a lot of muds were built upon BSD.
- waste_monk 3y ago>There's also this: https://www.amazon.com/MUD-Game-Programming-Development/dp/1 https://www.amazon.com/MUD-Game-Programming-Development/dp/1... Does this book still hold up today? It's ~20 years old at this point.