This is great! I was in the midst of ideating a Simon-esque game as well (as a standalone game but also to pair with my Battle Balloons game to broaden gameplay). I was trying to understand & combine aspects of the old disco-simon and Hot Cold Puzzle game already, so I dove into SimonV3 too.
I couldn’t get gameplay going. Maybe this is a misunderstanding on my part of how to initiate or maybe it’s a bug in gameLoop(). I expected that 2x clicking the first Blink in the row would change all Blinks to a solid color, then 2x clicking the last Blink in the row would start the game.
Here’s a consolidated run of my test process - hoping it helps until you get your hands on your own set:
1. I loaded SimonV3 onto a Blink (referred to as Simon1, in far left position in line of Blinks)
2. All Blinks show rainbow color wheel
3. 2x click Simon1
a. Nothing seems to happen
4. 2x click next Blink in line
a. It turns yellow
5. 2x click Simon1 again
a. No change
6. 2x click each Blink in row individually
a. Each changes to different colors following pattern yellow-blue-green-orange-purple
b. I cannot get the first Blink (Simon1) or last Blink in the row to change from rainbow wheel
7. 2x click Simon1 and final Blink in row in attempt to start
a. Nothing happens
8. Removed the 2 rainbow wheel Blinks from start and end of row leaving only solid colored Blinks
9. 2x clicking each of them attempting to start game
a. Doesn’t seem to do anything
10. Long pressing a solid colored Blink
a. Resets it back to rainbow wheel
I ran through a few iterations of resetting then Learning SimonV3 to find a pattern for what happens when 2x clicking Blinks in order in the row. Simon1 is at far left, then # of total Blinks in row is outlined below. It takes ~4 secs to change color after the 2x click.
Changing first Blink to Red color doesn’t work, so I think there’s a tweak needed in the installLoop() near:
…
if ( !isValueReceivedOnFaceExpired( f ) ) {
byte neighborGameState(getLastValueReceivedOnFace(f));
numNeighbors++;
if (numNeighbors == 1 && buttonDoubleClicked()) {
gameState = R;
}
…
-Pattern Validation-
Simon1 - no change (stayed rainbow)
2 - yellow
3 - blue
4 - green
5 - orange
6 - purple
7 - no change
8 - yellow
Simon1 - no change
2 - yellow
3 - blue
4 - green
5 - orange
6 - purple
7 - no change
Simon1 - no change
2 - yellow
3 - blue
4 - green
5 - orange
6 - no change
Simon1 - no change
2 - yellow
3 - blue
4 - green
5 - none
Simon1 - no change
2 - yellow
3 - blue
4 - no change
Simon1 - no change
2 - yellow
3 - no change
Something about the communication gets messed up for a Blink once it Learns SimonV3. Once they learned SimonV3, I could no longer 3sec press to enter Teaching mode. Also, when clustered the Blinks could not learn other stable games (Fracture for example). These Blinks that Learned Simon could only learn a stable working game from a Blink that is set to a game besides SimonV3 one at a time. I uncoupled the cluster so each was a lone Blink and re-Taught Fracture & other games to them individually. Then I re-Taught Simon from the Simon1.
I also found out removing the battery to reset the Blink to it’s storage game works too. Then the Blink can re-Learn SimonV3.
When building SimonV3 to a Blink I get an error: “Low memory available, stability problems may occur.”
Maybe this has to do with slightly “bricking” Blinks so they cannot enter Teach mode or learn in a cluster. The final Blink in the row (furthest right that stays in rainbow wheel each time) cannot learn even 1:1 so popping the battery is the only way I found to reset and re-Learn.