Home Page        Up one Level        Site Map        Send us mail

Supplement for: Test Engine


Overview:

The Test Engine Plug-In provides a method for automating testing procedures and recording test scores from a CD-i title.

Plug-ins required for operation:

cdi_teng - The "Test Engine" plug-in. This plug-in is responsible for the actual actions performed by the plug-in.
cdi_tecd - This plug-in is used to send commands to cdi_teng.
cdi_sv - The "String Variables" plug-in is required if using fill in the blank questions.
cdi_virt - The "Virtual Keyboard" plug-in is required if using fill in the blank questions.

MediaMogul utilities required to prepare assets:

Assets to create before using the plug-in:

The question database file is simply a text file created by any text editor, or word processor that can save files as text. The last line of the file must be blank, so make sure to enter a carriage return at the end of the last line of text. Please refer to the Test Engine Plug-In manual for details of how information is entered into the question database file.

If you have more than one section defined in the question database file, a separate datafile is created by maketest for each section.

There is a 100k size limit to datafiles created by maketest, which means a limit of approximately 200 questions per section. Additionally, there is a 128 character limit to any strings in the file, so no single line may be longer than this.

Special preparations:

No additional required.

How the plug-in works:

· The plug-in cdi_teng needs to be called in the background early in the title. It should be in a script that is branched to only once. The plug-in creates a shared data module, cdi_te_head, and an event, cdi_te.

· If you are using fill in the blank questions, you should call cdi_sv to set up string variables, then call cdi_virt to initialize the virtual keyboard. In this case, when you call cdi_teng you must specify the string variable that will be used for responses to questions.

· At the end of this script, after a branch that will always be executed, add a Br_alwys_nr (Branch Always No Return) to the include file produced by maketest. This will ensure that all the question scripts are included in your title.

· At the start of each section of questions, you need to load the datafile created by maketest for that section using a Background command, then call cdi_tecd with a parameter of LoadSect,AskQues. You should not have any commands that load assets, or any other calls, between these. When the plug-in is called, the parameter is sent to the event cdi_te, a shared data module cdi_te_ques is created, and the information in the datafile is copied to cdi_te_ques. This data module contains not only the information from the datafile, but also has room for recording responses. Then the plug-in branches to the first of the questions scripts for that section.

· The plug-in will branch to each of the question scripts that you defined in a section of your question database file in turn. Each of these scripts must have a call to cdi_tecd with a Parameter of GetResp, which is passed to cdi_teng so it knows to expect a response. Additionally, the script should have a menu with wait for the users response. Finally, the script should have another call to cdi_tecd with a parameter of AskQues to inform the plug-in to branch to the next question script for that section. The last column of the last script for a section should have a Br_alwys_nr to the script that loads the datafile for the next section.

· Questions may be asked more than once, if you wish, and a script presenting remedial information may be branched to in the event a question was answered incorrectly. Additionally, the order in which questions are presented in any section can be scrambled. Beyond that, individual questions may be removed from the list of questions to be asked.

· In addition to presenting questions and receiving responses, the plug-in can also track ionformation about the test. Information that can be tracked includes: number of questions answered correctly/incorrectly; if a particular question was answered correctly/incorrectly; number of times a question was asked (useful if you are allowing multiple attempts to answer a question correctly, and going on only after the question is either answered correctly or the maximum number of attempts is reached.) This information may be exported to a string variable. If you want to gather this type of information, it must be requested after each section is completed, and before the next section is loaded.

NOTE: The Test Engine Plug-In manual contains extensive information on using the many features of the plug-in.

Example: In the following example a simple test consisting of one section of three questions is prexsented to the user. Each question will be asked only once. Based on the results, the title branches to a script informing the user whether they passed or failed the test.

Following the scripts is an example of the question database file used to create the datafile and include script for this exanmple.

init.scr
00:00 Skip_off 00:00 Call_bg /h0/SUBROUT/cdi_teng
(Start Test Engine)
00:20 Br_always_nr /h0/SCRIPTS/load.scr
01:10 Br_always_nr /h0/SCRIPTS/incl.scr

(This branch is never executed, but is here so the include script is included in the title)

incl.scr
00:00 Br_always_nr /h0/SCRIPTS/ques1.scr
00:00 Br_always_nr /h0/SCRIPTS/ques2.scr
00:00 Br_always_nr /h0/SCRIPTS/ques3.scr

load.scr
00:00 Dissolve /h0/VIDEO/loading.dyu 00:20
00:20 Background /h0/DATA/test1.dat
(Load the datafile)
00:21 Call /h0/SUBROUT/cdi_tecd LoadSect,AskQues
(Start section and ask first question)

ques1.scr
00:00 Dissolve /h0/VIDEO/ques1fg.cl7 00:20
00:20 Background /h0/VIDEO/ques1bg.cl7
00:20 Call /h0/SUBROUT/cdi_tecd GetResp
(Alert Test Engine for response)
00:21 Wait /h0/MENUS/ques1.mnu
(Present question)
00:21 Br_always_nr /h0/SCRIPTS/next.scr

next.scr
00:00 Cut /h0/VIDEO/checkans.cl7
00:00 Call /h0/SUBROUT/cdi_tecd AskQues
(Ask next question)

ques2.scr
00:00 Dissolve /h0/VIDEO/ques2fg.cl7 00:20
00:20 Background /h0/VIDEO/ques2bg.cl7
00:20 Call /h0/SUBROUT/cdi_tecd GetResp
(Alert Test Engine for response)
00:21 Wait /h0/MENUS/ques2.mnu
(Present question)
00:21 Br_always_nr /h0/SCRIPTS/next.scr

ques3.scr
00:00 Dissolve /h0/VIDEO/ques3fg.cl7 00:20
00:20 Background /h0/VIDEO/ques3bg.cl7
00:20 Call /h0/SUBROUT/cdi_tecd GetResp
(Alert Test Engine for response)
00:21 Wait /h0/MENUS/ques3.mnu
(Present question)
00:22 Br_always_nr /h0/SCRIPTS/result.scr

result.scr
00:00 Call /h0/SUBROUT/cdi_tecd ExpNumCor
00:10 Br_ifeq_nr /h0/SCRIPTS/allright.scr Z 3
(Answered 3 correctly)
00:10 Br_ifeq_nr /h0/SCRIPTS/missed1.scr Z 2
(Answered 2 correctly)
00:10 Br_ifeq_nr /h0/SCRIPTS/missed2.scr Z 1
(Answered 1 correctly)
00:10 Br_ifeq_nr /h0/SCRIPTS/missall.scr Z 0
(Answered none correctly)

allright.scr
00:00 Dissolve /h0/VIDEO/correct.dyu 00:20
00:21 Wait
00:21 Br_always_nr /ho/SCRIPTS/load.scr

NOTE: Times in the above example are approximate.

question database file -

This is the file used to create the datafile and include file:

example.txt
; Question database file for example scripts
SECTION: 1
QUESTION: 1
TYPE: T
ANSWERS:T
SCRIPT: /h0/SCRIPTS/ques1.scr
QUESTION: 2
TYPE: T
ANSWERS: F
SCRIPT: /h0/SCRIPTS/ques2.scr
QUESTION: 3
TYPE: M
ANSWERS: C
SCRIPT: /h0/SCRIPTS/ques3.scr


Home Page        Up one Level        Site Map        Send us mail