MUSH/MOO style player-accessible coding?

275 views
Skip to first unread message

Matthew Walker

unread,
Sep 18, 2014, 4:57:58 PM9/18/14
to eve...@googlegroups.com
I just found out about Evennia, and I'm very interested in it, but I haven't been able to figure out if it can do something I'd want (do it easily, anyway) from the docs so far.

I grew up on MOOs and MUSHs, and in both cases, it's possible for players to write their own code in-game (although most MOOs require that you get 'permission' to do so in the form of a programmer bit on the player). Is anything like this feasible in Evennia?

Thanks,
Matthew

SR Aegis

unread,
Sep 19, 2014, 12:09:31 PM9/19/14
to eve...@googlegroups.com
Matthew,

Here's a quick read on that topic:  https://code.google.com/p/evennia/wiki/SoftCode

Take the following with a grain of salt, as I'm no means an expert on Evennia -- In general terms, what you're describing is 'softcode', an in game scripting language.  By default, Evennia does not offer extensive softcode support, however it is entirely possible that with effort (not an insignificant amount, by my estimation) you could extend extensive softcode into the game.

However, what it lacks in "in-game-scripting", it makes up for in spades with its undercarriage -- developing a game in Python is leaps and bounds easier than a number of the alternatives.  I think it's premature to declare TinyMUSH dead as a platform, but I certainly wouldn't choose to dev on it having discovered Evennia.

Additionally, if you have a small number of use cases for soft code with very specific inputs and outputs, I suspect that you could lay out the framework for some limited softcode without too much trouble.

Really though, let me repeat -- I'm far, far from an expert.  I've only begun getting my feet wet with Evennia.  It's possible that some existing work to extend softcode into Evennia has been done and may be available to you from more seasoned members of the community.

Griatch Art

unread,
Sep 19, 2014, 2:32:37 PM9/19/14
to eve...@googlegroups.com
What Aegis says is correct, Evennia is not designed out of the box with Softcode support (the documentation is however hosted on github these days and the updated page in question is this one: https://github.com/evennia/evennia/wiki/Soft%20Code).

Indeed we find that much of the advantages of actually building a game in softcode is fading as the development team gets smaller and more focused. Modern version control systems will allow you and your collaborators to use proper code editors and a modern workflow when designing your game.

But as also mentioned, there is nothing stopping you from building your own advanced in-game building system (simple in-game things and effects is after all what softcode was originally designed for) if you so desire. One of our contributors is sketching on an optional plugin implementing the systems needed for safe player building. If you get on the IRC dev chat, have a talk with 'Kelketek' and he might clue you in on what he had in mind.
.
Griatch

Shan Hollen

unread,
Dec 17, 2014, 9:39:25 AM12/17/14
to eve...@googlegroups.com
I'm a LambaMOO veteran of decades and am looking to move my new venture to a more modern platform. I'm trying to decide between Javascript and Python. Evennia looks fantastic! 

Here is my big question (I'm sure most of you are knowledgable of LambdaMOO, but I hope you will bear with me):

In my MOO core we have a @build command that creates a room object using given arguments: type, name, etc. We have a series of commands that create various types of exits from the room you're standing in to a given target room and an exit in the target room linked back. We have a @desc*cription command that takes a string of text as an argument and sets it as the description of the room in which you reside. But all these commands are built using MOO code, a scripting language that floats on top of the server and is written in-game, on the fly. The entire game is written in this scripting language, from builder and player commands to combat mechanics to libraries of string, math and countless other utilities. Once a game goes live, we do use a separate, parallel database for developing large systems and making significant alterations before we introduce them into the live db, but smaller tweaks, additions and bug fixes take place in the game. I often whip up quick scripts as I run live role-playing events.

Could someone please compare this type of on the fly MOO development to development in Evennia? I'm not a Python expert, but I know enough to have an intelligent conversation, and I'm pretty stoked about the little I've read so far of Evennia.

Thanks!

-Shan

Griatch Art

unread,
Dec 17, 2014, 10:22:06 AM12/17/14
to eve...@googlegroups.com
Hi Shan and welcome. :) 

In Evennia, we have all the @build, @desc commands too (you can change them as you please but out of the box they are even named the same due to the default command set taking inspiration from MUX). Compared to softcode, these do not exist as strings in the database but as code in full Python modules (files on the server's hard drive) that are compiled and executed by Evennia. We separate the world data (a specific room stored in the database) from the actual code (the Python class that describes how that room and other rooms of its type behave). Other things, like commands, have no database representation at all, but only exists in Python. 

For example, to add a new command or tweak an existing one you edit its source code as you would any Python program. Adding new things to the game in principle just means to tell Evennia where on the harddrive it should look to find the code. Once you are done you run @reload in-game and your new command changes will be active. A server reload will not kick anyone and users normally only notice it as a slight hickup. The same goes for adding completely new things like new types of objects or to add completely new functionality to an existing game entity. 

The drawback compared to online softcode-coding is that you will not be able to do all your coding in your client. To have users contribute code you need to set up a separate infrastructure which raises the bar on entry. 

The advantage though, is that you can code in a modern way - using a proper text editor with syntax highlighting, debugging, contextual help or what have you. 
Python is a full-featured professional programming language and there is A LOT of help to be had learning to use it (it's considered one of the easiest languages to learn anyway). And since you are not dealing with strings stored in the database but actual source files, you can collaborate using modern version control software (this can be much more flexible than anything you do in your client, including multiple devs working on the same things at the same time). Whereas this means users need to download and learn those tools, these are standards that actually are useful to know also outside the MU* world. A good practice of course remains to test things on a development server before pushing updates to the live game. 

Note here that I'm referring to coding - the creation of the actual underlying code of the game. The building of a world (the population of the database with instances of the code you've created) generally happens in-game as usual (although Evennia does support the possibilty to use e.g. a web interface to create objects too). For this you have the usual build-commands like @create, @dig etc. You can (in code) then add more power if you want builders to be able to customize their objects beyond what the default system allows.

Hope that answers your question!
.
Griatch

Shan Hollen

unread,
Dec 17, 2014, 12:28:20 PM12/17/14
to eve...@googlegroups.com
Thanks for the quick reply!

Actually, I went and started into the manual and answered most of my question myself, which I shoulda done in the first place, huh?

Your post puts things in perspective, though, and now I have a lot to think about. I have looked at a very slick node.js engine, and while it has all the advantages of HTML built-in, I have a really hard time overlooking the HUGE drawback that is Javascript. I hate it. On the flip-side, I have loved Python in my limited use of it and have vast experience with the MOO/MUX paradigm used by Evennia. The built-in webserver/client is an immense plus. My goal has always been to build in support for MXP, MSDP, GMCP, MSSP and all the telnet protocols to take advantage of the customizability of clients like MUSHclient, but now I'm not sure I wouldn't be better off just going with HTML and catering to the web and mobile crowd. The nice thing about the Node engine is that it supports all of that out of the box. I just detest Javascript, and would much rather work with a real language in a dev environment designed specifically for building games the way I've done it for 20 years.

Karnathe

unread,
Dec 17, 2014, 2:39:13 PM12/17/14
to eve...@googlegroups.com
What node.js engine were you looking at?

I too prefer Python over Javascript . . .

Griatch Art

unread,
Dec 18, 2014, 2:11:22 AM12/18/14
to eve...@googlegroups.com
@Shan

Cannot comment on the javascript engine bit, it's your own personal decision which way you want to go. If you want to customize your web client you will eventually need to go javascript, also in Evennia (but everything else in the server outside of the GUI remains in Python of course). I would suggest you look at the game features you want and analyze both game engines to see which one makes it easiest to implement your particular goals.
.
Griatch

Andrew Bastien

unread,
Dec 18, 2014, 2:31:22 AM12/18/14
to eve...@googlegroups.com
Python is great.

Speaking as one of few expert PennMUSH coders (shares MUCH in common with Tiny) I can say that the majority of things people would want out of softcode that cannot be easily done as normal Python code... is covered by inline funcs. center(), ljust(), rjust(), and similar functions can be made available to players through inline funcs, so you do not need a Softcode-style scripting language to build a game, all of its commands and features and systems - that is best done in Python.

On this subject:

Converting a pre-existing game to Evennia isn't even out of the question. With only a slight bit of help I've managed to import every object within a PennMUSH savefile (outdb) through JSON into Django-managed SQL tables and write Python code that:
1) Automatically converted the entire grid including all rooms and exits.
2) Created Player accounts using my PennMUSH account information and generated all of their alts as Characters.
3) Imported data from my Softcoded BBS (which is inspired by Myrddin's), creating boards and posts.
4) Imported my rather elaborate groups/guilds/organizations data.

The actual import/convert took me 2 days.
I'm a Python newbie.
It's working beautifully.

I'm about done with Softcode!

Shan Hollen

unread,
Dec 18, 2014, 12:36:26 PM12/18/14
to eve...@googlegroups.com
On Wednesday, December 17, 2014 2:39:13 PM UTC-5, Karnathe wrote:
What node.js engine were you looking at?



It's still in alpha. It's called "Havok." 

Shan Hollen

unread,
Dec 18, 2014, 12:52:31 PM12/18/14
to eve...@googlegroups.com
On Thursday, December 18, 2014 2:11:22 AM UTC-5, Griatch Art wrote:
@Shan

Cannot comment on the javascript engine bit, it's your own personal decision which way you want to go. If you want to customize your web client you will eventually need to go javascript, also in Evennia (but everything else in the server outside of the GUI remains in Python of course). I would suggest you look at the game features you want and analyze both game engines to see which one makes it easiest to implement your particular goals.
.


Yeah, I know I'm gonna have to deal with JS eventually, but I'm not sure I want to code a game in it.

As far as game features go, I'm old school. I know that if I want to attract modern players I'm going to need a graphical, clickable web and mobile presence. But when it comes down to it, I'm all about game play and great mechanics, and that comes first.

Shan Hollen

unread,
Dec 18, 2014, 12:56:57 PM12/18/14
to eve...@googlegroups.com
That is very cool.

Michael K

unread,
Dec 24, 2014, 11:15:43 AM12/24/14
to evennia
I hate to be a necromancer, but.. it's.. beautiful.

if you celebrate, celebrate well!

--
Michael 
"Tsal"

--
--
You received this message because you are subscribed to the "Evennia" MU* server mailing list.
To post to this group, send email to eve...@googlegroups.com (or use the web interface).
To unsubscribe from this group, send email to evennia+u...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/evennia?hl=en

---
You received this message because you are subscribed to the Google Groups "Evennia" group.
To unsubscribe from this group and stop receiving emails from it, send an email to evennia+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages