This update brings a whole revamp to the farming system along with new items to help you keep your crops in perfect condition as well as other improvements and fixes.
Farming 2.0 Basics
There's been a major overhaul of how farming and plants work. All the various conditions of a plant are now important, and the better the conditions, the better the rewards.
To achieve the full yield potential, you'll need to make sure the following conditions are as ideal as possible:
- Water saturation
- Ground condition
To make it clearer what's happening with your plants, there is a new info panel that appears when aiming at a plant entity:
This updates in real time as you make any changes that might affect the conditions of a plant, such as turning on lights, adding fertilizer, etc.
Keep an eye on the "Overall" value - it's the most important one. This shows the current growth rate of the plant. The higher it is, the faster the plant will grow - and the more yield it will produce.
This overall value is calculated by taking the lowest condition value.
Each plant type can have different resiliences to the various conditions, meaning some will grow more easily in certain areas than others.
You can view the resilience values on the seed information panel.
Composter & Fertilizer
A new deployable, the Composter, has been added. Stick stuff in, wait a bit, get fertilizer out.
Fertilizer can be added to planter boxes to increase the ground condition to 100%.
Only items that you'd expect to be compostable can be placed in the composter. It ticks every 15 minutes by default, and once enough stuff has been composted, it'll output a shiny new fertilizer item.
Some things compost better than others, contributing to higher amounts of fertilizer.
Which brings us to...
Horses now poo.
Collect it, put it in the composter, get a nice amount of fertilizer.
They poo every 20-25 minutes.
If you're a server admin, you can adjust the poop rate with the dungTimeScale command.
We've added a new plant type: the good old spud.
This hardy vegetable has strong resiliences and so will grow in most environments. It is a lot easier to keep happy than the other plants - but the potatoes it produces also offer less in terms of healing.
The second panel of the plant entity UI shows the plant's genetics.
Each plant has six gene slots. Green genes are good. Red genes are bad. Here's the list of gene types:
- G - Increased growth rate
- Y - Increased yield gain rate
- H - Increased hardiness, meaning it can survive better in worse ground conditions.
- W - Increased water intake
- X - Empty
When you pick a plant in the wild, you will get a seed of that plant type. Its genes will be unknown at this point. Planting it will reveal the genes.
You can take a clone of a plant and the clone will inherit the genetics, meaning you can plant the clone and grow another plant with the same genes.
You can view the genetics of a clone on the clone information panel:
Gene effects are powerful. You can go a step further and crossbreed plants to create your own genetic strands.
When a plant enters the crossbreeding stage, it checks its genes against any surrounding plants, on a per-slot basis. If enough neighbouring plants all have a matching gene type in the same slot, this will overwrite the plant's existing gene in this slot with the neighbouring one.
For example, if the first gene of a plant is a W, and two surrounding plants have a G in that slot, the W will get replaced with a G.
When crossbreeding has taken place, the plant info will show any changes. The new genes appear at the bottom, and the previous genes get greyed out and removed from the chain.
Here you can see the X and G genes have been replaced by W genes.
Negative genes have a stronger crossbreeding weight than positive genes, so you need to surround a negative gene with more positive genes to replace it.
Crossbreeding can only occur in a planter box, and only between the same type of plant.
To accompany farming, this month brings several new items to allow you to water your plants in a more efficient way. Fluid IO is a new variant of the electrical system designed for transporting and using water.
The key difference between Electricity and Fluids is gravity - water can flow horizontally or down, but can only go up with the use of a Fluid Switch.
The hose tool is a new tool that allows you to connect water sockets on compatible props. It's very similar to the wire tool, where you left click on a water socket to start a connection, left click on surfaces to add points to the hose and then left click on the target socket.
You'll find hose sockets on the water purifiers, water barrels and the new Fluid deployables below.
The sprinkler is a new deployable that can be placed on walls, floors and ceilings. Once connected to a valid water source, it will spray water in a radius filling up any plants or planter boxes in range.
Once a sprinkler is connected to a water source, that water source (water barrel/catcher) will need to be filled with water. Once connected, the water in the source will be drained while the sprinkler is active.
The sprinkler also has a passthrough water socket to allow chaining together several sprinklers.
The splitter is pretty simple, it splits an incoming water source into three separate water outputs. You can use this to connect multiple sprinklers to a single water source.
The Fluid Switch allows you to turn on and off flow to a sprinkler. You can use this to easily toggle a large number of sprinklers at one point.
The Switch has water input/output as well as three electrical inputs - Pump, Power On and Power Off. Once powered, the pump will allow you to push water up to higher floors in your base. You can use the Power On and Power Off inputs to connect your Switch to your electricity network.
Barrels and Water Catchers
Water Barrels and Catchers have been updated this month to use these new features. These deployables have all received a Water In and Water Out socket, allowing you to use them as water sources for your sprinklers.
Water Catchers will also automatically move water through their output socket into any water storage, so you can connect a Water Catcher to a Water Barrel and the barrel will automatically fill up over time. Water Catchers can also be daisy chained together, allowing you to deposit several Catchers worth of water into one Barrel.
There's been a lot of drama around performance in the Unity 2019.3 update. When we first updated we saw a significant performance drop and an increase in memory usage. After some debugging we figured out that a new flag has been added to the mesh collider cooking options and unless you explicitly update all prefabs that were created on 2019.2 you will see a significant performance decrease.
Not to worry we thought, we'll just set them to include all current and future flags by setting the bit mask to all 1s. This did improve performance, but it was still slower than 2019.2 so we decided not to include 2019.3 in last month's update. After further investigation we then rediscovered an old bug from way back in the 2018.3 beta. Something inside the engine seems to specifically check for the exact default flags. Setting it to any other bit mask (even if it includes the default flags) will cause everything to be a lot slower. So the solution ended up forcing the new default flags on all mesh colliders.
var oldDefaultFlags = (MeshColliderCookingOptions)(14); // 0111 00...
var fckDefaultFlags = (MeshColliderCookingOptions)(-1); // 1111 11...
var newDefaultFlags = (MeshColliderCookingOptions)(30); // 0111 10...
With these in place we are now seeing a significant performance increase in 2019.3 and we've even been told that the problem has been fixed in the 2020.1 beta and that the fix will be ported to 2019.3 at some point.
Unfortunately even with these fixes in place our high definition render pipeline branch is still slower than the legacy render pipeline, so there's quite a bit of work left to do both by us and by Unity before we can take the next step. That being said, upgrading to 2019.3 has been a major step in the right direction.
We've suffered from a number of DOS attacks throughout March. Due to the nature of these attacks we generally prefer not going into too much detail on these vulnerabilities, but rest assured that all known issues and a number of unknown issues have been tracked down and fixed this month. I've also been working on a number of preventative measures to better protect us against these types of attacks in the future.
Navmesh generation during server startup has been exceedingly slow, particularly on large maps. I managed to make it 4x faster on the default map size, even more so the larger the map gets. This was the last known issue that had to be resolved for the maps to support vehicles.
- Upgraded to Unity 2019.3
- Added Hose Tool item
- Added Fluid Switch & Pump item
- Added Fluid Splitter item
- Reworked plant growth systems
- Added plant resiliences
- Added potato plants
- Added potato consumable
- Added plant fiber item
- Added composter deployable
- Added fertilizer item
- Added horse dung item
- Horses now produce horse dung
- Added plant genetics
- Cloning now transfers genetics
- Added plant crossbreeding
- Horses now trigger landmines
- Added new farming related vendors at bandit town and outpost
- Fixed a number of high profile DOS attack vulnerabilities
- Fixed drive select button in workshop save UI not working
- Fixed water mesh in water bucket appearing distorted
- Fixed being able to mount ladders through windows
- Fixed large water catcher placement on terrain
- Fixed large floor spikes placement on terrain
- Fixed Windmill vane culling
- Optimized navmesh generation at server startup (now at least 4x faster)
- Added additional DOS attack preventative measures
- Added liquid sockets for hoses on Large Water Catcher, Small Water Catcher and Water Barrel
- Keylocks stackable to 10
- Water purifier processes water twice as fast
- Water purifier stores twice as much water
- Moved airfield CCTV camera so it's not overlooking recycler
- Planters are now stackable