- this bug was initially called imbris bug, as it happened on his runners and i couldn't reproduce it locally at fist :) - When in a Handshake a seperate mpsc::Channel was created for (Cid, Frame) transport however the protocol could already catch non handshake data any more and push in into this mpsc::Channel. Then this channel got dropped and a fresh one was created for the network::Channel. These droped Frames are ofc a BUG! I tried multiple things to solve this: - dont create a new mpsc::Channel, but instead bind it to the Protocol itself and always use 1. This would work theoretically, but in bParticipant side we are using 1 mpsc::Channel<(Cid, Frame)> to handle ALL the network::channel. If now ever Protocol would have it's own, and with that every network::Channel had it's own it would no longer work out Bad Idea... - using the first method but creating the mpsc::Channel inside the scheduler instead protocol neither works, as the scheduler doesnt know the remote_pid yet - i dont want a hack to say the protocol only listen to 2 messages and then stop no matter what So i switched over to the simply method now: - Do everything like before with 2 mpsc::Channels - after the handshake. close the receiver and listen for all remaining (cid, frame) combinations - when starting the channel, reapply them to the new sender/listener combination - added tracing - switched Protocol RwLock to Mutex, as it's only ever 1 - Additionally changed the layout and introduces the c2w_frame_s and w2s_cid_frame_s name schema - Fixed a bug in scheduler which WOULD cause a DEADLOCK if handshake would fail - fixd a but in api_send_send_main, i need to store the stream_p otherwise it's immeadiatly closed and a stream_a.send() isn't guaranteed - add extra test to verify that a send message is received even if the Stream is already closed - changed OutGoing to Outgoing - fixed a bug that `metrics.tick()` was never called - removed 2 unused nightly features and added `deny_code` |
||
---|---|---|
.cargo | ||
.gitlab | ||
assets | ||
chat-cli | ||
client | ||
common | ||
network | ||
server | ||
server-cli | ||
voxygen | ||
world | ||
.dockerignore | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
.rustfmt.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
default.nix | ||
LICENSE | ||
README.md | ||
rust-toolchain | ||
shell.nix |
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!
Useful Links
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
Currently we provide 64-bit builds for Linux and Windows which can be downloaded on the official website: https://www.veloren.net
Note: Mac and 32-bit systems are supported but you need to compile the game for them yourself.
Due to rapid developement stable versions become outdated fast and might be incompatible with the public server.
If you want to compile Veloren yourself, take a look at the How to Compile Guide in the book.
Packaging status
Fedora
COPR repo: sudo dnf copr enable atim/veloren -y && sudo dnf install veloren -y
Arch
AUR Airshipper: yay -Syu airshipper-git
AUR latest binary release: yay -Syu veloren-bin
AUR latest release: yay -Syu veloren
AUR latest master: yay -Syu veloren-git
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: To keep Veloren a passion project free from financial incentives we will only accept donations to cover server hosting expenses. There is no way to donate yet.
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.