<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] Re: Let's talk about numbers. --> <!--X-From-R13: "Penaqba X. Dvpxzna" <nfurfNcp4.mraarg.pbz> --> <!--X-Date: Sun, 27 Sep 1998 19:52:36 -0700 --> <!--X-Message-Id: Pine.LNX.3.93.980927185808.934A-100000#pc4,zennet.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 199809250559.AAA12886@dfw-ix14.ix.netcom.com --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, [MUD-Dev] Re: Let's talk about numbers.</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:ashes#pc4,zennet.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="msg01322.html">Previous</a> | <a href="msg01324.html">Next</a> ] Thread: [ <a href="msg01217.html">Previous</a> | <a href="msg01128.html">Next</a> ] Index: [ <A HREF="author.html#01323">Author</A> | <A HREF="#01323">Date</A> | <A HREF="thread.html#01323">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>[MUD-Dev] Re: Let's talk about numbers.</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>: [MUD-Dev] Re: Let's talk about numbers.</LI> <LI><em>From</em>: "Brandon J. Rickman" <<A HREF="mailto:ashes#pc4,zennet.com">ashes#pc4,zennet.com</A>></LI> <LI><em>Date</em>: Sun, 27 Sep 1998 19:52:17 -0700 (PDT)</LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#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> On Fri, 25 Sep 1998, Jon A. Lambert wrote: > On 24 Sep 98, Brandon J. Rickman wrote: > > On Thu, 24 Sep 1998, Jon A. Lambert wrote: > > > ... > > Okay, say there are 3 interesting numbers: Zero, One, and Many. > > Since 3 is not interesting we should call it Many. There are Many > > interesting numbers. Or there are 4 interesting numbers: Zero, One, > > 3, and Many. > > > > You are advocating a very rigid and inhumane programming practice. > > Is it? Assume you are designing a mud and you decide upon modeling > 3 stats. Your mud has been running for about a month and you've hit > upon some good ideas and desire to extend your design to model 2 > additional stats. If your implementation has assumed 'many' as > opposed to '3' is it more easily modified? Does this mean your > original design was bad because you failed to originally document the > need for the 2 additional stats, or good because you were able to > modify your design because your implementation assumed extensibility? My concern is about the numbers that are somewhere between human understandable numbers (5 stats, 425 hit points, 100k experience) and MAXINT. With a tidy and extensible implementation there will be no warning when some code leak starts appending 1000 element lists together. (A cooked up example: 'drop all' takes a character's contents list and simply appends it to the location's contents list. But there's a bug and the character's list doesn't get cleared under certain conditions. A mob is programmed to pick up stray items and 'drop all' at a certain location...) There are also extensibility problems when trying to move from a 1 value to a Many value, such as when a single flag reference is replaced by a list of flags. Does that mean you have to enforce mandatory array access on all data types? I think eventually this becomes a development issue, not a design issue. Development can get a little preoccupied with extensible code, so design has to yank the numbers back into a functional area. Design is more of a challenge when there are constraints, when there is a sandbox to play in. Development tends to obfuscate constrains ("all code must be object oriented") in the name of correctness. > > Some thought should go into how numbers are important to the game, > > not to the CPU. Player stats ranging into the thousands would be > > irritating, stats in the millions incomprehensible. A player > > walking around with 2^31 coins in her pocket is still a bug, even if > > the code is bulletproof. > > I'm not saying that assuming 'many' is to assume 'infinity' nor the > limits of the CPU. I probably shouldn't have parenthesized > 'infinity'. Although it can't be discounted as a possibility in > some scientific applications. Yes there are often damn good reasons > to impose limitations on 'many' in order to catch errors. A string > that expands to 1 megabyte may be an error. Then again, it might > also be a .jpeg file. And there are often times when it is good > practice to make an astract data type that exceeds the limitations of > you CPU. A 64-bit integer class on a 32-bit machine for instance. > Later the class can be easily replaced by a true 64-bit integer. > Depending upon bit flags and bit masks is another problem. Look at > my object-wear model on my web pages for an outstanding example of > bad design. (My only defense is that it was designed to be > integrated into a server whose design was already shot to hell with > magic-numbers ). There is a point at which the existence of 64-bit+ integers can paralyze design. It is characteristic of why this year's new games won't run on last year's machines: new games have become a kind of demo software to show how spiffy the newest machines are. Instead of saying "you _can_ use 64-bit integers" designers are told "you _have_ to use 64-bit integers". It is a kind of negative constraint. I tend to have more respect for a good hack. - Brandon ashes#zennet,com </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <UL><LI><STRONG>References</STRONG>: <UL> <LI><STRONG><A NAME="01217" HREF="msg01217.html">[MUD-Dev] Let's talk about numbers.</A></STRONG> <UL><LI><EM>From:</EM> "Jon A. Lambert" <jlsysinc#ix,netcom.com></LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg01322.html">[MUD-Dev] Re: Room descriptions</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg01324.html">[MUD-Dev] Re: Ugh, IS Diablo a mud?</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg01217.html">[MUD-Dev] Let's talk about numbers.</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg01128.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#01323"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#01323"><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>[MUD-Dev] Re: let's call it a spellcraft</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <ul compact> <LI><strong><A NAME="01201" HREF="msg01201.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, Adam J. Thornton <a href="mailto:adam#phoenix,Princeton.EDU">adam#phoenix,Princeton.EDU</a>, Thu 24 Sep 1998, 22:13 GMT <UL> <LI><strong><A NAME="01206" HREF="msg01206.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, Brandon J. Rickman <a href="mailto:ashes#pc4,zennet.com">ashes#pc4,zennet.com</a>, Fri 25 Sep 1998, 02:43 GMT <UL> <LI><strong><A NAME="01228" HREF="msg01228.html">[MUD-Dev] Re: numbers - was Re: spellcraft</A></strong>, Orion Henry <a href="mailto:orionz#ix,netcom.com">orionz#ix,netcom.com</a>, Fri 25 Sep 1998, 19:28 GMT </LI> </UL> </LI> </UL> </LI> <LI><strong><A NAME="01217" HREF="msg01217.html">[MUD-Dev] Let's talk about numbers.</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Fri 25 Sep 1998, 06:00 GMT <UL> <LI><strong><A NAME="01323" HREF="msg01323.html">[MUD-Dev] Re: Let's talk about numbers.</A></strong>, Brandon J. Rickman <a href="mailto:ashes#pc4,zennet.com">ashes#pc4,zennet.com</a>, Mon 28 Sep 1998, 02:52 GMT </LI> </UL> </LI> </ul> </ul> </ul> <LI><strong><A NAME="01128" HREF="msg01128.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, Travis Casey <a href="mailto:efindel#polaris,net">efindel#polaris,net</a>, Wed 23 Sep 1998, 06:56 GMT <UL> <LI><strong><A NAME="01129" HREF="msg01129.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Wed 23 Sep 1998, 11:56 GMT <UL> <LI><strong><A NAME="01209" HREF="msg01209.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, Travis Casey <a href="mailto:efindel#polaris,net">efindel#polaris,net</a>, Fri 25 Sep 1998, 04:04 GMT </LI> </UL> </LI> <LI><strong><A NAME="01137" HREF="msg01137.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, Niklas Elmqvist <a href="mailto:d97elm#dtek,chalmers.se">d97elm#dtek,chalmers.se</a>, Wed 23 Sep 1998, 15:33 GMT </LI> </UL> </LI> </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>