Commit Graph

50 Commits

Author SHA1 Message Date
Joshua Barretto
f8c8e342e6 Moved common networking code to common/net, clippy fixes 2020-12-13 17:23:45 +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
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
6bb74c9c6f Fix clients are disconnecting GRACEFULLY by removing the Disconnect Request from a client, a client now sends a TERMINATE message directly 2020-11-03 08:55:54 +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
f1c9b959f4 rename a file, fix error msg, dont spam persistence by default 2020-10-13 00:06:24 +02: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
00c66b5b9c remove a Mutex and AtomicBool 2020-10-11 23:02:39 +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
Marcel Märtens
8687740265 fix clippy warnings in new version 2020-08-17 11:10:18 +02:00
Marcel Märtens
6db9c6f91b fix a followup bug, after a protocol fail now Participant is closed, including all streams, so we get the stream errors.
We MUST handle them and we are not allowed to act on a stream after it failed, as i am to lazy to change the structure to ensure the client to be imeadiatly dropped i added a AtomicBool to it.
2020-07-13 13:03:35 +02:00
Marcel Märtens
041349be48 Switch API to return Participant rather than Arc<Participant>
- API behavior switched!
 - the `Network` no longer holds a copy of participant, thus if the return of `connect` (before `Arc<Participant>, now `Participant`) got dropped, the `Participant::Drop` is triggered!
 - you can close a Participant async via `Particiant::disconnect()`, no more need to know the network at this point
 - the `Network::Drop` will check and drop not yet disconnected Participants.
 - you can compare Participants via PartialEq, if they are true they point to the same endpoint (it checks remote_pid)
   - Note: multiple Participants are only supported in theory, wont work yet

Additionally:
 - fix some `debug!`
 - veloren-client will now drop the participant gracefully on shutdown
 - rename `error` to `debug` when 2 times Bparticipant shutdown is called, as it is to be expected in a async runtime
2020-07-13 13:03:14 +02:00
Marcel Märtens
9ae1d8474f dropping participant on client disconnect clients 2020-07-13 13:03:07 +02:00
Imbris
c2d6d00b00 point to github specs to access PairedStorage type, fix Loadout sync spam 2020-07-06 01:56:02 -04:00
Marcel Märtens
cbfd398035 remove Mutex in server as Stream is now 'Sync' 2020-07-04 12:31:59 +02:00
Marcel Märtens
15ff58cd6a simple fmt in order to make the replacement commit as simple as possible 2020-07-03 13:11:44 +02:00
Marcel Märtens
4e92c0160e network layer switch, doing the stuff that might confict.
- mostly its the message handling put now in a async wrapper
 - add some fixes to pass without warnings and make clippy happy
 - some network error handling is ignored, this can be improved but is no blocker
2020-07-03 13:11:38 +02:00
Marcel Märtens
77c90b2c7c doing a simple 1:1 swap out network coding
this is the part which prob has less Merge conflics and is easy to rebase
the next commit will have prob alot of merge conflics
followed by a fmt commit
2020-07-03 13:11:31 +02:00
Marcel Märtens
dae31ae5b6 apply new rustfmt - touching alot of files 2020-02-01 21:39:39 +01:00
Imbris
ede05c47b0 fix(char screen induced ghosts):
Adds removing extra components and deleting entities clientside when
going back to the character screen. Also, simplifies ClientState by
removing the Dead variant and removing ClientMsg::StateRequest in favor
of more specific ClientMsg variants.
2019-12-31 16:38:13 -05:00
Imbris
2703c8afe1 Move serverside client to a component and communications into server ecs systems 2019-10-23 23:50:06 -04:00
Imbris
c02cd0a730 Cleanup unused code 2019-10-23 22:43:02 -04:00
Imbris
b09bddda79 Make clients subscribed to nearby regions and only send physics updates from those regions. 2019-10-23 22:43:02 -04:00
Imbris
2f9d8ee2e6 Add new debug item 2019-10-11 19:32:46 -04:00
Acrimon
4f2d99f809 Switch to hashbrown in server. 2019-08-11 21:48:02 +02:00
Songtronix
b6c8bdc223 add configurable max player count 2019-07-17 18:32:01 +02:00
timokoesters
370e7db1ee
Fix death 2019-06-30 22:29:00 +02:00
Cody
14ac5babd4 Removes most unused imports; changes some unused variables to underscores or provides a leading underscore; removes some unnecessary variables and mutable declarations; and performs other miscellaneous warning fixes. 2019-06-06 14:48:41 +00:00
Imbris
942096c754 Only send physics updates for entities within vd
Former-commit-id: d3307641cd31418bf8b9831296a96d58926184e0
2019-05-28 20:47:03 -04:00
timokoesters
36e890bbd8 Fix client states server-side
Former-commit-id: 701dd2a7f53bd0f1943cbeb61cc9c251228a4b5f
2019-05-25 23:21:38 +02:00
timokoesters
df7a145bbc Better formatting
Former-commit-id: 4316514f4f58dca8ed21dae00fad7a6df36b9ff1
2019-04-23 12:12:22 +02:00
timokoesters
06693136b6 Fixed names, debug and notify
Former-commit-id: f58dedf7c4eb9b284982588fc6b19bbe3edb0391
2019-04-22 23:00:24 +02:00
timokoesters
9a48e2fd42 Rename ClientState Connected -> Registered, Visitor -> Connected
Former-commit-id: 34f6726203b7d20b42937a02f48d8920ca3f1d7a
2019-04-22 23:00:23 +02:00
timokoesters
07a2aab8a3 Rename Disconnected to Visitor
Former-commit-id: aeb729a933cda380c03efe346347fc4dc0648dfb
2019-04-22 23:00:23 +02:00
timokoesters
fc2e6c3624 Clean up client state code
Former-commit-id: 2469a49abd23038838f6176b7f5cf0b303e8bee5
2019-04-22 23:00:22 +02:00
timokoesters
794b9cafad Implement ClientStates
Former-commit-id: f6167fd6de6fd1a3309224409cac77193be982e2
2019-04-22 23:00:22 +02:00
Joshua Barretto
507c47e771 Rewrote netcode, added basic chunk synching
Former-commit-id: e9f76f7fa9dbe0c81cd4c998bf0f0b3eec9235cb
2019-04-14 14:23:43 +01:00
Joshua Barretto
3d9f8105e6 Started work on server-side chunks
Former-commit-id: 84a6bd7358f67a77043c4b11c787538f073c8d28
2019-04-14 14:23:43 +01:00
Joshua Barretto
62b91eb01b Integrated Sphynx
Former-commit-id: 5d96983a385bb77a2876aa7439158252b7e2f0fc
2019-04-14 14:23:43 +01:00
Joshua Barretto
664f28a972 Patched in netcode refactor
Former-commit-id: 34a3b9a95129edad6dc8280d9a3cb41581d4d386
2019-03-19 11:35:38 +00:00
Joshua Barretto
a8b0039898 Added networked entity updates, player entity allocation
Former-commit-id: b81d6e38a74f846d64c092d1422dc402f369100c
2019-03-19 11:35:38 +00:00
Joshua Barretto
bb93f29522 Fixed client/server comms bug
Former-commit-id: fffc9cbf59784e7e2c9c2d9a60b8f2520b6f41fb
2019-03-19 11:35:38 +00:00
Joshua Barretto
2e613178a0 Component sync + UID system
Former-commit-id: 5ecddc0e1f9c1a15f99dd167b825178c972da062
2019-03-04 19:58:58 +00:00
Joshua Barretto
dbbcc1e80e Added basic networked communications, chat communication
Former-commit-id: 06bafdf69486f4da5fbc416835e34c5bed8c2caa
2019-03-04 19:58:58 +00:00