What is Fish Fillets Clone?

It is a czech puzzle game for X (Linux). The goal of each level is to get all (mostly two) fishes out. It is a game inspirated by original Fish Fillets.

What are dependencies?

Xlib, Cairo, Lua

Who has made this?

My name is Miroslav Ol¹įk. I programmed this as my homework for school. My brother Radek Ol¹įk has made most of levels.

What is the licence of the code?

I do not want to make barriers to other users about using and modifying my work. But I do not fully understand the license jungle yet. So I released the game under license GNU/GPL v2 (inspired by a clone by Amic Frouvelle). If this license does not satisfy you (from any reason) I probably will be ready to offer any other license.

What is conection with original Fish Fillets?

There is no conection with Altar (the company which made Fish Fillets and Fish Fillets II). I have just made several new levels for Fish Fillets - Next Generation. Program Fish Fillets Clone is written from the begining, its rules are absolutely different from original Fish Fillets and even images are mine.

Is it as difficult as the original?

I hope so. But you can better handle the puzzle when you have user friendly undo history and saved positions (as in this game).

How did the idea for this Fish Fillets version appear?

Well, I was showing Fish Fillets NG to my friend. He was solving Silver's Hideout, there was snails on the rifle. He pushed the rifle, the snails fell and he said: "Oops, I have forgotten there is no friction".

Has this game music, sounds, animated objects?

No, it has not. In this case it is worse than original Fish Fillets. But connection with lua script is implemented yet, so I think it would not be so hard to add such features.

Does realy have each level a solution? I have proven it does not.

Yes, each level has a solution. If you have a proof you are close to goal. Find a bug in your proof only.

Where can I find solutions?

In your brain ;-)

Which are the minimum possible numbers of moves to solve the levels?

We often can't find the minimum possible. But for the minimum known see hall of fame.

Where can I download it? How to install it?

See download.

How to control the game? What are rules? How to make my own level?

See manual.

Is it possible to delete a saved position?

Yes. Just drag it away.

It is possible to understand the source code?

Variable has english names but comments are in czech language. Despite this Amic Frouvelle (France) was able to import levels from original Fish Fillets NG and even rewrite the rules to FF-NG. So I thing the code is quite comprehensible. Here you can find Amic's Fillets .

Can I set orientation of fishes or add images to my level?

You have to create lua script next to the png map. You can inspire by existing levels for example data/flowers/script.lua.

It is possible to have more fishes of one type?

Yes. You can download multitest.zip extract and then run ff-clone with the path to the multitest.lua.

I made fine level, can I upload it somewhere?

You can send it to me by e-mail (mirek at olsak dot net). Then it will be either added to the game or published somewhere here.


Why is it so demanding hardware?

It was not probably good idea to redraw window 50 times for second by cairo. There is redrawing even when fishes are not moving because they are swinging a little bit. I tried to redraw only parts which has changed but I saved only little CPU and there arised unsightly ornaments. However it is possible by key F12 to turn on the safe mode with lower FPS (10) and without swinging.

Why the code of the Fish Fillets - Next Generation was not used?

1) I don't like editing foreign code. 2) I had my vision of the game, very different from FF NG.

Why SDL is not used?

1) Most of SDL tutorials has infinite loop without any waiting. 2) SDL does not support (AFAIK) non-aggressive fullscreen (which does not change resolution and does not block WM).

Why are levels coded in png?

I usually create level by graphics editor so it is comfortable when I can immediately run what I drawed.

Last two examples for friction in the manual looks illogically. Shouldn't it work otherwise?

I tried to create the simplest possible rules (with friction). In the last but one example small fish touches steel from bottom so the steel does not move. In the last example the non-steel object touches the steel object from bottom similarly (although it is lying on the steel). I don't have idea to simple rules change which will solve these problems. For example: if you think that the steel should move in the last but one example then what should happen in following situation?