Creating ledger bite detectors for Fishsim II
J.C.Spooner 2002

Introduction
Ledgering or legering, depending on how you prefer to spell it, is an increasingly popular way of catching coarse fish. It enables the angler to place the bait on the bottom of a swim easily, no matter what the depth of water. Detecting a bite once there is not as easy though, and there are numerous devices and contraptions around to aid this style of fishing.

Version one of Fishing Simulator, only has four possible bite detectors to choose from and this number is not changeable, in other words, the number and type of bite detectors can't be added to or altered. With Fishsim II, on the otherhand, this restriction doesn't exist, and a wide variety of ledger bite detectors can be created to give more choice to the angler.

All ledger bite detectors work on the same principle, line tension and movement. The crudest detector of all is the rod tip itself, as the fish pulls the bait, the tension on the line either increases or decreases, which results in slight rod tip movement. This movement can also be detected by touching the line, and feeling the tension changes as the fish wrestles with the bait. More advanced detectors, detect the changes in line tension or movement, and produce an audible sound and/or visual light to alert the angler of fish activity around the bait.

Whatever type of detector there is about can be created for use in Fishsim II.

Tools and knowledge required
The following briefly describes what you will need to create a fish species in Fishsim II

- A knowledge of files and folders in Microsoft Windows operating systems.
- A copy of Fishing Simulator II.
- A simple text editor, Microsoft Notepad, that comes with Windows is ideal.
- A paint editing package, capable of resizing and editing JPG images - Paint Shop Pro is a good choice
- A sound editing package ( if sounds are part of the detector ), Windows sound recorder is a good choice for basic editing.

Storage and format of bite detector files
The TACKLE folder inside the Fishsim II folder contains a folder called DETECTOR. Inside this folder will be a selection of files all with a .tkl file extension. Each bite detector in Fishsim II has a .tkl file associated with it, which contains details of the operation and look of the detector.

To create a new ledger bite detector, either use Notepad to create a new text file with a .tkl extension in this folder or copy, paste and rename a current .tkl file within the same folder.

The format of the text files is the same as the other .tkl files in the TACKLE folder, with sections, variables and values, with just a few subtle differences.

There are two main sections called [HEADER] and [DETECTOR] as well as a few [POS(x)] sections, where x represents a number.

The [HEADER] section contains four variables, Name, Desc, Ref, and Type. This is pretty standard throughout all the .tkl files in Fishsim II.

The Name variable should contain the name of the detector. It can contain spaces and there is no limit on the number of characters there can be, but it is recommended that this be kept under 30 to avoid display corruption problems with FS2. Also, it is recommended that the names of the detectors be kept unique throughout, although this is not imposed.

The Desc variable contains the relative path and file name of a help or information file ( .fsb file ) associated with the detector. If you do not want a help file associated with the detector set this variable to [None].

The Ref variable must contain a unique reference name for the detector. It can't contain spaces and should be kept at 13 characters or less.

The Type variable must be set to 4 to let fishsim know that this .tkl file corresponds to a ledger bite detector. If not set to 4 the detector won't show up on the tackle screen. This is included to prevent a .tkl file being stored in the wrong tackle folder by accident.

The [DETECTOR] section contains specific details about the operation of the bite detector.

The Type variable ( note : inside the [Detector] section ), can be set to any of the following to indicate the generic type.

Value Meaning
1 Swingtip
2 Quivertip
3 Bobbin
4 Electronic detector
5 Monkey climber

The value used is not important and only used for display purposes to help the angler on the tackle screen. You should try to set the type of detector as close as possible to one of the codes above, this will enable the angler to sort his/her tackle in order of detector type on the tackle screen display. As far as Fishsim II is concerned, this value does nothing else.

The Graphic variable holds the relative path and filename, from the fishing simulator folder, of the "large" graphic file associated with the detector, which will appear on the tackle screen when the angler selects the detector. To fit in the tackle display the graphic image should be 200 x 100 pixels and stored in either JPG or PCX format. Anything smaller than this size if okay, but will not look as good, anything larger will corrupt the display of the surrounding area on the tackle screen.

The Linegrad value indicates the detectors sensitivity, and can be used to set a detectors sensitivity. A higher value will create a detector which is more sensitive than a low value. An explanation of this is difficult, and requires an understanding of how Fishsim II works with detectors, this can be found in the next section ( operation of ledger bite detectors ).

The Start value is similar to linegrad above, and is covered in the next section ( operation of ledger bite detectors ).

The Connect value can be set to either 1 or 2 to indicate the way the detector connects to the rod or line. If the detector requires a screwtip for example a swingtip, quivertip, the connect value should be set to 1, if it's a line detector, for example a bobin or electronic detector, the connect value should be set to 2. Rods can be created with or without a screwtip connector at the end, rods that don't have this, are unable to make use of detectors that have a connect setting of 1. Also, the connect setting affects how the detector operates while fishing. A detector with a connect setting of 1, will be active all the time ( even when not on rod rests ). A connect setting of 2 will only be active once the rod has been placed on the rod rests. If the detector has associated sounds, a connect setting of 1 is not recommended, as these sounds will be heard when the rod is being handled and moved normally. This can be irritating to the angler.

The [POS(x)] sections, where x corresponds to a number starting at 1, represent the different graphics and sounds played when different levels of tension are applied to the line. The first [Pos(x)] section corresponds to the detector graphic and sound played when there isno tension on the line. The last [Pos(x)] section corresponds to the detector graphic and sound played, when a maximum amount of tension is applied to the line.

You can create as many [Pos(x)] sections as you wish, depending on how much accuracy you want to put into the detector. Inside each [Pos(x)] section are three variables, Graphic, Sound and Volume.

The Sound variable contains the relative path and filename of the graphic to be displayed on the screen when the tension reaches the level. Graphics should ideally be 50 x 50 pixels and either in JPG ( recommended ) or PCX format. For more information on how the Fishsim II swingtip graphics are produced the GRAPHICS/DETECTOR/FSSWING folder contains all the graphics in the animation. A browse in Paint Shop Pro of this folder will show all the graphics on the same window.

The Sound variable contains the relative path and filename of the .wav sound file that is played, when the tension on the line reaches that position. The Volume variable contains the volume that the sound should be played at, 1 represents quiet, 100 represents loud. The volume values will vary though depending on each .wav file, as these files do store volume information inside the format. If no sounds are to be played, as will be the most cases, set the Sound variable to [None].

You can make as many [Pos(x)] sections as you wish for your detector, the index values (x) do not have to run in order, although this is recommended. There is more on the [Pos(x)] sections in the next part below ( operation of ledger bite detectors )

Operation of ledger bite detectors
It's difficult to describe how Fishsim II determines the position of a ledger bite detector, without revealing how it does it, so below is an algorithm and the actual code, which performs this. Before running a mile at the sight of computer code, there is an explanation in English below

Algorithm

Slack := Slack_Line - Start
Position
:= abs ( Slack / Linegrad )
If Position > Total_Number_Of_Positions then Position := Total_Number_Of_Positions

Code

slack=(float)fishslack-rodset[rod].detector->start;
slack=fabs(slack);
dev=(int)slack/rodset[rod].detector->linegrad;
if(dev>rodset[rod].detector->numgrads-1)dev=rodset[rod].detector->numgrads-1;
cast[rod].rig.castdrop=(int)dev;

It may look a bit complicated at first, but the algorithm is understandable, with explanation. Firstly Slack_Line holds the amount of slack line there is currently in inches. From this value the detectors Start value in the .tkl file is subtracted. The resulting value ( Slack ) is then divided by the Linegrad value in the .tkl file and stored in position. This gives the position ( [Pos(x)] ) section to display the graphic and play the sound from. The third line of the algorithm, just checks the position does not exceed the maximum number of positions available for the detector, if so, the last position is used. Applying the algorithm to an example, will help further.

Example

Lets say the detector .tkl file has 20 different positions, and a linegrad value of 2, with a start value of 10.

At this moment in time, say, there is 4 inches of slack line.

Slack := Slack_Line - Start --------------> ( Slack := 4 - 10 [ -6 ] )

The Slack value ( -6 ) is then divided by the linegrad value ( 2 ) and the absolute ( positive ) value is taken.

Position := abs ( Slack / Linegrad ) --------------> ( Position := -6 / 2 ->= -3 , abs (-3) = 3 )

Position 3 is less than 20, therefore the graphic at [Pos(3)] is displayed and the sound at that position is played.

Sorry about the description, but it may help.

In brief, any Start value of 0, will only affect the detector when the slack line is less than zero inches ( something pulling on the line ). A start value higher than zero, for example, 10, means the detector will only start to move when there are less than or equal to 10" of slack line.

The amount of movement is controlled by the Linegrad value, a higher value, makes a sensitive detector, with a lower value being not so sensitive. This is because this value acts as a divisor in working out the position of the detector.

Conclusion
This page describes how new detectors can be created as well as current detectors modified.

It's not been explained well, but hopefully well enough to implement a ledger detector. Like a lot of things with Fishsim II, it has been left as flexible as possible, in order to allow the ability for the creation of a wide diversity of different detectors.

For example, if Bart Simpson was you're thing, you could create a bite alarm where Bart waves when there's a bite, and shouts "yo dude!" when the fish pulls hard enough. Errmmm ... What an idea ?, novelty bite alarms ? .. Forget Fishsim, I've just found a way to make some money :) Anyone want to buy a Bart Simpson bite alarm - Guaranteed to double your catch ?

(c) J.C.Spooner