Go to file
Marcel Märtens 926d334082 Fixed the unclean disconnecting of participants.
Till now, we just dropped the TCP connection and registered this as a clean shutdown.
The prodocol reader intereted this and send a Frame::Shutdown frame to it's local processor.
This is ofc wrong.
So now the protocol reader will detect a Frame::Shutdown frame and send it over. if the Tcp connection gets closed it will return an Error up.
The processor will then pick up this error and request a unclear shutdown and notifies the user.
Also when doing a clean shutdown we are sending a Frame::Shutdown now to the remote side to trigger this behavior.

Before we wrongly added the feature of only using a `select` in channel. This is WRONG,
 as it could mean that the write maybe fails, but the read still had some Frames buffered which then get dropped.
Its fixed now by the clean shutdown mechanims defined before.

Also when a channel is closed now inside a participant we are closing the whole participant as a protection.
However, we must not close the recv channel as the `handle_frames_mgr` might still be working on them, so we only stop writing/sending.

Debugging this also let me introduce some smaller fixes:
 - PID in tests are now 0 and 1+1*64+1*64*64+... this makes the traces appear as AAAAAA and BBBBBB instead of ABAAAA and ACAAAA
 - veloren client now better seperates between clean shutdown and unclear shutdown.
 - added a new type: C2pFrame for `(cid, Result<Frame, ()>)`
 - wrong frames inside the handshare are not counted in metrics
 -
2020-08-21 18:00:28 +02:00
.cargo Improve the perf of the physics system using par_join as well as removing the trait object closure to allow for the compiler to perform more optimizations 2020-08-13 04:32:05 -04:00
.gitlab Disable coverage for merge 2020-08-20 14:41:15 -04:00
assets Added particle explanation, more efficient particle pushing 2020-08-21 09:53:09 +01:00
chat-cli Change the version number to 0.7 2020-08-15 11:53:59 +02:00
client Fixed the unclean disconnecting of participants. 2020-08-21 18:00:28 +02:00
common Merge branch 'songtronix/fixes' into 'master' 2020-08-20 23:25:13 +00:00
network Fixed the unclean disconnecting of participants. 2020-08-21 18:00:28 +02:00
nix fieed and updated nix 2020-08-18 16:51:25 +02:00
server enable veloren_network metrics 2020-08-21 18:00:21 +02:00
server-cli Change the version number to 0.7 2020-08-15 11:53:59 +02:00
tools De-enumerized armor variants 2020-08-03 03:41:32 +00:00
voxygen Prefers picking up the highlighted item to the closest item 2020-08-21 14:09:48 +00:00
world (See sharp/lod-history) LOD, shadows, greedy meshing, new lighting, perf 2020-08-20 20:34:59 +02:00
.dockerignore - Load characters after login. 2020-05-09 15:41:25 +00:00
.gitattributes Revert "Merge branch 'vzikl/add-zh-translation' into 'master'" 2020-08-14 22:32:50 +00:00
.gitignore Allows for weapons to have different stats. Seperates healing staff out from staffs into its own weapon type: sceptre. Splits bow weapon type into shortbow and longbow. 2020-08-01 20:08:30 +00:00
.gitlab-ci.yml CI cleanup 2020-06-16 12:45:35 +02:00
.rustfmt.toml Workaround for rustfmt bug that affects waylands source generation in clean builds 2020-02-03 18:34:52 +00:00
.tokeignore Added tokeignore for Cargo.nix 2020-07-02 12:14:01 -04:00
Cargo.lock (See sharp/lod-history) LOD, shadows, greedy meshing, new lighting, perf 2020-08-20 20:34:59 +02:00
Cargo.toml (See sharp/lod-history) LOD, shadows, greedy meshing, new lighting, perf 2020-08-20 20:34:59 +02:00
CHANGELOG.md Prefers picking up the highlighted item to the closest item 2020-08-21 14:09:48 +00:00
CONTRIBUTING.md Add CONTRIBUTING 2019-05-17 01:34:07 +00:00
LICENSE Update Veloren license year 2020-05-22 08:05:10 -04:00
README.md change: update readme 2020-08-10 09:05:18 +02:00
rust-toolchain fix master / update toolchain to 2020-08-15 2020-08-17 10:28:09 +02:00

Veloren logo on a screenshot

pipeline status coverage report license discord lines of code

Welcome To Veloren!

Veloren is a multiplayer voxel RPG written in Rust. Veloren takes inspiration from games such as Cube World, Minecraft and Dwarf Fortress. The game is currently under heavy development, but is playable.

Development

Currently the communication of contributors happens mainly on our official Discord server. You can join it to keep up with the development, talk to us or contribute something yourself. Anyone who shows genuine effort to help is welcome in our team. You don't have to know how to program to contribute!

Sign Up - Here you can create an online account for Veloren. This will be needed to play on auth-enabled servers, including the official server.

The Book - A collection of all important information relating to Veloren. It includes information on how to compile Veloren and how to contribute.

Future Plans - Go here for information about Veloren's development roadmap and what we're currently working on.

Official social media and websites

Get Veloren

We provide 64-bit builds for Linux, Mac, and Windows, which can be downloaded on the official website: https://www.veloren.net

Due to rapid developement stable versions become outdated fast and might be incompatible with the public server.

If you want to compile Veloren yourself, follow the instructions in our Book.

F.A.Q.

Q: How is this game licensed?

A: It's free to play, modify and distribute. Forever. Since it is a community project, we decided to license it under the GNU GPL 3.0 license which means it will always stay free and open source.

Q: What platforms are supported?

A: Veloren can run on Windows, Linux and Mac OS on all architectures (although x86_64 is our main focus). It's probably possible to compile Veloren on/for BSD, Fuchsia and others as well.

Q: Do you accept donations?

A: You can support the project on our OpenCollective Page.

Credit

Many thanks to everyone that has contributed to Veloren's development, provided ideas, crafted art, composed music, hunted bugs, created tools and supported the project.

Sponsorship

We are extremely proud to be sponsored by Digital Ocean.

Their support allows us to build and reliably power our shared backend services.