5 ms·
Feather: A Minecraft server implementation in Rust
- mynameisash 4y agoI'm not big on Minecraft, but because my kids enjoy it, I run a few instances of the official server.jar. Even on a fairly beefy shared-use server (on which I do some development with a friend), MC can get pretty choppy, which really surprises me. I should try out Feather to see if it can handle the load better.
- numlock86 4y agoIf you want a recent and feature complete server that performs better than the official one check out PaperMC. That's basically the de-facto standard for servers these days anyway.
- dvfjsdhgfv 4y agoIt's better but still fairly resource-intensive. I'm wondering why it's so as the main work is being in the client, whereas the server concentrates on updating the structures close to the player - the rest of the universe is either generated or loaded on the fly. I'm fairly sure this could be optimized much more.
- speedgoose 4y agoA video games server must compute a lot of things for each client otherwise it would be too easy to cheat.
- dvfjsdhgfv 4y agoGranted, but should it matter on a private server run among friends who don't cheat anyway as they feel it would spoil the game?
- bitexploder 4y agoIt is easy to cheat on minecraft. It has a completely broken security model.
- nkrisc 4y agoFor a private server where access is whitelisted I'd sacrifice cheat protections for speed.
- npteljes 4y agoIf you'd like, try other Minecraft server software. I used Bukkit back then, and I saw people report on its better than vanilla performance.
- Jaruzel 4y agoHow complicated is the Minecraft server protocol? Are there docs some where that detail it, so that anyone can have a go writing a server?
- dividuum 4y agoIt's pretty shitty, at least 8 or so years ago. Not sure about the current state. Back then it had, for example, no length information in the header (so you always have to parse it completely and cannot skip any packet), shifted packet ids around for new releases and had a pretty odd mix of data types. There is a great wiki site going into its details: https://wiki.vg/Protocol https://wiki.vg/Protocol
- danbruc 4y agoI read quite a bit of the Minecraft source but I am by no means an expert. Based on this I would guess the hard part is implementing the actual game logic as Minecraft runs some game logic on the client and some on the server. And much of it has all kinds of weird behaviors depending on whether the outer loop for some logic is along the X and the inner loop along the Z direction or vice versa and things like that. Without decompiling and deobfuscating the game you will never get this to work correctly.
- Thaxll 4y agoProject is dead, like many others getting a simple PoC with minecraft is easy, getting most features to work is not.
- Tempest1981 4y agoHow do you determine that a project is dead? (In general) Here, I see activity 3 months ago in June. The README doesn't say anything.
- speedgoose 4y agoThe insight contributors chart is usually a good clue. It’s not perfect because it only shows the main branch configured in GitHub and some project haven’t merged to main in years. Still, it’s good to see how many big contributors a project has, and how active they are over time. https://github.com/feather-rs/feather/graphs/contributors https://github.com/feather-rs/feather/graphs/contributors
- stepupmakeup 4y agoThe last commit before that was in Februrary 2022.
- daptaq 4y agoWhenever I see "... in Rust" because it is such a popular for hobby projects that are prone to being abandoned. Of course, that might happen to any project in any language, but something tells me that if you manage to get a C codebase to a functional and maintainable point, there is already some energy behind the initiative. There are counter-examples (first and foremost Ripgrep), but I have become so prejudiced in this matter that I'm always skeptical until proven otherwise.
- api 4y agoPeople often do projects like this to learn a new language. Nothing wrong with that. Rust is being used in production quite a bit these days.
- kibwen 4y agoHere's Valence, a similar but more recent project: https://www.reddit.com/r/rust/comments/x5941i/media_announcing_valence_a_rust_framework_for/ https://www.reddit.com/r/rust/comments/x5941i/media_announci...
- memco 4y agoThere’s also Graphite: https://github.com/Moulberry/Graphite https://github.com/Moulberry/Graphite
- imtringued 4y agoA generic framework that others can use to build their own Minecraft server sounds more fruitful and less prone to fragmentation than three projects doing the exact same thing with different goals.
- cultofmetatron 4y agoI think rust will have made it offically as a language when projects get created for it where the fact that its in rust isn't the #1 selling point. It'll happen eventually I hope. Rust itself is indeed a fantastic language.
- arjvik 4y agoVaultwarden is a great example. Though admittedly, it was originally named Bitwarden_RS, it's now a fully-featured Bitwarden clone that's hailed as vastly easier to run and administrate than the full heavy official Bitwarden server.
- BrandoElFollito 4y agoWhen I first wanted to self host Bitwarden, I saw the gigantic setup from the official site and thought "oh shit", then gave up for some time. A friend mentioned bitwarden_rs and after 10 min I was done. I think that at this point Bitwarden should advertise it as the official way to self host (after reviewing the code) taken the adoption and stability. I use it for a year or so and it never failed, backup is ready etc.
- daxvena 4y agoHasn't this already already happened though? There's literally nothing else that can compete with ripgrep. A project using Rust isn't a good enough selling point to me if the tool doesn't do what I want, but more often than not I find Rust projects have a level of quality far exceeding C & C++ projects.
- lynndotpy 4y agoI checked out Wikipedia to see that exa (an alternative to ls which I use regularly) is written in Rust! :D
- arjvik 4y agoSame with my favorite ls replacement, lsd https://github.com/Peltoche/lsd https://github.com/Peltoche/lsd
- revolvingocelot 4y ago>Our mid-term goal is to make Feather usable on hub and minigame servers. The limited set of gameplay features available in Feather is not a problem for such servers that require a small subset of vanilla functionality. "Minigame server" is self-explanitory, given the existence of Roblox, but what's a "hub server"? I'd guess something like the difficulty/world selectors in Quake 1, but for other Minecraft servers that the client then connects to?
- Doxin 4y agoHub servers basically serve a world whose sole purpose is selecting which server to connect to. Sometimes they'll include an item shop or the like.