MUD News Stories and their Bots
The individual items of history found in
http://lions.cs.ndsu.nodak.edu/~blackwood/history/history.htm
are each converted to a "news story" with a specific
format. They are saved in the .stories property of a "ticker" devoted to a
relatively small content area, such as "Disaster stories of
1880" or more recently "Stories about Thomas Edison".
The specific format of the news stories is described in detail
below. The ticker objects are stored in the Blackwood
Newspaper Office, which is located adjacent to the Town Square.
Instructions for Building Content Groups
Necessary Objects: $g.gen_atmosphere_agent (#1443),
$g.gen_ticker (#9018), and $g.QuizMachine (#8356)
Problem Description: to create a content oriented
pair of software agents: 1. an Atmosphere Agent with a
Zelecon conversation tree, for players to learn content in a
subject area (Teddy Roosevelt, Railroads, etc) and 2. a
Quizmachine Agent with a specialized ticker in a list in
.news_source with questions about the subject area in the
.stories property, taken from the conversation tree.
Method: either use historical information to create
'news stories' in a specially created ticker
(see Populating the MUD with News, below)
or use historical information to create conversational
dialog with Zelecon, and convert that into
'news stories'.
Follow these instructions (using the Belle Starr example as
a guide)
- create an $g.gen_atmosphere_agent #1443:
i.e. @create #1443 named Belle Starr => #11310
(Belle Starr)
- give it a $g name:
i.e $g:add_dollarg_prop("Belle_Starr", #11310)
=> $g.Belle_Starr with value: #11310
- use the Zelecon Conversation Constructor to
populate the .resp_list
property on the agent (see below, Steps in Using Zelecon)
- create a related $g.gen_ticker #9018;
i.e. @create #9018 named
ticker-belle-starr => #11324
- give it a $g name:
i.e. ;$g:add_dollarg_prop("ticker_belle_starr",
#11324) => $g.ticker_belle_starr with value:
#11324
- create .stories for your ticker; .eg (at
least 8 per ticker), in the following format
{1880, 0, 0, "Belle Starr born in
Missouri", "Belle Starr was born as Myra
Maybelle Shirley on her father's
farm near Carthage, MO on February 5,
1848",
"Birth", "Other", "", "Myra
Maybelle Shirley", "Carthage, MO"}}
{1886, 12, 17, "Sam Starr killed",
"In 1886 on December 17, Sam Starr was
involved in a gunfight with Officer
Frank West at Canadian River, OK. Both
men were killed.",
"Death", "Other", "", "Sam
Starr", "Canadian River, OK"}}
- There should be short headlines in
[4] and detailed stories in [5] with
exact string matches in [5]
that are recorded in [9] and
[10]
- place your ticker in the Morgue,
in the room #10778 (People),
Railroad/Riverboat/Teamsters too
- create a $g.quizmachine,
eg. @create #8356 named
QUIZ_Belle_Starr => #11325
(QUIZ_Belle_Starr)
- describe the
$g.quizmachine;
eg. @describe
#11325 as "You see a
Belle Starr
quizmachine"
- assign the
.news_source property
on your $g.quizmachine
to a list containing
your ticker; .
eg
;#11325.news_source
= {#11324}
- find a
matching
graphic for
your machines,
either a 180
pixel tall
transparent
.gif of a
human, or a
realistically
scaled
object like a
locomotive or a
riverboat
- drop your
$g.quizmachine
and
$g.gen_atmosphere_agent
on a street
or in a
store,
together,
that does not
already
have
a quizmachine
and record
where in your
report
Populating the MUD with News
The process is as follows:
- Create a new ticker to store "news stories" in the
.stories property
@create #9018 named ticker-firstname-lastname
eg. @create #9018 named ticker-belle-starr
- For each news story, add a new
list to the list-of-lists in the .stories property of your news object
as follows:
Each row in the .stories table of the news objects will have the
following 10 fields:
- Year: integer (range 1880 to 1886)
- Month: integer (range 1 to 12, 0 if no month)
- Day: integer (range 1 to 31, 0 if no day)
- Headline: string (string, short, 3 to 7 words)
- Story: string (string, at least one full sentence, including one or
both of the Person or Place, below
- Primary Key (string, from the Ontology, below)
- Secondary Key (string, from the Ontology, below)
- Tertiary Key (string, from the Ontology, below)
- Person (string, the name of the main person in the news story)
- Place (string, the name of the main location in the news story)
Which means your 'news object' will have a .stories property that
looks like this:
{{year, month, day, headline, story, primary, secondary,
tertiary, person, place}, {.....}, {.....}, ...}
Example:
{{1882, 4, 3, "Outlaw Jesse James killed", "Outlaw
Jesse James was shot in the back and killed in St. Joseph, MO.,
by Robert Ford, a member of his own gang for a
$5,000 reward. Jesse and Frank James, the bank robbing James
brothers, were born as Woodson and Alexander.", "Law", "Crime",
"Outlaw", "Jesse James", "St. Joseph, MO"}, {.....}, {.....}, ...}
Every news story must have keywords from the schema defined in
http://cs.ndsu.edu/~slator/html/blackwood/blackwood-news-ontology-1.html
Steps in Using Zelecon
- Session -> Connect
type username/password
- Window -> Telnet
- Conversation -> Download
type object number; eg. #13341
- Window -> Visualize
double click a node to edit it
- Conversation -> Test
- Conversation -> Upload
type object number
How it works
- Zelecon stores conversation data in a FUNCTION named
SET_RESP_LIST defined on the atmosphere agent
the FUNCTION is simply an assignment statement to a PROPERTY
named RESP_LIST also defined on the atmosphere agent
modified: 2011-01-15; 23Feb14; 5Apr17; contact: slator@cs.ndsu.edu