Bug Fixes:
- Fixed a long-standing bug where objects played their placement animation every time they loaded in.
- Increased spawn distance of several graphical objects, most notably furnaces, to avoid them suddenly appearing too close to the player.
- Fixed a bug that could cause the appearance of an Obsidian Wall in a scene from the Dirt biome.
- Fixed an issue that would allow for duplication of an Ancient Gemstone in a scene from the City dungeons.
- Fixed an issue that would spawn a table inside walls in a scene from the Clay biome.
- Fixed an error occurring when a large bomb explodes.
Performance:
- Reduced the update frequency of several common operations from 30 to 20 updates per second. This performance improvement is especially noticeable on devices that previously couldn’t achieve stable 30 FPS, and it also reduces the CPU load on dedicated servers by a third.
- Reworked part of the tile map update to be more efficient in general and also to do more work off the main thread, improving performance when the player moves around.
- Several improvements to the dungeon generation systems, including a complete rewrite of the algorithms used to place paths connecting different rooms. This reduces lag spikes when exploring the world, especially when encountering large boss dungeons for the first time.
- Removed several sources of memory reallocations when worlds were loaded from or written to files. These improvements both reduce lag spikes when doing autosaves, and they also remove potential increases in memory usage during long play sessions in large game worlds.
- Cache various object position values instead of looking them up every frame.
- Several improvements to how object data lookup is performed.
- Object sprites used to be spawned as soon as the server deemed they were relevant to a connecting player. This was a frequent source of lag spikes, as large numbers of objects tended to get spawned in a single frame. When possible, spawns are now spread out over multiple frames.
- Disabled inventory slot animators completely when no animations are active. This is most noticeable when the main player inventory is open.
- Removed overly cautious object lifetime checks.
- Plant pots now only recompute the plant sprite state from scratch when the plant type changes, instead of every frame.
- Light emitted from the player is now merged into a single light source.
- Looking up tile data for a single position no longer requires all tile data for the surrounding area to be copied.
- Save files are now compressed directly in memory instead of while writing to file, reducing the memory usage while an autosave is in progress.
- Removed expensive string processing during custom scene loading.
- Shadow updates are no longer processed in areas that are being unloaded.
Other:
- The “Hide in-game UI” option is now reset to “Off” (i.e., the in-game UI is shown) every time the game is restarted.