today we'd like to give you an update on where we’re taking Eco after our 9.6 release. As an Early Access title, we’re always looking to balance adding features with polishing existing ones, and we’ve decided to have a final Eco 9 update that is focused solely on performance - Update 9.7.
A major part of our team will be focused on both client and server performance, fixing some long standing issues that should make the game a much smoother experience, especially on lower end machines. Our CTO Alex will tell you a bit of the details on how we plan to make it work:
Our strategy is to compare profiling snapshots we collect from QA and players on public test servers after hours of gaming. There are no obvious reasons we can easily fix, but one thing we noticed is greatly increased transform update time (every game object in game has a Transform with its position, rotation and scale) while the amount of game objects is not so different. These updates happen inside of the Unity Engine and we don’t have direct control over it, but fortunately we found a way how we can inject a tracking for all transform changes and identify places which cause most of the updates and potentially fix them.
And you can help us with that by playing on our public playtest server for the first part of Update 9.7 that will start tomorrow at 18:00 CET / 9am PT on our official server Giant Panda - all details and how it works will be published on our discord: https://discord.gg/eco
In an average Eco world you have a lot of trees especially with user tree farms. FPS may drop significantly in such areas. There is also time and resources which need to be spent to create a new tree and destroy a tree which impacts the speed of loading objects received from the server.
We are working in two main directions:
- Simplifying tree models to improve instantiation time, saving memory resources and cost of component updates.
- Optimize rendering, especially at a distance. Right now a tree is a set of trunk and branches, but on a far distance (LOD1, LOD2) it may be replaced with a single mesh which might be a bit different, but still pretty recognizable and saves a lot of GPU resources - see the video below.
There are tons of plants and every plant now has a game object with a few components (including a transform). In previous patches we optimized rendering to be less expensive and now we are ready to make the next step - fully replace these game objects with Unity DOTS lightweight entities. It benefits us in all aspects: memory, maintenance cost, instantiation and destruction speed. Also it lets us use job threads (multi-threading) for plant related updates such as move through detection.
With the power of DOTS (Unity Data Oriented Technology Stack focused on performance and multi-core utilization) we are able to heavily parallelize chunk builds and updates. A chunk is a minimal unit of terrain to be processed by a terrain rendering system and basically is 10x10x10 blocks in Eco. Effectively it reduces the time between chunk data being received from the server and then rendered in the game.
And that's it from Alex. Update 9.7 will be shipped through several 9.7.x updates - we're aiming for at least two, one in mid-late November and one in mid-late December. After that, the next shipment will be Eco 10, which will have two giant additions you've been waiting for: boats and settlements.
We’ll have more updates on this and our long-term plans for Eco soon, so stay tuned. Spoiler alert, they’re big - and some are fluffy.