[MUD-Dev] Scripting Languages and Magic

Edward Glowacki glowack2 at msu.edu
Mon Oct 6 09:24:07 New Zealand Daylight Time 2003

On Fri, 2003-10-03 at 17:12, gbtmud wrote:

> I am attempting to write a new MUD codebase, and I was wondering
> what people have done as far as magic systems. Specifically, I was
> thinking of letting the players define spells in a custom
> scripting language so that new spells could be created on the
> fly. My question is, has anyone already done this? If so, what
> pitfalls are there to avoid, and what functionality should I
> add/subtract? Any input would be helpful on this.

I've considered this a bit as well, and I really like the idea.  But
I'm not sure how easy it would be to pull off.  One of the things
that would probably be the most difficult with this system is
balance.  It's hard enough to get decent balance in a game when you
know exactly what every spell does, how much damage at what
character level, etc., so trying to balance when the player has
control of the variables would be a challenge.  Essentially what you
would have to do is balance the scripting engine itself and all the
components that go into it.

Another issue with scripting is that it would give your spellcasters
an advantage over any other non-spellcasters by giving them access
to essentially server-side actions.  Consider something like this
for a spell:

  $effects = {blind, curse, weaken, poison, faerie fire}
  while(1) {
    $action = random($effects}
    cast $action $target

If $target is a melee-type character who has to quaff potions to
become un-blind, etc., $target spends all their time trying to
figure out how to respond (what potion to quaff, etc) and then
actually finding the items in their inventory or whatever, which the
caster is able to do automatically, and on the *server*.  No lag, no
delay, no time lost to mental thought or clicking or typing.  It
becomes a man vs. machine battle.

To balance this out, you would have to make the scripts available to
all players and all actions, which opens things up even further.

That's just at the basic scripting level, i.e. components of normal
skills/spells put together in new ways.  If you wanted more
flexibility to have magic do almost anything, say to have users be
able to create a spell that causes all metal on an opponent to heat
up and do burning damage based on the amount of metal worn, or a
spell that makes an opponent unable to talk, that would be
considerably more difficult to implement and balance, as the player
would then have access to a lot more data and a lot more power.  In
this scenario, it wouldn't take long for the One Script to emerge to
rule them all, something that would essentially render an opponent
naked and defenseless against your next attack.

Hehehe, just had a random idea.  You could cause every statement to
have some delay with it.  "if" adds 3 units to casting time, "a = b"
is 1 unit, "while" is 2 units, actually casting something may be 2
units, etc.  So most of the spell delay would be the logic, not the
spell itself.  =)

At any rate, scripting in any serious form would be an extremely
powerful tool for the player, and one that must be well thought-out
and tested beforehand.


Edward Glowacki			glowack2 at msu.edu
A PBS mind in an MTV world.
	-- Author unknown
MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list