March 2007
- [ANNOUNCE] Midgard Online Andreas Weidenhaupt
- [ANNOUNCE] Midgard Online Morris Cox
- [ANNOUNCE] Midgard Online Michael Hartman
- [ANNOUNCE] Midgard Online Andreas Weidenhaupt
- [ANNOUNCE] Midgard Online Michael Hartman
- [ANNOUNCE] Midgard Online Mike Rozak
- [ANNOUNCE] Midgard Online Andreas Weidenhaupt
- [ANNOUNCE] Midgard Online Damion Schubert
- [ANNOUNCE] Midgard Online Andreas Weidenhaupt
- [NEWS] Trident Games Prepares New Online Game Using Skotos Engine Shannon Appelcline
- [TECH] MMOG Design List Weston Fryatt
- [TECH] MMOG Design List Lachek Butalek
- [TECH] MMOG Design List Adam Martin
- [TECH] MMOG Design List Mike Rozak
- [TECH] MMOG Design List Weston Fryatt
- [TECH] MMOG Design List Hyrup, Darrin
- [TECH] MMOG Design List Morgan Ramsay
- [BIZ] Unauthorised Publishing of My Work mud-dev-list@jaruzel.com
- [BIZ] Unauthorised Publishing of My Work Lachek Butalek
- [BIZ] Unauthorised Publishing of My Work Sean Howard
- [BIZ] Unauthorised Publishing of My Work David Johansson
- [BIZ] Unauthorised Publishing of My Work Lachek Butalek
- [BIZ] Unauthorised Publishing of My Work David Johansson
- [BIZ] Unauthorised Publishing of My Work Keith Dunwoody
- [BIZ] Unauthorised Publishing of My Work Sean Howard
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Morris Cox
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Caliban Darklock
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Adam Martin
- [DESIGN] Homogenized MMORPG Engines (Was: A rantagainst Vanguard reviews and rants) Craig Huber
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Morris Cox
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Jeffrey Kesselman
- [DESIGN] Ray traced environments John Buehler
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments John Buehler
- [DESIGN] Ray traced environments Damion Schubert
- [DESIGN] Ray traced environments Tess Snider
- [DESIGN] Ray traced environments John Buehler
- [DESIGN] Ray traced environments Adam Martin
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments Mike Rozak
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments Acius
- [DESIGN] Ray traced environments Jeffrey Kesselman
- [DESIGN] Ray traced environments Mike Rozak
- [DESIGN] Ray traced environments Chris Richards
- [DESIGN] Ray traced environments John Buehler
- [DESIGN] Ray traced environments Ling Lo
- [DESIGN] Ray traced environments John Buehler
- [ANNOUNCE] Magic Study John Buehler
- [ANNOUNCE] Magic Study Mike Sellers
- [ANNOUNCE] Magic Study John Buehler
- [ANNOUNCE] Magic Study John Buehler
- [TECH] Randomly-generated Faction Names cruise
- [TECH] Randomly-generated Faction Names John Buehler
- [TECH] Randomly-generated Faction Names Johnicholas Hines
Cruise said:
> Randomly generating character names is nothing new - but has anyone
> attempted generating names of in-game factions?
I have been working on a random string generator. The idea is that
people write a grammar for the strings that they want to randomly
generate.
For example, here is a grammar for organization names:
Note: "colon colon equals" might be pronounced "can be"
organization ::= beginning middle end .
beginning ::= Some .
beginning ::= The .
middle ::= Light
middle ::= Dark .
end ::= Knights .
end ::= Rogues .
end ::= Avengers .
This generates 2*2*3 (dumb) organization names like "Some Dark
Knights", at the cost of only 1+2+2+3=8 lines of content. It's a dumb
example, of course, but multiplication trumps addition pretty quickly.
From a user's point of view, there is not a big difference between a
system that allows only finite sets and a system that also allows
infinite sets. Adding one production to the above like this changes it
to an infinite set of names.
middle ::= Very middle .
Now you can have "Some Very Very Dark Knights", and "Some Very Very
Very Dark Knights". What fun.
From an implementor's point of view, the infinite language is
considerably trickier, because you can't just say "pick one at random
from a uniform distribution". You need to favor small sentences over
big sentences.
However, it might add a little convenience for the user to allow
infinite sets, so I implemented it.
A tricky part is allowing weights, so that the user can say some words
are common and some words are rare. There is a straightforward
implementation, where you start with a sentence containing the start
symbol, and at each step, you take the leftmost non-terminal and
choose a production at random from that non-terminal's productions.
This straightforward implementation has a bug.
S ::= terminal . %probability 0.1
S ::= S S . %probability 0.9
If you apply the straightforward implementation, the number of S's
increases more often than it decreases. You have no guarantee that the
generation process even terminates. With only a slightly different
grammar, you can make the number of S's increase even faster.
You might think that those inflationary circles never come up in real
procedural content generation, but in my experience, avoiding them is
annoying.
I have a way of avoiding that problem. To generate random strings, I
basically build a bijection between the set of all parses of sentences
in the grammar and the natural numbers - then I can count up 0,1,2...
to generate exhaustively, or generate random numbers in [1000,10000]
or whatever, to generate random sentences of a certain size. (shorter
strings come before longer strings in the enumeration).
I don't have weights implemented inside the system yet, because
they're easy to do by hand. If you duplicate a production a certain
number of times, you introduce an ambiguity into the language. Because
the bijection is with _parses_ rather than with _sentences_, that
sentence comes up more often in the output.
In order to generate, for example, "blueish" jewelry descriptions (for
a water-magic-enchanted item), I would use the same generator as
jewelry generally, but with different weights; basically turning off
all the "colorish" productions other than "blueish". I'm sure you can
see how to apply the same principle to generate aligned faction names.
Johnicholas - [TECH] Randomly-generated Faction Names Lachek Butalek
- [DESIGN] Ray traced environments John Buehler
- [DESIGN] Ray traced environments Adam Martin
- [DESIGN] Ray traced environments Jon Leonard
- [DESIGN] Homogenized MMORPG Engines (Was: A rant against Vanguard reviews and rants) Sean Howard
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Michael Hartman
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Jean, Yannick
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Michael Hartman
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Damion Schubert
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Jeffrey Kesselman
- Reasons for Play [was: City of Heroes tangent] cruise
- Reasons for Play [was: City of Heroes tangent] John Buehler
- Reasons for Play [was: City of Heroes tangent] Sean Howard
- Reasons for Play [was: City of Heroes tangent] Michael Hartman
- Reasons for Play [was: City of Heroes tangent] Jeffrey Kesselman
- Reasons for Play [was: City of Heroes tangent] cruise
- Reasons for Play [was: City of Heroes tangent] Jeffrey Kesselman
- [OFF-TOPIC] City of Heroes tangent (was: genre vs creativity) Jeffrey Kesselman
- [DESIGN] Turn Around Time On Experimentation (Was: A rant against Vanguard reviews and rants) Adam Martin
- [ANNOUNCE] What Makes A Next-Gen Game? Morgan Ramsay
- [ANNOUNCE] What Makes A Next-Gen Game? Lachek Butalek
- [DESIGN] Multiplayer interactive fiction Mike Rozak
- [DESIGN] Multiplayer interactive fiction John Buehler
- [DESIGN] Multiplayer interactive fiction Paolo Piselli
- [DESIGN] Multiplayer interactive fiction Mike Rozak
- [BIZ] Austin Game Conference Contacts? Jeffrey Kesselman
- [BIZ] Austin Game Conference Contacts? Daniel James
- [MEDIA] A good, hour-long news segment about Second Life Mike Rozak
- Combat Systems (was: Reasons for Play) Adam Martin
- Combat Systems (was: Reasons for Play) Adam Martin
- Combat Systems (was: Reasons for Play) Hudson, Thomas C.
- Combat Systems (was: Reasons for Play) Jeffrey Kesselman
- Combat Systems (was: Reasons for Play) Kerry Fraser-Robinson
- Combat Systems (was: Reasons for Play) Jeffrey Kesselman
- [Announce] CircumReality - A grahical MUD (kind of) develoment toolkit Mike Rozak
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Hudson, Thomas C.
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Jeffrey Kesselman
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Shannon Sullivan
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Dana V. Baldwin
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Jeffrey Kesselman
- Importance of emoting (Was: A rant against Vanguard reviews and rants) Tess Snider
- Importance of emoting (Was: A rant against Vanguardreviews and rants) Richard A. Bartle