1. FISHERY
  2. News

FISHERY News

development update #75

Hello everyone,

Build 48 is uploaded. It has been another week of bug fixes and "quality of life changes".

Changes to substrate sculpting:


After de-clunking how players can create and place objects into their aquariums last week the next mostly clunky tool was the substrate sculpting tool. It has been moved from the substrate mode and can now be activated from the normal manipulation menu on the left of the screen.

The brush gizmo has also been changed to take up less space while on screen. When it intersects inside an object it can still be faintly visible so players can still have a feeling of where it is in 3d space. There is also a line sticking up out of the brush shape that illustrates how much intensity will be applied in each brush stroke.

We have removed the ui sliders for controlling the radius and intensity of the brush. The brush itself is attached to your mouse so when you move your mouse to a ui slider on the left side of the screen to adjust it's radius or intensity the brush that you are adjusting ends up behind the ui you are using to adjust it. It is just terrible.

So our solution is to change the brush radius and intensity using hotkeys. Simply hold down the spacebar and hold down left click and then move the mouse up or down to adjust the intensity and left or right to adjust the radius. When these adjustments are being made the gizmo does not move with the mouse so you don't have to chase it around the screen with your eyes while you are adjusting.

More adjustments can be made via hotkeys. Holding down either left or right shift will temporarily turn the brush into a smoothing brush. This makes it less fiddly when sculpting.

A similar adjustment can be made using either the left or right control keys. This will turn the direction of sculpting to be negative. By default the brushes will move the substrate upwards. This wont always be the desired outcome and it can be quickly switched using these keys to modify the behaviour.

These are standard hotkeys used by most of the 3D software we use for doing brush based modelling. I was reminded of it by someone who suggested it in a recent post so thank you very much to that person.

We also added a new tip ui that notifies players of these hotkeys and techniques when they activate the sculpting tool.

New algae reactor:


The current version of the algae reactor that is in the game is a bit boring so we have replaced it with something a bit more fun. The old version has not been removed yet because we don't want any players who are currently using it to suddenly have it disappear from their games. That should only happen when we do a major update.

Salt Filter:


The way that salinity currently works in the game is not that great. It is not a terribly complicated part of the game but we have still managed to make it less fun than it should be. This is the first step to fixing our mistakes. Now players actually have a way to remove salt from the water. The next change we will be making is to make it so players have a more precise control over adding salt to the water. Currently you can just add a dissolvable pill that takes a while to add salt to the water and players often get the dosage wrong but that will be changed.


We have also done some small tweaks to some fish behaviours. Some fish get a little stuck if they are trying to nibble algae but something suddenly prevents them from moving. They better detect if they are obstructed and then exit the behaviour if they cannot reach their target.

We also fixed some weird structural bugs that seem to be occurring when the game is closed. It does not actually matter to players because it is happening when as they quit and it happens rarely but we get confusing bug reports that make things less easy to understand in such cases which is not great.


Next week there probably won't be update to the build because there are some fairly tricky things that are being worked on and it will most likely break the game until it is properly integrated. These will be more quality of life fixes, bug fixes and the beginnings of the day and night cycle integration.

We hope you all have a good weekend

The Fishery Team



development update #74

Hello everyone,

Build 47 is done and should be uploaded some time in the next few hours.

What made it into this week's build has been mainly quality of life tweaks and bug fixes.

Better placement of objects:


We have received a lot of good feedback that told us that object creation is just way too clunky. The scale of objects when they come into the aquarium is always awkward and undesired. We have been devising a few ways to address these problems over the past weeks and this week we put in what we hope is a step in the right direction.

When creating objects you click their icon in the inventory and then click in the aquarium where you want it to be placed. That part has not changed but now if you hold down the left mouse button as you place it into the aquarium and drag the mouse either left for right it will rotate that object. Dragging up or down will scale it. To finalize this new object's placement you just let go of the left mouse button.



The same goes for creating plumbing objects too with the exception that scale cannot be modified.

changes to placement settings (top right ui panel):


furthermore the options ui for placing objects has been moved to a better location in the top right corner and is only visible once you are actually in placement mode.



If you hover your mouse over the labels of the attributes in that ui for around 0.5 seconds then a help panel appears which explains what that attribute does. Over time we will have these time delayed help panels for all important things in the game so players dont have to search through categories in a separate help mode in order to find out what a single button does. And we will have more mode specific tips that tell players what they need to know.


There were also a lot of small bug fixes. This week we found what we think are the causes of a few rare bugs and put in a fix that should prevent them happening in the future.

We have also created more plumbing objects but they will be added to next week's update. The list of completed plumbing objects currently in the game is quite short and we are missing a lot of basic things that players could use. Players have complained that there is currently no way to remove salt, co2 or excess oxygen from the water. We have plumbing devices that add those resources to the water but need devices to remove them too. This is bad because we have not yet added water changes to the game so there is no way to restart/stabilize the state of the water in a super emergency.

You can thank someone on the forums for convincing me to add water changes. I started off my reply to their request stating why I don't quite like the idea of adding water changes and why I find it tricky to add from a visual and logical design point of view and gave some possible solutions that would make it ok to add water changes into the game which I thought were perhaps not very good. But they were quite happy with the possible solutions I proposed and after some reflection I quite liked them too so... relatively soon we will add water changes.

We will continue next week much like we did this week. More quality of life tweaks to the game based off of player feedback. There will also be some more progress made to the day and night cycle stuff features and the usual bug fixes and performance boosts. Finishing off the next batch of plumbing devices and possibly adding a new fish. It will be a busy week indeed.

We wish you all a good weekend

The Fishery Team


development update #73

Hello everyone,

Build 46 should be uploaded some time today (Sunday the 31st Jan). We are just doing a final round of testing before releasing it to steam.

A lot has been written in the last weeks about what has gone into this update so rather than just repeat myself as I too often do It is far better to actually show some of what we have been working on.

Fry Predation:


Aggressive and semi-aggressive fish are always on the look out for a quick snack so keep that in mind when you have them in an aquarium with fry. Peaceful fish will only eat fry when they are really hungry.

General movement:


There have been a lot of tweaks made to how fish are animated. We have introduced more subtleties and fish are not always in a hurry to move about. The fish in the above gif is sort of taking it easy. It swims a bit the coasts for a second or two and then swims a bit more. It is using it's "arm" fins more than it's tail because it is not trying to go very fast. However if it wants to move much faster then it will use it's tail more.

Curves to control procedural animation:


This is controlled using animation curves that are used to drive the intensity of swim speed, arm movement speed and tail movement speed.

Detailed view of a curve:


At the low points the value is 0 and the high point value is 1. Think of it as "off" and "on". Each fish has an internal timer that reads the curve as time increases. Depending on the type of behaviour that the fish is currently executing it will choose a different curve. Essentially what this curve does is have a value of 0 for one to five seconds and have a value of 1 for one to five seconds. If we were to just use the values of 0 and 1 to drive the animation we would get a very jumpy animation so what we do is smooth the output values from the curve so the transition from 0 to 1 or 1 to 0 happens over the course of 0.3 seconds or so. All of these curves are generated randomly based on some rules. For instance the flock curve has smaller periods of it being 0 and longer periods of it being 1 otherwise there would be too many fish falling behind their group.

Navigation:


This system broke last week because the existing version of it that was written just did not work well with the new behaviour changes we have been making. Thankfully though it was somewhat quickly rewritten to work nicely and it works better than before using less complex code.

What you can see happening is our puffer moving towards a target which is being an obstructed. The pink line coming from the puffer indicates that it has detected an obstacle in it's way and it is close. It then shoots out some radar lines in multiple directions to see if it can find any non obstructed space to move into. These are the many blue lines that are pointed out from it. If it finds non obstructed space then it adds movement force into that direction. It is also still applying force to move towards the target but the correction forces nudge it just enough that it appears to move around the obstacle. As it moves around the obstacle you can see there is a little jolt in it's movement. This is because it is hitting the glass. We are sort of on the fence as to whether we should allow the fish to just bash into the glass. Certainly in my experience of keeping fish I have seen that happen so it is a somewhat realistic behaviour but in the game it feels a little too much like an imperfection that should be corrected.

Possible future for navigation:


At the beginning of the week I did a bit of research into alternative ways to do navigation. What you see in the above image is a way of finding the path (pink line) from point to point and avoiding obstacles using a fairly smart algorithm to find the shortest correct path. It is known as Astar or A* pathfinding. It is quite an old technique that has been used in countless games. Usually it is used for navigation on a 2D grid for characters moving across the floor.

The algorithm


This is an visualisation example found on Wikipedia. the code actually searches almost every possible path from start point to target point and then calculates the shortest path. If there are a lot of obstacles in the way then it results in much more calculations but a correct path is always assured as long as the target point is not stuck inside barriers without an entrance.

This is something that could be useful in the future but it requires a few changes to how we setup things in the game. It also means that fish have to request a path before moving towards the target. This means a lot of computation is done before the fish even begins swimming and if there are a lot of fish in an aquarium then that must be managed because we cannot calculate 500 paths on the same frame however it would be unlikely that they would all need a new path at the exact same time. But if a fish is swimming after another fish or chasing a piece of food is dropping down from the surface the path must be recalculated perhaps once every half a second because the target is moving. Also the player could be moving decorations around that obstruct an existing correct path so there must be mechanisms in place to check that a path needs to be recalculated. If the aquarium is quite large then there are move possible paths to explore and that will increase the time it takes to compute a path.

For now we much prefer the fish finding their way around the aquarium as they do now. It allows the fish the figure out where they are going as if they are thinking creatures and if they do get stuck that might be a good way of telling players that they have decorated their aquarium in such a way that fish find it hard to move around.


Next week we will take a break from doing some of this more complex work and concentrate on some quality of life changes in the game. There have been many very good suggestions made by players in the forums and in response to weekly update posts and it would be good to make some changes based on those before we move on.

We wish you all a good Sunday.

The Fishery Team







development update #72

Hello everyone,

My goodness it has been a somewhat disappointing end to the week. Tis in fact Sunday which is not the usual day to post an update at all and unfortunately there is no new build this week. There has been a lot of good changes made to fish behaviour and fish animations this week but the problem is that I have managed to somehow make it so the obstacle avoidance part of the code is not doing it's job properly and the fish are just swimming into things and getting stuck. Most likely it is some stupid mistake I have made in the vector maths or something equally silly somewhere else but I'm just a little too tired to realise what it is so I can fix it.

disappointed puffer



We did manage to get stress behaviours working. this means that certain semi-aggressive and aggressive fish will seek out other fish and attack them when they are stressed out. Puffer fish just inflate and sort of swim around in a cumbersome manner which is quite fun. When fry get too stressed they just die. Other fish just stop eating.

When a fish is being attacked it will try it's best to flee it's attacker if it is of a peaceful temperament otherwise it will fight back. Though if it fights back it could easily be confused for mating so a little more polish needs to go into the first iteration of that behaviour before we release it.

Predation is almost in the game. We have focused on predation of fry first. If fish are really hungry and there is no food in the aquarium but there is fry then the fry becomes food to them. More aggressive fish will not wait so long to eat them. If they are slightly to moderately hungry and have a choice between fry and some non-living fish food then they will choose the fry. There will of course be more nuance added with this as we make progress but this is the first version because certain fish have more "rules" when it comes to eating fry.

We have also made careful preparations in the code for adding the day and night cycle. Having the concepts of day and night will have drastic changes on how behaviour in the game is triggered. For instance certain fish like to spawn first thing in the morning when the lights come on. Other fish spawn at night in the moonlight. It also allows us to make algae growth dependent on light as well as nutrients levels. Plants breathe in oxygen and breathe out Carbon dioxide at night. The concept of age actually becomes a proper thing with a day and night cycle. Suddenly the length of time something has existed in the aquarium can be measured in days which means fish, plants and the aquarium itself can have age related parameters which allow for more interesting things to occur. It will also mean that fish will only need feeding once a day. We will be able to fix a lot of those kinds of issues that are related to the frequency of things occurring.

So time for a little rest and then back to work making this game better.

The Fishery Team

development update #71

Hello everyone,

There is no update to the build this week. We have managed to get a lot of work done but certain parts of the game are being dissected in order to make them better. I will get to that further down but first we have new content to show.

Mesoheros festae. Commonly called the Red Terror Cichlid or Festae Cichlid

Male:


Female:


These lovelies will replace the last googly eyed fish we have in the game. They are about 95% complete and will be in the next game update.

Triceratops-ish skull:


This fine specimen has been painted. This will also be in the game in the next game update.

Now to the reason we have no build update this week. We have added a lot of changes to fish in the past month which also included puffer fish and now the new red terror cichlids which are larger than any fish currently in the game. Adding new fish that are unlike previous fish allow us to see where parts of the animation, locomotion and behaviour systems need more work. A lot of the focus this week has been on behaviour. We have added aggressive behaviour to the betta fish but in doing so we must add separate panic and combat behaviours as well.

After all it will not make sense if a Betta is attacking a neon tetra and the neon tetra is swimming along as if nothing is wrong. It should try to evade the Betta. However if the fish being attacked is another Betta or a fish that could could fight back then it should fight back. If some peaceful fish are nearby when this happens then they should show signs of alarm or panic and swim away from the fighting. It becomes a chain reaction of behaviour that propagates through the population of your aquarium. It is a bit tricky and requires a lot of thought and testing but we are on the right track for sure.

This is a little bit of a short post this week but I want to squeeze in some more time to program fish brains. I have not been as active as usual in the forums during the week due to the intensity of the work but I'll answer some questions and comments over the weekend for sure.

We hope you all have a good weekend.

The Fishery Team