Issues from the digests and Wout's list

Adam Wiggins nightfall at
Fri Apr 18 09:26:17 New Zealand Standard Time 1997

> :The only outstanding one I can remember here is suggesting command
> :compleation ala:
> :
> :  > get bag
> :  Do you want the:
> :    1 -- Mouldy sack
> :    2 -- Paper bag
> :    3 -- Leather satchel
> :    0 -- Cancel command
> :  >> 3
> :  You take the leather satchel,
> :I currently do this, with caveats for nested compleations, multiple
> :character support (multi-playing) and priority interrupts.
> I think there was a pretty heavy discussion on the rgm.* groups of command
> completion.... mainly because I started it. I don't even remember when
> that was, or what the name was... In any case, a few other schemes have
> been proposed. I use a warning/override method that applies to both unwise
> and ambiguous commands, by which my interpreter takes what it thinks is
> the most likely choice, and asks you if you really want to get the mouldy
> sack. If you repeat the command, it goes ahead with it, or if you hit a
> 'Y' or '&' or '!'. An unwise action can override the warning by being
> prefixed with '&' or postfixed with 'anyway' or, after recieving the
> warning, simply by typing '&'. A command can be repeated by typing '!', or
> repeated at a later date by typing "!<first letter or two of the
> command>", as in a unix eviron. I'm still working on some parts of the
> wild card substitution system, mainly because I have a number of wild card
> keys that perform differently.

Very much agreed here.  As I think I've mentioned before, it seems very
bad to me (as a player) to ever leave the command prompt for soem sort
of 'interactive mode' prompting - I *always* want to be able to type
'flee' and have my guy start running.  Plus it simplifies things for the
parser and for the user, at the slight expensense of learning curve/new
user friendliness.  I wouldn't be opposed to something like:

> get bag
There are three bags here: a mouldy bag, a red bag, and a leather satchel.
Which would you like?
> red
You get the red bag.

In which case I could ignore the prompt if I liked, otherwise you get
syntax-specific responses like 'red'.
Personally, and maybe this reflects my habbits gained from thousands of
hours on traditional muds, I like it to just grab the first item answer
to the name I suggested in the room:

> get bag
You get the mouldy bag.
> get leather bag
You get the leather satchel.

Terse, but effective.  Plus you've got this situation:

You see here a steel longsword, an iron longsword, and a mithril longsword.
Uglug arrives from the north.
Uglug charges towards you with a snarl!
> parry
You will now parry incoming blows.
Uglug swings his club at you, but you parry the blow.
The force of the blow wretches your sword from your hand!
> get sword
Which would you like to get:
1 - steel longsword
2 - steel longsword
3 - iron longsword
4 - mithril longsword
Uglug swings his club at you, smashing through your feeble arms and shattering
the bones within.
>> flee
Please answer 1 through 4.

etc.  Basically, because of the fast paced nature of muds, I like it to
'assume' lots of things for you and just take the most natural course when
you type something.  If you want to do something more specific, you're
welcome to clarify with your command.

> :>Some of the discussions that (IMHO) were left unfinished were:
> :
> :>1) The combat system.
> :>* Limb based combat.
> :
> :Someone else will have to resurrect this one/  I'm not a big fan.
> Limb based combat as a seperate topic bites rocks. It just complicates an
> already ingrown combat system. Now limb based existance, with everything
> being limb based, is a different story. More to the point, a limb is just

Heh, well if you want to look at it this way, doing *anything* in such a
manner (ie, a cut-off system which relates only to itself and nothing else
in the game) is a bad idea.  So I tend to think of 'limb based combat'
being a general way of referring to a general limbs system, even though
in most modern muds it's a more limit context.

> an object attatched to the body that happens to respond to mental control.
> If an agressor wants to target that limb in particular for an aggro
> action, that's fine. I have elliminated the combat round, with all of its
> baggage, and instead use a sort of 'combat is just another type of action'
> approach, where having someone attack you is a bias factor in your command
> parser, but nothing more, and your reflexive reactions are defensive only,
> as they are at all times. Offensive moves must be activated implicitly or
> by a script. (IE: if attacked, draw gun, shoot attacker until one of
> you is dead.)

Right.  Currently muds and, in fact, computer games in general, are very
fond of boolean states like is_fighting.  As soon as you try to expand
the system and make things more all-inclusive, it quickly becomes obvious
that this method is not even worth bothering with.  Of course, doing a
free-form system as you've described above comes with its own problems -
when do you decide that they are 'in combat' and can't just go walking off?
Of course, I consider this sort of design problem quite interesting -
leaving the realm of the finite state machine that most mud characters
opperate by and instead allowing just a bunch of fluctating variables
which the system must assess at any given time to decide what 'state'
(as it were) the player is in, and whether they can and/or want to do
a given thing.

> :--  Attacks, where blows are any of magic, physical, mental, or
> :aggressive defenses.
> How about: an attack is any action which deliberately harms you, from your
> POV. If it was unintentional, but the attacker is of a sort unfamiliar
> enough to you that you didn't realize his electric buzz was a joke and not
> an attempt to fry you, then to you, that was an attack. No matter what the
> attacker intended it as. I can't see these scripts going inactive when not
> "in combat", mainly because combat is an arbitrary description of a state
> in which you and another entity are mutually attempting to cause each
> other damage, in my system.

Well, we have a bunch of 'paranoia' options.  For instance, there's
touch paranoia - if you set it very high you'll hop out of the way when
people try to do anything that would touch you.  This is handy in certain
ways, because communicable diseases are most often passed by touch, 
and thieves usually steal this way (ie, bumping into you in a crowded room
or, more blantantly, giving you a big hug).  Of course, this keeps people
from so much as shaking your hand, and you'll start to appear rather jumpy
to folks.  Similarly there is attack paranoia - at the lowest setting you'll
never do more than defend (Ghandi).  At the highest you'll take offense
very easily, and the buzzer above may be enough to set you off.  This can
also be modified by paranoia-inducing drugs, your current emotional state
(berserker-types will find themselves attacking people for the slightest
offense), and your relationship with the person.  (Someone you know and trust
can cause you pain by say, yanking an arrow out of your leg and you'll just
grunt and bear it, but your hated enemy trying to bandage your wounds
will invoke your wrath.)

> :The design is for every combatant to submit a script (as above) to the
> :controlling Combat Object for the fight for each round (I use round
> :based combats).  At the end of the round, the combat object resolves
> :the scripts against each other (eg feedback loops between reactions),
> :and sets the sequences attempted by each combatant.  These resolutions
> :are then sent back to the combatants, they do them, the relevant
> :damages are levied (this is all automatic), and the next round starts. 
> Ack! Round based combat. That explains a lot. *gag* Sorry, but this went
> out the door for me a long time ago. It tends to spoil the momentum of a
> good story sequence, whereas reactive and monoactive events do not. In
> other words, it doesn't flush with the rest of the game.

I think this is because he's going for a more turn-based, strategy/wargame
style combat system where you plot out your moves and then watch them
unfold, as opposed to just throwing everything in immediately.  I vastly
prefer the free-form system mentioned above, but his stuff looks interesting
with a different context.  Since you're basically 'programming' your character
anyhow, the actual role-playing/story/mood element is probably pretty low
anyhow.  It more like a game of chess than D&D, for which turn-based is
probably ideal.

> :This creates verisimilitude problems.  Bubba sits high on a cliff with
> :a sniper's rifle and shoots at some chap a couple miles away on the
> :plains.  Are they *really* in a fight?  What if the guy on the plains
> :climbs into a tank and fires a howitzer back?  How about the sniper is
> :instead a spell caster and the plains hugger is a knight in a tin can? 
> :How about the lurker in ambush who throws a knife?  The guy in the
> :middle of the street who throws a knife?  They guy who stabs you in
> :the back?  The pitched battle?  The melee?  The two tanks sitting on
> :opposing hills trading shells?
> Under my system, these is all as much a fight as two idiots in armor
> trading blows with swords. The only difference is that the guys in armor
> with swords are toast when that longbowman finally gets a bead on them.
> The critical thing to remember is that a) I use a levelless system, and b)
> experience is not given for winning a combat sequence, it is confered to
> each appropriate skill and/or attribute on an action by action basis,
> making the action of shooting a guy from a mile off with a longbow pretty
> good experience, where the action of hacking at a guy with a sword and
> getting in a lucky shot might not be so great, experience wise, as barely
> surviving, and not killing the other guy, but getting a damn good workout.

Nod...of course this is the fundamental concept for a skill-based system.
Once you get rid of one D&D/mud kludge (like experience or discrete combat
states) you quickly find that they *all* have to go for things to make
any sense at all.  And that's just fine with me.

> The point I raised earlier: there is a bias based on the "aggresion
> coefficient", that makes a combatish interpretation of a command more
> likely for me, but aside from that, things flow much more smoothly without
> combat rounds. Don't get insulted by this, please, but rounds make me
> think Diku/LP. They are so typical of those systems...

They are indeed typical of those systems, but the idea of round-based combat
is far older than either of them.  Most strategy and wargames use this, as
well as many, many, many pen and paper and single-player comptuer RPGs
alike.  There are many advantages to them, including de-emphasizing
timing to make the game less timing-oriented (==arcadish).
Of course, I'm not disagreeing with you.  We got rid of any sort of
'rounds' long ago and I consider it one of the best move we ever made.
Fairly painless too; in a lot of ways it's easier to implement, at the base
level, than round combat.  Of course things get more complicated at a higher
level when you have to deal with the state stuff I mentioned before.

> :Your giving the charmed TC to UggUgg __acted__ as an attack in the
> :context of a fight because the TC attempted to eat UggUgg's inventory. 
> :However, normally giving someone a TC, even a charmed TC would not be
> :an attack.  Similarly, UggUgg giving you his magical inventory in an
> :effort to exhaust your mana stores and cause all your magical objects
> :to destruct in the context of this fight was an attack.  However
> :giving someone a macgical item or items during a fight is often NOT an
> :attack.  This same sort of dichotomy holds true for the TC spores.
> Not really. Whatever your intent, the results are the same, yes/no? The
> only complaint I can see is that this means the script has to have a
> friend/foe value for the other guy, to know if him slapping you on the
> back so hard it made an impression of your face in the wall of that house

Again, once one gets rid of a few kludges, they all have to go.  The
concept of a "give" command which places an object in the target's
possession without their consent is abhorent.  On the other hand, one
doesn't exactly want to have to explicitly okay all incoming offered
items, either.  We simply use the paranoia levels again - you can either
accept all items (bad idea), accept all items offered to you by friends
(better idea), or accept no items (if you're the careful type).  In addition,
doing a generalized 'here's what I'm doing right now' system instead
of simple states and unrelated commands helps work out some of these
problems.  If you offer soemthing to someone during a fight in our system,
they'll basically ignore you - they may not even notice you offer right
away dependant on how hot and heavy the action is.  When they fall out
of direct combat (ie, not currently executing a blow or defense but rather
just circling the opponent), they'll have a chance to do lower-prioirity
stuff like object manipulation, and may notice and subsequently snatch
the item from your hand at that point.  Of course, this can all be easily
interrupted by the player...they can see the offer while in combat and
toggle off their accepting level so that they won't bother grabbing it.
If they see you offer the item and want it immediately (ie, it's gonna help
them win the fight) they can specifically try to disengage and manually
grab the item (which may put them in a compromising position as far
as the fight is concerned).  As you can see here, an offer from their
combatant would be laughable for several reasons.  First, if their fighting
someone, they probably don't trust them (unless it's just friendly sparring),
so wouldn't accept the item regardless.  Secondly, combat actions have
a higher priority than object manipulation actions, so you won't bother
with that stuff right away anyhow - and any time you're close enough to
your opponent for such an action you'll be doing combat actions.  Finally,
offering soemthing to someone in combat is a pretty horrible idea,
as you stand there stupidly holding out your hand while they close to
whack your head from your shoulders.  Most likely what would happen would
be that you'd hold it out for a second, they'd close to attack you,
you'd drop the item and continue normal combat.

> that had been a few meters away was an aggressive act (and, due to the
> fact that he can do that to you and that you forgot your ultra-anhiliator
> cannon in your other leather jerkin, is obviously going to win in a fight,
> would trigger your "run away screaming ohshitohshitohshit I'm gonna die
> I'm gonna die I'm gonnaDIE!!!"[1] reaction) or an attempt at a friendly
> gesture by a guy who's a little too big to be making such gestures.
> (actually, neither comes into play, as you were rendered unconscious by
> your impact with the wall, but that's another story.) I dunno how to
> determine a clean friend/foe factor... right now, if the other guys are
> wearing the same uniform as you, or if you have a friend/ally tag on your
> memory tag for them, they are friend, otherwise, foe.

Yeah, we just have trust levels attached to your memory of them.  Normally
you set them manually, but the game will modify them based on the situation
(ie, if they attack you you instantly cease trusting them; socials have a
small effect, so if you hug someone everyday for a year you'll eventually
start to trust them without any manual intervention).

> :These are not fighting actions any more -- but in the context of a
> :magical battle where indirect control and manipulation of the the mana
> :supply is the major weapon, they suddenly turn into fighting actions.
> :
> :Think you have a rule?
> Yeah. I think its not that bad, actually. At this point in time, both of
> these guys have each other pegged as major foes. Anything the other guy
> does, short of raising a white flag or running away screaming, is going to
> be interpreted as hostile. Even sneezing.

Yup.  This sort of thing seems odd at first, but actually, that's how it
works.  Imagine two bitter enemies pointing guns at each others heads
(maybe a John Woo film) - one guy reaches into his coat for...a cigarette.
Normally this isn't considered an offensive action but likely the other
guy would tense up and possibly even pull the trigger.

> :What if Boffo the clown wanders into the fray, DOESN'T join the fight,
> :but does proceed to do all the same things as above (giving magical
> :objects etc).  He could be trying to help you by giving you a super
> :magical weapon, or help UggUgg by accellerating your magical
> :inventory's decay...
> :
> :Friend or foe?  Context driven I'm afraid.
> Do you remember Boffo as a friend? Hmm... yep. scream at boffo "You stupid
> clown! Don't do that! I'm in a fight right now, can't you see? I'll talk
> to you after I pulp this idiot!"

Right.  Similarly, offensive actions could be 'good' coming from someone
you trust.  Like someone runs into the room while you're fighting, grabs
you by the arm and starts pulling you out.  If you trust them enough you'll
probably go along, assuming you're not in immediate danger from your
Now we leave the realm of specific states with specific moralities attached
to them (ie, cast 'sanc' bob is good, cast 'fireball' bob is bad) and
enter the realm of free-form actions which are totally context dependant;
they don't even really have a 'default' state.  I like that.

> I do insist that there be a little of that... I have rest and sleep, and
> passing out from blood loss, and recovery time for a serious injury,

Sleep - how do you plan to handle that?  We do have realistic recovery time
from wounds, the idea being that you should never get very wounded.
A thread about this came up on r.g.m.something recently, and I stated
that I didn't see anything wrong with realistic recovery times.
Someone made a statement along the lines of, "Oh great.  So every single
fight I come back with all my bones broken and have to wait for six
weeks of gametime for them to heal before I can go out again.  That does
sound fun."  I find this hillarious.  Rarely, if ever, will one get into
a fight that involves getting all of one's bones broken and still manage
to 'win' or at the very least, crawl away someplace to die.  If I get
into a fight with someone or soemthing and it starts breaking my bones,
I am GONE.  Why should this be different on a mud?

> though all of these can be remedied by cybernetics and nanotech,
> purchasable at a later time in the game. But seriously.. the solution is
> make combat fast, not slow. Really, really fast. The guy who gets in the
> first initiative wins, half the time, if he sets it up right. Client isn't
> part of it, nor is the connection, if there is hardly time to think once
> the blows have started to fly. The other factor here is that fights are

I don't necessarily agree with this.  I tend to think that timing is
just totally up to whatever the implementors like for their system.  I
like it to be slow enough to be readable but fast enough that you still
get the sense of urgency, and quick thinking will always help you out.
Even though I myself make heavy use of a client when mudding, I feel that
this is just a failing of the mud.  We've designed our system to make
a client mostly irrelevant.  There are two main reasons clients are so handy.
For one, I set up variables about who I'm killing or whatever, which makes it
so I can type "bt" or something to backstab my current target.  Thus in the
fight between me (Hrothfuurd) and my target (Slavolous) where I have to type
"bt" and he has to type "backst hrothfuurd", I'm gonna tend to get the
initiative, regardless of how fast of a typist he is.  Similarly, there
are so many situations where you *always* want to do the same thing, regardless,
so actions come in handy.  My personal favorite is:

The cityguard disarms your weapon.

Of course, I always have this actioned to do {get $weapon;wield $weapon}.
There is no situation I wouldn't want to do this.  And there's the problem -
the one to one relationship of problem and solution.  We've tried to construct
combat, and in fact, all our skills/stuff to do to be very interactive.
For starters, this keeps people from getting bored.  The side-effect is
that a client is pretty much useless.  The messages are varied and often
generated from smaller phrases to keep them from getting stale.  What you
want to do in response to a certain message is highly situation dependant;
if someone is trynig to disarm your weapon you may want to do any of a
thousand things.  If they manage to do it, there are a thousand more that
are worth trying (picking up your weapon again immediately is possible, but
usually you'll want to work yourself into a safer position from which to
do so, or if you came prepared just whip a dagger out of your boot-sheath).
As to the "backstab hrothfuurd" bit above, our parser is very lazy-mudder
oriented.  I can't think of any command that couldn't be completed in
less than 10 characters, due to name completion and target saving.  Thus:

> bac hro
You place a dagger in Hrothfuurd's back.
Hrothfuurd flees north.
> fol
You follow Hrothfuurd north.
> bac
You place a dagger in Hrotfuurd's back.

etc.  If we had backstab, anyhow.

> usually several on several, not one on one, thanks to the fact that having
> a buddy minding your back can often mean the difference between a killing
> blow from behind and a victory. Actions are paced by how fast a character
> can manage them, not how fast the player can type (though faster typists
> can afford greater control, see my old posts on command parsing and
> control/specificity) and there are rarely enough of them once things get

With ya all the way.  There is a point at which the guy with the 150 wpm
typerate and the 30ms link is just gonna do better that others.  You
can't get around that, so there's no point killing yourself over it.
However, you can make things as lazy-oriented as possible (see above),
and also have the character customizable to some extent so that he won't
stand there like a dolt when he gets attacked and your link is bad.  Our
goal was to make combat (and other stuff, but combat is the most
important due to its mortal nature) sort of 'play itself' without any
intervention from the player, but that a good player tweaking what his
character was doing during the fight as well as deciding when to fight and when
to flee will make a world of difference in the overall result.  But your
guy won't just stand there stupidly laying on the ground if someone attacks
him while he's sitting down, as frequently happens on normal muds.
At which point you want to scream at your dumbass character for not
taking the obvious course of action.

> :>2) Namespaces.
> :>* Allowing players to name one another.
> :>* Introduction systems.
> :>* The "familiar face" element and remembering/forgetting names. *
> :>Naming objects and exits.
> :
> :I proposed this initially.  I still rather like my solution where
> :there are no global names, there is no WHO command etc.  Players can
> :assign whatever names they wish to whatever they see, be they rocks,
> :mobiles, other players, or whatever, and those name assignments are
> :private to that player.
> :
> :I'll flesh this area out later if anyone is interested.
> I'm working on a name/id in my memory tag that should give some of this
> flex.

We've had a system like this for over a year now, and I've loved it since
day one.  Typing 'who' gives you a list of the accounts that are online.

> :>4) Rumors.
> :>* Decaying rumors.
> :>* "Alerting authorities".
> :
> :We definitely need to get back into this.
> Not my bag.

Yup.  Seems so artificial, to me.

> :>6) Global mob AI.
> :
> :Ouch.  Like it.  Don't have an elegant solution yet.
> Neither do I.

One thing I did at work (not a mud, but a single-player RPG) as a simple
answer to this was to allow scripts on any object to control any other object.
Makes it pretty easy to order other objects around based on whatever
need should arise.  Obviously this is too unprotected for a mud, which has
a much broader host of options and environments...I've been thinking about
creating dummy objects to which I could attach scripts.  Thus you have
the dwarven collective - when a shopkeeper shouts that some big ugly minotaur
is attacking him, the collective would respond by ordering the closest guards
to go check it out.  I'm not sure if I like this or not; I'm more fond of
the idea of each guard actually analyzing whether he should respond to the
problem, but this makes it extremely difficult to get a sense of society
at all, since they are a bunch of free entities that happen to work for
common goals.  I've envisioned a lot of potential problems with this and
I'm not sure exactly how I want to try to handle it - leave it how it is
(free entities) or try to get some sort of overall consciousness involved
to make things seem a little more coherant.

More information about the MUD-Dev mailing list