We already have a score reel component, but it's very simplistic. In fact, a lot more is going on in a score reel, and the goal of this issue is to specify it and find a solution to implement it in VPE, as well as expose it through Visual Scripting.
Single Point vs Multi Point
We call single point scoring when a reel only advances by one position. It doesn't matter which reel, so a score changing from 0 to 100 or from 0 to 1000 is both called single point scoring. If multiple reels change one position at the same time (e.g. from 0900 to 1000), we also call single point scoring.
Direct Switch vs Motor-Driven Switches
Moving a reel to the next position is done through a coil. For single scoring elements on the playfield, a switch triggers the appropriate coil directly. For multi scoring, a motor activates the switches.

Please check this excellent website to understand how score motors work.
Blocking
While the motor is running, it blocks additional points during that time. For example, if the score goes from 0 to 500, and while the motor is moving the hundreds from 0 to 5, another 100 is scored, that 100 is discarded. If however a single point is scored on another reel (for example, a 10), it might be accepted (but a 50 wouldn't be accepted since the motor is busy moving the hundreds from 0 to 500).
Resetting
Resetting starts the score motor, pulses the reels until 0 is reached on all, then turns off the score motor. For example, a score of 2041 would cause the following sequence: 3052, 4063, 5074, 6085, 7096, 8007, 9008, 9, 0.
No more than two score banks can be reset a time. On a 4 player game, one and two will reset, followed by three and four.
Side effects
The motor status is globally of interest, since some tables like Volley turn off the bumper and insert lights while the motor is running.
VPE Approach
We want to provide a simple way for creators to do score-reel scoring, but we also want more advanced creators give the possibility to accurately simulate a score reel with a score motor.
The simple way is just adding a number to the score and sending the score to the display. The display (in our case, the score reels, but the same would apply to a segment display as well) would thus receive an integer value and doe what it needs to do autonomously.
For the accurate way, we'll provide a Score Motor Component. This component comes with a (pulse) coil input to turn the motor on, and a configurable number of switch outputs. Inside the component, one can configure how the score motor is set up, i.e. how many cams it features, and the pulse patterns for each switch. (It might be easier to assign a pattern to each switch, instead of cams and the position of the switches on each cam.)
Then, our ScoreReelComponent would become a ICoilDeviceComponent that takes in a coil input which moves the reel to the next position (it might be better to make ScoreReelDisplayComponent a ICoilDeviceComponent, since that would allow easier tracking of the score).
So for advanced mode, one would add the new ScoreMotorComponent, link its switch outputs to the coil inputs of the ScoreREelDisplayComponent through the wire manager, and use the reel- and motor switches in the GLE to update the score, instead of an integer.
We already have a score reel component, but it's very simplistic. In fact, a lot more is going on in a score reel, and the goal of this issue is to specify it and find a solution to implement it in VPE, as well as expose it through Visual Scripting.
Single Point vs Multi Point
We call single point scoring when a reel only advances by one position. It doesn't matter which reel, so a score changing from 0 to 100 or from 0 to 1000 is both called single point scoring. If multiple reels change one position at the same time (e.g. from 0900 to 1000), we also call single point scoring.
Direct Switch vs Motor-Driven Switches
Moving a reel to the next position is done through a coil. For single scoring elements on the playfield, a switch triggers the appropriate coil directly. For multi scoring, a motor activates the switches.
Please check this excellent website to understand how score motors work.
Blocking
While the motor is running, it blocks additional points during that time. For example, if the score goes from 0 to 500, and while the motor is moving the hundreds from 0 to 5, another 100 is scored, that 100 is discarded. If however a single point is scored on another reel (for example, a 10), it might be accepted (but a 50 wouldn't be accepted since the motor is busy moving the hundreds from 0 to 500).
Resetting
Resetting starts the score motor, pulses the reels until 0 is reached on all, then turns off the score motor. For example, a score of 2041 would cause the following sequence: 3052, 4063, 5074, 6085, 7096, 8007, 9008, 9, 0.
No more than two score banks can be reset a time. On a 4 player game, one and two will reset, followed by three and four.
Side effects
The motor status is globally of interest, since some tables like Volley turn off the bumper and insert lights while the motor is running.
VPE Approach
We want to provide a simple way for creators to do score-reel scoring, but we also want more advanced creators give the possibility to accurately simulate a score reel with a score motor.
The simple way is just adding a number to the score and sending the score to the display. The display (in our case, the score reels, but the same would apply to a segment display as well) would thus receive an integer value and doe what it needs to do autonomously.
For the accurate way, we'll provide a Score Motor Component. This component comes with a (pulse) coil input to turn the motor on, and a configurable number of switch outputs. Inside the component, one can configure how the score motor is set up, i.e. how many cams it features, and the pulse patterns for each switch. (It might be easier to assign a pattern to each switch, instead of cams and the position of the switches on each cam.)
Then, our
ScoreReelComponentwould become aICoilDeviceComponentthat takes in a coil input which moves the reel to the next position (it might be better to makeScoreReelDisplayComponentaICoilDeviceComponent, since that would allow easier tracking of the score).So for advanced mode, one would add the new
ScoreMotorComponent, link its switch outputs to the coil inputs of theScoreREelDisplayComponentthrough the wire manager, and use the reel- and motor switches in the GLE to update the score, instead of an integer.