<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd) --> <!--X-From-R13: Dnuhy Evaun <efvaunNtyhr.hzq.rqh> --> <!--X-Date: Thu, 23 Dec 1999 09:00:50 -0800 --> <!--X-Message-Id: Pine.LNX.4.10.9912230306080.16395-100000#localhost,localdomain --> <!--X-Content-Type: text/plain --> <!--X-Reference: E1212p7-0008Pb-00#dingo,kanga.nu --> <!--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:rsinha#glue,umd.edu"> </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="msg00766.html">Previous</a> | <a href="msg00760.html">Next</a> ] Thread: [ <a href="msg00757.html">Previous</a> | <a href="msg00772.html">Next</a> ] Index: [ <A HREF="author.html#00763">Author</A> | <A HREF="#00763">Date</A> | <A HREF="thread.html#00763">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>: Rahul Sinha <<A HREF="mailto:rsinha#glue,umd.edu">rsinha#glue,umd.edu</A>></LI> <LI><em>Date</em>: Thu, 23 Dec 1999 04:11:57 -0500 (EST)</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> A few folks have asked for more details about the planned design of my project. Keep in mind that while we have researched this for about a month, (and are reusing some code from my job (don't worry, allowed to distribute said code if I wish... in fact I think they are letting me keep copyright) it is not yet completely implemented (some code written) NOTE: we are currently considering making this mud roomless, and contemplating what changes this implies to this structure OUTSIDE WORLD ========================||========================== \/ /-----Server-Side-Client (many instances of this process) | | | | | | | \----------\ | | | | | Messaging Daemon Combat Daemon | | | | | | | | | Mob Daemon---Event Daemon | | | | Database wrapper----------------/ (the above are all distinct processes) SSC (Server-Side-Client) Players either ssh or telnet into server; they connect to a concurrent server (fork-on-connect) that is nothing more than a server side client. It generates what the user sees, parses information it recieves from the Event Daemon as well as information it retrieves from the Database wrapper. Any communication, IC acts etc are done through the messaging daemon, and the eventd never sees them. Combat also does not exactly take place in the event daemon, more on this later. Different SSCs can be written to suit different needs, for example one person wants to write a Circle-clone client that parses the output, keybindings, etc to look like our favorite Diku decendant, not to mention totally compatible with Zmud, while the one I plan to write will actually incorporate some of the features of Zmud (mapping for example) and do them server-side) The Event daemon The core of the mud, this represents the physics of the world. Here is where you move, where your health is lost and gained, where your skills take effect, etc etc [ED: currently a small amount of controversy exists, as to how much functionality to pull out of the server. While we have all agreed that combat, messaging, and mob ai do _not_ belong here, there remains some question as to skills and magic, whether they should not just connect to the messaging, combat and event daemons, get command from event (and stats) process, report IC viewable reactions via messaging, in-combat reactions via combat, and manipulate the game world via event] the main structure is a web of datastructures that represent the data that we want in RAM at all times (no descriptions, (that can be handled by the db and the disk cache) but for example hit points should not hit the db layer every time they change mid-tick.) Packages of skills, magic systems (multiple ones planned) etc are implemented as .sos The mud operates by having a thread alive for every zone that is occupies, as well as one for any zones that border occupied zones. The threads process queued commands coming from players, then block until the next tick strikes. The Combat Deamon The actual structure of combat (from a player perspective) has not been determined, except that it will be based on an additive initiative system (round-less) where (for lack of a better word) combat-ticks iterate, and turns get taken when (combat_tick) % (initiative rating) == 0 regardless of the remaining details, the async (relative to eventd) nature of combat means that all combat computation occurs here, with calls into eventd to get/change stats. Either we are going to have a combat-request-process thread that does not block on tick, or employ shared memory (know less about the latter, but it seems more likely the more I learn about it) Either way, clearly much mutex happiness will surround the core data structures. (only real place for thread collision) Messaging Daemon All communication player-player, player-mob, etc occurs from here. Any daemons that are not "physics-based" communicate through this layer. In addition, as this mud is going to run on a box masqueraded through my LUG's internet connection, LUG members who are logged into the MUD will be able to send/recieve "pages" while inside through this layer. I am on the IETF IMPP working group, and as soon as that protocol (which will replace AOL IM and ICQ (AOL has agreed to shift over, MS and Yahoo have also agreed to the resulting standard) is finalized, any MUD user will have a IMPP presence point through the mud, and be able to send/recieve messages while logged in (discussing with the rest of the admin staff wether to allow IMPP client connections to the messaged (which woudl then be binding the IMPP port) such that mud users could use this service while not explicitly logged into the mud, (not to mention use other clients than the mud SSCs ;-)) Considering that the number of socket connections resulting from users exists at O(1) for all areas of the mud other than the SSCs, (which are O(4n) according to above) We are considering moving _all_ communication through the messaged, which begs the question wether the SSCs are needed at all (except for some reason 100 processes bothers me not at all, while 100 threads makes me feel quite ill) Mob Daemon Here lies the mob AI. All of it ;-) Database wrapper Just what it sounds like comments welcome, please debug our planned structure so we dont undergo hell debugging the implementation of it ;-) if you have any other questions, let me know -RS Rahul Sinha Computer Science/ Government, University Of Maryland College Park AIM: qui dire ICQ: 9738191 (301)935-5542 _______________________________________________ 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="00772" HREF="msg00772.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong> <ul compact><li><em>From:</em> J C Lawrence <claw#kanga,nu></li></ul> </UL></LI></UL> <!--X-Follow-Ups-End--> <!--X-References--> <UL><LI><STRONG>References</STRONG>: <UL> <LI><STRONG><A NAME="00757" HREF="msg00757.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> <UL><LI><EM>From:</EM> J C Lawrence <claw#kanga,nu></LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00766.html">Re: [MUD-Dev] PGP player certificates (was: collecting ideas...)</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00760.html">Re: [MUD-Dev] Fair/Unfair? Scenarios (fwd)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00757.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00772.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00763"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00763"><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> <ul compact> <LI><strong><A NAME="00746" HREF="msg00746.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, 01:41 GMT <UL> <LI><strong><A NAME="00750" HREF="msg00750.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 <UL> <LI><strong><A NAME="00756" HREF="msg00756.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, Christopher Kohnert <a href="mailto:cjkohner#brain,uccs.edu">cjkohner#brain,uccs.edu</a>, Thu 23 Dec 1999, 07:34 GMT </LI> <LI><strong><A NAME="00757" HREF="msg00757.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Thu 23 Dec 1999, 07:38 GMT <UL> <LI><strong><A NAME="00763" HREF="msg00763.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, 17:00 GMT <UL> <LI><strong><A NAME="00772" HREF="msg00772.html">Re: [MUD-Dev] Collecting ideas for a MUD server... (fwd)</A></strong>, J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Thu 23 Dec 1999, 17:48 GMT </LI> </UL> </LI> </UL> </LI> <LI><strong><A NAME="00764" HREF="msg00764.html">[MUD-Dev] Two threads forced to one CPU? (was: Collecting ideas for a MUD server...)</A></strong>, Wesley W. Terpstra <a href="mailto:terpstra#iota,dhs.org">terpstra#iota,dhs.org</a>, Thu 23 Dec 1999, 17:00 GMT <UL> <LI><strong><A NAME="00771" HREF="msg00771.html">Re: [MUD-Dev] Two threads forced to one CPU? (was: Collecting ideas for a MUD server...)</A></strong>, J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Thu 23 Dec 1999, 17:31 GMT <UL> <LI><strong><A NAME="00776" HREF="msg00776.html">Re: [MUD-Dev] Two threads forced to one CPU? (was: Collecting ideas for a MUD server...)</A></strong>, Jay Carlson <a href="mailto:nop#mitre,org">nop#mitre,org</a>, Thu 23 Dec 1999, 20:50 GMT </LI> </UL> </LI> </UL> </LI> </UL> </LI> </UL> </LI> </ul> </ul> </ul> </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>