<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: Random thoughts --> <!--X-From-R13: "Xba O. Znzoreg" <wyflfvapNvk.argpbz.pbz> --> <!--X-Date: from tacitus.globecomm.net [207.51.48.7] by mx4.ibm.net id 860280842.37078-1 Sat Apr 5 22:54:02 1997 --> <!--X-Message-Id: 199704052258.QAA02001@dfw-ix8.ix.netcom.com --> <!--X-Content-Type: text/plain --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: Random thoughts</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:jlsysinc#ix,netcom.com"> </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="msg00023.html">Previous</a> | <a href="msg00025.html">Next</a> ] Thread: [ <a href="msg00018.html">Previous</a> | <a href="msg00033.html">Next</a> ] Index: [ <A HREF="author.html#00024">Author</A> | <A HREF="#00024">Date</A> | <A HREF="thread.html#00024">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: Random thoughts</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: "MUD Design List" <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: Re: Random thoughts</LI> <LI><em>From</em>: "Jon A. Lambert" <<A HREF="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</A>></LI> <LI><em>Date</em>: Sat, 5 Apr 1997 18:02:51 -0500</LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> This seems to be mail I sent to CL some time ago. Let me clarify where we seemed to going with this. He probably reposted it with the intent of continuing(?). > From: Jon A. Lambert <jlsysinc#ix,netcom.com> > Date: Saturday, January 25, 1997 5:42 AM > > Aye, I have been playing with ColdX/Genesis for the last 2 weeks so > this concept is clear to me now. I've got it running on Linux and have > the compiler running on Win95. I am very close to having the driver > running on Win95 :-) I went ahead and completed the port. Brandon Gillespie has made the source and binaries available at <www.cold.org>. I doubt there's much interest here, since we are writing our own little messes. ;-) My impression of this server, Genesis, is pretty good. It is a very stable piece of code and the nice feature which attracted my attention was its persistent objects and object caching. The database is however based on NDBM which is somewhat archaic, low-level, and does not have good recovery mechanisms. > My first impression of ColdC is much better than LPC. ColdC seems to be > more austere than LPC but just as powerful. Further impressions of ColdC led me to believe that this wasn't quite what I was looking for in a language. The inheritance structure has some peculiarities and quirks that are not obvious to the new user and can be frustrating to a C++ person like myself. The people involved are a rather nice and talkative group of fellows. They happily answered most of my inane questions and comments on ColdC. They were pretty open minded on language extensions and have what amounts to "attribute overloading" in the works. The ColdC language does have good documentation and makes powerful uses of regular expressions. The ColdX core was however another matter. It is very poorly documented and appeared to me very complex and convoluted. I don't want to diminish it, for it is an alpha work that is 3 years in progress and to those involved its design it is probably crystal clear. It does have some exciting features like HTML 1.0 support and a hyper-text help and database viewing system that can be accessed from a web browser. Brandon swears he has lots of paper documentation on the core and will eventually get around to publishing it. > I am not sure how all this relates to my in-progress server since the concepts are > quite different. My server has a decidely DIKU bent . I am toying with the idea > of attempting to program some of my existing servers' objects into ColdC. > The online programming seems quite awkward to me right now. Let me clarify what I mean by DIKU bent. I am writing a game server not a generic programming environment server like LP or Genesis. The game's configuration and objects reside in a disk database and these objects are not extended via the servers language, they are only manipulated by the server language. It is my opinion that complex languages like C, C++, Java, LPC and Cold are too difficult to learn by my builders which tend to be strictly non-programmers although very creative and smart people. My building programs will be GUI editors with nice point and click interfaces and the language used by them will be minimal and integrated into the building interface. This will probably end up resembling a Visual Basic IDE environment (*giggle*). Controls which represent "black box" C++ programs can be happily dragged about and attached to objects, rooms and NPCs. They will have properties boxes for minimal tailoring. I wasn't kidding about the Visual Mud++ with ActiveMud controls concepts! Lets just hope Microsoft doesn't get wind of it, so shhhh!. Currently my proposed minimal language seems to closely resemble a subset of Fortran with very weak typing though this was not my original intention. Wait, on second thought this might be Rexx. > > > > > How does this handle the Dragon's Dinner scenario, ala: > > > > Transaction A checks value X (read, no write, thus no lock), and on that > > basis, changes object Q to state Q`. > > > > Meanwhile, transaction B modifies value X to state X`, and commits prior > > to A committing. > > > > Problem: Logically Q` and X` can't exist at the same time (eg the door is > > closed, _and_ there is a wind blowing through it). > > > > It would seem without some checking of read-locks that its a gaping hole. > > > Yes Autocommit is useless to your scenario. Although relational > technology does handle this scenario quite well. In the commercial > environment read/locks are avoided like the plague. I've worked on a > number of inventory systems where your 'dragon dinner' scenario can > and does occur. It is generally a risk assesment vs performance issue. > Read/locks are really bad if you come upon a wait condition ( ala user > input). The other conditon that comes up frequently is in locking multiple > objects. If you come across an object that is locked by another > transaction you must, in most circumstances, release all your locks > and start over or cancel. Otherwise deadlocks can and will occur > between transactions that need to get at 2 or more objects in common. > > Now in this particular example, read/locks should work. > > 1) dragon and player both attempt to read/lock exit/door object. > 2) first one to the lock wins. > 3) If the dragon wins, he releases his lock after he has > traversed the door. > 4) If the player wins he releases the lock after the door is slammed. > > I would guess if the dragon wins, the player still completes the door > closing? Or you could fail the door slam request based on the failure to > get a lock? If you fail the door slam, do you retry? It would have side > affects for multiple characters attempting to walk through doors at the > same time. > Yikes! This scenario may involve two separate issues. On one level it represents maintaining proper object consistency in a multithreaded environment. And on another level, which I was alluding to is implementing it within the locking mechanisms of a relational database like Oracle, DB2, MSQL or Watcom SQL (my currently used DB). Its probably a good idea to restart this discussion with some clearer distinctions between thread locking and database locking. I am currently pursuing a model which includes an Object Manager subsystem. The Object Manager exposes the objects to the rest of the server subsystems and provides the object locking, object caching, and disk database access. Care to give it this scenario another go round Chris or anyone for that matter? JL </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00023.html">Re: Resets and repops</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00025.html">Re: Greetings. :)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00018.html">Re: Random thoughts</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00033.html">Re: Random thoughts</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00024"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00024"><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: Resets and repops</STRONG>, <EM>(continued)</EM> <ul compact> <LI><strong><A NAME="00092" HREF="msg00092.html">Re: Resets and repops</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Sat 12 Apr 1997, 05:10 GMT </LI> </ul> </LI> <LI><strong><A NAME="00022" HREF="msg00022.html">Re: A brief introduction.. ok, you got me: an introduction</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Sun 06 Apr 1997, 03:56 GMT <LI><strong><A NAME="00021" HREF="msg00021.html">database stuff</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 06 Apr 1997, 02:46 GMT <LI><strong><A NAME="00018" HREF="msg00018.html">Re: Random thoughts</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sat 05 Apr 1997, 05:09 GMT <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00024" HREF="msg00024.html">Re: Random thoughts</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sun 06 Apr 1997, 06:54 GMT </LI> <LI><strong><A NAME="00033" HREF="msg00033.html">Re: Random thoughts</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 07 Apr 1997, 10:27 GMT </LI> <LI><strong><A NAME="00036" HREF="msg00036.html">Re: Random thoughts</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Mon 07 Apr 1997, 12:57 GMT </LI> <LI><strong><A NAME="00037" HREF="msg00037.html">Re: Random thoughts</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Mon 07 Apr 1997, 21:40 GMT </LI> <LI><strong><A NAME="00041" HREF="msg00041.html">Re: Random thoughts</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Tue 08 Apr 1997, 04:09 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>