gfpoken — Recreate a grid of mirrors from clues




Suddenly, you attain consciousness. You are faced by a grid of tiny squares, all alike, and a sign, which reads as follows:

ACHTUNG! ALLES LOOKENSPEEPERS! Das rollenballenmachine ist nicht fuer gefingerpoken und widgetmoven. Ist easy flippen der mirrorwerk, losenballen und shovenmirroren mit slippensliden. Ist nicht fuer gewerken bei das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das pockets muss; relaxen und watchen das rollenballen.

Unable to decipher it, you begin rolling balls at the grid, having nothing better to do. And thus begins your pathetic adventure deep into the bowels of Nihilism.


The idea for this game comes from a Windows game called "Marble," by Analogue Software. GFingerPoken is basically Marble, rewritten from scratch for GTK.

The game starts with the configuration dialog. Here you can set the relative abundance of the different mirror types, the size of the grid, the amount of mirrors in it, and how much the mirror density should vary.

In the top left, there are load and save buttons to load and save existing games. The save button is not visible if no game is in progress. Press OK when you're happy with the settings to start the actual game.

You can throw balls into the grid by clicking around the edges. There are 4 of them, but they all work the same way. You'll see your ball roll through the empty corridor, then you'll see a white in arrow and an out arrow. Your job is to drag the mirrors from the side into the maze and set up your maze to be the same as the output indicates, i.e., so your ball always goes out where the arrow says it should. You have to use all of the mirrors on the side. If an item has a some arrows in the center, it is flippable; click on it, and it will change between its states. Furthermore, every time these items are hit within the maze, either yours or the computer's, they will be flipped also. So your maze must be synchronized with the invisible one. When you think that your maze perfectly matches the output, click the check button and see if you were right.

If you right-click on a grid square, you will cycle through a picture that appears in the corner: a circle, a triangle, a square, and nothing. These symbols do nothing, but you can use them to indicate what you think may be in the square. For example, a circle could mean you think nothing is there, a triangle something is there, and a square that you're pretty sure whatever's there is right.

The button in the top left lets you abort the current game and start a new one. This is what you should do if you want to save the game. If you want to continue playing after saving, cancel the creation of the new game.

Mirror types

Simple mirrors
The ball rolls toward it. The ball hits it. The ball rolls in a different direction. Very simple. They are shaped / and  .

Flipping mirrors
The ball hits it and rolls in a different direction, but then the mirror changes shape according to its little indicator. There are two cycle mirrors which go between / and  shapes, and four cycle mirrors which cycle this way: / o  o . (The little "o" representing a box, coming up next.)

This is where the game begins to get devious. Your setup must match the functionality of the invisible one exactly. Meaning you have to get the alignment of these precisely perfect. To change the alignment of one, click on it.

Box and sink
Basically they are opposites. A box will repel the ball in the opposite direction that it came from, and a sink will "eat" the ball, resulting in NO output arrow.

Axial mirrors
They will let the ball come through on one axis (i.e. vertically or horizontally) but bounce it back on the other. There are both simple and flipping axial mirrors for your amusement.

These are quite similar to normal mirrors, only they redirect the ball in a different sort of way. There are clockwise and counterclockwise varieties as well as a flipper.

One Way Mirrors
Only one order away from pure evil, one way mirrors will boggle the mind for centuries if used liberally. They are just like normal static mirrors, except they only let the ball travel right through it in two (perpendicular) directions and bounce it off in the other two. These can cause an infinite loop if used wrecklessly, which the random computer is fairly likely to do. In that case, there is no output arrow, just like when the ball falls into a sink.

There are two varieties: fllipping one way mirrors, and moving mirrors. Flipping one way mirrors can flip in either a clockwise or counterclockwise direction. Moving mirrors, when hit, will travel one square in the direction they were hit, after being hit, so your ball will travel as if a simple mirror had been where the mirror was just sitting.

Network game

Network games work a lot like single player games. To setup a network game, you must be in the game window (so create a game, the settings don't matter). Then click the "start network game" button. That opens a new dialog window. You can leave the type at "Auto" unless you've picked out who you want to be client and server. Auto will try client first, and if it doesn't work it will go to server. Server gets to choose the level layout and also gets to go first, so you could give it to your opponent if you want to be nice. Going first isn't really an advantage though, as you'll soon find out. You should probably leave the port unless it's used so it can become a defacto standard. If you are server, the address restricts connections to only ones originating from this address; if you are client, it will connect to this address. Similarly, server sets the port to listen on and client connects to this port.

Also, you'll have to choose the game type. The server overrides whatever the client has. With "Shared board," both players manipulate the same board and both see changes made immediately. (It's graphically much cooler.) Players take turns manipulating the board. With "Individual boards," each player has his own board and cannot see the other player's board. Players each perform one manipulation to their board simultaneously. Otherwise, the games are similar.

A manipulation consists of these steps:

1) Rearrange the pieces however you'd like. (This includes moving them in and out of the sidebar.) This may be zero rearrangements.

2) Perform exactly one test (i.e. click along the border to toss in a ball)

3) Again perform as many rearrangements as you'd like.

4) Click on the right arrow to indicate that you're done.

Either before or after a manipulation, if the board is potentially solvable, you may click the check button if you think it's solved. If you're right, you win; if you're wrong, you lose.

Note that you *must* perform a manipulation during each of your turns, which should discourage a standoff in shared board mode.

Finally, the half balls that appear next to the board are your history. The whole reason for the 4 different ball colors is to differentiate your last 4 moves in the history. So the black in arrow superimposed atop the purple ball half should have a corresponding black out arrow also superimposed atop a purple ball half. If not, that part of the history must have been erased because another out move went on top of it, or perhaps because the ball was eaten somehow and thus never came out.


This manual page was written by Bas Wijnen <>, based on documentation by Martin Hock.