Map of levels

When the game starts a surface with colored cirles appears. Circles represent levels of the game. Blue circles sign enabled levels but not solved yet. Yellow circles sign solved levels. And brown circles signs levels which can not be solved because they are behind an unsolved level. (intuitively) If you click to a circle by left mouse button you run the level. The goal of the game is to solve all levels so to have all yellow circles.

When the mouse pointer is above a circle name and preview of the level appears in the upper left corner. Solved levels have two numbers after the name: The first number is the best solution of the player, the second is the relevant value in the hall of fame table.


Move active fish arrows
Switch active fish Space or tab
Undo / redo - / +
Big (100 moves) undo / redo PgUp / PgDn
Restart (keep redo history) Home
Maximal redo End
Grid to background 'g'
Grid to foreground 'G'
Show help (this table) F1
Save position F2
Load position F3
Fullscreen F11
Safe mode (less animation) F12
Escape from level or the game Esc
Refresh user level Ctrl-R


The goal of each level is to get both fishes (small orange and big blue) anyway out of the level.

There are two types of objects -- heavy and light. Heavy objects are displayed as steel pipes. Others are light. Fishes can push objects, the small fish can push light objects only, the big fish can push both types. Fishes can (contrary to Sokoban) push more objects in one moment. Both of object types falls.



Fish dies if a) to a heap which is lying only on fishes falls an object, b) small fish has to carry heavy object. Contrary to original game a fish does not die when it is carrying an object down neither when the other fish pushes object on the first fish. Rules needs to get both fishes alive from the room so it is not possible to solve level after death of a fish.



If an object (or a fish) moves to side also objects lying on this object moves by the same way. But only if nothing obstructs it. More precisely next to pushed objects move such objects which have no staying object/wall/fish under them or in moving direction. The friction behaves upwards so objects placed higher does not have influence to objects placed lower.


Small fish can not push light object if it is laden by a heavy object. Exception is when the heavy object lies on an object which is not pushed at the time.


Moving objects out of the room.

Outside of the screen is nothing. It is possible to move object out. If whole object is out of the screen it is removed. So if another objects were lying on it they fall. Fishes behaves in case of moving out of the screen by the same way as objects. If a fish is whole out it is not possible to control it but contrary to original Fish Fillets it does not go out automatically.


Other control tools

Undo bar

Undo bar is either on right or on bottom. Move counter is in right bottom corner. You can jump anywhere in undo history by moving slider by left mouse button. Or you can move by one step by buttons - / +. If you press these buttons by right mouse button then the automatic rewinding of moves launches. The most natural way to stop this rewinding is to press the space key.

Saves: Saved positions

The key F2 saves current state of the game including undo history and a new button appears in saves bar. You can load saved position by clicking on it. The key F3 loads last saved / loaded position which is marked by white border. You can change the position of a button in the bar by dragging or you can entirely delete it by dragging far from saves bar. If you solve the level the solution will save automatically and the button will be marked by green tick.

Creating an own level

The base of the level is a PNG image where each pixel is one square unit of the room and each color represents one object. The color determines the type of each object by following table:

Transparent Empty square
Black Wall
#ffae00 Small fish
#0000ff Big fish
red + green + blue < 255 Heavy object
Otherwise Light object

Then you can run ff-clone with the PNG file as a parameter (the extension png is obligate). The level can be refreshed (if you change the file) by key shortcut Ctrl-R.