Commit Graph

8043 Commits

Author SHA1 Message Date
03af9937cf Stabelize Network again:
- completly switch to Bytes, even in api. speed up TCP by fak 2
 - improve benchmarks
 - speed up mpsc metrics
 - gracefully handle shutdown by interpreting Ok(0) as tokio::tcpstream closed now.
 - fix hotloop in participants by adding `Some(n)` to fix endless handing.
 - fix closing bug by closing streams after `recv_mgr` is shutdown even if now shutdown is triggered locally.
 - fix prometheus
 - no longer throw when a `Stream` is dropped while participant still receives a msg for it.
 - fix the bandwith handling, TCP network send speed is up to 1.5GiB/s while recv is 150MiB/s
 - add documentation
 - tmp require rt-multi-threaded in client for tokio, to not fail cargo check

this is prob stable, i tested over 1 hour.
after that some optimisations in priomgr.
and impl. propper bandwith.
Speed is up to 2GB/s write and 150MB/s recv on a single core

sync add documentation
2021-02-17 19:37:48 +01:00
ea8ab1ce7a Great improvements to the codebase:
- better logging in network
 - we now notify the send of what happened in recv in participant.
 - works with veloren master servers
 - works in singleplayer, using a actual mid.
 - add `mpsc` in whole stack incl tests
 - speed up internal read/write with `Bytes` crate
 - use `prometheus-hyper` for metrics
 - use a metrics cache
2021-02-17 16:15:00 +01:00
9884019963 COMPLETE REDESIGN of network crate
- Implementing a async non-io protocol crate
    a) no tokio / no channels
    b) I/O is based on abstraction Sink/Drain
    c) different Protocols can have a different Drain Type
       This allow MPSC to send its content without splitting up messages at all!
       It allows UDP to have internal extra frames to care for security
       It allows better abstraction for tests
       Allows benchmarks on the mpsc variant
       Custom Handshakes to allow sth like Quic protocol easily
 - reduce the participant managers to 4: channel creations, send, recv and shutdown.
   keeping the `mut data` in one manager removes the need for all RwLocks.
   reducing complexity and parallel access problems
 - more strategic participant shutdown. first send. then wait for remote side to notice recv stop, then remote side will stop send, then local side can stop recv.
 - metrics are internally abstracted to fit protocol and network layer
 - in this commit network/protocol tests work and network tests work someway, veloren compiles but does not work
 - handshake compatible to async_std
2021-02-17 12:39:47 +01:00
3f85506761 fix most unittests (not all) by a) dropping network/participant BEFORE runtime and by transfering a expect into a warn! in the protocol 2021-02-17 12:38:58 +01:00
5aa1940ef8 get rid of async_std::channel
switch to `tokio` and `async_channel` crate.
I wanted to do tokio first, but it doesnt feature Sender::close(), thus i included async_channel
Got rid of `futures` and only need `futures_core` and `futures_util`.

Tokio does not support `Stream` and `StreamExt` so for now i need to use `tokio-stream`, i think this will go in `std` in the future

Created `b2b_close_stream_opened_sender_r` as the shutdown procedure does not need a copy of a Sender, it just need to stop it.

Various adjustments, e.g. for `select!` which now requieres a `&mut` for oneshots.

Future things to do:
 - Use some better signalling than oneshot<()> in some cases.
 - Use a Watch for the Prio propergation (impl. it ofc)
 - Use Bounded Channels in order to improve performance
 - adjust tests coding

bring tests to work
2021-02-17 12:38:53 +01:00
1b77b6dc41 Initial switch to tokio for network, minimum working example. 2021-02-17 12:37:59 +01:00
68990d1a17 Merge branch 'update_deps' into 'master'
Clean and update dependencies

See merge request veloren/veloren!1780
2021-02-17 10:41:24 +00:00
dda4931f46 Clean and update dependencies
* Remove tweak feature
 * Remove const-tweaker
 * Update tiny_http
 * Update bitvec to 0.21.0
 * Downgrade euc to avoid conflict with vek 0.12.0
 * Require exactly vek 0.12.0
 * Update all other dependencies automatically based on these changes
 * Update gilrs to latest at the request of Ada Lovegirls
 * Update meshing benchmarks to new criterion API
2021-02-17 01:27:06 -08:00
ba288c1fa2 Merge branch 'nwildner/update_pt_BR_translation' into 'master'
update pt_BR translation and adopt multifile translation format

See merge request veloren/veloren!1777
2021-02-17 08:28:04 +00:00
7a29cc9eff creating char_selection.ron plus minor portuguese fixes for better formal language (like olhos - eyes and not olho) 2021-02-17 08:28:04 +00:00
1067d66862 Merge branch 'TheThirdSpartan/chat-fixes' into 'master'
Small chat message formatting changes and fixed missing player alias during admin entity possession

See merge request veloren/veloren!1782
2021-02-17 02:15:46 +00:00
f10f88081d Small chat message formatting changes and fixed missing player alias during admin entity possession 2021-02-17 02:15:45 +00:00
1a3e015da7 Merge branch 'huettner94/minimap_settings_persistence' into 'master'
Persist minimap settings

See merge request veloren/veloren!1785
2021-02-17 00:57:07 +00:00
4d19308612 Merge branch 'lboklin/quat-ori' into 'master'
Redefine Ori as a quaternion

See merge request veloren/veloren!1755
2021-02-16 22:39:11 +00:00
589ffd2a97 Persist minimap settings
This change persists the open/close state as well as the facing-north
state of the minimap to the settings file.
2021-02-16 23:16:16 +01:00
c2af25e1f6 Merge branch 'huettner94/minimap_rotation' into 'master'
Allow minimap to always face north

See merge request veloren/veloren!1784
2021-02-16 22:04:48 +00:00
1352d7ad9c Merge branch 'quellus/max-name-length' into 'master'
Limit character name length

Closes #528

See merge request veloren/veloren!1774
2021-02-16 21:29:45 +00:00
8b4230db61 Limit character name length 2021-02-16 21:29:45 +00:00
b8d5b812e1 Allow minimap to always face north
Some players prefer their minimap to always face north for better
orientation.
2021-02-16 19:57:19 +01:00
d884f6b27a Merge branch 'ada/improve-controller-bindings' into 'master'
Improve controller keybindings

See merge request veloren/veloren!1779
2021-02-16 16:56:42 +00:00
06575f601e Merge branch 'master' into 'ada/improve-controller-bindings'
# Conflicts:
#   CHANGELOG.md
2021-02-16 15:30:46 +00:00
82fe46ddb6 Merge branch 'synis/fix-underwater-campfires' into 'master'
Synis/fix underwater campfires

See merge request veloren/veloren!1783
2021-02-16 14:59:04 +00:00
2e4cf7cc4e Added changelog entry 2021-02-16 13:26:40 +01:00
a29ce3c428 Waypoints are no longer placed underwater 2021-02-16 13:23:12 +01:00
bf9dbee14a Merge branch 'Quibble/boss-stairs-fix' into 'master'
Fix #689 - dungeon without stairs to boss floor

Closes #689

See merge request veloren/veloren!1781
2021-02-16 02:59:05 +00:00
d1ed85e751 Merge branch 'aweinstock/item-tags' into 'master'
Implement tags for items, allowing a crafting recipe to take any item with that tag as input.

See merge request veloren/veloren!1778
2021-02-16 01:05:54 +00:00
03d28f7d93 Implement tags for items, allowing a crafting recipe to take any item with that tag as input.
- Added a recipe that turns any of the cloth equipment dropped by villagers into 1x cloth scraps.
- Animate placeholder items for tagged crafting.
2021-02-16 01:05:54 +00:00
b64fc5e822 Fix #689 - dungeon without stairs to boss floor 2021-02-16 00:54:44 +00:00
0f1227ca7d Use nlerp for interpolating rotations in animation 2021-02-15 11:01:59 +01:00
390812f54e Improve controller keybindings 2021-02-14 21:31:31 -06:00
0da363e420 Merge branch 'aweinstock/trade-implementation' into 'master'
Aweinstock/trade implementation

See merge request veloren/veloren!1775
2021-02-14 19:16:52 +00:00
c984035976 MR 1775 review fixes.
- Separate `invite` machinery from `group_manip` into it's own thing (includes renaming `group_invite` to `invite` where applicable).
- Move some invite/trade machinery to `ControlEvent`.
- Make `TradePhase` a proper enum instead of a bunch of bools.
- Make `TradeId` a proper newtype.
- Remove trades from `Trades` on accept (previously was only on decline).
- Typo fixes/misc cleanup.
- Add bullet point for trading to the changelog.
2021-02-14 11:13:56 -05:00
232ddb0860 Polish trading implementation and address review comments.
- Fix item swapping edge case
- Document more assumptions/edge cases
- fmt and clippy
- s/ServerGeneral::GroupInvite/ServerGeneral::Invite/
- Use `Client::current` in `Client::is_dead`
2021-02-14 11:11:35 -05:00
8ece00d6c6 Merge branch 'snowram/fix-staicases-lights' into 'master'
Fixes lights positions and orientations in staircases

See merge request veloren/veloren!1776
2021-02-14 01:17:53 +00:00
f1f6a12718 Fixes lights positions and orientations in staircases 2021-02-13 22:27:37 +01:00
84990553e0 Use Ori for base rotation matrix 2021-02-13 11:02:50 +01:00
f6db8bb7c4 Implement actual inventory-manipulation part of trading server side. 2021-02-12 18:43:10 -05:00
abb5684883 Trade implementation progress.
- Accept/decline buttons that submit the proper messages
- A phase2 screen that renders the (item, quantity) pairs as text
- More checks in the trade state machine server-side.
2021-02-12 18:43:10 -05:00
e2b55e0706 Implement enough of a trade UI that dragging & dropping items into it round-trips between clients. 2021-02-12 18:43:09 -05:00
aeb2398fc6 Trade implementation progress.
- Server messages now bring up the trade window.
- When a trade is declined, it closes the window on both clients.
2021-02-12 18:43:09 -05:00
ae528124fc Trade implementation progress.
- State machine for modifying trades.
- ServerGeneral/ClientGeneral messages.
2021-02-12 18:43:09 -05:00
e9b811b62b Plumb trade requests through the group invite UI, such that they can be accepted/declined without impacting the counterparty's movement. 2021-02-12 18:43:09 -05:00
250391656f Initial draft of trade UI (creates a placeholder window that acts like crafting in terms of bringing up the bag, defaulting to the "r" key). 2021-02-12 18:43:09 -05:00
e54602c752 Merge branch 'Sarrakitty/gliders' into 'master'
Sarrakitty/gliders

See merge request veloren/veloren!1771
2021-02-12 09:49:53 +00:00
97ca792b3a Merge branch 'DaforLynx/crickets' into 'master'
Makes crickect sfx more realistic, more varied, and temperature-based.

See merge request veloren/veloren!1773
2021-02-12 00:54:43 +00:00
ebbb06a400 Added crickets blocktype, added 3 new cricket sounds, made crickets chirp consistently, made frogs more sporadic 2021-02-12 00:54:42 +00:00
8ac23ffcc2 fit models, adjusted drop rates 2021-02-11 09:29:26 -05:00
7c23f97d89 tweaked a few things with the moth glider 2021-02-10 20:14:50 -05:00
14b344469a basic gliders 2021-02-10 19:02:36 -05:00
0511563e35 moth glider 2021-02-10 19:02:36 -05:00