Re: Some things

From: Daniel A. Koepke (dkoepke@california.com)
Date: 04/15/99


On Thu, 15 Apr 1999, Andrew Ritchie wrote:

> Has anyone implemented a 'name example' function? As in, a function
> that miraculously generates names for characters who are a bit stuck?
> An example of this is the name generator on 'Dragonrealms' RPG. I
> guess I'm after rules the computer can understand in order to make a
> name that's pronouncable.

Well, it could be different for various races, but the basic idea is to
list the syllables that combine together and then just randomly combine
them.  (There's undoubtedly a more elegant manner to do this, but this
method is simple.)  Mailer code:

  const char * syllable_array[] = {
    "a", "ka", "sa", "ta", "na", "ha", "ma", "ya", "ra", "wa", "ga", "za",
    "da", "ba", "pa", "i", "ki", "shi","chi","ni", "hi", "mi", "ri", "gi",
    "ji", "bi", "pi", "u", "ku", "su", "tsu","nu", "fu", "mu", "yu", "ru",
    "gu", "zu", "bu", "pu", "e", "ke", "se", "te", "ne", "he", "me", "re",
    "ge", "ze", "de", "be", "pe", "o", "ko", "so", "to", "no", "ho", "mo",
    "yo", "ro", "go", "zo", "do", "bo", "po", "n"
  };

  /* Should be the number of syllables in the table above, this might be
   * wrong -- I didn't bother to count, I just made a guess */
  #define NUM_SYLLABLES         67

  void GenerateName(char * buf)
  {
    int i, length, max_syl = MAX_SYLLABLES-1;
    length = number(4, 13);
    i = 0; last = -1;
    *buf = '\0';

    while (i < length) {
      int j = number(0, max_syl);
      if (last >= 0 && !str_cmp(syllable_array[last], "n") &&
          *syllable_array[j] == 'n') continue;
      strcat(buf, syllable_array[j]);
      i += j;
      last = j;
    }
  }

Which will generate names that are remarkably Japanese in appearance.  For
instance, "Budoko," and "Naomi."  The GenerateName() function should only
very rarely produce really horrible names like "aaaa" but there's still a
very real chance, and some work would have to be done to it to safe-guard
against this.  There's an attempt in there to protect against generating
sequences where a single 'n' is followed by another 'n', so there will be
no "Nnni."  As always, it's completely untested, and I can't attest to how
well a purely (pseudo) random approach will work.

> Secondly, I was thinking about dynamic room descriptions, but I'm not sure
> as to how much lag this will produce, evaluating a script everytime someone
> 'look's. Has anyone had experience with lag-time in this area?

The answer is, of course, none if done properly.  It may not sound useful,
but it's the best answer one can give.  If you're experiencing lag
problems, you have a very poor algorithm.  I don't see why one would need
to parse a script file for every 'look', but if you are going to be doing
something along those lines, it's be far more efficient to create a parser
tree to represent the possible paths for the description to take.  This
way you're not analyzing or parsing the script, but simply executing the
parser tree.  A truly dynamic description route would generate room
descriptions without the need for a script.  (Personally, I'm going to an
entirely computer generated world with computer generated descriptions and
an optional overhead display map.  People may argue about the quality of
computer written descriptions, but, in my comparisons, the results of my
primitive work has been comparable or above the descriptions found on the
vast majority of current MUDs.  We're not talking about a stupid little,
"The grass is green here.  The trees are tall," but a full blown generated
description.  It's not possible to generate a good science fiction novel
this way, but a quality description that appears to have been written by a
good writer isn't unfeasible.  Not to mention the consistency and the
complexity of these algorithmic descriptions that a scripted or static
method couldn't even begin to approach.)

> Finally, the MUD I am creating at the moment is almost pure roleplay,
> but I understand that a MUD is a social game and many people just want
> to have an idle chat to someone else, in an out of character
> enviroment. I was thinking about setting aside some taverns as OOC,
> but then I don't want people to go to the tavern just to escape their
> IC punishments (ie, if they pkill someone and then run straight to an
> OOC tavern as a haven). I also don't want people killing people, and
> then simple quitting the game to avoid punishment. Anyone got any
> ideas?

The method I am presently using in my development base is allowing people
to login to the game OOC.[1]  Note that I use an account system which is
an abstraction of certain player specific data that need not be kept on
individual characters.  That is, password, term settings, etc.  An account
is allowed to own up to a specified limit of characters (by default, two,
but I can change this value for individual accounts).  Logging in IC means
logging in a character which belongs to the account, but not for OOC.  It
is my view, and I'm sure others share it, that associating IC names with
OOC presences can ruin role-play by not providing sufficient distinction
between the OOC personality and the IC personality, not to mention the
possibility of encouraging the use of the OOC forum for IC discussions,
which may be okay for MUSH (or, more probable, "true") style role-playing
games in which coordination between characters is necessary because roles
are played through emoting, but probably not in the action RPG format that
DIKUs so often take.

-dak : Having problems due to his "smart" power supply being stupid.

[1] Not a CircleMUD, but an experimental, multi-threading server, Jade,
    that I'm developing.


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST