New Game: drillers

code on github


2-3 players, enough blinks

Each player starts with 12 mining drills, and choses how many to use each turn. Use other people’s drills to mine further!

Set one blink apart per player (the driller), connect remaining blinks together in any shape you want.
Long-click your driller multiple times until it shows your color, one per player.
Pick a rule for turn order (recomended: first player changes every turn).

Phase 1: each player single-clicks his driller to enter drill selection mode, and click to select between
1 and 4 drills to use. Double-click when done to enter insertion mode.
Phase 2, insertion: each player in turn picks an insertion point in the board
and plug his driller there (white face facing the insertion point). You can plug the board directly, or the driller
of an other player who already played this turn, which will drill one blink deeper in the direction you’ve chosen.
Drilling will transfer zones to you, in that order, until all drills are spent:
- 2 empty zone on front-facing side per drill
- 1 empty zone on back-facing side per drill
- 1 other-player-occupied front-facing side per drill
- 1 other player occupied back-facing side per 2 drills
When all players have played, remove then double-click your insertion blink to show how many darts you have remaining.
Then start next turn.
When all drills are spent, the player with most zones in his color wins.
Link all blinks together and double-click a board blink to reset everything.

It works reasonably well, except for double-chaining drill orders. My communication protocol must not be as robust as I though it would be :slight_smile:



I skimmed over your code but not enough to tell you what might be the issue. There are a couple of things to look for in any case:

1 - Is it possible that at any point in time you are trying to send a datagram in more than one face? Because the way it is laid out, your program can only handle a single pending datagram.
2 - Might be relevant: Blinks with the official blinklib will either send a face value or a datagram, not both. So if in the same loop iteration you do:


The other side will see nothing and then the face value, the datagram and then the face value but never the datagram and face value at the same time.

Played around with it a bit. I don’t quite grok how the drills work yet, but I can see the potential for some strategic play.