KernelFreeze / Litecraft

Open source, clean room implementation of Minecraft Client
MIT License
138 stars 6 forks source link

Consider basing on steven (or stevenarella) #22

Closed PureTryOut closed 4 years ago

PureTryOut commented 5 years ago

Not a bug sorry, but I won't join a proprietary messaging platform like Discord.

The idea of this project is definitely cool, however it is not the first to do so. An attempt has been made before with Steven. It got as far as actually joining a server, rendering everything and being able to move around. Sadly development had died, but someone else has forked it to add 1.13.2 protocol support with Stevenarella.

It seems the goals of the project are the same, with just this project being a bit more serious (not just "for fun" as the Steven project describes it). So instead of doing it from scratch, could basing of Steven be considered? Maybe you could even work together with iceiix (the current dev of Stevenarella)?

Heath123 commented 5 years ago

Is this speeds up development, I think this is a good idea. It was supposed to be ready by Christmas.

KernelFreeze commented 5 years ago

It's a very good project and it's quite interesting, but I think that it has some shortcomings, like doing many things in a single thread, using unsafe in some places, and using OpenGL by hand. At the moment, we are working on an important change, using Amethyst, and that is why there is not much activity in the repository, but we have not stopped working on the project. Anyway, if we don't get to a point where Litecraft does more things than Steven, we might consider basing Litecraft on it. Thanks for the suggestion!

iceiix commented 5 years ago

Hey thanks for your interest in my project. Just some thoughts chiming in here, I think our projects (Stevenarella and Litecraft) have a lot of similar goals, certainly could benefit from some sort of collaboration. On the other hand, it is true Steven has a lot of legacy baggage accumulated from over the years as Rust has evolved, and some things are implemented in a manner which wouldn't make as much sense as if it was written from scratch today. So writing a new client wouldn't necessarily be duplicated/redundant work.

@KernelFreeze is Litecraft still under development? I actually would be very interested in your approach. A major downside, as you point out, of Steven/Stevenarella is its graphics backend, or lack thereof: steven_gl wrapping raw OpenGL calls using gl_generator and khronos_api. Something I have been wanting to improve for a while now, but was stuck because the current state of 3D graphics libraries in Rust — copious details at https://github.com/iceiix/stevenarella/issues/34, and some recent discussion at https://www.reddit.com/r/rust/comments/bjnxd3/a_guide_to_rust_graphics_libraries_as_of_2019/.

Amethyst does appear very promising though, especially since they recently received a Mozilla grant (https://amethyst.rs/blog/moss-grant-announce/) so it's only going to get better over time. Curious how well Amethyst would work with voxel-based rendering (optimized meshing), how much control it gives to allow for sufficient performance. If it can abstract away low-level details, providing cross-platform compatibility on various platforms (Windows, Linux, Mac, and hopefully HTML5 with WebAssembly) that would be great, but at least from my understanding the official Minecraft client in Java uses only a thin graphics layer (https://en.wikipedia.org/wiki/Lightweight_Java_Game_Library) to maximize power and performance, at the expense of complexity. Many possible different approaches and tradeoffs. But one thing is for sure, Stevenarella's current usage of raw unsafe OpenGL calls ~can definitely be improved upon~ isn't a good long-term approach.

KernelFreeze commented 5 years ago

@iceiix I have not had much time to work on the project, but I see very promising Amethyst for rendering Voxels, due to its extreme multithreading. I am willing to contribute to any Open Source Minecraft client because I see it as an unexploited idea, I see a collaboration possible if it seems right to you.

PureTryOut commented 4 years ago

Are there any updates here? Have you guys talked about this a bit more?

Mhowser commented 4 years ago

Hi guys, just wondering what the current status is for this project?