<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd) --> <!--X-From-R13: "Irfyrl I. Frecfgen" <grecfgenNvbgn.quf.bet> --> <!--X-Date: Wed, 22 Dec 1999 12:57:01 -0800 --> <!--X-Message-Id: Pine.LNX.3.96.991222111510.12836A-100000#maul,sith.vpn --> <!--X-Content-Type: text/plain --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:terpstra#iota,dhs.org"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00727.html">Previous</a> | <a href="msg00731.html">Next</a> ] Thread: [ <a href="msg00743.html">Previous</a> | <a href="msg00731.html">Next</a> ] Index: [ <A HREF="author.html#00724">Author</A> | <A HREF="#00724">Date</A> | <A HREF="thread.html#00724">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Subject</em>: Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</LI> <LI><em>From</em>: "Wesley W. Terpstra" <<A HREF="mailto:terpstra#iota,dhs.org">terpstra#iota,dhs.org</A>></LI> <LI><em>Date</em>: Wed, 22 Dec 1999 11:19:09 -0800 (PST)</LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Sender</em>: <A HREF="mailto:mud-dev-admin#kanga,nu">mud-dev-admin#kanga,nu</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 >To: Rahul Sinha <rsinha#glue,umd.edu> Cc: mud-dev#kanga,nu Subject: Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd) On Wed, 22 Dec 1999, Rahul Sinha <rsinha#glue,umd.edu> wrote: > On Tue, 21 Dec 1999, J C Lawrence wrote: > > [ forwarded for terpstra#iota,dhs.org ] > > > > Our plans (at present) are to make a compiler/interpreter for a custom > > OO language and build the actual MUD completely in this language. As I > > understand it, MOO already takes this approach. What I would like to > > gather is a list of features that people consider essential to a MUD > > programming language. > > is this more advantageous than coding the mud in C++ and making it > scriptable via this language, that way you can have whatever language > features you need to write the mud, and still avoid making the scripting > langauge overcomplicated.... Well... The idea is that we would like to be able to change the underlying protocol without needing a reboot. This is because we wanted to have a special client program to render graphics. That way we can use openGL. :-) Writing a scripting language isn't that difficult using flex&bison - two tools I've used quite often. Besides, I would make it a purists langauge: super short EBNF. ;-) Just to knit-pick, I meant a programming language - not a scripting language. :-) > > I also wanted to know of what MUDs currently implement any of the > > following: multithreading > A Good Thing... Of course, but how do current in-MUD programming languages handle race conditions? Do they do something similar to the java synchronize keyword? Do they use semaphores? What? What? And what is the best in peoples opinions? > >guis > making your mud room-less? > so long as you keep your mud interface agnostic its ok... this will > distract you from the rest of the mud, as a decent gui interface takes > work (if you are doign more than simply applying menus and mapping as gui > stiff...) agnostic? I don't get the analogy... There are several of us. One of us will be writing the client and telling the server programmers what he wants for the protocols etc. So, I have no problems with shunting work on him. :-) We had planned on the actual gui being customizable between worlds, but for the first server we would have a birds eye view like Ultima 6. (great game!) > >exploiting client processors, > implies a client-side program (as opposed to useing telent or ssh to login > to server...) Of course. :-) > I personally don't liek the idea, esp as cross platform is an issue unless > you want to go with Java <blech> Yes, I know. But making it have a gui already forces our hand, so why not suck on their processor to lighten the servers burden? Not being an openGL techie myself, I don't even know if java can do openGL. Or if it can whether it can do it portably. Time to call up Alex. > I personally am splitting up the traditional mud structure into a > inetd-based concurrent server that is jsut the client program (ie here > lies presentation, mapping stuff, etc), that connects via loopback to a > "event server" that handles movement, etc, all physically manifested > stuff, both using MySql for data storage, and IC AI stuff is implemented > by virtual clients connecting to the event server from mob programs. IC AI stuff? What is this? Some sort of 'bot that connects to your server locally on one of the more programatical ports? That's interesting. I will have to think on that. Is inetd really a good choice? You'll be fork()ing like mad. How are your components talking - TCP or some memoryish IPC? You are storing your data in MySQL. That's a pretty good idea as long as you have some major program level caching going on. Mind if I borrow it? Our model was going to be more just one virtual machine which opens a bunch of ports and connects objects (inMUD language) to the sockets and tags on a thread or two. :-) Any problems with this model that people have run into? Of course, there's alot to be said for your model 'cept for the overhead it's very modular. Hmmm. Hybridization time. *grin* > all commands are implemented as shared libraries, so that they can be > dlopen()ed during runtime (so as to not have to take down server) Hmmm. That's interesting. I didn't think of that. In fact, I like that very much. That's certainly faster than an interpreted language. Maybe the MUD should allow you to code in C++ and compile to .so files which it then loads on the fly. Of course this is a security can of worms, but... I will have to think about this. Maybe a virtual machine isn't the only solution. > >pgp > umm if you are talking about encrypting the text stream, just pawn off ssh > now that there is an opensource version of it... pgp is more for > non-streaming data authenticaiton and encryption > > > certificates about players so their characters can move from one server > > to another w/o the two servers ever talking directly. > servers talking is much better than trusting the client. Clients can be > reverse-engineered... You're not understanding my goal here: I want clients to store certificates - player stats on their own machines. We wanted to make this mud a sort of mud network that allows players to move between systems freely and without needing to trust the new server. So, when you 'save' your character the server runs a pseudo-diff on the player status compared to the last save. It then timestamps and signs these changes with the server's public key. The client program then receives them. What this gives you: a player can import the things they gained from one server into another server as long as the new server trusts the old one. You can even have trusted server rings like 'The All Canadian Magi League' or something which is a ring of servers who all sign spells known with their key, and include their public key signed by the leagues private key. Hence a player can traverse these realms with all his spell casting intact. You see the potential? Forgetten realms characters can walk into Ravenloft and some of their skills carry over and some don't. They are now under the Ravenloft admin's jurisdiction and any missing skills can be explained away as: "physically impossible to do a flying roundhouse kick from a ..." PGP was designed for a web of trust, and this is exactly the use I want to put it to on an inter-mud network. :-) Also, this system lets a player who was wronged by some server admin just drop that certificate from his character. It means he's now out of sync with that server and will be rejected in future connection attempts, but that he probably never planned on going back! So, to summarize: Servers keep state of the players. Players keep incremental character diffs signed by the servers they were obtained on. When connecting, the player transmits any diffs the server hasn't seen. The server chooses to accept them or not based on its trust of the signing servers. If a player is abused, he drops that servers diff and is now out of sync with that server so cannot reconnect. However, he may continue to play elsewhere. Cool 'eh? This is why I want to know if anyone has already done this or whether I can stamp my name on it. ;-) If we get going on this, I fully intend to include this. Now if only RSA was proven secure... *sigh* Anyways, more ideas please! :-) - --- E-mail: terpstra#interchange,ubc.ca Host: iota.dhs.org PGP key: hkp://wwwkeys.us.pgp.net/terpstra#interchange,ubc.ca <A HREF="http://www.iota.dhs.org/pgp-keys/terpstra.pgp">http://www.iota.dhs.org/pgp-keys/terpstra.pgp</A> -----BEGIN PGP SIGNATURE----- Version: PGPfreeware 5.0i for non-commercial use Comment: Made with pgp4pine 1.71b Charset: noconv iQA/AwUBOGEkMaYi3MeZ5h2mEQLRjwCg5AZgndMErSQlxeof7MQFqhNSFvMAnRn8 EO7g//glFAdnA2IipwpA6xCd =RXqz -----END PGP SIGNATURE----- _______________________________________________ MUD-Dev maillist - MUD-Dev#kanga,nu <A HREF="http://www.kanga.nu/lists/listinfo/mud-dev">http://www.kanga.nu/lists/listinfo/mud-dev</A> </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <ul compact><li><strong>Follow-Ups</strong>: <ul> <li><strong><A NAME="00742" HREF="msg00742.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong> <ul compact><li><em>From:</em> J C Lawrence <claw#cp,net></li></ul> <li><strong><A NAME="00731" HREF="msg00731.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong> <ul compact><li><em>From:</em> Greg Miller <gmiller#classic-games,com></li></ul> </UL></LI></UL> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00727.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00731.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00743.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00731.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00724"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00724"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="00745" HREF="msg00745.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Thu 23 Dec 1999, 00:45 GMT </LI> </ul> </ul> <LI><strong><A NAME="00726" HREF="msg00726.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Rahul Sinha <a href="mailto:rsinha#glue,umd.edu">rsinha#glue,umd.edu</a>, Wed 22 Dec 1999, 20:56 GMT <UL> <LI><strong><A NAME="00728" HREF="msg00728.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Wed 22 Dec 1999, 21:32 GMT <UL> <LI><strong><A NAME="00743" HREF="msg00743.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, J C Lawrence <a href="mailto:claw#cp,net">claw#cp,net</a>, Thu 23 Dec 1999, 00:34 GMT </LI> </UL> </LI> </UL> </LI> <LI><strong><A NAME="00724" HREF="msg00724.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Wesley W. Terpstra <a href="mailto:terpstra#iota,dhs.org">terpstra#iota,dhs.org</a>, Wed 22 Dec 1999, 20:57 GMT <UL> <LI><strong><A NAME="00731" HREF="msg00731.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Wed 22 Dec 1999, 21:32 GMT <UL> <LI><strong><A NAME="00752" HREF="msg00752.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Rahul Sinha <a href="mailto:rsinha#glue,umd.edu">rsinha#glue,umd.edu</a>, Thu 23 Dec 1999, 05:39 GMT </LI> </UL> </LI> <LI><strong><A NAME="00742" HREF="msg00742.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, J C Lawrence <a href="mailto:claw#cp,net">claw#cp,net</a>, Thu 23 Dec 1999, 00:29 GMT </LI> </UL> </LI> <LI><strong><A NAME="00751" HREF="msg00751.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Rahul Sinha <a href="mailto:rsinha#glue,umd.edu">rsinha#glue,umd.edu</a>, Thu 23 Dec 1999, 05:36 GMT </LI> </ul> </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>