Commit Graph

534 Commits

Author SHA1 Message Date
Marcel Märtens
a3e6cf3815 handle msg as part of the servers state for best parallelisation. also include agent there 2021-03-11 19:09:21 +01:00
Marcel Märtens
728bff610b Allow HTTP auth servers again.
only `localhost` are allowed in a release build.
 when debug assertions are on, others are also allowed.

This change undoes the changes to the settings, so compared to master, there is no effect
2021-03-11 17:24:52 +01:00
Marcel Märtens
381bb5eef0 fix tracy 2021-03-11 17:05:17 +01:00
Marcel Märtens
a98e72c391 Auth requests are now done async, the register system is fetching it, via a PendingLogin component
The auth server no longer allows the protocol to be specified. we enforce `https` for the auth server, so DO NOT provide a auth url with `https://` but without.
correct is now `auth.veloren.net`
incorrect is: `https://auth.veloren.net`
2021-03-11 17:05:02 +01:00
Marcel Märtens
f8b7d96066 git push -fTransport ChunkRequests and Chunkupdates in a own stream. ChunkUpdates are very big and having them in a own stream, helps slow clients to keep up with entity syncs and
lagging a bit behind on terrain. Which is fine. Block Places and Block Pickup are not handled in this stream, as they go through the standart route of event handling.
2021-03-11 14:50:46 +01:00
ccgauche
67b24294d6 Change Ecs access system to allow write accesses to be used + reintroduced get_player_name 2021-03-10 19:36:53 +01:00
ccgauche
10e5620642 Moved back register to a system 2021-03-09 21:16:23 +01:00
Marcel Märtens
77dea4980c get rid of a lazy_static and update agent multithreaded metrics 2021-03-09 11:52:57 +01: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
ea94ca6656 switch server to the new Registry struct, this gets rid of RegistryFn pattern and simplyfies stuff, its a result of the Prometheus-tracy crate 2021-03-08 11:51:16 +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
ccgauche
89774980b4 First commit 2021-03-07 22:32:52 +01:00
Marcel Märtens
a55ec20c74 fix #46 🥳 2021-03-03 12:37:09 +01:00
Marcel Märtens
9028578bc8 Change the way Network is dropped.
Instead of keeping Runtime and manually spawn a task on `drop` this task is spawned at start and will wait to be triggered.
The `drop` methods then wait for completion, UNLESS they are in a async context, then they MUST NOT BLOCK (deadlock potential), so they defer it to the Runtime and HOPE for the runtime to exist long enough.
This get rid of the weird `block_in_place` which is only accessable with `rt-multi-threaded` and has some disadvantages.
We also wont requiere the runtime to be active all the time. Though its needed for a clean shutdown
2021-03-03 11:28:40 +01:00
ccgauche
c28ac78e03 Separated the registration system into two files 2021-03-01 22:35:22 +01:00
ccgauche
db9991ce6d Adressed all comments 2021-03-01 22:24:02 +01:00
ccgauche
9628dfaf99 Fixed comments 2021-03-01 21:29:18 +01:00
ccgauche
dbd4d70b79 Lots of improvement in pointer management (switched from i32 to u64) + New event implemented 2021-03-01 19:00:44 +01:00
Sam
50c47ce84d Made changes to fix torvus 2021-02-27 22:42:11 -05:00
Avi Weinstock
78014d7d3b Put material stats in their own manifest, and multiply a form's stats by the weighted average of the material multipliers. 2021-02-23 15:49:34 -05:00
ccgauche
06aa7ab70c Retrieves added + New ECS memory layout for plugins 2021-02-22 23:59:32 +01:00
ccgauche
1597fcc79e Fixed the plugin compilation and added comments
TODO: Remove compilation errors on WASM side (while using common).
2021-02-22 23:59:25 +01:00
ccgauche
a067a20b69 added basic retreive 2021-02-22 23:59:11 +01:00
Marcel Märtens
3f5c64bec0 Client::new can now resolve DNS requests, better networking error messages 2021-02-22 17:35:19 +01:00
Marcel Märtens
1a7c179bbb share tokio Runtime between Client and Server, name rayon Threadpool 2021-02-22 17:35:06 +01:00
Marcel Märtens
514d5db038 Update Network Protocol
- now last digit version is compatible 0.6.0 will connect to 0.6.1
 - the TCP DATA Frames no longer contain START field, as it's not needed
 - the TCP OPENSTREAM Frames will now contain the BANDWIDTH field
 - MID is not Protocol internal

Update network
 - update API with Bandwidth

Update veloren
 - introduce better runtime and `async` things that are IO bound.
 - Remove `uvth` and instead use `tokio::runtime::Runtime::spawn_blocking`
 - remove futures_execute from client and server use tokio::runtime::Runtime instead
 - give threads a Name
2021-02-22 17:34:55 +01:00
Marcel Märtens
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
Marcel Märtens
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
Marcel Märtens
1b77b6dc41 Initial switch to tokio for network, minimum working example. 2021-02-17 12:37:59 +01:00
James Melkonian
1d8496ea21 Move agent system to server 2021-02-06 06:15:25 +00:00
Sam
77312ccdd4 Move outcome vec from being defined in frontend and server to common. 2021-01-23 15:17:36 -05:00
Ben Wallis
aef2637288 Refactored loadout to have public functions for each slot instead of requiring callers to use the _INDEX consts 2021-01-08 19:12:09 +00:00
ccgauche
06ffe61219 Added feature flag
changed field name to size
2021-01-08 08:48:30 +00:00
Benoît du Garreau
0cf164f33a Use assets_manager to load assets 2020-12-17 12:06:07 +01:00
Joshua Barretto
494436be01 Hid plugins behind a feature flag to resolve Windows CI issue 2020-12-15 11:14:26 +00:00
Joshua Barretto
023888f560 Updated changelog, fmt and clippy fixes 2020-12-13 17:40:15 +00:00
Joshua Barretto
f8c8e342e6 Moved common networking code to common/net, clippy fixes 2020-12-13 17:23:45 +00:00
Joshua Barretto
027842f832 Resolved plugin dependency cycle, allowing more interesting plugin API 2020-12-13 17:15:33 +00:00
Joshua Barretto
8e937a50ca Better plugin API 2020-12-13 17:15:33 +00:00
ccgauche
cae81e625e Added plugin command support 2020-12-13 17:15:33 +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
ubruntu
1b27adaffd Stop /home from causing fall damage 2020-11-30 21:13:06 +00:00
Imbris
c0a8422a43 Fix turning off worldgen feature 2020-11-24 23:55:44 -05:00
Joshua Barretto
d52b595240 Merge branch 'zesterer/worldsim' into 'master'
Rtsim, HDR rendering, various worldgen improvements, map improvements

See merge request veloren/veloren!1533
2020-11-23 16:59:31 +00:00
Joshua Barretto
26fd40c0e3 Fmt, make clippy happy 2020-11-23 15:39:03 +00:00
Joshua Barretto
d023265212 Allow entities to despawn without a home chunk 2020-11-23 15:16:07 +00:00
Joshua Barretto
28b0a00b44 Removed per-level dungeon waypoints 2020-11-23 10:57:14 +00:00
Joshua Barretto
d4d4f17d3c Added world map size icons 2020-11-23 10:45:01 +00:00
Joshua Barretto
22fb71905b Added rtsim entities moving when unloaded, better generation 2020-11-23 10:45:01 +00:00
Joshua Barretto
99a881f349 Added entity simulation to rtsim, reification, assimilation 2020-11-23 10:44:59 +00:00
Joshua Barretto
808d1873bd Began implementing rtsim 2020-11-23 10:37:59 +00:00
Joshua Barretto
3ee4245652 Added test poles, minor improvements 2020-11-23 10:37:59 +00:00
Odd-Harald Lillestø Myhren
56e37a4846 Fix bug that caused campfires and other stuff to duplicate 2020-11-22 21:03:06 +00:00
Snowram
a939eac30d Refines spawn values, add gradients to debug_column 2020-11-21 14:33:35 +01:00
Snowram
febe79e602 Added remaining creature spawns 2020-11-21 14:33:33 +01:00
Joshua Barretto
2ae51de7f0 Added more creature spawns 2020-11-21 14:33:32 +01:00
Joshua Barretto
bb6ca9fcba Don't despawn entities so eagerly 2020-11-21 14:33:31 +01:00
Imbris
891e81cf58 Merge branch 'imbris/save-selected-char' into 'master'
Save the selected character, deselect character when deleting, auto select newly created character

See merge request veloren/veloren!1516
2020-11-15 01:40:44 +00:00
Imbris
4f2512f126 Save the selected character, deselect character when deleting, auto select newly created character 2020-11-14 19:17:42 -05:00
Imbris
2072929a5a Send ability map from the server to the client on connection instead of loading from the assets 2020-11-14 16:07:07 -05:00
Sam
e2fe2fd532 Speed and power on weapons are now able to modify abilities after they are loaded from ron files. 2020-11-12 21:24:36 -06:00
Imbris
37e4ea4669 Remove ability map from top level functions 2020-11-12 21:24:35 -06:00
Sam
9b4fa4e961 Started moving loading of ability manifest to an ecs variable. 2020-11-12 21:24:34 -06:00
Joshua Barretto
9b233708e2 Turned tree generation into a post-processing layer, ripped out old tree generator for performance wins 2020-11-09 10:20:22 +00:00
Marcel Märtens
a7123c6e14 put cache in ECS to get rid of allocations 2020-11-04 14:19:28 +01:00
Marcel Märtens
ce3173ecdf add metrics for physics sys and implement concurrent physics 2020-11-04 11:53:13 +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
084b60d7ec Fix an error that a failed initialization of a client lead to a Kill of the gameserver. Instead we just log a msg now. 2020-11-03 08:55:56 +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
Sam
a7e3e55a12 Transitioned damage and healing from u32/i32s to enums. 2020-10-28 18:15:25 -05: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
e8452fafc6 fix naming, replace NotInGame with CharacterScreen 2020-10-11 22:55:38 +02:00
Marcel Märtens
8b40f81ee2 No longer block the main thread for client connections, new clients will be handled by server without waiting.
- Instread we have a dedicated thread that will async wait for new participants to connect and then notify the main thread
- registry no longer sends a view distance with it.
- remove ClientMsg::Command again as it's unused
2020-10-11 22:55:02 +02:00
Marcel Märtens
017e004309 Rename enums to allow a super enum in the future, but i am not yet sure if we want to introduce this yet
```
//This is a helper structure, containing all possible data send over
pub enum ClientMsg {
    Initial(ClientType),
    General(ClientGeneralMsg),
    InGame(ClientInGameMsg),
    NotInGame(ClientNotInGameMsg),
    Register(ClientRegisterMsg),
    Ping(PingMsg)
}
```
2020-10-11 22:49:25 +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
fa45edb541 Fix clippy, minor fmt, add TODO comments 2020-10-10 03:01:30 -04:00
Imbris
39f78e9116 Remove saves dir env var and setting from server settings and just always use saves as the dir name 2020-10-10 02:15:54 -04:00
Imbris
71251ca6a6 Change admins from Vec<String> into Hashset<Uuid>, add commands to server-cli-bin for adding and removing admins 2020-10-10 02:10:32 -04:00
Imbris
ca2bf937e6 Apply saves dir override when loading settings, change whitelist to a HashSet, let admins login even if they are not on the whitelist to reflect the comments in login code 2020-10-10 02:10:32 -04:00
Imbris
83fb26c4f9 Group editable server settings into one struct that is stored in the ecs, don't expose DataDir, use Uuid in the whitelist instead of usernames, replace Banlist record tuple with new type with named fields, remove commented code 2020-10-10 02:10:32 -04:00
Imbris
fb2cf1a292 Fix clippy warnings 2020-10-10 02:10:32 -04:00
Imbris
7c14a3f4a4 New userdata folder that holds voxygen settings and logs and server saves and settings, split up server settings file into parts that are persisted back to their files and parts that are read-only, misc fixes 2020-10-10 02:10:32 -04:00
Ben Wallis
51459c0733 Implemented graceful shutdown on SIGUSR1 signal. Added shutdown <seconds> TUI command. Added abortshutdown TUI command. Fixed a bug in TUI that caused a panic on quit in basic mode on windows. 2020-10-04 21:24:45 +01:00
Forest Anderson
25ab132d73 Merge branch 'xvar/add-clone-on-ref-ptr-clippy-lint' into 'master'
Added #![deny(clippy::clone_on_ref_ptr)] to all crates and fixed resulting lint errors

See merge request veloren/veloren!1411
2020-09-28 19:32:03 +00:00
Joshua Yanovski
b9528da8f6 Improve chunk space consumption by a lot.
3x - 5x depending on terrain.  We can do a lot better but this is a good
start.

Also, added chunk group count to metrics.  This correlates with memory
usage specifically by chunk voxel data in a much more direct way than
chonk or chunk count do, so this should provide extra useful information
(especially for our average overhead per chonk / chunk).
2020-09-28 13:35:49 +02:00
Ben Wallis
b3dd8e8a02 Added #![deny(clippy::clone_on_ref_ptr)] to all crates and fixed resulting lint errors 2020-09-27 17:25:33 +01:00
Marcel Märtens
8eec46424f switching veloren naming scheme, to either one of the following:
`stable-0.7.0 (<hash>-<datetime>)` for release versions.
And
`nightly-<date> (<hash>)` for nightly and master versions

Reason is, many players only give information that they are running `0.x.0` but are not giving us the information which day, or commit they are running. So we should make master builds less confusing.
2020-09-22 11:47:18 +02:00
Ben Wallis
712f2e9c97 * Moved migrations to beginning of server initialisation
* Added migrations for entity ID changes to existing tables
2020-09-17 23:02:14 +00:00
Marcel Märtens
cb6fa52eae fix client stats, difference client/player 2020-09-17 00:19:48 +02:00
Marcel Märtens
3c58b64689 add detailed information on state tick timings 2020-09-16 18:24:18 +02:00
Marcel Märtens
184d405f10 Better Metrics for Server
- Player online is now seperated into players connected and disconnected and is event driven
 - Metrics for ChunkGeneration: this is the server side for tracking actuall generation
 - Metrics for Chunk Network Requests
2020-09-16 18:14:04 +02:00
Joshua Yanovski
19485b6a00 Add a DisconnectReason enum. 2020-09-14 08:16:09 +02:00
Marcel Märtens
961b8a4d7c Implement the Player Timeout as config 2020-09-06 23:34:57 +02:00
Joshua Barretto
b87bbaff0b Merge branch 'xMAC94x/hotfix_increase_timeout' into 'master'
tmp increase TIMEOUT from 20s to 40s.

See merge request veloren/veloren!1352
2020-09-06 17:54:59 +00:00