Creating fish species & shoals for Fishing Simulator II
J.C.Spooner 2002

Introduction
Version one of Fishing Simulator started out with just 12 species of fish. The number has steadily gone up to nearly 50 because of the ability to create new species and import them into the game. There are a few reasons why this number has not gone up much further with the main one being the effect that too many species have on performance. Another big factor is the time it takes to create and test them.

The ability to add more fish species has been retained with Fishing Simulator II as well as solving the problems just mentioned. The time to create a fish species now is minimal, yet the behaviour of the species enhanced for more realism. Fish species are no longer linked directly to baits, which means that new fish and baits can be created without the need of a fishai.jar file. It is possible to catch fish on a variey of baits, even ones that haven't been created yet !

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 PCX images - Paint Shop Pro is a good choice
- Time : around 5 minutes per species.
- A basic knowledge of fish habitat requirements.

Storage of fish species
Each species of fish known to Fishsim 2, has its own file, located in the SPECIES folder. The files have a .sp extension, and are stored as standard ASCII text files. This means they can be created and modified with a simple text editor program like Microsoft Windows Notepad.

If you create a new fish species for Fishsim 2, it is advised that you scramble the .sp file before distributing it. This will ensure that the file can't be edited by anyone other than yourself. Similarly, if you open a file with an .sp extension and it looks garbled, it will be in a scrambled format and can't be edited without corrupting the file. Only the original creator of the species will be able to edit and change the file.

When creating a new species, it is essential that you check that the species hasn't already been created before and made available by someone else. You should use the latin names for this, if a species has the same latin name as a species already created, then it does not need creating again as a slight variant or variation. This is irresponsible, and causes FS to load slower for users, where possible you should always seek to change the image in the .all file for variants of species. Good examples of this are carp, there is no point having a mirror, leather, wild, common etc all being created as a different species, they are the same species, eg have the same latin name, and are just common name variants.

Also, every value in an SP file apart from name and reference name can be overwritten in an stk file, so the default behaviour of a species can be totally changed in stk files if required.

Creating a new species of fish
The format of the .sp files is very similar to version one of Fishing Simulator. They are not stored in the same way as other files, and have no sections, plus, contain no '=' (equals) sign between the variable name and the value. An example of a .sp file is shown below, and each of the variables are covered in further detail later.

REF PERCH
NAME Perch
GRAPHIC graphics/species/perch.pcx
FSB fsb/perch.fsb

MAXSIZE 4000

DIST 1 100.0
DIST 2 90.0
DIST 3 80.0
DIST 4 75.0
DIST 5 70.0
DIST 6 65.0
DIST 7 60.0
DIST 8 55.5
DIST 9 50.3
DIST 10 45.2

TEMP 14.93 0.0 28.0 3
O2 7.0 1.5 18 3
PH 7.0 6.4 8.6 2
FDEPTH 80 -10 200 4
LIGHT 90 -10 200 4
SALINE 0 -10 2 4
FLOW 0 -10 70 4
COVER 40 -50 200 4
WDEPTH 48 6 200 1

INSECT 100
SEED 0
VEGETABLE 0
FRUIT 0
FAUNA 0
FLY 30
SHELLFISH 20
FISH 80
ANIMAL 20
PROCESSED 0

PROTEIN 60
STARCH 40
CARBO 40
SWEET 50
SOUR 50
BITTER 50
SPICE 50
CITRUS 30
BLOOD 90
FISHOIL 100
FAT 50

SIGHT 90
SMELL 90
MOVE 10

GBAIT 1.0 1.0 0.0 10 20 10
LFEED 1.0 1.0 0.0 10 20 10

PULL 40 50 10
LIFT 10 10 20
RUN 10 5 10
TAKE 30 40 20

CAUTION 170 1000
BITETIME 40
STRIKETIME 20

FIGHT 0.001 100 20

END

The first four variables REF, NAME, GRAPHIC, and FSB contain general values for the species being created. The REF variable must be the first variable defined in the .sp file and contain a unique reference to the species. This reference can be up to 9 characters long, but not contain any spaces

The NAME variable contains the name of the species. It can be any length however, a maximum limit of 20 - 30 characters should be used to avoid overwritting display areas in FS2. It can contain spaces.

The GRAPHIC variable holds the relative path and filename to a 256 colour PCX graphic file image for the species. The graphic should be no more than 300 pixels wide and 150 pixels deep. The transparent colour ( the one not displayed ) should be the first colour in the palette ( index 0 ). Click for more info on creating transparent pcx files

The FSB variable, contains a relative path name to a help/info file associated with the fish species. This is currently not used in FS2.

The MAXSIZE line is used to specify not the maximum size of the species, but the specimen size. It is used in conjunction with the DIST lines below.

There are ten DIST lines ( DIST 1 -> DIST 10 ), and thse specify the general distribution of the sizes of the species. For example, you tend to get a lot more small bream than large ones in general. The DIST lines are used in conjunction with the MAXSIZE above, and each line contains two values, eg :

DIST 2 50.0

The first value corresponds to the size of the fish ( 1 = 0% to 10 % of the MAXSIZE, 2 = 10 % - 20 % of the MAXSIZE and so on... ). The second value is normally a percentage, indicating how widely distributed the species is at that size. So using the line above, with an assumed specimen size of 100 drams, the distribution of this species in the size range 10 - 20 drams ( DIST 2 [10%-20%] of maxsize ), is 50 %. EG, half (50%) of of the fish species is around 10 - 20 drams in size.

Note : These values can be overridden in stk files, but the SPECSIZE line should be used in stk files instead of MAXSIZE, as the maxsize already is used for a different purpose in them.

The TEMP, O2, PH, FDEPTH, LIGHT, SALINE, FLOW, COVER, and WDEPTH variable lines are all formatted in the same way and contain four values each. Each is optional, but it is recommended that they are included to define species behaviour. They tell Fishsim II how different conditions affect the fish species when feeding and under what conditions they will be most active. To understand them fully, it is important to know exactly how Fishsim II uses them, below is an example using the TEMP variable.

Imagine there is a fish species with a TEMP line defined as :

  Ideal Minimum Maximum Tests
TEMP 15.0 2.0 28.0 3

( The grey above are title headings to help understanding, they are not included in the .sp file )

The first value Ideal, specifies the ideal temperature in degrees celcius the fish species is happiest fish, in this example, 15 degrees. Note that this is water temperature, not air temperature, and the water temperature changes at various times of year and day, as well as at different depths.

The fish species created will use this value, along with others, to find it's ideal position on the peg. Fish do swim about constantly in Fishsim II, and actively seek ideal conditions, that change all the time. Before the species moves into a new area, it tests the new area to see if it will be comfortable there. If it is, it will go there, if not, it won't. The TEMP, O2, PH, FDEPTH, LIGHT, SALINE, FLOW, COVER, and WDEPTH variables are all used in this decision by the fish. A fish will attempt to change its position 20 times in every second in Fishsim II ! Unbeknown to the angler, there's a frantic world going on under the surface of the water.

For the purposes of this example, imagine a fish with the above temperature variables, attempts to move to a position, where the water temperature is 8 degrees C.

Firstly the fourth value ( Tests ) examined, to see how important the species temperature needs are, a value of 0, indicates that the species is not bothered in the slightest by the water temperature. The higher the value, the more important the water temperature is to the species. In this example, three temperature tests will be performed, all three must pass for the fish to move to the new area, otherwise the fish will stay put and look for another area to move to.

The Ideal, Minimum and Maximum values are used to perform the test, that goes something like :

1) Select a random value between the Minimum (2.0) and the Ideal (15.0) values. Let's say here the value 10.0 is selected. If this value is greater than the water temperature value (8.0), this part of the test is passed. If the test fails, the fish remains where it is.

2) Select a random value between the Ideal (15.0) and the Maximum (28.0) values. Let's say here the value 22.0 is selected. If this value is less than the water temperature value (8.0), this part of the test is passed. If the test fails, the fish remains where it is.

These two tests are repeated 3 times in this example (indicated by the Tests value), and all test must be passed for the fish to move on.

Careful examination reveals that a water temperature of 15 degrees will always pass both tests. The closer the temperature is to 15 degrees the more chance the fish has of moving. The minimum and maximum values give the species a "range" of temperatures, the narrower this range, the less likely it is for a fish to move about, and if it's not moving, it's difficult to catch unless the angler puts the bait right on it's nose. Even then, if the fish is not in it's ideal habitat, it will probably ignore the bait anyway.

Groundbait and loosefeed, when used, modify these temperature ranges, which normally has the effect of making a previously unattractive area of a peg, seem that bit more appealing. ( see later : GBAIT + LFEED variables ).

As an indication of the amount of different areas of a peg a fish can swim into, the second peg on the lot venue has over 22,000 of them and this is by no means a big peg ! Each area represents roughly a cubic inch of water.

The O2, PH, FDEPTH, LIGHT, SALINE, FLOW, COVER, and WDEPTH variables work in exactly the same way as the temperature variables, only when all of these pass there own tests does a fish move. Each is described briefly below :

The O2 variable line, can be used to specify the oxygen requirements of the fish species. Values between 2.0 and 15.0 should be used to set the ideal O2 requirement. A low value means the species can tolerate water with a low oxygen content.

The PH variable line is used to specify the water PH requirements of a species. The range is from 0 ( highly acidic ) to 15 ( high alkaline ), with a value of 7 being neutral. Most fish species will have an ideal range of between 6 and 8.

The FDEPTH ( feeding depth ), can be used to specify the ideal feeding depth requirements of a species. Feeding depth is not linked to water depth, but a percentage value indicated where in a body of water a fish will commonly feed. A value of 100 indicates that the fish will idealy search for food on the bottom of a peg, whereas a value of 1, indicates the fish will search for food on the surface.

The LIGHT variable line, like the feeding depth is represented as a percentage to indicate the ideal light conditions for the species to feed. A value of 0 indicates the species prefers dark conditions, whereas a value of 100 specifies the fish will seek out bright conditions. The main factor affecting light in the water, is the brightness of the light outside, which is determined by the time of day. However the water depth and water turbidity also affects the amount of light. Light won't penetrate as deep in turbid water.

The SALINE variable line, again is represented as a percentage of water salinity ( saltiness ). A value of 0 indicates the species prefers freshwater with no salt content. A value of 100 indicates the species prefers water with a very high salinity ( sea water ).

The FLOW variable line can be used to set the ideal water flow-speed requirements for the species. This is represented as a percentage, with 0 indicating still water, and 100 indicating the species prefers very fast flowing water.

The COVER variable specifies the ideal cover/shelter requirements for a species, in the form of a percentage. Objects like weed, reeds, and under-cut banks provide cover on a peg, whereas mud, sand and gravel provide little cover. This variable line can be used to specify whether or not the species will seek cover, and how much. A value of 0 indicates the species will try to locate areas of no cover, a value of 100 indicates the species will frequent areas where there is a lot of cover/shelter.

The WDEPTH variable can be used, to set the ideal water depth ranges for a species. The water depth is the actual depth, in inches that a species prefers to feed. The most common use of this is to force fish to either seek out deep areas of peg, or force them into the shallow margins. The values are specified in inches.

The next portion of variables and values determines what type of food sources the fish species will feed on, and how much, they're all percentage values, with 0 indicating that the species won't consider even touching the food source, and 100 being a favourable source of food.

Variable name Short description
Insect Natural insect baits maggots, worm etc..
Seed Natural seed baits, hemp, corn, tares etc..
Vegetable Natural vegetable baits, potato, chick peas etc
Fruit Fruit baits, banana, apple etc.
Fauna Vegetation..
Fly Flying insects and nymphs
Shellfish Shell fish baits, mussels, crab etc.
Fish Fish baits, live and dead
Animal Animals, frogs, water rats etc..
Processed Bread, luncheon met, boilies.

The values entered here may be "capped" or adjusted by Fishsim II, to even out the species feeding preferences.

If the feeding system in Fishsim II was left at just the variables listed above, there would be no difference, from a virtual fishes point of view, between a boilie and luncheon meat. Therefore another portion of bait taste and smell preferences is included :

Variable name Short description
Protein Protein % appeal
Starch Starch % appeal
Carbo Carbohydrate % appeal
Sweet Sweet flavour % appeal
Sour Sour flavour % appeal
Bitter Bitter flavour % appeal
Spice Spice % appeal
Citrus Citrus flavour % appeal
Blood Animal / fish blood content % appeal.
Fishoil Fish oil content % appeal
Fat Fat content % appeal

These percentage values allow for fish species to react differently to every bait or groundbait.

The SIGHT, SMELL, and MOVE variables are percentage values corresponding to how good each of these senses is in the fish species. 0 is bad, with 100 being good.

The GBAIT and LFEED variables were referred to early and each contain six values. They can be used to change the behaviour of a species when in or approaching an area containing loosefeed and/or groundbait. The six values correspond to amounts that are added to the maximum range and subtracted from the minimum range of six environmental factors. An example of the six factors in order is shown below, with headings in grey.

TEMP O2 PH FDEPTH LIGHT COVER
1.8 1.3 0.0 10 20 10

In it's simplest form, using the example above; If the area is groundbaited, then 1.8 degrees C is subtracted from the minimum temperature range, and 1.8 degrees C is added to the maximum temperature range. The same applies for the other five values, on each of the relevant factors. By extending the maximum and minimum ranges, this has the effect of making an area more accessible to the fish species, than the same area if it does not contain groundbait or loosefeed. These values can be used for a species to specify the degree of changes made in groundbaited or loosefed areas.

Some species, for example chub, hate cloudy groundbait, and will avoid these areas. This behaviour can be re-created by setting negative values for the six GBAIT factors, making the area less appealing if groundbaited.

The description above is very over-simplified, because it depends also on whether or not the species likes the groundbait the angler has thrown in, and if so, how much it likes it, plus the amount of groundbait or loosefeed there is in an area. Note : The ideal values do not change, just the minimum and maximum ranges, as a result of a groundbaited or loosefed area.

The PULL, LIFT, RUN and TAKE variables are used in determining the species biting pattern. Each has three values on the line, corresponding to

- Chance of event occuring during the bite
- Force / power factor for the event
- Time taken for the event

The first two values ( chance and power ), can be considered as percentage values, the time values are specified in game cycle units ( Aprox 20 milliseconds per cycle ).

The CAUTION line is used to set how cautious a fish is, when taking the bait, eg how much resistance the fish will feel before deciding that there is something odd about the meal presented. There are two values both values are specified in hundredth's of an ounce, so 200 is 2.0 ounces, if the species feels the weight of the first + any number between 0 and the second value, then it will leave the bait. The larger these two numbers the less likely it is a species will react to heavy tackle. Smaller values will force the species to be more finicky and also the angler. Exactly how much weight the fish feels on a rig, is dependent on the rig and setup.

The BITETIME and STRIKETIME are used to indicate the speed a bite occurs.

The BITETIME value indicates how many cycles on average will be passed between each bite "event" ( pull, lift, run or take ). A high value, is a long time, with a low value being a short time.

The STRIKETIME value holds the amount of time the species retains the bait in it's mouth at the end of an event, this is the ideal strike time. A high value will result in a species that can be easily hooked, a low value means the angler has to have quick reactions to catch the fish.

The FIGHT line gives FS clues as to how you want the fish to react when it is hooked and being reeled in. There are three values,

FIGHT 0.003 850 70

The first is how much power the fish has per dram of weight. This is normally a low fractional value, the higher the value, the better the stronger the fish will fight. The second value represents the stamina of the fish, and is used in a calculation based on the fishes weight to determine when the fish will start to tire out. A higher value will result in a fish that will tire very slowly, with a lower value one that will tire quite quickly. The final value, is a whole integer value that represents how often the fish will change direction during the fight, giving an impression of darting from one spot to another. It is a percentage value, with a high value meaning the fish will wriggle and squirm a lot when hooked, a low value, indicates the fish will not wriggle about a lot, but come in, in a more steady motion.

Optional lines

You can add twelve MONTH lines to specify how common the species is in each specified month. EG :

MONTH 1 10
MONTH 2 50
.......
MONTH 12 20

This will make the species be more active in Februrary ( 50 % ), than in January ( 10 % )

If you specify one month line, you have to specify all 12.

A TEETH line can also be added, for species that have teeth capable of biting through line, EG :

TEETH 2.0

This will give the species teeth, the value specified ( 2.0 ) above is used to give FS2 an indication how good or sharp even the teeth are for various fish sizes for the species. This value is a factor, if the teeth line is present in either and sp or stk file, with a value of 1.0, then it is assumed a 1 lb fish will bite through 1 lb line, if the value is 2.0 then it is assumed a 1 lb fish would bite through 2 lb line and so on. As with everything else, this isn't always set in stone, it may be possible to bring a 2 lb fish in with 1 lb line still, but down to luck.

There are more lines that need to be added in SP files for sea species, than shown here, information on creating sea venues and these extra lines can be found here

STK file differences and additions
STK files can over-ride any value in the SP file for a species and also in version 2.08 or higher can add values that can't be set in the sp files. Since the creation of species was opened up, the contents of the sp files ( which are normally scrambled ) cannot be guaranteed to be correct or accurate, therefore it is highly recommended that you create your own STK files over-riding the values in the SP file. Do not create a different SP File for a fish because the default behaviour in the original sp file doesn't suit your needs, you can set everything in an stk file, apart from the name and the reference.

There are new options for stk files to directly alter fish behaviour based on conditions added in version 2.08. You can use this to force shoals to behave in the way you want based on the current air temperature and light. You can adjust the shoals feeding depth preference, water depth preference and cover preferences by a given factor based on the light and temp conditions. The lines are optional, eg : If a shoal has an FDEPTH line of Ideal = 50, Min = -50 and Max = 100. Eg it roughly prefers feeds mid water. With the previous versions of FS2, this was static, no matter what the conditions. Now you can, for example, add the following lines to the stk file to make the fish feed higher in the water when there is a lot of light (day), and lower in the water at night :

FDLIGHT 0 2.0
FDLIGHT 1 1.8
FDLIGHT 2 1.6
FDLIGHT 3 1.4
FDLIGHT 4 1.2
FDLIGHT 5 1.0
FDLIGHT 6 0.8
FDLIGHT 7 0.6
FDLIGHT 8 0.4
FDLIGHT 9 0.2

The first value ( 0 - 9 ) is the light setting : 0= 0 % - 10 %, 1= 10 % - 20 % ... 9= 90 % - 100 % The second value is the factor applied to the Feeding depth line in the stk file ( or sp ) if one isn't in the stk. So if the current light is at around 23%, that fits into light category 2 ( 20 - 30 % ). Therefore a 1.6 factor is applied to the FDEPTH settings for the shoal, making them :

Ideal = 50 x 1.6 = 80 :: Increased by 30 ( +30 )
Min = -50 + 30 = -20
Max = 100 + 30 = 130

( that has had the effect of making the fish feed deeper in the water, because the light is low 23 % )

If the light is, say, 96 %, then the following adjustments happen to the FDEPTH values :

Ideal = 50 x 0.2 = 10 :: Decreased by 40 ( -40 )
Min = -50 + -40 = -90
Max = 100 + -40 = 60

( that has forced the shoal to feed closer to the surface, as the light is 96% )

You can adjust the WDEPTH in exactly the same way with the WDLIGHT lines. By using this, you could make the carp for example, come into the margins at night, and stay out in the deeper water in the day. There is also a set of COVLIGHT lines that can be added the same, this will change the shoals cover preferrences based on the light, and can be used to keep fish tucked away around cover in the light, and be only brave enough to venture out into the open areas at night. Apart from using the light as the adjusting factor you can also use the Temperature ( only for FDEPTH and WDEPTH, not COVER ).

Temperature ranges are measured in 3 degree celsius chunks, eg : 0= less than 3 degrees C, 1= 3 to 6 degrees C, 2= 6 to 9 degrees, 9= 27 degrees C onwards

The FDTEMP and WDTEMP lines can be used exactly the same way as the FDLIGHT and WDLIGHT above to adjust a shoals feeding depth and water depth, based on the current air temperature.

NOTE : You do not have to put these lines in, nor do you have to put them all in. You can for example, just have

FDTEMP 3 0.5

This will only change the fishes feeding depth by 0.5 when the temperature is 9 degrees to 12 degrees C, all other cases are assumed to be exactly the same as the FDEPTH line set for the shoal eg, a factor of 1.0

So in summary, there are five extra commands that can be used in stk files for versions 2.08 or higher ( they are ignored if a venue is fished on a previous version ) :

FDLIGHT - Change the shoals ideal feeding depth according to the light conditions

FDTEMP - Change the shoals ideal feeding depth according to the external air temperature.

WDLIGHT - Change the shoals ideal water depth, according to the light conditions

WDTEMP - Change the shoals ideal water depth, according to the external air temperature.

COVLIGHT - Change the shoals ideal cover requirements according to the light.

(c) J.C.Spooner 2001