New Game: Nothing

No problem! One other thought I had, if you had an entire cluster and implemented a check like the one I mentioned, would you want the entire cluster to go into the dead state? Or maybe just the ones that detect the new/broken connection?

1 Like

Now that I think about it you would probably just want dead states on the blinks with new/broken connections. It should still be very easily visible to see that the death state is triggered and it allows for greater flexibility since new connections or removals could still be made from blinks on the other side of the grouping since they won’t be locked in the death state.

Just as a heads up, I had changed the set value on face function to be a static value of 1. I think to implement your change you will have to change it back to be set as the game state.

1 Like

Hello again @jrcwest! Since it sounds like you were going to take a stab at implementing your proposed solution to the new/broken connection issue, I went ahead and implemented a version with the solution proposed by @Confus3d. This new version is listed as Nothing v1.4 in the Github link. I was thinking if you had time, perhaps we could compare and contrast the functionality between the two solutions.

Francisco, was the way I implemented the code in v1.4 similar to what you had envisioned?

In addition to the updated code, I went ahead and created two new games which I think really highlight the new connection identification functionality:

War of Tugs - Start the game by placing all blinks together in one group at the center of the table. All players count down together from 3. Once they get to zero everyone places one finger on the blink pile and pulls to separate as many blinks as they can to add to their pile. Players then take turns setting their own blink piles in the center of the table. Everyone then counts down again from 3 and lunges at the pile to pull away as many blinks as they can with one finger to add to their piles. Lunges must be in one continuous motion and if someone misses they do not get another chance. The player whose stack is in the center starts with their finger on the pile and can try to move it as much as they can to dodge finger lunges at the end of the countdown. A round is over when every player at the table has their turn in the center. Whoever has the most blinks after 3 rounds of play is the winner. If you ever run out of blinks before the end of the game you are eliminated. Rounds always start with the player who has the most current blinks and goes clockwise.

Tractor Pull - The goal of this game is to pull as many blinks as you can across the table without them separating. To start, players can use as many blinks as they want and any configuration that they want to build a “trailer”. After construction, the player grabs a non-trailer blink to use as a tractor. Players grab the tractor with two fingers and connect it to any point on the “trailer” that they want. Players then try to drag the “trailer” from one side of the table to the other. If at any point during the pull any of the blinks separate it is game over. The winner is the player who pulls the “trailer” with the most blinks across the table with none separating. I’m guessing that this game is probably going to require a decent amount of blinks (I’m guessing 15+) to be difficult, but it’s hard to say without being able to get a feel for the strength of the magnetic connection between blinks.

Let me know if anyone gets a chance to test either the new version, or the new games. Thanks again!

@TheGoodSire Yep, just that, pretty clever solution and pretty well executed.

In the way you implemented it, the blink will remember the number of neighbours on the dead state and keep that number for the alive state, watching any changes.

I can’t try it but for me the code looks perfect :wink:

Edit: Sorry, wrong, there is indeed a problem. Before foreachface, you should add numNeighbours = 0 to reset the counter, if you don’t add it, the number will increase every time up to infinite…
Also, line 47 is unnecessary, cause is already on the dead loop, you can delete that.
Also, setValueSentOnAllFaces(1); on line 36, I think is cleaner just to uses setValueSentOnAllFaces(blinkState);
Also, with this implementation, if you load the game on a cluster of blinks, the blinks will load on dead state cause pastNeighbors != numNeighbors will be true, but no big deal with that, cause you have 10 seconds to set up the starting position for the game.

ALSO (is the last also, i promise :upside_down_face:)
I’ve done a fork of the last version, adding the changes mentioned, changed some int to byte AND a cool implement for the first run, so blinks load the first time on ALIVE state on the cluster.
Feel free to compare it with your code and add what you need!

ALSO (I lied!!! :crazy_face:)
For me, Tractor Pull, best idea ever, i LOVE it, cause i love bridge building games, and this is like that, you have to build a strong structure!

1 Like

Hey guys,

I gave the new fixes a try, and unfortunately if the pieces are all connected, they are stuck looping in the dead state from the start. I also gave my suggestion a try and realized it doesn’t work - blinks keep track of the last received face state indefinitely, so at the start it works, but if that face continues to not see the “alive” face, it continues to fail that check and stays dead. I unfortunately dont have as much time this morning as I thought to work with blinks, but I’ll keep trying to think of solutions. If you and @Confus3d want I’ll make another recording later in the day on my lunch break (if I’m able).

Also solid ideas for new games! I’ll give them a try when I get the chance. Though I think war of tugs sounds a bit like how “Fracture” plays? I haven’t been able to play that one yet so I’m not sure.

1 Like

Hey @jrcwest just curious about my approach here, did you tried v1.4 from my fork?

I think that the looping is solved.
Also solved the loading on Dead state from the beginning.

BTW: This game is 100% credit to @TheGoodSire I’m just here commenting and forking to learn! :stuck_out_tongue:

2 Likes

No sorry I just tried v1.4 on the original repo, I’ll load up yours when I get the chance and report back.

2 Likes

@jrcwest you are doing me a huge favor by testing all of these changes, so definitely take your time and test whenever is most convenient for you! No rush! I’ve got other projects that I’m working on to keep me occupied, so I can just switch back to this one when I get feedback. @Confus3d is right that there was a critical flaw in my implementation of the neighbor counting function that was making it keep counting up to infinity. I implemented the fixes that he outlined and uploaded as v1.5 in my repository.

@Confus3d I’m probably missing something, but I can’t seem to find your version of v1.4 anywhere! I went to your fork of the project and all I could find was v1.0. I really want to see what you came up with to solve the start up defaulting to dead state, so could you maybe post a direct link here?

Thanks again to you both! I’m having fun collaborating and testing this concept out with you guys!

1 Like

My fault, I don’t really know how to use GitHub!

It seems that is in a side “BRANCH”??

Here is the direct link:

Check also the other changes:
Deleted some redundant code
Added a first load flag to start in alive when loaded

2 Likes

Awesome! Thanks Francisco! I’ll take a look at your implementation later today, it seems like the first run change will be a cool addition though!

I think this is the direct link to compare files (I really need to learn GitHub!)

You should see the aditions in green and the things deleted in red.

1 Like

Good news, it looks like the changes @Confus3d made in his fork of v1.4 did the trick! Here’s a short demo (apologies for it being in portrait mode, recorded in a rush):

I’ll have to check out your code, I had an idea for another approach to this but I get the feeling yours is much easier that I was thinking. But for now, I gotta get back to work :grimacing:

2 Likes

WUHUUU!!

Wow @jrcwest you’re really nice trying out all this and making a video!

Seems that the initial load flag is not working, but the rest is working pretty well!!

2 Likes

Weird about that, one of the builds I played previously had that fixed… But hey glad to see the core detection method is working now!

2 Likes

Oh really? I didn’t changed that at all :thinking:

Edit: OK, i think that the problem with my aproach is the cascade load up onto the blinks.
I mean, when game loads, there is some ms with one blink on the game, then some ms with two, some ms with 3 and so on… so all detect that changes and change to dead. but is pretty easy to fix with the actual timers!

Edit 2: Yeah, i was right! Here is a frame from your video upload, One blink already loaded the game, when the second blink load on ALIVE, and then the first blink detect that change and go to dead mode… and so on!
imagen

Edit 3:
I still have no idea how to use Github, but here is my aproach, the first run, the dead state will be only one second length (I realized that is pretty difficult and wil be a really problematic code to skip the dead state, as on boot up, blinks change the number of neighbous inmediately):

2 Likes

Haha great catch! Glad these videos are helpful in catching the little things like this!

EDIT: I am chuckling a little at how many replies we have in this thread for such a simple concept :upside_down_face:

2 Likes

Hahahhaha you’re right!

Another edit, i reduced the code to 75 lines merging some IF (On the last link, v1.5)

BTW @TheGoodSire This code is sooo funy to play with!!

Edit: Just for fun. Here is all the code condensed on a screenshot, only 38 lines!

1 Like

@Confus3d I can’t believe how compact we’ve been able to get the code from my original prototype. It literally has only like 5% the lines of the latest iteration of The Dragon’s Lair that we put out. It’s kind of crazy! Thanks again for your help streamlining the code and for helping me resolve some of the bugs!

1 Like

Small version (screenshot) uploaded here if you want to check it out!

1 Like

@Confus3d Finally got a chance to check out your solution to the dead start state issue and it looks great! Simple, effective, and a very elegant solution to the problem! Excellent work Francisco!

1 Like