Progress:
- [x] Load/Store/Create
- [x] Fix deadlock on destruction
- [x] Behavior on destruction (should drop contained items)
- [x] Saving on change
- [x] What happens if the player gets out of render distance or someone
else breaks it while the chest is still open?
→ it becomes uninteractible
- [x] Don't make it crash
- [x] Don't make it kick the player
- [x] ~~Make it close the inventory on the client side~~ → #1740#1741
- [x] Cleanup, ~~check if there is any legacy chest loading code~~
- [x] Add missing chest variants and recipes
fixes#1060
After failing in #1725 I decided to use a different approach at
atomizing the palette compressed data, I added a new indirection which
can be used to swap the entire content in one atomic operation. This
should make the process itself cheaper than what I had implemented
before.
related: https://github.com/PixelGuys/Cubyz/issues/1471https://github.com/PixelGuys/Cubyz/issues/1413
improves https://github.com/PixelGuys/Cubyz/issues/277
Remaining work:
- [x] double check the implementation
- [x] Fully remove the ReadWriteLock
- [x] Check if this improved meshing performance → yes it did by 10-20%
- [x] Check if this improved block update speed → yes it did by ~25%
the back is now the goto push location, the front is now the goto pop
location. It was the other way around before due to confusion.
successor to #1709
I also decided to do the isEmpty changes discussed in #1709fixes#1320
This is a first attempt to get rid of of reference counting #1413
Basically all threads execute a global sync point, this allows
determining a time when all temporary resources (such as meshes on the
client side used in lighting on other threads) have been freed with 100%
certainty.
Remaining work:
- [x] Implement the sync point
- [x] Implement free lists and free the resources
- [x] Determine if this is worth it performance wise
- [x] Use this for chunk meshes
- [x] Remove reference counting and the locks on the chunk storage data
structure
- [x] Measure performance of gathering many light samples and compare it
with master → around 15% reduction in time
- [x] Cleanup some unused things (mesh free list)
For reference: https://github.com/ziglang/zig/pull/24329
some commits have been extracted from #1583, but the x86_64 backend has
been disabled due to its horrible performance.
Remaining work:
- [x] Wait for official builds on ziglang.org and upload them to our
repository
- [x] Add workaround for https://github.com/ziglang/zig/pull/24466
- [x] Fix TODO comment about ANSI support in stdout
- [x] Check for compile-time performance changes → it went from 13.1 to
11.9 seconds 🎉
This makes the DPS statistic more accurate and reduces the impact from
off-by-one errors as described in #1643fixes#1656
@ikabod-kee please check this out