1998Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: let's call it a spellcraft -->
<!--X-From-R13: X Q Znjerapr <pynjNxnatn.ah> -->
<!--X-Date: Sun, 27 Sep 1998 20:05:39 &#45;0700 -->
<!--X-Message-Id: E0zNTd5&#45;00005X&#45;00#mail,kanga.nu -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: Pine.LNX.3.96.980926190811.488C&#45;100000#andridys,ip.local -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: let's call it a spellcraft</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:claw#kanga,nu">
</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>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg01324.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01326.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg01260.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01332.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#01325">Author</A>
&nbsp;|&nbsp;<A HREF="#01325">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#01325">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Re: let's call it a spellcraft</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 call it a spellcraft </LI>
<LI><em>From</em>: J C Lawrence &lt;<A HREF="mailto:claw#kanga,nu">claw#kanga,nu</A>&gt;</LI>
<LI><em>Date</em>: Sun, 27 Sep 1998 20:05:39 -0700</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 Sat, 26 Sep 1998 19:28:05 +1200 (NZST) 
Oliver Jowett&lt;oliver#jowett,manawatu.planet.co.nz&gt; wrote:

&gt; On Fri, 25 Sep 1998, quzah [sotfhome] wrote:

&gt; I'm currently messing around with a magical-energy-density system
&gt; which is something like a finer grained version of this.

&gt; Every area has some density of magical energy. All magical effects
&gt; come from tapping movement of magical energy down a density
&gt; gradient. The energy itself is not consumed. To move magical energy
&gt; against the gradient requires external energy. Uncontrolled movement
&gt; of magical energy happens whereever there is a gradient anyway,
&gt; dependant on the size of the gradient and the type of materials it
&gt; passes through, and produces essentially random production of
&gt; magical effects as this happens.

My system is not too too alien to this, tho a number of the precepts
are different.  Most of the structure is described in:

  <A  HREF="http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00863.html">http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00863.html</A>

but I'll expand on that.

  I run a particle based economy for *everything*.  This means that
every object not only consists of a known number of particles of
various types, but also consumes various particles of various types to
continue its existance (eg magical objects must constantly consume
mana particles to not decay).  If an object is not able to consume the
requisite particles it either decays or self destructs.  (This
explains the UggUgg's great Mana Fight).

  Particles come in a number of flavours and have sign.  The
relational rules are fairly simple and siscussed below for mana in
particular.  Particles may be changed (expensively) to different
types.  However the over-arching and never violated rule is that if
the entire world were summed, it will always equate to nothing.

  Translation: The negative (-ve) always precisely equals the positive
(+ve), and there are no neutrals.  Extension: You can never create
anything without also creating its opposite.

  For mana in particular I run what comes out to a faucet/drain
economy.  There are (semi-mobile) various spots in the world that emit
mana, and variou other spots that consume mana (as well as all the
other objects that also consume mana.  

  What I have at the moment are mana producers and some base mechanics
on mana motion.  So far its semi-working (ie I still don't like it).

  Mana producers produce mana at variant and unstable rates.  The
current formulaes are simple:  Pick a random time not too too far in
the future, pick a random mana production rate to be accomplished at
that time.  Then produce mana over time at a rate that progresses
linearly from the current rate to the target rate by X time.  Mana is
of course produced in equal qualtities of oppositely signed
particles.  Mana producers are made in pairs, one produces -ve mana,
the other +ve.  

  The clever bits come in with motion.  Mana is repelled by like
signed mana, and attracted by opposite signed mana inversely
proportional to the square of the distance between them.  However mana
is attracted to like sign mana proportionally to the square of their
relative velocities, and inversely proportional to the square of the
seperating distance.  The result is that mana tends to travel in
packs, blobs as it were, and to travel at speed.  Once a blob starts
to form, and once it starts to move, the mana attractive force quickly
escalates to a point where its affecting and attacting the mana over a
very large area, which mana, as it starts to move toward the blob,
causes the attraction wave to expand and grow exponentially.

  Just to kick things off, mana producers occassionally emit mana
particles with high random velocities.  The velocity of produced
particles maps against a curve which peaks at zero velocity, and
rapidly approaches zero as the velocity grows.  

  The goal is for a big puddle of slowly self-repellant mana to form
about each producer, for the puddle to tend to form streams and rivers
(see earlier discussion with Keegan about Ley Lines) that head toward
the opposite sign mana producers, and for the random high speed
emmissions to act rather like sun spots, ripping chunks out from the
puddles and plunging across the land much like an exponentially
growing tidal wave.  Tsunami!

  I'm considering making mana destruction (opposite signs meet)
attractive to all mana inversely proportional the the square of the
intervening distance.  This would encourage stream/river formation.

  Currently tuning is required.  The high speed particles/blobs are so
chaotic and powerful that they rip any nascent pattern that may have
started to form apart.  I also have problems deciding what happens
when a blob reaches the boundary of the coordinate global system --
currently I silently destroy it and immediately emit it as unbalanced
particles at appropriately signed producers.

Some samples of what I'm looking for:

  <A  HREF="http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00587.html">http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00587.html</A>

(which also contains some other general desciption of my design)

-&lt;cut&gt;--

  &gt; l
  Bubba stands on the ley line, waiting patiently.

  Godzilla, thirty stories tall and covered with teeth, claws, and
  the remnants of past munchies charges down the valley towards you.

  The air starts to feel sharp, almost charged, not electric but
  potential in some odd twisting way.  Electric orange sparks start
  to dance across Bubba's features; you feel your own hair rise and
  crackle.  Mana is coming, and lots of it.  WHOOSH!  The ground
  suddenly looks like burnt toast and rushes towards you like a
  bullet!  The mana is here!  Yow!

  Bubba twitches one finger.  A fireball the size of Manhattan engulfs
  Godzilla.  Sizzle!

  Godzilla is cooked.

  Lunch is served.

  Life is good.

Timing is everything.

-&lt;cut&gt;--

and of course UggUgg's famous mana fight:

  <A  HREF="http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00479.html">http://www.kanga.nu/~petidomo/lists/mud-dev/1998Q2/msg00479.html</A>

(also contains good general design description)

--&lt;cut&gt;--
  UggUgg slashes at you with his Sword of Instant Beheading 
  and minor discomfort!
  &gt; cast soakhole on uggugg
  You cast the dreaded mana eater soakhole on UggUgg!
  UggUgg sneezes and buries your in green snot!
  Your armour suddenly dissappears!  
  Your spell of magical summon protection fails!
  Your spell of magical sight fails!
  UggUgg's Nose Ring of Killer Snot dissappears!
  UggUgg's Belt of Gas Containment dissappears!  Phew!
  UggUgg's dagger of wart removal dissappears!
  &gt; cast create mana
  You create 5,000 units of mana!
  Your mana stores are now empty.
  &gt;cast $my_protections
  You are now magically potected from summons.
  You can now see all magically hidden objects.
  UggUgg thows a blade of painful castration at you!
  &gt; jump!
  You leap mightily.
  The blade misses!  You are still a baritone.
  &gt; attack uggugg with spear
  You ram UggUgg through with the spear of Icy Death!
  UggUgg now has the flu and looks a bit watery about the eyes.
  UggUgg picks up a rock.
  UggUgg bashs you with a rock!  Ouch!  That hurt!
  &gt; throw TC at uggugg
  You throw the charmed trash collector at UggUgg.
  The TC englobes UggUgg!
  UggUgg gives you the Sword of Instant Beheading and minor
    discomfort.
  UggUgg gives you the Boots of Mighty Chilblains,
  UggUgg gives you the Goggles of Big Farts.
  UggUgg gives you Super Nose Hair Puller.
  The TC has eaten everything UggUgg was carrying!  Yech!
  UggUgg is naked!
  Your spell of magical summon protection fails!
  Your spell of magical sight fails!
  Your spell of magical tummy tuck fails!
  Your spell of power voice fails!
  Your spell of land control fails!
  Your spell of bowel control fails!  
  Your spell of toe cheese protection fails!
  &gt; stat spells
  You have no spells.
  &gt; stat mana
  There is no mana here.
  &gt; strangle uggugg
  You wrap your hands about UggUgg's neck and begin to squeeze!
  UggUgg prays to the Great God GooGoo!
  GooGoo mana blesses the area!  
  There is a LOT of mana here!  You skin prickles!
  &gt; i
  You have a mana shielding sack
  &gt; l in sack
  There are 5,000,000 TC spores in the sack.
  &gt;empty sack on UggUgg
  The spores eat all the mana!
  There are 5,000,000 TC's here!  Wow.
  All the mana is gone!  
  ...
--&lt;cut&gt;--

The magic system from the player/user perspective is almost a literal
implementation of Mage 2 Mage with all its nice scriptabilities etc.
The extensions to M2M are purely that of the particle consumption and
decay.

&gt; How I hope to actually use it: your typical "mage" is someone who is
&gt; good at:

&gt; . gathering magical energy into himself against a gradient
&gt; [concentration] . preventing the magical energy from seeping out
&gt; again [insulation] . extracting useful effects from controlled
&gt; releases of magic [control]

Ditto, except that I add the requirement for M2M knowledge.  The
expectation is that magic users will rapidly fragment into two
classes: M2M programmers, and users of pre-canned M2M scripts.  The
hope is that there will be a considerable business in M2M objects.

Note to self: Need to install some equivalent of sigitally signed
objects which can't be copied...

&gt; The big problem I'm having is in getting magic to actually flow and
&gt; dissipate across the world (from the points where I initially
&gt; introduce it into the visible game-world - I have magic reservoir
&gt; external to the game world that feeds these points) without bringing
&gt; the machine to its knees.  The system seems to have a lot of
&gt; parallels with fluids, and I'm sure there are ways of handling this
&gt; already worked out, but I can't find references to them.

I have the same problem, however mostly due to the fact that the
number of particles I have to track rapidly becomes enourmous (my last
test run was tracking almost 12 million discrete man objects outside
of any other object types).  I'm part way thru a design where mana
objects are never actually instantiated except at the instant of
use. destruction, or transmutation.  All the rest of the time the mana
is logical and its presence or absence is computationally checked.

Its crude and nasty, but it looks like it might work.

-- 
J C Lawrence                               Internet: claw#null,net
----------(*)                              Internet: coder#ibm,net
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...


</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="01260" HREF="msg01260.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
<UL><LI><EM>From:</EM> Oliver Jowett &lt;oliver#jowett,manawatu.planet.co.nz&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg01324.html">[MUD-Dev] Re: Ugh, IS Diablo a mud?</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg01326.html">[MUD-Dev] Autogenerated room descriptions</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg01260.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg01332.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#01325"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#01325"><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>
<LI><strong><A NAME="01229" HREF="msg01229.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Andy Cink <a href="mailto:ranthor#earthlink,net">ranthor#earthlink,net</a>, Fri 25 Sep 1998, 19:30 GMT
</LI>
</ul>
<LI><strong><A NAME="01258" HREF="msg01258.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
quzah [sotfhome] <a href="mailto:quzah#softhome,net">quzah#softhome,net</a>, Sat 26 Sep 1998, 06:24 GMT
</LI>
<LI><strong><A NAME="01259" HREF="msg01259.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
quzah [sotfhome] <a href="mailto:quzah#softhome,net">quzah#softhome,net</a>, Sat 26 Sep 1998, 06:27 GMT
<UL>
<LI><strong><A NAME="01260" HREF="msg01260.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Oliver Jowett <a href="mailto:oliver#jowett,manawatu.planet.co.nz">oliver#jowett,manawatu.planet.co.nz</a>, Sat 26 Sep 1998, 07:28 GMT
<UL>
<LI><strong><A NAME="01325" HREF="msg01325.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Mon 28 Sep 1998, 03:05 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
<LI><strong><A NAME="01332" HREF="msg01332.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
S. Patrick Gallaty <a href="mailto:patrick#gric,com">patrick#gric,com</a>, Mon 28 Sep 1998, 17:19 GMT
</LI>
</ul>
</LI>
<LI><strong><A NAME="01136" HREF="msg01136.html">[MUD-Dev] Re: Medievia</A></strong>, 
Koster, Raph <a href="mailto:rkoster#origin,ea.com">rkoster#origin,ea.com</a>, Wed 23 Sep 1998, 15:30 GMT
<UL>
<li>&lt;Possible follow-up(s)&gt;<br>
<LI><strong><A NAME="01149" HREF="msg01149.html">[MUD-Dev] Re: Medievia</A></strong>, 
Koster, Raph <a href="mailto:rkoster#origin,ea.com">rkoster#origin,ea.com</a>, Wed 23 Sep 1998, 19:29 GMT
<UL>
<LI><strong><A NAME="01159" HREF="msg01159.html">[MUD-Dev] Re: Medievia</A></strong>, 
Adam Wiggins <a href="mailto:adam#angel,com">adam#angel,com</a>, Wed 23 Sep 1998, 21:35 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>