individual commits combined here:
send active plugins
compute plugin sha hash
single position for defining Hash type
request plugins from the server
Server sending the plugin to the client
store received plugin in file and use it
handle plugin data at the right place
pass config_dir to client init
load local plugins
operational plugin caching
simplify the interface
clippy suggestions
remove artifacts
fix compilation of test world
ChangeLog entry
code quality fixes
improve readability
adapt to multiple systems
See https://github.com/gfx-rs/wgpu/issues/4915
Also:
* Remove unused vert-out frag-in variables from shaders (naga doesn't
like this probably because they are optimized out on the fragment
side). This restriction from naga may be relaxed in the future
see https://github.com/gfx-rs/wgpu/issues/3748.
* Enable OptimizationLevel::Performance for shaderc by default
* Add a environment variable VOXYGEN_SHADERC_OPTS for disabling this
(e.g. to test if it actually makes a difference on any platform).
(TODO: testing might be easier if there was a way to do toggle it
without restarting...)
This will make voxygen issue a SRV lookup when connecting to a host, allowing server owners to configure non-standard ports for servers and host servers using vanity domains easily. It additionally allows servers to be hosted on both QUIC and TCP at the same time, with the client connecting to the preferred protocol automatically, but gracefully falling back if a connection is not possible.
As veloren-server enables plugin feature automatically, it results in
veloren-common-state inherit this feature, which enables
common/state/plugin/mod.rs which asks for common::assets function that
is enabled only if plugin feature is enabled, but because
veloren-common-state doesn't depend on common::assets, this feature is
kind of lost half-way.
This commit fixes this by adding explicit optional dependency on
common-assets in common-state that is enabled by plugin feature.
* use version of shred that has an added SendDispatcher so we can
construct the dispatcher and send it between threads (only State to
remain sendable)
* move closure for adding systems from State::tick to the creation
functions
* this does mean some voxygen systems always run instead of just in the
session state, but that should not cause issues and we can always
configure them to do nothing if needed
The Gameserver returning the latest chat messages via a REST api (protected by a password in settings).
A central service can then scrape this endpoint and make it accessable to moderators.
We need to make sure to log which moderator sees which messages, especially when whispered. to be sure we might also limit the holding period to a week