In-depth exploration of the Branch aware functionality (Quiz Preferences) which results in dynamic quizzing system variables. Example movie included, using shared action, advanced actions (including loop) and multistate objects
Branch aware feature appeared with Captivate 6. I created a blog post to explain it, but I regularly meet users who are still unaware of its existence, or its possibilities. So I decided to refurbish that old post, and create a new example movie with CP2019. You have seen a first version of that movie in my recent post about localisation with CSV import. That post discusses the workflow to create quiz slides in different languages in the same project. The example did use the Branch aware feature, but some of the features were not fully localised: the score slide was the default score slide which is in English since I am using a version in that tongue.
In this post I will also talk a lot about the quizzing system variables. If you didn’t download my explanatory table yet, please do so. You’ll find a link in this blog post: Creative with Quizzing variables.
What is Branch Aware?
Look at the Advanced Interaction panel of the example movie. It gives you a lot of information, not only about the events and the triggered actions, but also about all scored objects, including question slides.
You see that the total score is set at 60 points, result of the 9 graded questions in the file. For each of those graded slides both the individual score and the penalty are shown. There are also 3 Survey slides, without a score. Those values are also stored in quizzing system variables:
- Total score in cpQuizInfoTotalQuizPoints
- Score per question in cpQuizInfoPointsPerQuestionSlide (reusable variable)
- Penalty per question in cpQuizInfoNegativePointsOnCurrentQuestionSlide (reusable variable)
If you don’t activate the option ‘Branch Aware in Quiz Preferencesn Settings (see screenshot later on), the default score slide will show 60 as maximum score. If the learner takes only one branch (language) of the quiz, the percentage (cpInfoPercentage) will be calculated as the obtained score (cpQuizInfoPointsscored) divided by that maximum score of 60. Same with the number of correct answers and total number of answers. This means the learner would be very confused, and never succeeds in that case. Reason is that those system variables are fixed when the course starts, I label them as being ‘static’.
When turning on Branch Aware, the system variables become ‘dynamic’, they will be changed on runtime based on the branch, thse slides visited by the learner. In this example movie that has been my choice: if the learner succeeds in one branch (maybe Dutch) the maximum possible score will be changed to 20, the percentage will be calculated with that maximum and the obtained score and the learner will see correct data on the score slide, can reach the passing score. No problem if a trilingual learner did visit the three branches, since the variables are dynamic, he will be judged on the maximum score of 60. This is the setup of Quiz Preferences, Setting for the example movie:
The project has 16 slides: Title slide, Dashboard slide, 3 groups each with 4 questions, the default score slide and a custom score slide. This is the Filmstrip, I expanded the group ‘Dutch questions’:
Dashboard slide (slide 2)
I will not explain the effects on the dashboard slide, where I used a loop action (While) triggered by the On Enter event.
I created a user variable v_all The four buttons on this slide trigger a shared action which has two parameters: which value has to be assigned to the variable (1=All, E=English, D=Dutch, F=French) and the slide to jump to. Here is the instance for the button ‘Nederlands’ (Dutch):
Start slide of question groups Dutch/French
On all quiz slides a shape is displayed with info about the obtained score and correct answers so far. That shape, labeled SS_Info is a multistate object. In the Normal state the English version is displayed, there are two more states: Dutch and French. Switching to the appropriate state is done with the On Enter event of the start slide of the Dutch and the French group. It is a simple action:
Because the project is pure linear, and there is no opportunity to go back, this setup is sufficient.
Last slide of each group (Survey slide)
The event ‘After Survey’ is used to navigate to the appropriate score slide. For the learners who did take the three branches, the default score slide (ScoreDefault = slide 15) is used, for the others the custom score slide 16. The same advanced action ‘LastAct’ can be used for the last slide in each group. If that last slide was a normal quiz slide, not a Survey slide, the same action could be used but for both Success and Last Attempt events.
Custom Score slide (16)
On this slide I used several multistate objects: where I added two states (Dutch/French) to the Normal state which has the English text. The On Enter event of this slide is used to trigger this action which will take care of showing the correct language information, and of the appearance of the Tropy image if the learner has passed.
One warning: the maximum score on the custom score slide is not created by using a system variable, but typed in (can also be calculated, as I explained in an older post about intermediate score slides). The variable cpQuizInfoTotalQuizPoints will not have changed from the original 60 points which took into account all quiz slides. It is strange because cpInfoPercentage where that maximum score is used, is correctly displayed as is cpQuizInfoPointsscored.
I know that more improvements are possible, but blog post is already pretty long. If you really want to show a custom progress indicator on the quiz slides, maybe you’ll find some inspiration in this old post.
If you allow backwards navigation, even give the opportunity to choose another branch on the dashboard, there will be some more editing needed. This article was meant to explain what happens when using the Branch Aware feature. Hope it helps some people.