Release Notes 2023-1

Back to Table of Contents

New Features

Linux and Docker Support for Server Deployments

In the previous GIFT release, support for running basic GIFT operations in Linux and Docker was made available as an experimental feature that required additional manual setup to get through installation.

Since then, support for Linux and Docker has been improved to focus on allowing server deployments of GIFT like GIFT Cloud within Linux environments, particularly for features that are used by GIFT's Server mode. Setting up GIFT to work in Linux environments has been streamlined since the previous release, behaving closer to a typical Windows installation of GIFT where most of the setup is handled automatically via an install script.

Instructions on how to install GIFT for Linux, or how to set it us a Docker container, can be found on the Linux and Docker support 2023-1 wiki page. Improvements that have made to GIFT's behavior in Linux and scripting since the previous release are also outlined on this page.

Keycloak and SSO Authentication

The GIFT Dashboard has been improved to allow users to sign in using Single Sign In (SSO) credentials through Keycloak. This bypasses GIFT's usual sign-on screen and instead displays the sign on screen of a Keycloak instance that has been set up to allow SSO. Additionally, if a user is already signed into another site using a Keycloak account that has permission to access GIFT, they will be seamlessly signed into the GIFT Dashboard and skip the sign-in screen altogether.

Many of these changes support general SSO operations that aren't strictly tied to Keycloak, so support for other SSO solutions could be implemented with minor changes to GIFT's configurations and code.

A guide describing how to configure GIFT to use a specific Keycloak instance to handle SSO can be found on the Keycloak SSO Configuration wiki page.


In the previous release, GIFT added support to allow Experience Training Service Package (XTSP) files to be imported when creating a training application course object in order to create a DKF for that course object automatically. Since then, this logic has been expanded upon.

The main feature that has been introduced for XTSPs is that GIFT is now capable of writing XTSP content back to an XTSP file after it has been imported to create a DKF. If an XTSP is has been uploaded to the course, then each time the DKF is saved, the appropriate XTSP content will also be written to the uploaded XTSP file. GIFT can also be configured to write the XTSP content to a remote location by modifying the settings in GIFT/config/tools/services/, which allows GIFT to share XTSP updates with another application.

External Strategy Providers

GIFT can now be configured to share information about a training scenario with another application, called an "external strategy provider", when determining what content to display for certain strategy activities. This can allow applications outside of GIFT to display their own custom content based on many different factors within a training scenario. This allows for a bit more flexibility when displaying strategy content, on top of what is already provided by state transitions. A notable limitation of state transitions is that they can only change what strategy content is displayed based on learner state attributes, and the content that is displayed is "fixed" in the sense that it does not change once it is authored. In contrast to this, an external strategy provider could display a learner's username or an their assessment level in a specific task or concept.

An application that can provide GIFT with strategy content in this manner is referred to as an "external strategy provider". An simple example of such a provider is packaged with the release and can be found in the GIFT/scripts/devtools/exampleStrategyProvider folder.

Data from the training session is passed from GIFT to these strategy providers using an HTTP POST request that includes JSON containing the following session information:
  • Course and session metadata
  • Team members, learner role assignments, and learner usernames
  • Performance state
  • Condition assessment variables

An example of this feature in action can be seen with the new "Gunnery Engagement Exemplar - Playback" course, which can be used with the example strategy provider included with the release. A brief set of instructions needed to configure GIFT to run this course is outlined below.

Gunnery Engagement Exemplar - Playback course

To run the "Gunnery Engagement Exemplar - Playback" course, you'll need to run the example strategy provider that's bundled with the release and configure GIFT to communicate with it. To do this, follow the instructions below:
  1. Install GIFT if it has not already been installed
  2. Open <GIFT release folder>/GIFT/config/ using a text editor
  3. Search for the "ExternalStrategyProviderUrl" property within and remove the # character from the start of the line to enable using an external strategy provider
  4. Run <GIFT release folder>/GIFT/scripts/dev-tools/exampleStrategyProvider/runExampleStrategyProvider.bat to start the example strategy provider
    • Note that the example strategy provider uses port 3000 to communicate with GIFT. If you need to run another process on port 3000, you can change the port used by the example strategy provider in the nearby
  5. If GIFT already running, exit and restart GIFT

Once the above steps are complete, you can run the "Gunnery Engagement Exemplar - Playback" course using the "Take a Course" page in the GIFT Dashboard, just like most courses.

The course will initially display a series of messages explaining how to interact with the course, followed by a playback of 3 training engagements that were originally recorded using a Virtual Battle Space (VBS) scenario. In the original training used to collect these recordings, a team consisting of a Gunner, Driver, and Commander were tasked with driving a STRYKER vehicle to 3 separate locations and eliminating the targets that appeared at those locations. During the playback of these engagements, you will hear audio recordings of the interactions between the team members, and if you open Game Master, you can observe the Assessments panel to view how their performance measurements change as the course progresses. Instructions on how to view this data in Game Master are given by the introductory messages for the course.

At the end of the first two engagements, you will automatically be presented with a custom feedback message that was created using the external strategy provider and displays some of the session information that was mentioned above. An example of this data is shown in the figure below. Note that for the 3rd engagement, you will be instructed on how to manually provide assessments for 6 of the concepts using Game Master. This must be done to allow the final feedback message to be shown and then end the course, since this last engagement is meant to show off the pedagogical improvments mentioned below.


In the example given above, all of the information shown in the feedback message is live from the currently running knowledge session in GIFT. The "Condition Assessment Variables", in particular, give a detailed breakdown of all of the events that were tracked by GIFT's condition classes while performing automated assessments, such as the time that a specific target was killed or the time when the Gunnery opened fire on the targets.

If you are interested in the original recordings that were used to create this course, a series of "Gunnery Engagement Exemplar" sessions can be found in the Past Sessions page in Game Master. These contain both the audio and training application states that are played back during the "Gunnery Engagement Exemplar - Playback" course, as well as video recordings that show the perspective of the Gunnery and Driver in the VBS simulation used to create the recording.


If you are interested in how the course decides it wants to display feedback from the example strategy provider, you can open the "Gunnery Engagement Exemplar - Playback" course in the Course Creator and look at the "Prepare for Next Engagement" strategy in the Real-Time Assessment (i.e. the DKF) for each engagement course object (shown below). When you changed the file, you allowed the strategies in the course to use a new option labeled "Request from the external strategy provider using the current session state". As the label suggests, clicking the checkbox next to it will tell GIFT to reach out to an external strategy provider for the strategy content, rather than using a fixed piece of content. This option can currently be used when authoring text feedback or webpage strategy activities. An example of text feedback using an external strategy provider can be found within the "Reset Engagement" strategy. This text is shown only if the OC/T in Game Master decides to invoke the "Reset Engagement" strategy to restart the knowledge session, and it currently displays the raw JSON text that is shared with the example strategy provider.



Course Editor Improvements

Resetting Knowledge Sessions via Strategies

A new "Reset Knowledge Session" button has been added to the strategy editor in the Course Creator that, when selected, will cause the currently running knowledge session to reset back to its initial state once the strategy has finished applying its activities. This can be useful for situations where performance measurements need to be recalculated from the beginning, such as if an OC/T decides restart a scenario in a training application to return learner to their starting position. Previously, it was only possible to restart a knowledge session when displaying Remediation content to learners after they'd failed one of the course concepts being assessed, but using this button allows now sessions to be reset based on any state transition.

An example of this feature can be seen in the Gunnery Engagement Exemplar - Playback course. When viewing the running course in Game Master, the "Reset Engagement" strategy can be invoked from the Scenario Injects panel in order to restart whichever of the 3 engagements is currently being played back.


Game Master Improvements

Observing a Sequence of Knowledge Sessions during a course

Game Master has been given a few ease-of-use improvements to facilitate working with courses that contain multiple DKFs and, therefore, multiple knowledge sessions. Previously, if you were watching an active session during a course using Game Master and then that course ended the session and moved onto a different one, Game Master would always remain on the first session that was initially being watched rather than moving on to observe the next session.

Now, the Settings panel in Game Master provides a new "Auto-Advance Sessions" toggle that can be used to control whether Game Master automatically moves on to the next DKF within a course. By default, this toggle is set to ON, so Game Master will automatically move to the next engagement unless told otherwise by setting the toggle to OFF.


If this new setting is set to OFF and a new knowledge session is started by the course after the previous one ends, a notification will appear in the top-right corner of Game Master to allow to inform the observer that a new session is started. The observer can click this notification to manually move to the next knowledge session when they see fit, or they can simply dismiss this notification and remain on the knowledge session they are already viewing.


Preserving Settings

Game Master will now preserve settings from its Settings panel between visits, so users no longer need to re-apply their settings each time they visit Game Master's webpages, even if the current browser windows is closed.

This preservation also applies to what the user selected to display in Game Master's left and right panels, so rather than always returning to the Map panel upon observing a knowledge session, Game Master will attempt to return the user to whatever panels they had selected before. It's worth noting that the Videos panel is only accessible for Past sessions, so selecting that panel will not be preserved upon viewing an Active session. It's also worth noting that this preservation logic does not yet apply to volume settings in Game Master, so custom volume changes will still need to be re-applied when revisiting Game Master.

Domain Module Improvements

Detect Objects Condition

The Detect Objects condition has been improved in order to allow it to better perform assessments when learners are operating a simulated vehicle with mounted weaponry. Previously, when looking at game state data from an external application like VBS, this condition would only look at an actor in the environment to determine whether they were looking in the direction of another object to detect. This worked well for lifeforms, but for vehicles with mounted weaponry, it introduced a problem where, for example, a gunner operating a gun on a vehicle could aim that gun at the object that needed to be detected but not trigger a positive assessment because the vehicle itself was not facing the object to detect. Now, this condition checks to see if the actor that's supposed to be doing the detection is a platform (i.e. a vehicle) and, if so, also checks to see if the platform has any articulated parts, such as a turret, that are aimed at the objects to detect.

An example of this feature in action can be seen in the Gunnery Engagement Exemplar - Playback course, in which all three DKF contain a detect objects condition. By watching this course in Game Master, you can observe the "Detect targets while mounted" task change assessments based on the the orientation of a mounted gun on a vehicle. Additionally, you can visit the Past Sessions page in Game Master to view past recordings of all 3 engagements in this course, which includes videos showcasing the perspective of the gunner operating the mounted gun.


Skipping the Team Lobby between training sessions

Previously, if a course contained multiple training application course objects that assessed a team of users, learners would need to re-select their roles on a team lobby screen in between each course object, even if all of those course objects used the same training application scenario and the same team roles. Now, if two training application course objects use the same team roles, those team roles will be preserved and will be used to move to the next course object automatically without returning the learners to the team lobby. This allows groups of learners to move seamlessly between knowledge sessions when taking a course that involves multiple DKFs.

Pedagogical Improvements

State transitions with multiple criteria

When editing a real-time assessment for a training application course object, the course creator gives the author the option to create state transitions that can specify multiple criteria under which an instructional strategy would be invoked. For example, a state transition could specify that a feedback message should only appear when an OC/T provides a manual assessment of 3 concepts, "Concept A", "Concept B", and "Concept C". With the previous pedagogical logic that supported state transitions, triggering the feedback message would be inconsistent, since it basically required these criteria to all be met in a specific order in order for the transition to happen.

An example of this feature can be seen in the Gunnery Engagement Exemplar - Playback course, in which the 3rd DKF requires an OC/T to provide assessments in 6 different concepts in order to to complete the course.


  • GIFT's Log4J library has been updated to version 2.20.0, and it's ActiveMQ library has been updated to 5.18.3. This change mainly impacts developers and will be largely unnoticed by most users.
  • Game Master has received a number of performance improvements to allow sessions to load faster, particularly past sessions containing video files. Additionally, a bug was fixed where Game Master would disconnect from the server if it took too long to render a session's UI elements for the first time.
  • Fixed a problem where the Active Sessions list in Game Master sometimes wouldn't show an actively running session. This happened most frequently when moving back and forth between Game Master and other pages in the GIFT dashboard.
  • When editing a strategy in the course creator, tasks that reference said strategy using their start or end triggers will be listed

GIFT Docker Container.png View (53.5 KB) Roberts, Nicholas, 10/06/2023 11:55 AM

GIFT_Docker_Container.png View (53.5 KB) Roberts, Nicholas, 10/06/2023 11:57 AM

SSO_Login.PNG View (65.4 KB) Roberts, Nicholas, 10/06/2023 12:08 PM

SSO_Signed_In.PNG View (110 KB) Roberts, Nicholas, 10/06/2023 12:10 PM

Reset_Session.png View (36.8 KB) Roberts, Nicholas, 11/17/2023 11:17 AM

Auto_Advance_Sessions.png View (56.3 KB) Roberts, Nicholas, 11/17/2023 11:31 AM

Next_Session_Indicator.png View (39.2 KB) Roberts, Nicholas, 11/17/2023 11:35 AM

Detect_Objects.png View (596 KB) Roberts, Nicholas, 11/17/2023 11:46 AM

Engagement_Past_Session.png View (492 KB) Roberts, Nicholas, 11/20/2023 12:26 PM

Custom_Feedback_Example.png View (301 KB) Roberts, Nicholas, 11/20/2023 01:00 PM

Strategy_Checkbox.png View (23.8 KB) Roberts, Nicholas, 11/20/2023 01:11 PM