Build 53 has been uploaded. It includes some really nice quality of life improvements and fixes. But before we talk about that:
Dwarf Gourami Pair:
Our Dwarf Gourami pair has been modelled and is ready for painting. We are glad to be adding these into the game soon as they are another popular request from players.
We have a nice pile of newly modelled fish that we have been making over the past few weeks and now the time has come to paint them all. Our aim is to have them all painted and added into the game by the end of the month. We will be showing our progress at the end of the week as always.
Debug Menu:
This is another requested feature. A menu for controlling sandbox parameters and other options. It only have 1 option at the moment but much more will be coming soon. The option that is included this week is a visualiser that we find useful when debugging fish movement. It creates a trail behind every fish so we can see where the fish have been swimming for the previous 16 seconds. We find it quite mesmerizing and even though it does not really have much use in terms of gameplay it perhaps brings an extra layer of interest for players.
It is especially useful for us when we debug fish movement through tricky or confined places. The shape of the lines help us to see if the fish navigates cleanly between obstacles or just whacks into them. Other options we will be adding will be the usual sort of sandbox options. For instance players will be able to turn off fish getting stressed or dying. Fish wont care about the oxygen levels, plants wont care about Co2 levels etc.
This should hopefully prevent some frustration felt by players who just want to create something nice but not have to worry about balancing all the water chemistry at the same time. It also should prevent some frustration caused by us not tweaking the numbers to their optimum values just yet. If fish get too hungry too fast then players will be able to turn off fish hunger so they can continue to play the game instead of turning it off in frustration. We will aim to add a few new options every time we make a new build.
Quality of life changes were made to some fish behaviour options. Semi-aggress and aggressive fish will not gobble up every fry in sight. They will only eat them when their hunger dips below 50% and there are no other food sources in the aquarium. This is a temporary change until we have ways for players to separate fry from the adults.
Tweaks were made to how fish navigate so they don't get stuck so often and then starve to death in confusion. Their obstacle avoidance abilities should also work better than before.
Pre-selection UIs have been made more clear and have been updated to match the selection UI style.
Some of the changes that we plan to do this month are quite large so we cannot guarantee that we can upload a new build every week but we will of course be posting our progress every week so everyone is kept up to date with what is coming. Some of the more interesting changes that we are aiming to add are:
- The ability for some fish to give birth to live fry.
- Fish predation V2, it wont just be fry that can be eaten whole but larger fish will be able to swallow smaller adult or juvenile fish in one gulp.
- Floating plants,
- More food choices for carnivorous and insectivorous fish.
As usual we wish you all a lovely weekend.
The Fishery Team
development update #81
Hello everyone,
Build 52 will be uploaded in a few hours. It has been a busy-ish week. Time has been spent all over different parts of the game. Making new models for fish, plants and hardscape items. 3 new music tracks have been added. A lot of tweaks to the underlying simulation numbers have been made and of course more UI changes.
Freshwater Angelfish (Pterophyllum Scalare):
Our first Angelfish pair has been modelled and is ready for painting. This is a much requested fish. We will of course be adding various varieties of marine angelfish in the not too distant future too. When we actually add these freshwater ones into the game we will try to have two colour variations per pair which means 4 distinct fish added all at once.
Food population UI:
A new UI panel has been added that shows information about the food that has been dropped into the aquarium and also gives some nice information about the perils of over feeding. This UI will be updated in the coming weeks to show all the different diet types of the food currently in your aquarium. Soon we will add some carnivorous and insectivorous food to the game and that is when we will update this UI.
A lot of time has been spent tweaking various numbers in the game:
This is a look at some of the values that govern the metabolism of plants. If we take a look at the variable called "s_co2_in". This is the number that governs how much Co2 is consumed by a plant per second. It is multiplied an approximation of the mass of the plant in question. e.g if the plant was made up of around a cubic inch of plant matter then you multiply s_co2_in by 1 during the update. Players can scale plants to whatever size they want and that will increase the Co2 consumption.
The actual value that the mass is multiplied by, which is the part to the right of the equals character, is a very small number that is computed by dividing the maximum co2 capacity of the smallest aquarium by the length of a day in seconds and then dividing that number by 1200. This gets us a very small number. Somewhere around 0.01. Which means every second every plant will consume 0.01 co2 multiplied by it's approximate mass. Then of course all the other values are doing their things as well.
It is slightly complicated to test because we have to test it with different numbers of plants in different sizes of aquariums. We ask ourselves questions like "How long should it take for an aquarium full plants to consume all the nutrients in the water?" We read lots of information about keeping planted aquariums and aquascapes that have a huge amount of plant life and sometimes the maintenance involves adding fertilizer every 4 days. Some even recommend adding a small amount every day. We have to take all that information and try to distil it into something that is interesting for players to do without being frustrating. Though I think at the moment it is mostly frustrating and it is hard to get right but we will get it right eventually.
Hopefully anyone playing this week's update should see a difference in how the numbers change in their aquarium. All the numbers except for the algae calculations have been modified. Algae is whole different beast that will be tackled in due course. These changes have been made to make things not happen so fast. Fish don't deplete their energy as quick and plants don't require as much resources to live. For sure this is not the last time we tweak these numbers at all.
Next week I will model the first pair of Gouramis, add more help text into the game as well as tweak many more numbers and add even more UI that will show more meaningful data to players.
Busy times ahead. April is going to be a content heavy month but more on that next week. As usual we wish everyone a happy Friday and lovely weekend.
The Fishery Team
development update #80
Hello everyone,
Build 51 is ready and will be uploaded to steam in the next few hours.
Boeseman's Rainbowfish (model version 2):
Some very nice progress was made this week. Our Boeseman's Rainbowfish was modelled around a year ago but we became too intimidated to paint it because they have a very tricky scale pattern and subtle colour changes.
That turned out to be a good thing because upon opening the model file this week I saw that it was in need of a partial remodel. A year ago we were a lot more conservative with the polygon count but since then we have been able to squeeze more performance out of how the fish are animated and can now use more polygons per model. Now it is ready for painting (again) and we hope to get this lovely game into the game soon.
More modifications to UI:
Once again we spent a good deal of time tweaking a lot of UI panels to show more meaningful data to players. The fish population panel shown above now includes data that shows specifically how your population of fish impact the aquarium's water chemistry. Showing the total amounts of resources they consume or produce per second.
Plant Population panel:
We made a new panel which shows a similar breakdown for all your plants and allows you to see what the respiration requirements for plants are so you can be sure to have an idea of what will happen before you turn out the lights. We are probably also going to try and work out some sort of capacity utilization data for plants but we are still playing around with the optimal numbers to compute this.
Changes were also made to how food waste was calculated. It is now calculated based on the volume of food present in the aquarium much the same way that oxygen production is now computed based off of the volume of plant life. There will also be a new ui panel added next week that shows the food "population" which will detail the overall amount of waste produced by food.
More of these "population" panels will be added for every object type so that players can find the causes of imbalances in their ecosystems faster without feeling confused.
Inventory Info UI changes:
We also made even more tweaks the little panels that appear when you hover your mouse over inventory icons. Now certain fields will show up in red if your aquarium does not have the correct conditions for that item.
Several players expressed difficulties about not knowing whether they aquarium is in the right condition to add plants or fish. They instead had to add them to the aquarium and then see if the plant or fish is happy or not. This is clearly not good enough on our part so a lot of effort has gone into and will continue to go into showing all the data to players to they know ahead of time if they will have problems. The reddening of text is also present in the selection UI panels too.
It even works for items that require power such as air stones and sponge filters.
What we plan to work on next week: There is a lot more plumbing related ui to be worked on so players are more clear about what each plumbing device does and how well it is functioning and of course show an overview of how much the water chemistry is modified by plumbing devices along with all the other population panels.
More fish models! I have a bit of an urge to model an angelfish so expect to see that next week. If any of you are wondering when we will paint all these new models the answer is fairly soon. We want to do large-ish content update soon which will include all these fish. Painting these fish is very hard and tires us out when we switch from painting to modelling, modelling to painting. So we are experimenting with batching similar tasks together to see if that helps prevent our brains getting tired.
There is also some new music tracks that will be added next week!
Medication has been temporarily turned off in the game. There is no mechanism in the game to make use of it just yet and we are in the process of re-thinking how fish health and healing and medication will work as part of the career mode features we are working on.
Lots to do and think about. We are happy to get this update out on time this week which means we can give our eyes a rest on the weekend. We hope you all have a good and restful weekend too.
The Fishery Team
development update #79
Hello everyone,
Another slightly delayed post. It has been a very busy week as you all shall read. Nothing is going badly at all. Quite to the contrary things are going very well. We think we have solved a lot of quirks that the game has and are working to un-quirk them so the game feels right for more players. But more on that in a little bit. There is no new update to the build just yet. I want to do some more testing with my colleague before we upload it which will probably be some time tomorrow (Monday the 15th). It is certainly disappointing to anyone who has been waiting for an update this past week but hopefully once you have seen what we have done it will take the edge off of the disappointment.
Discus Fish:
These lovely beauties will be making their way into the game soon along with that Oscar fish we showed last week. Discus fish are highly requested and we made a promise to put them into the game in the first half of the year. We are going to paint around 3 colour variations at first and then put them all into the game in one update. To be clear that is actually 6 separate painted textures because we paint the males and females to be different from each other but be within that particular colour variation type so things are less repetitive in many dimensions. This should be great because then players will be able to make lovely discus only aquariums that are nice and colourful.
This next part will begin with questions:
In our game which group of plants produces more oxygen while consuming more Co2 and Nutrients?
If you had thought the ones on the left... you would be wrong. If you had thought the ones on the right... you would be wrong. They in fact produce the exact same amount of oxygen and consume the exact same amount of Co2 and Nutrients.
In our game which group of fish do you think consumes more oxygen and produces more waste?
You probably know where this is going but if you thought the single big fish on the right produces more waste and consumes more oxygen you would be very wrong. The small group of fish on the left consume 5 times more oxygen and produce 5 times more waste which it totally wrong.
Now we shall have a slightly one sided discussion about assumptions and intuition. Most people (except for me apparently) have a mental model of how things should work. Most people seeing the images above without even playing the game would assume that a larger mass of plant matter produces more oxygen and a larger mass of fish matter produces more waste etc.
The silly programmer living inside my head sees every object as a single simple entity that consists of the same numbers but ignores the overall visual appearance especially when players can change the physical appearance in the case of the plants. Players can change plant scale and it felt wrong to change the plant metabolism based on an arbitrary modification to scale. It might in fact confuse players. I could not have been more wrong because I think most people have that intuition about nature. More plant matter equals more oxygen and so on.
Realising that my mistakes were many I moved swiftly to make things right. Plant metabolism is now calculated based on the volume of the plant. That is to say that the larger the plant is the more oxygen it produces and the more Co2 and Nutrients it consumes.
Changes of a similar nature are being done to the fish. Computing fish metabolism based on the volume of fish matter in the aquarium also allows us to compute what the correct population limits should be. If you were to search about how best to house fish from the point of view of aquarium size quite soon you will find the phrase "1 inch of fish should equal 1 gallon of water". We have taken that literally in regards to computing how well stocked an aquarium is.
In the spirit of making things even more clear for players we have reduced the amount of numbers on display throughout the game. Only the most meaningful data is on display and we have added small explanations and tips where it makes sense. This also means we can remove things from the help screen because it's information is on display next to the numbers that it is meant to explain.
This displays information that is universal to all things of a similar nature in the game. This should remove any worry from players who are not sure what the needs of plants are before they add them to an aquarium because most of the base needs are the same unless specified otherwise.
When it comes otherwise specified data like temperature and salinity they can differ quite a lot from species to species. We have made the ui that appears over inventory slots to be more readable and only show information that is not universal. There is no point showing the nutrients needs of plants in that place because it is displayed elsewhere and applies to all plants. We don't want things to feel too much like a jigsaw puzzle in that way.
Once players have added a plant into the aquarium and selected it, it is useful to see what needs are satisfied so here we show the universal data to be extra clear. It also gives us the opportunity to explain further about the difference between photosynthesis and respiration. Hovering you mouse over the subheading text for about 0.75 seconds will reveal the explanation. We certainly do not want players to go to a completely separate help screen to find this information. All information must be near to the point at which it is displayed.
To bring this back to mental models of nature and intuition. Most of the time in real life if you add a small group of fish to a reasonably sized aquarium you will not run into problems with the oxygen level. The same with plants. Unless you completely fill an aquarium with plants you probably won't run into problems with Co2. A lot of people have that problem in our game at the moment mostly because we have done the numbers wrong and not provided enough information but hopefully these changes put us onto the path to fixing that mess.
Ideally a player new to the game should be able to add a few plants and some fish to an aquarium and be totally fine. Only when they want to make things more complicated the game should become more complicated.
I really want to get the update out on steam tomorrow because it has some slightly important bug fixes inside but not all the fixes I talked about above will be inside and some of the user interface wont all be updated with new info. We will however fix that all this week and get another update out this coming Friday or sooner.
Now we will have a little rest and enjoy the remaining hours of Sunday. I have been terrible at responding to forum questions this week due to fixing all these mistakes. I'll spend a good chunk of early Monday morning responding to them.
We wish you all a good Sunday.
The Fishery Team
development update #78
Hello everyone,
Unfortunately there is no update to the build this week. We have made some very good progress but as sometimes happens we just could not get everything done as we had hoped.
There have been some large scale changes done to how gameplay is saved and loaded. Reducing the use of slower procedures during these processes will be very useful for when players save and load aquariums with thousands of objects within. This also revealed areas in part of the code that were not needed at all anymore and could be deleted which is always good.
There have also been a lot of organisational changes made to the code that make it easier to eliminate a certain class of bugs and reduce the size of the code overall which I have been wanting to do for a while.
We made some really nice progress with getting plants to change their simulation behaviour depending on whether the light is turned on.
We also fixed some minor non-crash bugs that players reported.
The Oscar (Astronotus Ocellatus)
I felt a little deflated when it was time to do this post on Friday because even though much changes have been made to the code it is not something that can really be shown. Improving the speed of certain operations and reducing memory usage by maybe 8 bytes per object is not something that is easy to show or even noticeable to most players but believe me it matters. To make it feel like something of interested has been achieved this week I modelled a new fish yesterday and for part of today .
The Oscar fish has a bit of a notorious reputation but adding the Oscar allows us to begin to add various new features to the fish behaviour. You should never house an Oscar with some Neon Tetras for instance. It will not end well for the Neons. The next iteration of our fish predation behaviour will be to enable larger fish to eat smaller fish in one gulp.
We already have that working in regards to fry being eaten because every other fish is bigger than a single fry. However we need to put in place some logic that allows each fish to know what fish they can eat whole and which they cannot. Adding the Oscar gives us a reason to start working on this.
After so much programming in the last weeks I feel the need to make more art content so after some loose ends from this week's build are tied up I will model some more fish and other things. My colleague is currently working on making the first floating plants to be added to the game very soon.
If all goes to plan we shall have a new build uploaded in the coming week and some nice new art content to show.
We wish you all a relaxing Sunday.
The Fishery Team
development update #77
Hello everyone,
build 49 should be uploaded in a short number of hours. We are just doing some final checks and testing.
We have made progress that will allow us to add to some very interesting and needed changes to the game.
The barebones version of the day cycle has been added. You can see a little ui in the bottom left of the gameplay screen. What it shows is the age of your aquarium on the left and the current time of day on the right. There is a little progress slider in the middle that shows the progress through the day.
There are also two buttons for turning the light on and off. The player is in control of the light but there will be a small bit of ui that allows you to set the time of day that the lights turn on and off automatically but that will come a little bit later.
We now have these 3 key pieces of data that can be used throughout the game by anything that finds it useful but keep in mind that nothing in the game actually looks at this data yet. Lots of changes will come in the following weeks to make this a reality.
The first things that we will program to take advantage of the day and night data will be keeping track of the age of fish. We can have the growth cycle of fish make more sense and feel more natural. Algae can grow according to how long the aquarium is exposed to light.
Fish only need to eat once a day and at night they will be able to sleep to regain some energy. Certain breeding behaviours like breeding at first light in the morning can be achieved. Each species of fish and plants have their own requirements for hours of light per day that players will need to take into account when housing these species together.
Plants consume oxygen from the water when there is no light to generate energy which means the levels of co2 and oxygen will alternate cyclically making it possible to naturally balance out the water chemistry over time instead of levels going permanently up or down.
We can now also start to make steps towards making the lighting customizable. This will be a bit further down the line in development but there will be the ability to control the brightness, colour and depth that the light reaches and later on more advanced lighting setups will be possible.
It's a giant list of things that will be possible now which is very exciting.
Small tweaks to the sculpting ui.
We took away some of the on screen controls of the sculpting tools in favour of having keyboard shortcuts about 2 weeks ago but soon after we made the update we were informed that not every player is able to use the mouse and keyboard at the same time while playing the game. We have added back these on screen controls that now allow for the same functionality by using the mouse only.
Accessibility is something we probably should have been a bit more mindful of when making all these changes so in the near future there will be more of an effort to at the very least make sure that playing the game only with a mouse is possible and not cumbersome. We have also been researching more into what we can do for players with colour blindness.
We know almost nothing about the subject of accessibility so a lot of research is going to be done into this area so over time our game can be played by hopefully almost anyone.
Next week will be very busy indeed. There are some new fish models that need to be finished as well as some new types of plants that we hope to get into the game soon. There is also the matter of integrating all the new day and night cycle functionality into the game so hopefully next week's update will be very interesting indeed.
Luckily we can have a little rest over the weekend before this huge set of tasks and as usual we wish you all a very good weekend too.
The Fishery Team
development update #76
Hello everyone
As we mentioned last week there will be no new build this week. However much interesting work has been done but this post will be a little shorter than usual.
The usual batch of bug fixes, code cleanups and performance tweaks have been worked on but the really interesting thing we worked on is the water change feature. We were as busy as beavers this week getting this all working.
Water change: (gif playback is about 2x speed)
This feature will certainly help players keep their aquariums a lot cleaner and the water chemistry a bit more stable. In the example gif a 75% water change is being performed. 75% of the water is removed and replaced with an equal volume of clean water. This removes approximately the same volume of water chemistry contents. You can see there is a large reduction in algae and waste but co2, oxygen, nutrients and temperature are also reduced by this process.
This could temporarily upset some of the less hardy plants and/or fish that are present in your aquarium so players will need to get a feel for what each species can handle. There are 5 options for the percent of water changed. 10%, 25%, 50%, 75%, 90%. Performing a 25% water change will result in less stress to some of your more sensitive fish and plants but you may have to perform the water change more often.
This brings us to the next feature that we are in the process of adding. Day and night cycles. The answer to the question "how often should I do a water change?" only makes sense if there is a concept of time that is familiar to all of us. Doing a 25% water change every 3 to 5 days makes more sense than doing one every 250,000 to 430,000 seconds.
Water changes and water chemistry in general depends a lot on the concept of a day because we can better calculate how things work and how long things should take. How long should it take for algae to grow to a point where something drastic must be done? We can begin to answer those questions.
From my own experience it can be as short as three days before algae growth gets to a point where I needed to change the water, clean the glass, clean the rocks etc all because of a simple mistake. The numbers in our game will be tweaked to follow these sorts timespans and this will hopefully avoid confusion and frustration to players.
There is a lot to talk about when it comes to day and night cycles but I shall save all of that for next week. Anyway there is still much to be done so we better dive back into it.
We wish you all a very good weekend.
The Fishery Team
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.