organization / VRakLib

Mozilla Public License 2.0
7 stars 2 forks source link

Possibilities: ENet and Nakama #1

Open ylluminate opened 4 years ago

ylluminate commented 4 years ago

It appears that you're implementing RakNet here. I was curious if you had considered implementing RakNet on top of ENet (specifically this highly spoken of variety). I don't know if that would add performance and functionality or not - some people seem to think that ENet could be more performant, but I have found no conclusive evidence with tests to support this.

Furthermore, there is another project that's extremely useful and robust called Nakama that has some additional very useful features in addition to what RakNet offers. Since Nakama is written in Go, it should be a fairly straight forward conversion to V. I have heard that it's highly parallel and can support very large MMORPG connection pools.

I personally am wondering if the stack might go like this: ENet underpins RakLib which in turn underpins a V Nakama implementation OR simply the Nakama feature-set added to RakLib...

Curious about your thoughts on these points and whether or not it might be interesting to you since you have some good work and apparently some clear objectives behind your effort.

Flaplim commented 4 years ago

Thank you for the suggestion. We are actually implementing a small part of RakNet so that we can manage the packets on Minecraft: Bedrock Edition. We're focusing on making a server software for that specific game. PocketMine-MP, which is most likely the most used server software for this, uses also an implemented RakLib written in PHP. I agree with you that there are many (game) network engines which could be more useful than RakNet, but since Minecraft: Bedrock Edition uses RakNet, it is hard for us to use something else (like ENet). We could consider adding the Nakama feature-set to RakLib, which sounds also cool, but our first goal is to develop the server software until it works stable. :)

ylluminate commented 4 years ago

Thanks for clarifying. After I submitted this I realized (as I was looking around) that Mojang had originally licensed RakNet a long time ago before Oculus (by extension Facebook) acquired it, and therefore this is why RakNet is the standard for Minecraft servers. So I appreciate your clarification and discussion here!

I have to say that there is a LOT of uncertainty (and variability) surrounding (from what I'm seeing) the speed aspect of RakNet vs ... I really am not sure if anyone has made a proper study of performances, but I would have to say that a V implementation of the RakNet protocol + functionality should be very fast. Once the parallelization functionality is in place, it certainly seems we'll be getting better speeds than Go and right up there very close to pure C. So at that point it will really be a matter of optimization of data structures and algorithms more than anything since the API will be pretty much fixed.

I do think that adding the Nakama functionality could be quite remarkable since this would essentially be a RakNet implementation hybrid with additional API for the additional functionality.

We have an MMO game that we'd like to develop with V. We'll very likely use VSDL2 (obviously just getting underway) and V UI (forthcoming) for the universal client. As for the server and before learning about V we were seriously considering Unity + Nakama and some other glue to hold it together. V is somewhat of a "dream come true" since it will allow for a universal development and deployment codebase for all the platforms + JS and WASM. Developing the server and client in the same language is really useful and powerful.

So definitely, as you work on this, please do think about expanding into the Nakama functionality space. I believe that we'll be able to contribute to this as well as we start to work on things, but we're still a few months out with projects until we can get involved.