1998Q3/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: let's call it a spellcraft -->
<!--X-From-R13: @vxynf Syzdivfg <q97ryzNqgrx.punyzref.fr> -->
<!--X-Date: Fri, 25 Sep 1998 16:24:41 &#45;0700 -->
<!--X-Message-Id: Pine.SOL.3.96.980925193659.20184A&#45;100000#licia,dtek.chalmers.se -->
<!--X-Content-Type: text/plain -->
<!--X-Reference: 419.980925#io,com -->
<!--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:d97elm#dtek,chalmers.se">
</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="msg01236.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01238.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg01270.html">Previous</a>
&nbsp;|&nbsp;<a href="msg01239.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#01237">Author</A>
&nbsp;|&nbsp;<A HREF="#01237">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#01237">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>: Niklas Elmqvist &lt;<A HREF="mailto:d97elm#dtek,chalmers.se">d97elm#dtek,chalmers.se</A>&gt;</LI>
<LI><em>Date</em>: Sat, 26 Sep 1998 01:24:18 +0200 (MET DST)</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, Travis Casey wrote:
&gt; On 23 September 1998, Niklas Elmqvist wrote:

[snip]

&gt; Umm... what I meant is that players would design the spells, but a
&gt; check or series of checks would be needed in order for the character
&gt; to then be able to design and implement it.  This is to prevent such
&gt; things as smart players creating stupid mages, then designing spells
&gt; that their characters shouldn't be able to understand, much less
&gt; create.

Agreed. Some of these would be kind of self-regulating, like the player
having to get hold of some exotic materials which he might be unable to
unless he knows where they can be found and has sufficient skills to
defeat any obstacles guarding it. Other things could be a required amount
of invested time into a specific spell as well as a certain degree of
proficiency in the spell sphere (no one without a solid background in
Summoning will even be able to *understand* the rites required to summon a
Greater Lich). 

&gt; My own thought is to have a set of simple magical commands which can
&gt; be used directly:  e.g., you might have the commands:
&gt; 
&gt; create
&gt; destroy
&gt; move
&gt; resize
&gt; shape
&gt; join
&gt; sever
&gt; etc.
&gt; 
&gt; When used in the spell programming language, these would be equivalent
&gt; to the pre-defined keywords or library functions of most programming
&gt; languages.  There would also be control-flow statements, but these
&gt; would only be usable in a spell/program, not as direct commands.

So you mean that a mage could just wing it and issue these commands
directly? But what of the research time mentioned below? If this is an
option, I immediately see a large number of people entering the spell
commands as macros into their MUD clients instead of having their
characters research them. However, this mechanism might be useful when
trying out new spells.

[Spell balancing:]
&gt; I'd thought of a similar system for netrunning programs in a cyberpunk
&gt; RPG, the rationale being that the more common a program became, the
&gt; more likely it was that someone would have developed and distributed a
&gt; defense against it.  Following the same idea, you could have NPCs
&gt; having pre-prepared counterspells for the spells that become too
&gt; common.

Well, we have a perfectly valid reason for this in a magical world: the
more people that use a spell, the more "toll" it takes on the specific
powers required to invoke the spell, and it becomes diluted. Some spells
could be defined to be able to accommodate quite a few users, the basic
magic missile or cure light being good examples, while other more powerful
spells would lose their power if known and used by more than a mere
handful. 

Of course, this kind of balancing system almost *requires* that we use a
fixed-spell system (that is, a system where the spells are defined by the
admins instead of created by the players) -- otherwise, it is very hard
for the server to determine that two very different spell snippets might
do the same thing, and thus reduce the efficiency of the spell. (You could
do some kind of calculation on the required power "types" for spells,
though... Such as many people using spells requiring Fire, and
consequently, the efficiency of fire spells are reduced.)

[snip]

&gt; &gt; Hmm, I would also like to introduce some notion of time into my concept...
&gt; &gt; However, I dislike typing "research Armageddon" and then just wait for two
&gt; &gt; hours while my character is busy researching.
&gt; 
&gt; My own thought was to have this be something that happens in "off
&gt; time" -- that is, while the player is logged off, we presume that the
&gt; character is devoting some fraction of his/her time to researching the
&gt; spell.  This means that the player doesn't have to wait around for it
&gt; to happen (or, at least, doesn't have to wait around logged into the
&gt; mud doing nothing).

I like it. However, spell research would almost require that the player
leaves his character in his study when logging off -- quitting in the
middle of Mirkwood with a dozen giant spiders stalking around would do
nothing towards creating a nice research atmosphere... 

However, I *still* would like to have a practical research element as part
of the game... The Unseen University concept appeals to me; lots of
players working in unison to experiment with different kinds of spells 
("You are now entering the Unseen University magical testing grounds.
Proceed at your own risk." *zap* *kaboom*). 

&gt; It also creates a secondary effect... namely, that the fastest way to
&gt; do spell research is to spend some time offline thinking them up,
&gt; log in and submit them to the system, then spend more time offline
&gt; letting your character research them.  This means that players who
&gt; spend a lot of time logged in adventuring won't be able to research
&gt; spells as fast... which corresponds nicely to the fantasy stereotype
&gt; that the mages who are doing the spell research are those walled off
&gt; in their towers somewhere, not those adventuring.

Yes, for each 'research' command that is issued, research subjects (ie
spells) are queued so that the character will continue with the next spell
in line when he finishes with one. The system could even tell the player
the approximate time (depending on the skill of the character, of course)
until the current research area will be exhausted.

I see one problem with this, though: a concept like this would certainly
work for a fixed-spell system (defined above) where the player can type
'research magic missile' and then happily log off, secure in the knowledge
that he will have another neat spell in his inventory when he returns the
next day. However, in a spell-creation system where we don't have any
fixed spells, how will the player be able to test his spells for "bugs" if
he first has to type 'research magic missile' (where 'magic missile' now
denotes a spell code snippet) and then wait four *real* hours before he
can use it? Or is this something we want? (Spellcraft should be a
time-consuming process.) Maybe the player could be allowed to perform some
kind of 'dry run' with his spell to ensure that it is working properly?

As for the "powerplayers using several mages to quickly research spells"
problem, which was raised in another post to this thread, the point is
that the different mages must *still* study each others spells in order to
amass them all. Of course, studying an already invented spell as opposed
to researching a new one should be much easier and less time-consuming.

[snip]

&gt; &gt; Come to think of it, associating magic "code" or "methods" to materials
&gt; &gt; would make it easy for the builders to add support for all kinds of
&gt; &gt; materials. Otherwise, in a magic-physics engine, you would have to
&gt; &gt; hardcode stuff like "iron does this and that..." and "copper attracts
&gt; &gt; this..." and so on.
&gt; 
&gt; Thank you, thank you, thank you.  For some reason, the idea that spell
&gt; components could have spell code associated with them had never struck
&gt; me... but now that you mention it, it gives me all sorts of ideas!

Glad to help, that was a first for me on this list, methinks :) 

Seriously, this could be used to great effect, I think. For one thing, one
major part of spell research will be to find out what different methods or
calls a specific item supports -- the players would have to write basic
'identify' spells for this (in addition to a 'detect magic' spell which
saved the player some power by doing a simple check if there are is any
spell code at all in the item). 

Also, depending on the magical potential of an item, the cost of
identifying it could vary -- try to ferret out the powers of the Holy
Graal and you might end up drained in the process. Why not let some
magical items have an active defense which needs to be defeated in order
for the mage to identify and use it -- this could be methods in the spell
code associated with the item along the lines of OnWield(), OnIdentify()
and OnGet() (which trigger when the item is wielded, identified and get,
respectively). Alternatively, we could use verb-binding for this purpose.
This way, we can easily have sentient swords, blessed armor, cursed
weapons, etc, as well as magical traps which trigger on special events.

&gt;   Someone who has a bird feather can access that code.  To do so
&gt;   requires rebinding it to a new target, and then feeding it enough
&gt;   power to activate the spell and allow it to make whatever you're
&gt;   casting the flight spell on fly... but you don't need to know how to
&gt;   create a flight spell.  The feather already has that, and you can
&gt;   use it as a black box.

Indeed! The feather in our example could be empty of magical energy and
you would have to channel some of your own raw power into the feather and
use it as a conduit/focus for flight. This would be how birds fly: they
instinctively channel their own magical power into the flight spell of
their feathers. All magical power that is fed into the feather transforms
into spell effects (along with some power losses, of course, nothing is
perfect -- this could be dependant on the caster, as well).

Some items could have some magical energy stored in them as well, allowing
people with little or no magical ability to use them (eg wands, rings,
staves). Some would have permanent effects, some could be recharged
(automatically over time or artificially by mages), others could be mere
reservoirs of magical power (cf the Eye of the World, which is a huge
"lake" of power, in Robert Jordan's first WoT installment). The point is
that associating spell code with items allow us to handle all of these
effortlessly and without special cases.

[snip]

&gt; Again, thanks... I'm going to have to explore this idea more, but I
&gt; think it's going to be very useful to me.

Yes, this is something I will have to expound on, too. For one thing, I've
been thinking a little on the actual syntax of the programming language... 
Since this will be a language designed for players rather than coders, and
should also sort of fit into a fantasy setting, it should be quite verbose
and straightforward (in other words, it should read more like Pascal than
C). In addition, it will have to be easily parseable so that it can be
interpreted with little trouble. Oh, and you need to find a suitable
granularity which will give sufficient freedom in creating spells and
optimizing them while not introducing too much complexity.

(The SDL spell definition language I've heard of, is this a language from
an outside source or created by someone on this list?)


&gt;        |\      _,,,---,,_        Travis S. Casey  &lt;efindel#io,com&gt;
&gt;  ZZzz  /,`.-'`'    -.  ;-;;,_   No one agrees with me.  Not even me.
&gt;       |,4-  ) )-,_..;\ (  `'-'
&gt;      '---''(_/--'  `-'\_)

-- Niklas Elmqvist (d97elm#dtek,chalmers.se) ----------------------
  "Nanny Ogg looked under her bed in case there was a man there. 
   Well, you never knew your luck."
		-- Terry Pratchett, Lords and Ladies




</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="01271" HREF="msg01271.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>
<ul compact><li><em>From:</em> Travis Casey &lt;efindel#polaris,net&gt;</li></ul>
<li><strong><A NAME="01243" HREF="msg01243.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>
<ul compact><li><em>From:</em> Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt;</li></ul>
<li><strong><A NAME="01239" HREF="msg01239.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>
<ul compact><li><em>From:</em> Caliban Tiresias Darklock &lt;caliban#darklock,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<UL><LI><STRONG>References</STRONG>:
<UL>
<LI><STRONG><A NAME="01210" HREF="msg01210.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
<UL><LI><EM>From:</EM> Travis Casey &lt;efindel#polaris,net&gt;</LI></UL></LI>
</UL></LI></UL>
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg01236.html">[MUD-Dev] Zelda Online</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg01238.html">[MUD-Dev] FPL: Another embeddable bytecoded scripting language</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg01270.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg01239.html">[MUD-Dev] Re: let's call it a spellcraft</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#01237"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#01237"><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>
<LI><strong><A NAME="01210" HREF="msg01210.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:31 GMT
<UL>
<LI><strong><A NAME="01211" HREF="msg01211.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Fri 25 Sep 1998, 05:00 GMT
</LI>
<LI><strong><A NAME="01226" HREF="msg01226.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Adam Wiggins <a href="mailto:adam#angel,com">adam#angel,com</a>, Fri 25 Sep 1998, 18:30 GMT
<UL>
<LI><strong><A NAME="01270" HREF="msg01270.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Travis Casey <a href="mailto:efindel#polaris,net">efindel#polaris,net</a>, Sat 26 Sep 1998, 18:24 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="01237" HREF="msg01237.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>, Fri 25 Sep 1998, 23:24 GMT
<UL>
<LI><strong><A NAME="01239" HREF="msg01239.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Sat 26 Sep 1998, 00:03 GMT
</LI>
<LI><strong><A NAME="01243" HREF="msg01243.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Sat 26 Sep 1998, 02:32 GMT
<UL>
<LI><strong><A NAME="01245" HREF="msg01245.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Sat 26 Sep 1998, 02:58 GMT
<UL>
<LI><strong><A NAME="01333" HREF="msg01333.html">[MUD-Dev] Re: let's call it a spellcraft</A></strong>, 
Adam Wiggins <a href="mailto:adam#angel,com">adam#angel,com</a>, Mon 28 Sep 1998, 17:21 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</ul>
</ul>
</ul>
</ul>
</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>