Marcel Märtens
6c756c2440
first implementation of defering serialisation
2022-05-11 20:22:19 +02:00
Avi Weinstock
5f8957d8ef
Globally allow the clippy lints {new_without_default, many_single_char_names, identity_op, type_complexity, too_many_arguments}
.
2022-01-30 20:16:20 +01:00
Marcel Märtens
9b3b21f368
fix clippy warnings
2021-07-12 12:09:09 +02:00
Avi Weinstock
be39054767
Make terrain compression a checkbox instead of a bandwidth (throughput?) heuristic.
2021-05-03 00:09:44 -04:00
Avi Weinstock
c199d12f2d
Address MR 2207 review comments.
...
- Add metrics for which branch of the compression heuristic was taken.
- Reduce the threshold for the heuristic.
- Deduplicate code for dealing with lazy messages.
- Make jpeg dependency only scoped to the compression benchmark.
- Remove commented code.
2021-05-03 00:09:24 -04:00
Avi Weinstock
30cae40b82
Add a bandwidth-based heuristic for chunk compression.
2021-05-03 00:09:24 -04:00
Avi Weinstock
cdc2eccda8
Improve quadpng
by adding WidePacking
, which makes a wider image, which is faster due to PNG compressing by row. Heuristically switch between quadpng and deflate based on chunk height to reduce variance.
2021-05-03 00:09:24 -04:00
Avi Weinstock
f81539cb00
Get PngPngPngJpeg terrain working in the actual game.
2021-05-03 00:09:24 -04:00
Avi Weinstock
57aee57d82
Downgrade deflate from level 5 to level 1 in the terrain system to match LZ4's worst-case encoding time.
2021-04-25 16:18:57 -04:00
Avi Weinstock
308ad4d81e
Cleanup errors introduced in rebase.
2021-04-20 23:34:17 -04:00
Avi Weinstock
15e32e5655
Move terrain compression code to common_net and disable redundant LZ4 compression on the terrain stream.
2021-04-20 23:24:24 -04:00
Avi Weinstock
6d9de520f3
Compress terrain chunks with deflate. Includes a benchmark showing that this makes them around 70% smaller, and is the same speed as LZ4.
2021-04-20 23:23:53 -04:00
Imbris
e17477979f
Remove extra chunk cloning and parallelize serialization in the server terrain sys
2021-04-20 15:25:05 -04:00
Marcel Märtens
5862920f32
seperate sys/state
2021-04-20 01:30:17 +02:00
Marcel Märtens
4ebfbdde0f
Move Specs code to own common_ecs create, put tracy and macros into common_base
2021-03-09 00:54:01 +01:00
Marcel Märtens
f353f14703
change Name from VSystem to System
2021-03-08 13:15:00 +01:00
Marcel Märtens
6b88545481
restructure server metrics
...
- get rid of old SysTimers for each system in favour of VSystem tracking
- move metrics generation from lib.rs to own system
- code cleanup
- remove time tracking in common::sys
2021-03-08 11:51:13 +01:00
Marcel Märtens
c515fece28
Implement a VSystem trait that can be implemented by Systems.
...
It will autodo some things, like track start and time and export those in system metrics
Add a origin and implement it for all Systems in Veloren
2021-03-08 11:51:04 +01:00
Joshua Barretto
f8c8e342e6
Moved common networking code to common/net, clippy fixes
2020-12-13 17:23:45 +00:00
Marcel Märtens
e398cca53c
move common_state into common_sys
2020-12-01 13:46:28 +01:00
Marcel Märtens
add7922653
Move Systems out of common into common_sys
...
This requires to move `State` into a own crate called `common_state` which depends on `common` and `common_sys`
2020-12-01 13:44:07 +01:00
Marcel Märtens
3d9c3e481e
Undo one Componenet per Stream
and instead use Client
.
...
In order to keep the performance we made it Internal Mutability and use a `Mutex` per Stream, till `Stream.send` is no longer `&mut self`.
The old solution didn't rely on this, but needed multiple Components instead which zest didn't liked
2020-11-03 08:56:08 +01:00
Marcel Märtens
00456c8373
extract a Presence Component, which is server
only and has state of Player
and Client
. Presence is only valid for Clients that are in game
2020-11-03 08:56:02 +01:00
Marcel Märtens
9ba19a1cd9
implement lazy_msg which only serialize + compress AT MAX ONCE if the same msg is send to multiple participants
2020-11-03 08:55:46 +01:00
Marcel Märtens
e9be36c993
replace the single message
system with 5 message systems. one per stream to handle less ECS systems PER msg system.
...
As the MAIN message system was already on 25 of the max of 26 possible Ressources
2020-11-03 08:55:42 +01:00
Marcel Märtens
dd966dd00e
remote all streams from Client
and put it directly in the ecs system.
...
This commit does not run compile as the message sys now would requiere 30 imput parameters which is over the max of 26 :/
2020-11-03 08:55:35 +01:00
Marcel Märtens
2a7378b4ae
pack together InGame, CharacterScreen and General variant in a single enum, as requested by zesterer.
...
His reason to reqeust that is, that there might not be a perfect disctinction in the future.
Now we need to send ServerGeneral over streams and do additional checking at various places to verify that not the wrong variant is send.
2020-10-12 11:27:21 +02:00
Marcel Märtens
ff374eab59
create a ServerMsg and ClientMsg enum and verify the state when in debug mode to benefit from the transition
2020-10-11 22:59:53 +02:00
Marcel Märtens
b1db5ef488
Redo Network Frontend.
...
Rather than having a single Stream to handle ALL data, seperate into multiple streams:
- Ping Stream, for seperate PINGS
- Register Stream, only used till the client is registered, then no longer used!
- General Stream, used for msg that can occur always
- NotInGame Stream, used for everything NOT ingame, e.g. Character Screen
- InGame Stream, used for all GAME data, players, terrain, entities, etc...
This version does compile, and gets the client registered (with auth too) but doesnt get to the char screen yet.
This fixes also the ignoring messages problem we had, as we are not sending data to the register stream!
This fixes also the problem that the server had to sleep for the Stream Creation, as the Server is now creating the streams and client has to sleep.
2020-10-11 22:49:14 +02:00
Imbris
f39d1e9bb5
Use less verbose span names when the tracy feature is off
2020-09-07 00:59:16 -04:00
Imbris
63d60c212c
Add spans to server systems
2020-09-06 22:28:14 -04:00
Ben Wallis
950c62efc6
Suppressed all existing clippy warnings in preparation for fixes as part of #587
2020-06-10 22:01:42 +01:00
Imbris
7132ef4136
Rearrange some operations in the server tick to reduce clientside latency of ServerEvent mediated effects
2020-03-09 22:31:24 -04:00
Marcel Märtens
dd21235ff8
Apply prefixes to veloren source, espacially comments, so that reformating wont make it unreadable,
...
especially enumerations and other source code in errosions file
2020-02-01 21:37:36 +01:00
Imbris
966b2bfbff
Integrate new systems with metrics
2019-10-23 23:50:06 -04:00
Imbris
8f81b69a25
Move terrain management and syncing into server side ecs systems
2019-10-23 23:50:06 -04:00