Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 18, 2022
Last Modified: January 01, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's version of the Balloon Popping Task, an Extinction Learning Task described by Semmelmann et al (2016) for young children. Extinction learning refers to the decrease in a behavior after a period of non-reinforcement.
Note the script runs with proportional sizing by default. Researchers can select to run the task with an absolute screen size to ensure that distances stay the same across devices. See section Defaults for more info.
The task was used for children ages 1-3 (and adults as a control group).
Semmelmann et al (2016).U Can Touch This: How Tablets Can Be Used to Study Cognitive Development . Frontiers in Psychology, 7 URL=https://www.frontiersin.org/article/10.3389/fpsyg.2016.01021 DOI=10.3389/fpsyg.2016.01021
5 minutes
The Balloon Popping Task runs in 3 stages:
1. Acquisition Stage: The screen shows a blue sky with clouds. 2-6 balloons of 2 different colors (e.g. red and yellow) fly from the bottom of the screen to the top. Participants are encouraged to pop as many balloons as they can. Whenever a balloon is touched, the balloon is popped and a new balloon appears on screen. At the acquisiton stage, participants can pop any colored balloon. By default the Acquisition Stage takes 1.5 minutes
2.Extinction Stage: The screen changes to an evening sky. 2-6 balloons of 2 different colors (e.g. red and yellow, same as during acquisition) fly from the bottom of the screen to the top. Participants are encouraged to pop as many balloons as they can. Whenever a balloon is touched, the balloon is popped and a new balloon appears on screen. During the extinction stage, participants can pop only balloons of one color (randomly decided). By default the Extinction Stage takes 1.5 minutes
3. Renewal Stage => same as Acquisition Stage The screen shows a blue sky with clouds (same as during acquisition). 2-6 balloons of 2 different colors (e.g. red and yellow, same as during acquisition) fly from the bottom of the screen to the top. Participants are encouraged to pop as many balloons as they can. Whenever a balloon is touched, the balloon is popped and a new balloon appears on screen. At the acquisiton stage, participants can pop any colored balloon. By default the Renewal Stage takes 1.5 minutes
(1) Intro with option practice
Optional Practice: presents one balloon of a color not used during the actual task (purple).
The balloon flies from the bottom to top on a sky not used during the actual task
(same speed as used during the task).
Participants get 10s (editable parameter) to practice popping the flying balloon
(over and over again)
(2) Phase1: Acquisition Stage (blue sky with some clouds)
2-6 balloons (editable parameter) of two randomly selected colors
(e.g. red and green out of four possible: green, red, blue, yellow)
fly from the bottom to the top of the screen at a speed of 1/50 mm/ms (editable value).
The two colors are assigned randomly WITHOUT replacement for each balloon
(reset after 2 color assignments).
Participants get 90s (editable parameter) to pop as many of the flying balloons as they can.
Participants can pop balloons of any color.
Balloons are replaced if they are
a) popped
b) reached the screen top
In that case, a new balloon flies in from the bottom (color randomly determined WITHOUT
replacement).
=> half of the replaced balloons are color1 (color2)
(3) Phase2: Extinction Stage (evening sky with some clouds)
2-6 balloons (editable parameter) of two randomly selected colors (same colors as during phase1)
fly from the bottom to the top of the screen at a speed of 1/50 mm/ms (editable value).
The two colors are assigned randomly WITHOUT replacement for each balloon
(reset after 2 color assignments).
Participants get 90s (editable parameter) to pop as many of the flying balloons as they can.
Participants can only pop balloons of a randomly selected color.
Balloons are replaced if they are
a) popped
b) reached the screen top
In that case, a new balloon flies in from the bottom (color randomly determined WITHOUT
replacement).
=> half of the replaced balloons are color1 (color2)
(3) Phase3: Renewal Stage (blue sky with some clouds - same as during phase1)
2-6 balloons (editable parameter) of two randomly selected colors (same colors as during phase1)
fly from the bottom to the top of the screen at a speed of 1/50 mm/ms (editable value).
The two colors are assigned randomly WITHOUT replacement for each balloon
(reset after 2 color assignments).
Participants get 90s (editable parameter) to pop as many of the flying balloons as they can.
Participants can pop balloons of any color.
Balloons are replaced if they are
a) popped
b) reached the screen top
In that case, a new balloon flies in from the bottom (color randomly determined WITHOUT
replacement).
=> half of the replaced balloons are color1 (color2)
provided by Millisecond - can be edited under section 'Editable Stimuli'
images taken from: https://pixabay.com/images/ (free to use for commercial use - no attribution required)
applause sound taken from: https://freesound.org/ (Creative Commons license)
provided by Millisecond - can be edited in script 'balloonpoppingtask_instructions_inc.iqjs'.
The instructions are not original to Semmelmann et al (2016)
File Name: balloonpoppingtask_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| startDate | Date the session was run |
| startTime | Time the session was run |
| subjectId | Participant ID |
| groupId | Group number |
| sessionId | Session number |
| elapsedTime | Session duration in ms |
| completed | 0 = Test was not completed 1 = Test was completed |
| canvasHeightMM | The width of the play area in mm |
| canvasWidthMM | The height of the play area in mm |
| numberBalloonsOnScreen | The number of balloons to fly across the screen (parameter) |
| balloonTravelDurationMS | The basic time (in ms) it should take a balloon starting from 100% bottom to 0% top of canvas (parameter) |
| balloonSpeedMMPerMS | The calculated speed of a balloon in mm/ms depending on canvas size the speed might differ to keep the balloon travel duration constant across monitors |
| firstBalloonNumber | Stores the first balloon itemnumber selected for the task |
| secondBalloonNumber | Stores the second balloon itemnumber selected for the task |
| targetColor | Stores the randomly assigned target itemnumber ('color') |
| propTargetColorPhase1 | Overall proportion of target color balloons touched (exploded) during phase1 |
| propTargetColorPhase2 | Overall proportion of target color balloons touched (unexploded) during phase2 |
| propTargetColorPhase3 | Overall proportion of target color balloons touched (exploded) during phase3 |
| phase1T1C1 | Number of balloons of color1 popped during timeinterval t1 during phase1 (phase1 = acquisition) |
| phase1T1C2 | Number of balloons of color2 popped during timeinterval t1 during phase1 |
| phase1T2C1 | Number of balloons of color1 popped during timeinterval t2 during phase1 |
| phase1T2C2 | Number of balloons of color2 popped during timeinterval t2 during phase1 |
| phase1T3C1 | Number of balloons of color1 popped during timeinterval t3 during phase1 |
| phase1T3C2 | Number of balloons of color2 popped during timeinterval t3 during phase1 |
| phase2T1C1 | Number of balloons of color1 popped during timeinterval t1 during phase2 (phase2 = extinction) color1 = target color (the color that is unpoppable during stage2) |
| phase2T1C2 | Number of balloons of color2 popped during timeinterval t1 during phase2 |
| phase2T2C1 | Number of balloons of color1 popped during timeinterval t2 during phase2 |
| phase2T2C2 | Number of balloons of color2 popped during timeinterval t2 during phase2 |
| phase2T3C1 | Number of balloons of color1 popped during timeinterval t3 during phase2 |
| phase2T3C2 | Number of balloons of color2 popped during timeinterval t3 during phase2 |
| phase3T1C1 | Number of balloons of color1 popped during timeinterval t1 during phase3 (phase3 = renewal) |
| phase3T1C2 | Number of balloons of color2 popped during timeinterval t1 during phase3 |
| phase3T2C1 | Number of balloons of color1 popped during timeinterval t2 during phase3 |
| phase3T2C2 | Number of balloons of color2 popped during timeinterval t2 during phase3 |
| phase3T3C1 | Number of balloons of color1 popped during timeinterval t3 during phase3 |
| phase3T3C2 | Number of balloons of color2 popped during timeinterval t3 during phase3 |
File Name: balloonpoppingtask_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| canvasHeightMM | The width of the play area in mm |
| canvasWidthMM | The height of the play area in mm numberBalloonsOnScreen: the number of balloons to fly across the screen (parameter) |
| balloonTravelDurationMS | The basic time (in ms) it should take a balloon starting from 100% bottom to 0% top of canvas (parameter) |
| balloonSpeedMMPerMS | The calculated speed of a balloon in mm/ms depending on canvas size the speed might differ to keep the balloon travel duration constant across monitors |
| trialcode | The name of the currently recorded trial (built-in Inquisit variable) |
| trialnum | The number of the currently recorded trial (built-in Inquisit variable) trialnum is a built-in Inquisit variable; it counts all trials run even those that do not store data to the data file. |
| response | The response of participant (which balloon was touched) |
| correct | 1 = correct response; 0 = otherwise |
| latency | Response latency (in ms); measured from: onset of trial |
| firstBalloonNumber | Stores the first balloon itemnumber selected for the task |
| secondBalloonNumber | Stores the second balloon itemnumber selected for the task |
| targetColor | Stores the randomly assigned target itemnumber ('color') |
| balloon1 | Stores the itemnumber of the balloon image to use for balloon1 |
| balloon2 | Stores the itemnumber of the balloon image to use for balloon2 |
| balloon3 | Stores the itemnumber of the balloon image to use for balloon3 |
| balloon4 | Stores the itemnumber of the balloon image to use for balloon4 |
| balloon5 | Stores the itemnumber of the balloon image to use for balloon5 |
| balloon6 | Stores the itemnumber of the balloon image to use for balloon6 the numbering does not refer to the track that balloon is flying in the numbering is simply used to distinguish between 6 possible balloons |
| adjust | Stores the balloon number of the balloon that needs to be adjusted next (either if it was popped OR if it reached the top first) '-1' => used during phase2 if a balloon was touched that should not explode, in this case, the trial ends as if it had popped but not adjustments are made to the balloon |
| t1C1 | Stores the number of times that a color1 balloon was touched during time period t1 (0-30s) |
| t1C2 | Stores the number of times that a color2 balloon was touched during time period t1 (0-30s) |
| t2C1 | Stores the number of times that a color1 balloon was touched during time period t2 (30-60s) |
| t2C2 | Stores the number of times that a color2 balloon was touched during time period t2 (30-60s) |
| t3C1 | Stores the number of times that a color1 balloon was touched during time period t3 (60-90s) |
| t3C2 | Stores the number of times that a color2 balloon was touched during time period t3 (60-90s) |
| t1 | Marks the end of time period t1 (in scriptelapsedtime) |
| t2 | Marks the end of time period t2 (in scriptelapsedtime) |
| script.elapsedTime | Measures the time the script has been running from beginning |
| trialTimeout | Stores the current trialtimeout (in ms) => if no balloon is popped, the trial should end after this time because that means a balloon has reached the top |
| balloon1Duration | The current duration (in ms) that balloon1 should be flying |
| balloon2Duration | The current duration (in ms) that balloon2 should be flying |
| balloon3Duration | The current duration (in ms) that balloon3 should be on screen |
| balloon4Duration | The current duration (in ms) that balloon4 should be on screen |
| balloon5Duration | The current duration (in ms) that balloon5 should be on screen |
| balloon6Duration | The current duration (in ms) that balloon6 should be on screen |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
| runAdjustmentRoutine | True: at script onset the script runs a procedure that allows test administrators to adjust a) the number of balloons on screen b) the balloon travel time across the screen false: adjustment procedure is not run | true |
| skipPractice | False: the script runs a practice session (can be repeated) true: no practice phase is run | false |
| numberBalloonsOnScreen | Suggested: 2,4,6 (to show the same number of balloons of both colors) Range: 2-6 if parameters.runAdjustmentRoutine = true, this number can be adjusted after the practice (if practice is run) | 6 |
Timing Parameters |
||
| practiceDuration | The duration (in ms) of the optional practice | 10000 |
| phase1Duration | The duration (in ms) of the acquisition stage (phase1) | 90000 |
| phase2Duration | The duration (in ms) of the extinction stage (phase2) | 90000 |
| phase3Duration | The duration (in ms) of the renewal stage (phase3) | 90000 |
| balloonTravelDurationMS | The time (in ms) that a balloon takes to travel from bottom to top of screen the balloonTravelDuration is kept constant across differently sized monitors to allow each participant the same time to pop balloons on the screen | 7000 |
Color Parameter |
||
| canvasColor | Display color of the actively used portion of the screen (the 'canvas') if set to a color other than the screenColor, you can distinguish the active canvas from the inactive portion of the screen | black |
| screenColor | Color of the screen not used by the canvas ('inactive screen') | black |
| defaultTextColor | Default color of text items | white |
Sizing Parameters |
||
| balloonSizePct | Proportional height of the image file (not the balloon) | 30% |