Copy link to clipboard
Copied
I've got an idea for a training game in Captivate, but it requires randomly selecting scenarios that could be 3-5 slides long meaning random questions are not going to work. I've searched the forum for ideas on random branching but can't find anything useful (although a few calls for this feature to be added to Captivate).
One solution I'm thinking of is to have the first slide of the scenario as a question slide in a pool, triggered from a random question slide. The question would then jump to the next slide in the scenario, which would be in the timeline. The scenario would continue from there sequentially, with the last slide in the series being another random question slide, starting the process off for the next scenario. I've included a rough diagram below to show what I'm thinking.
I haven't tested this out yet, but think it should work (although I could potentially end up with 100+ scenarios).
Does anyone have any better ideas on how to achieve this? Or any suggestions for improvements to what I'm proposing?
Thanks
Alistar
Update: I've tested the above, and it works pretty well, except if the third question in the pool is randomly selected by Captivate then only that scenario plays through, as there is nothing after that to redirect the project back to the question pool. I'm wondering if a variable on each question to indicate if it's been selected would work, with an advanced action that checks and redirects to a random question slide if there haven't been enough scenarios selected (say if 3 scenarios haven't been completed), or skips the random question if enough have been done?
Copy link to clipboard
Copied
Hello,
Sounds interesting and would like to help you out with the advanced actions, but I'm not sure to understand the work flow totally.
Lilybiri
Copy link to clipboard
Copied
I'm also not exactly sure what the final result should be, but I'd be tempted to go either Lilybiri's way (Advanced Actions are cool!) or experiment with JavaScript (I'm new to programming, and everything looks like a JavaScript problem at the moment!).
Or perhaps a combination- some JavaScript to create random numbers, and Advanced Actions to handle jumping to the proper slides and keeping track of where in the random number sequence you are...
A few questions:
Copy link to clipboard
Copied
Thanks for the responses - here's a bit more information (I've also put together a test project to check whether a basic version would work with branching - I'm happy to share it if it helps).
The game is based around products and is a way of teaching and reinforcing product knowledge for sales staff (essentially learning features of products then matching to customers). I would see each product having a number of scenarios (perhaps 10-20) that would be selected randomly as the learner uses the game. There would be no need to bookmark, as I'd want them to start the game again each time they went into it - I was thinking it would be time limited though (probably 5-10 minutes).
The learner would be assigned points based on correct selection of products (and maybe also correct questioning to determine the customer needs). The total points would be reported back to our LMS when the time is up and used to run reports that we can present as leaderboards across the company.
What I need Captivate to do is to continue assigning scenarios until the time runs out (I think this could be achieved by just having more slides than would ever be possible to get through in the time limit).
If each scenario was going to be a single slide I think it could be done easily using random question slides. The problem is that the scenarios may end up being several slides long, so a random question slide can only work as the first slide of the scenario, then it has to jump to the rest of the scenario.
I've downloaded your method for randomizing slides ElaKat, and I'll work through it today (with my basic knowledge of JS) and see if would work in this scenario.
I'm not even sure that Captivate is going to be the best tool to create this, but I figure since I already know and have Captivate it's a good place to start.
Thanks
Alistar
Copy link to clipboard
Copied
What I need Captivate to do is to continue assigning scenarios until the time runs out (I think this could be achieved by just having more slides than would ever be possible to get through in the time limit).
That seems like a reasonable way of doing it.
A few notes on my JS, to help you if you go that direction:
If I were adapting the code to your scenario, I'd create all the scenarios, grouping each individual one so that I could see them easily. Then I'd take note of the slide numbers of the first slide of each scenario--these are the numbers you need to randomize.
So if you had three scenarios, and scenario 1 was slides [2,3,4], scenario 2 was slides [5,6], and scenario 3 was slides [7,8,9], the important numbers are 2, 5, and 7. They are what will go into your array which you define in JS and then randomize.
Anyway, I could keep going, but for now I'll just paste the parts of my code relevant to your issue, stripping out the extra stuff (still in 5.5 syntax, mind you):
var objCP = document.Captivate;
var randomNumbers = [put your first slide numbers here];
var scenario = 0;
var shuffle = function(array) {
var m = array.length, t, j;
while (m) {
j = Math.floor(Math.random() * m--);
t = array;
array= array ;
array= t;
}
};
shuffle(randomNumbers);
var jumpSlide = function() {
objCP.cpEISetValue('cpCmndGotoSlide', randomNumbers[scenario]-1);
scenario++;
};
I'd put the majority on the first slide (or call it on the first slide), and then call jumpSlide();
each time you want to jump to a new random scenario (the first time, and at the end of the final slide in a scenario).
Copy link to clipboard
Copied
Thanks!
That makes it seem a lot more doable than what I was picturing in my head (thousands of advanced actions, questions pools everywhere, dozens of random question slides dotted throughout the module...).
Now to have a play and see what I can come up with.
Copy link to clipboard
Copied
Hi,
I have a similar problem which I have found a messy fix for. I have 5 scenarios that I want to assess user competence on. These scenarios are system simulation screens, and each is between 7-10 slides. The way I had planned is that the learner would always perform a specific scenario, but then they would have to do one of the remaining 4 and I wanted this presented randomly. After this second scenario the learner would hit the end of the course.
I would be grateful if you guys can take a look at my solution and suggest any more 'elegant' methods to achieve what I'm after.
Since CP6 has the branch aware setting I thought I'd try it out but hit a couple of problems - it seems that if the branches aren't recognised in the branch view of Captivate it doesn't like to score properly if you skip a chunk and carry on further down the branch. As I wanted it to be seamless for the user without them having to hit a button, I decided to use a variation on the jumpSlide code above, but this wouldn't set the project up to have proper branches.
In the end I put in a screen with buttons that linked off to the different scenarios so that Captivate had a proper branched structure to the course. I then put the random slide JS on enter to this slide so that it never displayed. This seems to have fixed the issue with scoring (although I'm still to upload to an LMS to check the scoring reports properly.
At the beginning of the project, the following is called on a slide 1 exit:
var objCP = document.Captivate;
var slideArray= [23,32,39,46];
var randomNumber;
function jumpSlide() {
randomNumber = Math.floor(Math.random()*slideArray.length);
slideNumber = slideArray[randomNumber] - 1;
objCP.cpEISetValue('m_VarHandle.cpCmndGotoSlide', slideNumber);
};
objCP.cpEISetValue('m_VarHandle.rdcmndResume', 1);
Then on Enter to slide 22 (where the buttons set up the branches) I call:
jumpSlide();
Seems to work ok, but let me know what you guys think or if you can spot any problems 🙂
Dan
Message was edited by: Daniel Finn to sort out the code tags
Copy link to clipboard
Copied
ElaKat, this works great! And I just added this to a Captivate 8 file and your code still works.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now