How to create SCORM-compliant e-learning materials

This article provides an example of creating educational materials for learningBOX using SCORM 1.2.
Please note that some examples may not work outside of learningBOX (in such cases, a cautionary statement will be included).
Please also note that this article was verified with learningBOX 2.16.14, and older versions or future releases may not give identical results.

What are SCORM materials in learningBOX?

Let's make SCORM!

With learningBOX, you can upload and use SCORM 1.2 compliant teaching materials.
(*As of learningBOX 2.16.14, uploading of SCORM archives (ZIP files) consisting of multiple SCOs is not supported. Also, please note that SCORM versions other than 1.2, such as SCORM 2004, are not supported.)

Back to Contents

Minimum SCORM materials [File Structure].

In learningBOX, if the startup file is index.html, the manifest file (imsmanifest.xml: a file showing the structure in the ZIP file) is not necessary.
Therefore, if you zip only the index.html file, it can be used as SCORM material (however, almost all LMS require the imsmanifest.xml file; QuizGenerator, CardGenerator, etc. output imsmanifest.xml for compatibility). QuizGenerator, CardGenerator, etc. output imsmanifest.xml for compatibility).

Notes on creating ZIP files

When compiling the materials into a ZIP file, please select and compress the files as follows
As in the bad example, selecting a folder and compressing it can create an extra folder hierarchy and cause trouble.
Also, on a Mac, using the OS standard ZIP archive function will save extra files.The problem of unwanted files getting mixed up! Things to keep in mind when zipping on MacPlease compress with reference to the following

API Exploration

In SCORM educational materials, when a startup file (e.g. index.html) is loaded, the SCORM API is searched.
In SCORM 1.2, the name of the API is "API".
You can always find it by searching from the iframe or frame containing the material toward the higher levels of the hierarchy.
In learningBOX 2.16 and later, the API is also provided in the preview screen of teaching materials, but the preview screen does not save grades.

SCORM05

Code Example

The API is explored with onload and can be accessed with a variable called API for educational materials.
If the API is found, API Found is displayed in the console; if not, API not Found is displayed in the console.

(Reference source) URL of gist
https://gist.github.com/ynishi2014/8d1d951966d12d49c1eee898b4bacc17

Execution example

When mounted on the learningBOX, the API for SCORM can be found, so the API is displayed as API found.

SCORM06

If you run it on a local drive, for example, the API cannot be found, so the API not found is displayed.

LMSInitialize and LMSFinish

Once the API is found, run LMSInitialize.
LMSFinish upon completion of the study.
In QuizGenerator, LMSFinish is executed at the timing of the grading result display, but in most learning materials that can be created with learningBOX, LMSFinish is executed at the timing of the onunload of the HTML of the teaching material.
Please note that you cannot send grades before executing LMSInitialize or after executing LMSFinish.

Code Example

(Reference source) URL of gist
https://gist.github.com/ynishi2014/d44930df2eddaa2f4140aab078e5e86f

Execution example

When run on a learningBOX, the following is displayed
This alone is a SCORM material, but since the learning status (cmi.core.lesson_status) is not updated, it appears that no grades are kept on the learningBOX.
This is because in learningBOX, grades with cmi.core.lesson_status browsed are treated as invalid grades.

SCORM07

SCORM materials only to be passed

In LMSSetValue, set cmi.core.lesson_status to passed.

Code Example

(Reference source) URL of gist
https://gist.github.com/ynishi2014/4eb9a00dff3ff867d51192548471a919

SCORM08

 

Transmittable Status

Values that can be sent to cmi.core.lesson_status as grades include

  • incomplete: learning
  • completed: Learned
  • Passed: Passed
  • failed: Failed
  • browsed: The message will not be displayed.

 

Behavior when not sent

If you do not send grades, the following will occur

  • Initial study: Becomes "browsed" (not displayed)
  • Second and subsequent studies: carry over the grades from the previous study.

Therefore, care should be taken when closing the course material before the grades are determined, for example, in terms of behavior.
If it is QuizGenerator, it sets browsed in cmi.core.lesson_status at the beginning, so if it closes before starting to answer, it will record a browsed and it will appear that no grades are left.

 

To check operation

Although it is best to check with the LMS you plan to use, learningBOX can be used by up to 10 people free of charge and indefinitely, making it easy to use as an environment for developing and checking the operation of SCORM teaching materials.

 

Visualize API calls

Visualization of API calls can improve development efficiency.
Due to the volume of the article, we will summarize it in a separate article.

Back to Contents

Information that can be sent within the SCORM 1.2 specification

In addition to the status (cmi.core.lesson_status) mentioned earlier, the following grades can be sent
By sending these to us, we can obtain detailed information on how the students are learning, which can be used to analyze the learning situation, provide appropriate feedback to the learners, and improve the teaching materials.

Score (cmi.core.score.raw)

Score.
In SCORM 1.2, an integer between 0 and 100 can be set in "string" format.

Example
API.LMSSetValue("cmi.core.score.raw", "100");
API.LMSSetValue("cmi.core.score.raw", score.toFixed(0));


proprietary

In the learningBOX, a score of over 100 is allowed.
For example, 105 and 400 are accepted as valid scores.
Please note, however, that negative numbers and decimals are not allowed.
In addition, scores exceeding 100 in any LMS other than learningBOX will result in an error.

Time (cmi.core.session_time)

Study hours.
In the case of learningBOX, if you execute LMSInitialize and LMSFinish, the measurements are automatically taken.
If you would like to measure more accurate study time, rather than the time between opening and closing the material, please measure and submit the time within the material.
In QuizGenerator, only the time from the start of solving a question until the result display screen appears, and in video materials, only the time when the video is playing is transmitted.
The following would result in 1 hour, 2 minutes, and 3 seconds.

Example
API.LMSSetValue("cmi.core.session_time", "01:02:03");

Information per question

This is a child entry of cmi.interactions.n.
n must be specified in order from 0.
Usage such as starting from 1, skipping numbers, or going back to a smaller number is prohibited.


ID (cmi.interactions.n.id)

ID. The grade details screen will appear as shown in the red frame in the screenshot below.
Please note, however, that negative numbers and decimals are not allowed.
If you plan to download and use grades via CSV or retrieve and use grades via API, you must specify the appropriate ID.

SCORM09


latency (cmi.interactions.n.latency)

Time required.
The grade details screen will display the following

SCORM10


correct_responses (cmi.interactions.n.correct_responses.m.pattern)

Example of a correct answer.
You can specify more than one, but it is likely that only one will be set in most cases.

SCORM11


objectives (cmi.interactions.n.objectives.m.id)

The OBJECTIVE for each question, i.e., the objective or goal to be achieved.
A value in the format s:xxx will be reflected in the chart as a section tag, and a value in the format q:xxx as a question tag.

SCORM12


student_response (cmi.interactions.n.student_response)

This is the content of the learner's solution.
Sends the entered text string, choice number, etc.

SCORM13


time (cmi.interactions.n.time)

Study hours.
The time spent on that question will be sent.

SCORM14


result (cmi.interactions.n.result)

Send correct (CORRECT) and wrong (WRONG).
You can also send neutral (neutral) or scores.

Back to Contents

Unique extensions to learningBOX

Normally, cmi.interactions.n.student_response cannot send HTML.

Send your answers in HTML

Of course, you can send HTML tags, but the results screen will display the HTML tags you sent as is.
If html is specified for cmi.interactions.n.student_response_format, the value sent to cmi.interactions.n.student_response is interpreted and displayed as HTML. However, JavaScript is restricted so that it cannot be executed.

Relaxation of Character Limitations

Start time / End time (to be supported in 2.18 or later)

This function is used to record the start and end time of the study.
It will be available in learningBOX 2.18 or later. (Scheduled for release in June 2022)

Back to Contents

Anti-pattern [excessive LMSCommit].

When LMSCommit is executed, the value set in LMSSetValue is saved.
Many LMSs do not send data to the server at LMSSetValue, but send data to the server at the time of LMSCommit.
This is because the process of sending data to the server takes a relatively long time, and the process would be time-consuming if it were communicated each time LMSSetValue is executed.
For example, if the number of questions is 100, the number of LMSSetValues per question is 6, and the communication delay is 10 ms, then 100 x 6 x 10 = 6000 ms, or 6 seconds to send grades.
LMSCommit should not be executed excessively, as communication delays can be 10 times greater when using the system from overseas.

When LMSCommit should be executed

It should be run after sending cmi.core.lesson_status or after LMSSetValue of all grades is finished.
By sending "complete" to cmi.core.lesson_status when learning has started and executing LMSCommit, the grade seen by others (teachers, administrators, etc.) will change to "learning".
After LMSSetValue of all grades is completed, LMSCommit and LMSFinish should still be executed in that order.
(*In learnngBOX, the process of sending grades is executed even if LMSCommit is not executed before LMSFinish, so LMSFinish alone is acceptable.)

No LMSFinish.

Be sure to run LMSFinish at the end.
Since the SCORM specification requires that LMSFinish must be executed, there is no guarantee of behavior if LMSFinish is not executed.

LMSSetValue without checking implementation

A SCORM 1.2 compliant LMS does not necessarily implement all of the SCORM 1.2 specifications.
The SCORM 1.2 specification (API) contains a mixture of items that must be implemented and items that are allowed without implementation.
Therefore, before executing LMSSetValue, you should make sure that the element you are trying to send is implemented.

Back to Contents

If you have any questions about how to use the system, please feel free to contact our support.

If you have any problems or questions about how to use the learningBOX, please feel free to contact us at any time.Get in touchPlease.

▼You may also like:

thumbnail (i.e. miniature image)

How to create and add a SCORM-compliant "block shuffling game

learningBOX is an LMS that supports SCORM teaching materials. In this article, we'll introduce you to a SCORM-compliant block shuffling game. learningBOX allows you to publish your own games, set up rankings, and more!

Back to Contents Back to Article List
How can we help you?