1. FISHERY
  2. News

FISHERY News

development update #95

Hello everyone,

Build 60 is going through final testing and should be uploaded some time tonight.

It feels good to get a new build out so soon after the last one. Our main focus this week has been split between making 3d models for new decorations, adding a highly requested new feature and of course many bug fixes and tweaks.

Creative Mode Options:


After quite a lot of players requesting it of us we have added options for players to completely disable certain parts of the simulation. If all of these new buttons are checked on then in theory you have a perfect aquarium operating perfectly forever. It puts the game into a 'Creative Only Mode'. Players have asked for these abilities for a number of reasons. Often it is just so they can spend all their time being creative with decorating the aquarium and not worrying about water chemistry, plant and fish death etc. It also means players can put the game into a sort of screensaver mode where they can load up an aquarium and enable these options and then go into photo mode to hide the ui and let it run for as long as they want while they do other things.

These new options are saved with each aquarium and can be found in the debug menu in the top right of the screen.

They might also be useful if players encounter a bug that makes gameplay a bit more tedious and annoying than usual. For instance in the past we had a bug with breeding where populations grow out of control because we had adjusted the numbers in such a way that it made every fish breed like guppies. If such a bug occurred again players can enable the 'Disable Fish Breeding' option to avoid such problems and continue playing until we fix it.

We got a lot of nice feedback from players after the previous build was uploaded. I am happy to say we have modified the fish hunger code to now make them actually want to eat food again. There was a combination of a few bugs and misplaced ideas that led to fish not being very interested in food at all. That has all now been fixed along with many more bugs.

Red Terror Size And More Plants Handling Warmer Waters.


A keen eyed player noticed that our Red Terror Cichlids were way too small. They have now been made bigger. They are not as big as the largest observed size that the species has been known to grow to but they are much closer to what their size is expected to be.

Some of our freshwater plants have had their temperature requirements adjusted. It was pointed out to us that we don't have a lot of warm water plants that do not require salty water and a few of our existing plants could handle warmer temperatures. We went through our plants and made some adjustments to their temperature requirements after doing some research. Eight species of plant already in the game can now be placed in cold or warm water aquariums and soon we will add some entirely new species of plant that have the same needs.


This was a much shorter post this time but we have fixed much and added some small new things that have been on the todo list for quite a while. We are also working on getting more art content into the game hopefully we can either give you all a sneak peak next week or even include new decorations in the next build.

As usual we wish you all a very good and restful weekend.

The Fishery Team

development update #94

Hello everyone

Finally build 58 has been uploaded. It has been around three months since we last updated the build and that is really way too long to go without doing a build update. However we have managed to improve a lot of things players have asked us to improve and we have added new features that have been on the todo list for quite some time. Let's get started with all the new fish.

Blue Betta female:


Blue Betta male:


We mentioned these in a post a while ago. They were taken out from the game when we improved the betta fish models and a player asked us if we could put them back in. We repainted the old blue betta design onto the new models and here we are.

Boeseman's Rainbowfish Male:


Boeseman's Rainbowfish Female:


These have been waiting around to be finished for quite some time. If I ever get back into keeping fish again in the real world I would really love to have some of these lovelies.

Freshwater Angelfish Female:


Freshwater Angelfish Male:


Highly requested among players and now in the game. There will be more colour variations to come in the future.

Dwarf Gourami Male:


Dwarf Gourami Female:


Initially we painted the female to look quite similar in colour to the male but someone pointed out the females are actually quite colourless. After some research it turns out that some breeders are able to breed females to look more colourful because they sell better. That is quite interesting and will be part of a storyline in career mode.

Oscar Fish:


Albino Oscar Fish:


There is almost no visual difference between Oscar fish genders so there are only minor differences in the paint jobs we made. We thought we would throw in an albino variation since they look quite interesting and we had no albino fish in the game yet. This means we have a grand total of four Oscar fish with this update.


All our fish:


There is quite a lot of fish in the game already and we have many many many more still to add. I think the next group of fish we add will probably be more "basic" fish. We are in desperate need of some fancy goldfish varieties which no fish game should be without. Also common fish associated with aquascaping like Harlequin Rasbora, ember tetras among others should be in the game.

What else have we done for fish since the last update?
We got a lot of players telling us how their fish get stuck or cannot reliably find their way to food so a lot of effort was concentrated on pathfinding. We made a more detailed post about the pathfinding system a few posts back so I would recommend looking back there for the technical details. Now fish should not get stuck or lost when seeking food or a mate. Unless of course there is literally no way for them to swim to their target's location.

Fish getting stuck:


You may see this happen from time to time. Not every behaviour uses the pathfinding system for navigation. For instance wandering and shoaling behaviours use algorithms that have a similar but better version of the previous approach to navigation. They shoot out laser beams trying to find empty space and move away from close detected obstacles. This can of course go wrong if the fish get's itself into a tight area with small exit holes. In a funny way it is like a kitten climbing a tree but not knowing how to get down. This is something we are putting a lot of resources into solving but it is going to take time to get right and as long as you decorate your aquariums in such a way that there is space for them to swim based on their size then it should not happen too often. If it does happen then you can use the nudge tool to drag them out of their predicament.

Predation has been updated. All fish can eat fry as before but now larger more predatory fish can eat smaller fish so do be careful with what you house with the Oscar fish and Red terror cichlids.


Alerts:


We used to have a way of alerting players to trouble in their aquariums but it was not very good. We have revamped it to be better and configurable. In the above image you can see in the bottom left that there is a button for enabling/disabling the alerts overlay and there is a smaller button which enables the alert mask.

Alert Mask:


What the alert mask allows you to do is configure exactly what alerts you wish to see. For instance if you only want to see alerts for fish then you can turn off alerts for all other things making it easier to see what fish have problems.
At some point we may expand alerts to be similar to how Planet Zoo deals with alerts. By having a ui window with a list of all the alerts within. That system makes a lot of sense for planet zoo because the map is so big that players are not going to go around their zoo looking for alert icons. In fishery players have the advantage of seeing everything in their aquarium on screen at once most of the time. In this case it may not make sense to add a planet zoo style alert list. We will have to test and see if it feels right.

Hide UI:


The ability to hide the entirety of the user interface is something often requested by players and I kept saying we will add it in the near future and then rather embarrassingly got distracted by other more fancy features. Well now it is in the game. Players must enter photo mode in order to turn off the ui. If the whole point of hiding the ui is to immerse oneself into an uncluttered pretty world then it might help to adjust some camera settings like field of view or depth of field before doing so. It also now means that players can hide the ui before hitting F12 in order to make a screenshot to upload to steam. It is hugely embarrassing that I got that wrong.


Since we are speaking about ui, we adjusted about 70% of it again.


This is the fish selection ui. It is very important that when the alert icon displays on top of a fish that players can select that fish to get a deeper understanding of what is causing the alert. The problems are highlighted in red in this ui as is the same for plants, powered items, plumbing items etc. You may also notice there is a new 'Minimum Aquarium Volume' field which should give players and idea about which fish to put in their aquariums. We also keep track and now display the age of each fish. We do not have a lifespan for them just yet but we will do in the future. The amount of time it takes for fry to grow into a juvenile and a juvenile into an adult is much longer and more correct than it was before.


This information is also available in the info ui for fish found in the 'shop inventory' so players can know if the conditions are right for that fish or plant before it is placed in the aquarium.

The Delete Button:


A delete button has been added. The usual keyboard shortcuts of the delete and backspace keys still work but we had a lot of requests for a button so it has been added. Though in the near-ish future the way that things are removed from the aquarium will be slightly more complicated. Things will be sold, put into storage or deleted.

Sculpting UI:


The sculpting UI desperately needed improvement. There are also areas that you can hover your mouse over to get further info.


A lot of the water chemistry UIs have been modified to look nicer and be more clear. The one above that shows temperature has better colours and it is clearer what region the temperature is in.


This change also comes to the heater ui. Players can adjust the blue slider and it shows the region of temperature that the water will be heated too and it will not go beyond it.


Fish selection is now very easy. Until now just selecting a fish was tricky. Why? you ask. because the hitbox was a sphere placed near the front of the body:


Players would need to click their mouse over this invisible sphere in order to select it. This was done for a few reasons that are perhaps a little too technical and tedious to try to explain but it had to do with how the fish rotated and collided with obstacles.


Now we made some changes that made it make more sense to use a box. Thus as a side effect selection is much easier and less fiddly.


Time Manipulation:

Another highly requested feature that I kept insisting was not possible due to physics accuracy and other reasons is now in the game. The ability to speed up time allows us to hopefully fix a lot of problems with the game. We got a lot of feedback that things happen too slowly or too fast or too often or not often enough. We have now made the length of an in-game day longer and the speed at which things like hunger, breeding, suffocation etc happen are much slower. Even when things go very wrong in the real world it can take a while for their consequences to show. Anything short of a bath bomb falling into the aquarium usually allows for enough time to do something about it without panicking

When things get a little slow or tedious such as waiting for the night to be over players can increase game speed up to sixteen times.


Time can also be frozen so players can take their time to fix problems without too much pressure. It also gives players time to adjust their camera nicely for screenshots.

Those are all the biggest changes we made. We also did a lot of bug fixing and other small quality of life improvements. The clownfish were about half the size they should have been so expect them to be larger in your existing aquariums. Hopefully it won't cause too many problems. Water chemistry will also be different from when you last loaded a file because of changes we have made but in general it should not be too different. You may have to get used to the new speed that water chemistry changes. As was said before, in general things happen slower but in extreme circumstances like adding 20 airstones to a small aquarium things will happen quite fast.


There are some changes that we said we were aiming to put into this update which we were unable to finish. Live birth is almost ready but needs refining. As is the new debug settings for allowing fish and plants to ignore water chemistry so players can ignore the simulation aspects and just get on with being creative if they just want to chill out a bit. That will be coming very soon and we will return to our more regular schedule for build updates that come every one to two weeks.

Quite a lot of work went into this update but there are still quite a few rough edges in the game as whole and there is a tremendous amount of content missing. The next update will come next week and will probably include the usual assortment of small tweaks and bug fixes among other things.

It has been a while since we have added more decorations, plants and general creative content into the game. We often take a look at the screenshots uploaded by players and they are fantastic. It is quite surprising just how much can be made with the small assortment of decorations that we have provided but it really is time to add more so expect in the coming months more creative content.

As usual we wish you all a very pleasant rest of the week,

The Fishery Team















development update #93

Hello everyone,

This is not a proper full blown update post but it has been a while since we shared some progress so think of this a "pre-update" update post.

We did not meet our aim for releasing a build update by the end of august. This is not because things are going badly. Things are actually going very well indeed and we have been as busy as beavers getting it all together.

As usual we got a little too excited and have crammed a lot of work into this next build which results in a longer period of testing and tweaking of numbers. We said in a previous post that we have finally added the time manipulation feature into the game that quite a few players have asked for but it requires us to rethink all of the numbers associated with the simulation side of the game.
Everything can now take longer to happen which should remove a lot of the frustrations players have told us about with things happening way too fast. Now the time it takes for breeding, eating, dying, becoming stressed etc etc should feel more natural in length and hopefully players won't feel the constant pressure to manage things all the time but can instead take more time to focus on the creative aspects of aquariums.

Among all the other changes we have talked about in update posts over the past months we have also been working on the usual batch of quality of life changes. We have reworked our old alert system which had been turned off for some time because it was so crap. It is now better and more clear so players can see very quickly which fish or plants have a problem.

All of the fish we have talked about over the past months are finished minus a few tweaks here and there. In total we are adding 5 new species of fish which actually amounts to 10 individually modelled and painted fish added because there are often differences between fish genders.



Above is a sneak peak of the male freshwater angelfish before we add the scales and yes we will of course be adding marine angelfish in the future too.

We will be ready with the next update fairly soon and I will write about it in a very very large update post that details all of the changes. I expect it will take me a whole day to write so the new build itself will probably be uploaded to steam a day before you see the news post announcing it.

We hope you all have a nice Tuesday and shall talk again soon.

The Fishery Team

development update #92

Hello everyone,

As you can imagine we have been working rather busily these past few weeks and there is much to talk about. There is still no new build update yet but we are getting closer.

Blue Betta Male:


Blue Betta Female:


These lovelies were in the game over a year ago but were removed after we updated the models for the betta fish. Someone on the forums asked us to bring them back because they liked them so much and we have done that. In the next build the blue betta fish will return.

We are still working on the other fish we have shown off in the previous few months like the Oscar Cichlid, Rainbowfish, Freshwater Angelfish etc so expect to see them very soon also. The Oscar fish can't be put into the game until we have updated the predation features. Specifically larger fish will have the ability to swallow whole fish that are small enough to be swallowed whole. This meant that we first needed to make changes to some of the behaviour code so that all fish know what other fish they can eat.
On top of that the behaviour code needed improving so more interesting and complex behaviour could be possible and we desperately needed to improve the pathfinding abilities of all fish so they don't get stuck or lost 70% of the time. This was shown in our previous update post. As usual to solve one problem we must solve a further six problems.

Some of the other behavioural changes we are working on have been requested by players. Such behaviour changes include all members of the same variety of a species being able to socialise and breed. For instance all guppy types can socialize with each other and potentially breeding with each other.
We have also vastly improved how we calculate swim level behaviour for fish. For example guppies like to hang out somewhat near the surface of the water whereas tiger barbs prefer to be around the middle level. These improvements to the code as combined with better collision avoidance methods allowed us to add the behaviour of bottom feeders like Corydoras. They swim about at substrate level and stick their noses into the substrate looking for things to nibble. Since this behaviour now works it means there is nothing stopping us from adding bottom feeders like Corydoras into the game which makes us very happy because they have been on our to-do list a long time and players really want them.

Pause Time Feature:


We are also about 95% done with adding the pause feature. It is somewhat trickier than you might at first think it is. Pause can mean different things in different games and depending on how you do it will create different outcomes. We want the ability to freeze everything in the aquarium so it does not move and does not update any sort of internal state like hunger or age. It would be very stupid if you pause the game and the fish stops moving but it starves to death while paralyzed. Very bad. We also need to freeze but keep the current velocity of fish and other physics objects so when players unpause the game things continue as normal on their physics trajectories.

The same must happen for fish behaviour. A fish might be hungry and swimming towards a nice piece of food only to have the player pause the game and then unpause after which the fish's brain is reset and it has decides to pursue a different piece of food or have a wander about. Care must be taken to preserve the "thoughts" of the fish as the game is paused and sub sequentially unpaused.

Not everything should be paused. The music should keep on playing and we must retain the ability to move the camera. Object selection must stay active and updated. If players move decorations whilst the game is paused the physics system must keep track of where everything is and if a moved decoration comes into contact with a fish then it must move the fish. This is important because if we unpause everything when physics objects are inside eachother then the physics system might freak out and move things around until they are not colliding which could mean things fly about at high speeds or appear to teleport which is undesirable.

Pausing a game like Fishery has to be very carefully controlled indeed. We are about 90% done with it. You may not be able to see it in the gif but the plant leaves are still swaying slightly. The Not all particle systems for plumbing objects pause. These are very simple fixes though.

New Shop Thumbnail Images:


Now that we can pause the game players can have an easier time in photo mode putting the camera in a nice position and adjusting depth of field settings without rushing. One thing that we find useful is that we can now make better images for the in game shop. If you buy fish from a website you usually can see nice images taken of fish while they are in an aquarium. Adding this to our re-designed in game shop will make things feel a little more true to life and more polished.

Time in general causes no end of troubles for us. A lot of the feedback and suggestions that we receive from players talks about time. Specifically that some things happen too quickly or too slowly. Fish breed way too often and become hungry too quickly. The time it takes to filter out waste can seem slow. The time it takes to increase nutrients levels can be slow or too fast depending on the size of aquarium and so on.

In the real world generally it takes two weeks or more depending on the specifics to prepare the water of a small to medium size aquarium for fish. It just takes time for the water chemistry to become ready to handle fish and decompose waste, etc. We could of cause adjust the values in the game to reflect that of the real world much closer but we would have to make players wait longer for things.
Furthermore it seems that speed that time passes is relative to what players want to happen. For instance it is desired that waste is filtered fairly soon after adding a filter and the speed at which waste is produced by fish or food should not be so fast that the aquarium gets dirty too soon. We all would like oxygen or nutrients levels to adjust to what we want quickly but if things are imbalanced then it should go wrong slowly so we can have time to react.

We have attempted to change how all the maths works for water chemistry several times and added a few magic numbers and tricks to account for all of the biases as mentioned above but it seems that we just cannot get it right and there are not many solutions left except to make the numbers work in a more realistic manner and allow players to speed up time where needed.

Fast Forward Time Feature at 16x: (sorry for bad compression steam only allows 3mb file limit)


A lot of players have requested it but I have said many times that we were not planning on making time manipulation features because it could cause problems around physics stability and for various other reasons it was not something we whole heartidly wanted.

However after a lot of thinking we both decided that it actually does help us solve quite a few problems. We don't have to worry too much about sneaky maths and magic numbers when it comes to water chemistry. We can use more real world numbers when it comes to breeding, age, metabolism, algae growth etc and players can speed things up where necessary. One popular reason for why players want to speed up time is so they can reduce the amount of time they have to wait while the light is off so plants and fish can avoid too much light exposure and the chances of growing algae is diminished. Hopefully now we can ease those player's annoyances.

I could probably go through many many examples of why this is useful but I imagine those of you who have played the game will have your own useful reasons for speeding up time.

More will be explained about the time manipulation features in another update post. I managed to work on it a lot over the weekend and there are only a few small slightly fiddly bits of it left to fix and test before it can be put into the game. The next step after that is to adjust more of the numbers in the game so a lot of things do not happen so often or so fast. The first of these numbers to be fixed will be about the frequency that fish can breed and how quickly fry grow into adults. At the moment this happens way too fast and there are a lot of players with over population problems cause by out of control breeding.

The feedback and discussions you are all participating in on the forums does make a huge difference and every week we are solving important problems based on these discussions. A lot of the changes we have talked about in this post were based on feedback and suggestions from the forums and the game is a lot better for it.

We are fairly confident that the next build will be released some time in this month (August) and it will include everything we have talked about in this post.

We wish you all a very good start to the week,

The Fishery Team






development update #91

Hello everyone,

This update will be slightly different than previous ones because it delves into some of the more technical aspects of the game. One of the problems I am tasked with solving is the always fun problem of obstacle avoidance and path finding of fish and other creatures.

Anyone who has played the game before has no doubt noticed that there are times when fish get a bit stuck and can't seem to figure out their surroundings. This is especially noticeable in aquariums where there are a lot of decorations creatively positioned about the place. In such aquariums when a fish wishes to seek out and eat some food that has sunk to the bottom of the aquarium it is especially difficult to navigate around these decorations in order to reach their meal.

Our fish have the ability to sense what is in front of them in a very basic way. It shoots out a laser beam from it's nose in the direction of it's food target. If that laser beam does not hit anything then it assumes there is nothing in it's way and it will swim towards the food. If it does detect something then it shoots out more laser beams at a wider angle and tries to find a space within it's vision where there is not obstacle. If it finds open space then it's swim direction is changed to this new avoidance direction and after a small period of time it attempts to swim in the direction of the food again and the process repeats itself.

When this process works well what you see is the fish swim around obstacles in order to get to their food target. When it does not work what you see is the fish going nowhere in particular or move towards then away then towards the target again but not actually making any progress.

This "laser beam" detection technique works in most cases when the fish is just going about it's business and going nowhere in particular. As soon as we give the fish a destination that has obstacles in between then things can go wrong.

A common technique used in games for decades is to partition 3d space into a grid structure that stores obstacle data and use that to compute a path from one position to another.

(to see larger image, right click and open image in new tab)


We make 5 grids at different resolutions. Starting from the left, the largest cell size knows only about the 8 cells within it's bounds that belong to the next grid resolution. Each of those 8 cells only know about the 8 cells from the next resolution that fit within their bounds and so on. The number of cells on the right most grid is 4096. Each of those cells needs to know whether or not an obstacle sits within it's bounds.



The simple way to do that is to run a piece of code that checks for collisions in every cell in every grid but that is wasteful. The optimised approach is to start by doing a collision check on the lowest resolution grid (left most). That will of course test positive for the substrate because its bounds is as big as the aquarium. We then step to the next resolution and run a check on 8 cells. The bottom 4 cells will test positive for the substrate but the top 4 cells will test negative. Logic tells us that if these top 4 cells cannot detect the substrate then none of the cells of the higher resolution grids that sit within the same space will detect substrate either. We can then skip doing collision checks on these cells and save some CPU performance.



Now that we have a reliable and fast way to get a good approximation of where all obstacles are we can then compute the path any between two positions.



The image above shows a path that have been computed from the position of a fish to the position of some food. A path is computed using what is essentially a type of sorting algorithm. The code starts at the cell nearest to the fish and then expands out to every surrounding cell that does not hold any collision data until it finds the cell closest to the target. Once it finds the target it then backtracks it's way to the fish position. It is this backtracked path that becomes the path that the fish will use.

We have implemented the basic well known version of the algorithm but the path it produces is a little weird looking sometimes. It correctly goes from fish to target but the route makes the fish look a little drunk. There are still improvements to be made.

Once our fish has a path they can then simply swim along it to get to where they want to go. They do not need to worry about encountering obstacles because the path already avoids obstacles. If a player moves an obstacle into the path it is then invalidated and recomputed to account for the change in obstacle position.

This technique will not be used with all fish behaviour. It will generally be used only when a fish absolutely needs to go to a specific location such as to eat food or locate a mate. We are only just scratching the surface of how useful these techniques will be in Fishery. This technique will allow us to have shrimps, snails and other creatures crawl around on things so we are another step closer to shrimps.

The grid structure will also be useful to help store other bits of information about the aquarium. It could be used to help Betta fish and Gouramis to figure out good places to build bubble nests or fish like plecos to find places to hide. It also allows us to fix old bugs like eggs dropping through decorations or substrate and fry being born inside objects.

This is just some of the progress we have been making in the previous few weeks. I am not entirely sure when the next build update will come but It should be relatively soon and it will include these new pathfinding features. As usual we wish you all a great weekend.

The Fishery Team