Diagnostic Tutoring Agents for Geology Simulation
A Second Generation of Tutoring on Planet Oit
Guy Hokanson
6/09/2001
Work in Progress

Overview:
The NDSU Geology Explorer game, Planet Oit, is an imersive 3D environment that simulates the scientific methodology used in the field of geology. It’s implemented using LambdaMOO and can be accessed through either a text based or graphical client.
...
It uses a hierarcy based tutor system ...
...

The Tutor Controller (#1429)

The tutor controller is the parent of all the following tutors. It main function is to control the tutors access to the geology explorers. It does this by allowing an explorer to receive only one tutor visit at a time and allowing only one tutor visitation per room. This is done to prevent any confusion from the intermingling of simultaneous messages from two or more tutors. The tutor controller also controls the assignment of individual tutor agents for an explorer visit. When one of the tutors requests a visit to an explorer, the controller finds an available tutor agent, or creates a new one if none are available, and assigns that agent for the visit.

Tutor visits are currently done in FIFO order. This should probably be changed to a priority queuing system so that tutors whose messages are time sensitive, like the Geology Tutor, have priority over other tutors.

Verbs:

notify_controller

Call: $g.tutor_controller:notify_controller(explorer, action, datalist)
Called By: Geology Room (#139):exitfunc
Geology Thing (#154):report
Return Value: None
Args: explorer - game player
action - event that occured
datalist - a list of action associated data
Function: Notifies the Tutor Controller that a tutorable event has occurred.

assign_tutor

Call: tutor:assign_tutor
w/tutor is an ancestor of the Tutor Controller
Called By: tutor:inform_tutor
w/tutor is an ancestor of the Tutor Controller
Return Value: A child object of the calling tutor.
Args: None
Function: Assigns an available tutor to handle a specific tutor event.

check_shooed

Call: $g.tutor_controller:check_shooed(explorer)
Called By: Tutor Controller (#1429)
dispatch_tutor
Return Value: Number of times an explorer has shooed tutors
Args: explorer - game player
Function: Returns the number of times an explorer has shooed the tutors.

dispatch_tutor

Call: tutor:dispatch_tutor(explorer, args_list)
w/tutor is an ancestor of the Tutor Controller
Called By: tutor:inform_tutor
w/tutor is an ancestor of the Tutor Controller
Return Value: None
Args: explorer - game player
args_list - tutor specific data
Function: Assigns a specific tutor to handle a tutoring event, schedules the tutoring visit, and dispatches the tutor at the proper time.

hover_to_player

Call: tutor:hover_to_player(explorer)
Called By: tutor:visit_player
w/tutor is an ancestor of the Tutor Controller
Return Value: None
Args: explorer - game player
Function: Positions the tutor's image near the visited explorer's image.

make_new_tutor

Call: tutor:make_new_tutor()
w/tutor is an ancestor of the Tutor Controller
Called By: tutor:assign_tutor
w/tutor is an ancestor of the Tutor Controller
Return Value: A child object of the calling tutor.
Args: None
Function: Creates a new child of the calling tutor object.

request_visit

Call: $g.tutor_controller:request_visit(tutor, explorer)
Called By: Tutor Controller (#1429):dispatch_tutor
Return Value: Visit ? TRUE : FALSE
Args: tutor - turor requesting to visit explorer
explorer - game player
Function: Schedules tutor visits so there is only one tutor visiting a location at a time.

return_home

Call: tutor:return_home()
w/tutor is an ancestor of the Tutor Controller
Called By: tutor:dispatch_tutor
w/tutor is an ancestor of the Tutor Controller
Return Value: None
Args: None
Function: Resets tutor properties and returns the tutor to their home location.

shoo

Call: shoo tutor
Called By: explorer
Return Value: "The TUTOR looks briefly at you, shrugs, and disappears."
Args: None
Function: Shoos away a tutor if you don't want any help.

The Equipment Tutor (#1435)

The equipment tutor is called by the exitfunc verb when leaving the staging area. The tutor checks whether an explorer has obtained the proper instruments needed to satisfy an explorer's goal. If the tutor finds that an explorer is lacking any equipment that may be useful the tutor may remediate with a lesson on what equipment is needed to satisfy the explorer's goal.

There should probably should be a time-on-task/report call that checks to see if an explorer has been unable to identify their goal for an extended period of time. The tutor can then check to see if the explorer is lacking any necessary pieces of equipment needed to identify their diagnostic goal.

Verbs:

inform_tutor

Call: $g.equipment_tutor:inform_tutor(explorer, {roomleft})
Called By: Tutor Controller (#1429):notify_controller
Return Value: None
Args: explorer - game player
roomleft - location explorer exited
Function: Excepts an event notificaton from the Tutor Controller indicating that an explorer has left a location, determines if explorer has any missing equipment, and instigates a tutor visit if required.

equip_needs

Call: $g.equipment_tutor:equip_needs(explorer, goal)
Called By: Equipment Tutor (#1435):inform_tutor
Return Value: A list of equipment.
Args: explorer - game player
goal - explorer's goal
Function: Provides a list of equipment an explorer doesn't have but may need to identify their goal.

visit_player

Call: $g.equipment_tutor:visit_player( explorer, {roomleft, needlist} )
Called By: Equipment Tutor (#1435):inform_tutor
Return Value: Visit Successful ? TRUE : FALSE
Args: explorer - game player
roomleft - location explorer exited
needlist - list of equipment an explorer doesn't have but may need to identify thier goal.
Function: Move the tutor to the explorers location and administer equipment tutoring messages.

The Exploration Tutor (#1432)

The exploration tutor is called by the exitfunc verb each time an explorer leaves any location on Oit. The tutor checks whether an explorer is leaving a location that might satisfy their diagnostic goal. If the tutor finds that an explorer is leaving such a location, the tutor may remediate on where their goal may be satisfied.

Currently this is done on a room-by-room basis for every goal. It should be modified so as an explorer progresses in experience the tutoring changes from room-by-room to regional and finely to a regional/time-on-task system. This would eliminate the possibility of an explorer satisfying all their goals by moving around Oit and waiting for a tutor visit to tell them where their goals are located.

Verbs:

inform_tutor

Call: $g.exploration_tutor:inform_tutor(explorer, {roomleft})
Called By: Tutor Controller (#1429):notify_controller
Return Value: None
Args: explorer - game player
roomleft - location explorer exited
Function: Excepts an event notificaton from the Tutor Controller indicating that an explorer has left a location, determines if an exloration tutoring session is required for the explorer, and instigates the visit if required.

goal_met

Call: $g.exploration_tutor:goal_met(explorer, expgoal)
Called By: Exploration Tutor (#1435):inform_tutor
Return Value: Goal Met ? TRUE : FALSE
Args: explorer -- game player
expgoal -- explorer's geology goal
Function: Checks to see whether an explorer has achieved a particular goal.

visit_player

Call: $g.equipment_tutor:visit_player( explorer, {roomleft} )
Called By: Exploratoin Tutor (#1435):inform_tutor
Return Value: Visit Successful ? TRUE : FALSE
Args: explorer - game player
roomleft - location explorer exited
Function: Move the tutor to the explorers location and administer exploration tutoring messages.

The Geology Tutor (#1434)

The geology tutor is called by the report verb every time an explorer tries to identify their goal. The tutor takes an explorer's goal, what they identified it as and their exploration history and determines witch of the following cases exists.

  • Wrong Guess - The explorer has incorrectly reported their goal and they have not completed all the necessary tests to identify their goal. If this case occurs the tutor may remediate with a lesson on which tests to perform to identify their goal.
  • Wrong Answer - The explorer has incorrectly reported their goal and they have completed all the necessary tests to identify their goal. If this case occurs the tutor may remediate with a lesson on what some of the differences are between their goal and the object they reported as their goal.
  • Lucky Guess - The explorer has correctly reported their goal without performing the necessary tests to identify their goal. If this case occurs the tutor may remediate with a lesson on the usefulness of performing tests (Currently disabled).

Verbs:

inform_tutor

Call: $g.geology_tutor:inform_tutor(explorer, {answer, guess, right})
Called By: Tutor Controller (#1429):notify_controller
Return Value: None
Args: explorer - game player
answer - sample reported by explorer.
guess - what the explorer reported the sample as.
right - was the sample report right or wrong.
Function: Check if the explorer reported the rock/mineral correctly, dispatches a tutoring agent if they did not.

tests_complete_lesson

Call: $g.geology_tutor:tests_complete_lessonr(explorer, answer, guess)
Called By: Geology Tutor (#1434):visit_player
Return Value: Incorrect sample report tutoring message.
Args: explorer - game player
answer - sample reported by explorer.
guess - what the explorer reported the sample as.
Function: Administers a tutoring lesson for an incorrect sample report from an explorer who has completed all the tests necessary to ID the sample.

create_msg_tests_complete

Call: $g.geology_tutor:create_msg_tests_complete(test, guess, answer)
Called By: Geology Tutor (#1434):test_complete_lesson
Return Value: A tutoring message
Args: test - {test type, test instrument, test result}
guess - what explorer reported sample as
answer - sample reported by explorer
Function: Generates a tutoring message for an incorrect sample report from an explorer who has compleded all the tests necessary to identify the sample.

tests_incomplete_lesson

Call: $g.geology_tutor:tests_incomplete_lesson(explorer, answer, guess)
Called By: Geology Tutor (#1434):tests_incomplete_lesson
Return Value: Incorrect sample report tutoring message.
Args: explorer - game player
answer - sample reported by explorer
guess - what the explorer reported the sample as.
Function: Administers a tutoring lesson for an incorrect sample report from an explorer who has not completed all the tests necessary to identify the sample.

create_msg_tests_incomplete

Call: $g.geology_tutor:create_msg_tests_incomplete(test, answer)
Called By: Geology Tutor (#1434):test_incompete_lesson
Return Value: A tutoring message
Args: test - {test type, test instrument, test result}
answer - sample reported by explorer
Function: Generates a tutoring messge based on an unperformed test required to identify a sample incorrectly reported by an explorer.

acid_poured_on_powder

Call: $g.geology_tutor:acid_poured_on_powder(explorer, sample)
Called By: Geology Tutor (#1434):tests_not_done
Return Value: Acid poured on sample ? TRUE : FALSE
Args: explorer - game player
sample - object reported by explorer
Function: Returns true if acid has been poured on a powder that is a child of the reported sample.

tests_not_done

Call: $g.geology_tutor:tests_not_done(explorer, mineral)
Called By: Geology Tutor (#1434):visit_player
Geology Tutor (#1434):tests_incomplete_lesson
Return Value: A list of tests
Args: explorer - game player
mineral - sample reported by explorer
Function: Returns a list of tests that are in a minerals.test_set property, but were not completed by the explorer.

tests_this_sample

Call: $g.gelogy_tutor:tests_this_sample(explorer, sample)
Called By: Geology Tutor (#1434):tests_not_done
Geology Tutor (#1434):tests_incomplet_lesson
Return Value: A list of tests
Args: explorer - game player
sample - sample reported by explorer
Function: Returns a list of tests the player has performed on sample object during the current session.

visit_player

Call: $g.geology_tutor:visit_player(explorer, {reason, answer, guess})
Called By: Geology Tutor (#1434):inform_tutor
Return Value: Visit Sucessful ? TRUE : FALSE
Args: explorer - game player
reason - reason for tutor visit
answer - sample reported by explorer.
guess - what the explorer reported the sample as.
Function: Move the tutor to the explorers location and administer a geology tutoring lesson.

The Pop Quiz Tutor (#1437)

The pop quiz tutor is called by the exitfunc verb each time an explorer leaves any location on Oit. The tutor checks whether all the following conditions are true for the explorer.

  • Explore has completed their first goal.
  • Explorer connected for more than two minutes.
  • Explorer has made more than 10 moves while searching for goal.
  • Explorer has not received a quiz for their current goal this session.
  • Explorer is "out in the field"
If all conditions have been met the tutor may make a visit to the explorer and present them with a pop quiz relating to their current goal. Explorers never receive the same quiz twice for the same goal.

Verbs:

inform_tutor

Call: $g.pop_quiz_tutor:inform_tutor(explorer)
Called By: Tutor Controller (#1429):notify_controller
Return Value: None
Args: explorer - game player
Function: Informs the Pop Quiz Tutor that an explorer is eligable for a quiz.

correct_msg

Call: $g.pop_quiz_tutor:correct_msg(goal, quiz_list, explorer_answer)
Called By: Pop Quit Tutor (#1437):eval_answer
Return Value: Tutorrting message
Args: goal - explorers geology goal
quiz_list - {test type, test instrument, test result}
explorer_answer - explorers answer to quiz
Function: Generates a tutoring message based on an explorers correct answer to a pop quiz.

incorrect_msg

Call: $g.pop_quiz_tutor:incorrect_msg(goal, quiz_list, explorer_answer)
Called By: Pop Quit Tutor (#1437):eval_answer
Return Value: Tutoring message
Args: goal - explorers geology goal
quiz_list - {test type, test instrument, test result}
explorer_answer - explorers answer to quiz
Function: Generates a tutoring message based on an explorers incorrect answer to a pop quiz.

eval_answer

Call: $g.pop_quiz_tutor:eval_answer(goal, quiz_list, explorer_answer)
Called By: Pop Quiz Tutor (#1437):give_quiz
Return Value: {tutoring message, correct ? TRUE : FALSE}
Args: goal - explorers geology goal
quiz_list - {test type, test instrument, test result}
explorer_answer - explorers answer to quiz
Function: Evaluates an explorer's quiz answer for correctness.

expand_sets

Call: $g.pop_quiz_tutor:expand_sets(test_set)
Called By: Pop Quiz Tutor (#1437):quizes_for_goal
Return Value: A list of tests
Args: test_set - a romin's test_set property value
Function: Takes a romin's test_set property, containing nested lists of tests, and converts it to a single unnested list of tests.

format_quiz

Call: $g.pop_quiz_tutor:format_quiz(goal, quiz_data_list)
Called By: Pop quiz Tutor (#1437):give_quiz
Return Value: {quiz guestion, quiz answer}
Args: goal - explorer's geology goal
quiz_data_list - {test type, test instrument, test result}
Function: Given an explores goal and a test from its test_set property, generate a formated pop quiz question.

give_quiz

Call: $g.pop_quiz_tutor:give_quiz(explorer, quiz_list)
Called By: Pop Quiz Tutor (#1437):visit_player
Return Value: history_msg
Args: explorer - game player
quiz_list - list of all possible quizes for an explorer's current goal
Function: Administers a pop quiz to an explore that is based on their current geology goal.

quized_this_goal

Call: $g.pop_quiz_tutor:quized_this_goal(explorer)
Called By: Pop Quiz Tutor (#1437):inform_tutor
Return Value: a list of quizes already administered for an explorers current goal
Args: explorer - game player
Function: Returns a list of quizes that have already been given to an explorer for their current geology goal.

quized_this_session

Call: $g.pop_quiz_tutor:quized_this_session(explorer)
Called By: Pop Quiz Tutor (#1437):inform_tutor
Return Value: Quized this login session ? TRUE : FALSE
Args: explorer - game player
Function: Returns true if an explorer has already been quized for their current goal this login session.

quizes_for_goal

Call: $g.pop_quiz_tutor:quizes_for_goal(goal)
Called By: Pop Quiz Tutor (#1437):inform_tutor
Return Value: a list of all possible quizes for a geology goal
Args: goal - explorer's geology goal
Function: Returns a list of all possible quizes for a given goal. Quizes are based on a goal's test_set property.

visit_player

Call: $g.pop_quiz_tutor:visit_player(explorer, {quiz_list})
Called By: Pop Quiz Tutor (#1437):inform_tutor
Return Value: Visit Successful ? TURE : FALSE
Args: explorer - game player
quiz_list - a list of possible quizes to administer to an explorer
Function: Move the tutor to the explorers location and administer a pop quiz based on the explorer's current geology goal.

Award Presenter (#1436)

The awards guide is called by the assign_goal verb whenever a specific set of goals have been accomplished by an explorer. The tutor checks to see if the explorer has previously received an award for completing the specific set of goals. If the explorer has not already received said award, the tutor visits the explorer and presents them with an award for their accomplishment.

Verbs:

inform_tutor

Call: $g.award_guide:inform_tutor(explorer, award)
Called By: --
Return Value: --
Args: explorer - game player
award -
Function: --

visit_player

Call: $g.award_guide:visit_player(explorer, award)
Called By: --
Return Value: --
Args: explorer - game player
award -
Function: --

Top of page
Related agents: Planet Oit Lab Guides