RakNet still alive?

Started by
8 comments, last by hplus0603 8 years, 3 months ago

I've noticed that every since Oculus VR purchased RakNet it seems to have died? The last official release was in June. The github repository hasn't had any real updates since July last year, with a bunch of unattended reported issues. Rakker himself hasn't been active on the forums since March last year (obviously because he sold it) and the RakNet forums are so quiet now. In fact there is more spam on those forums than actual posts. Any actual posts from people looking for help just get no replies.

I'm just about to start a new project and am investigating networking at the moment, so have been looking into RakNet, but it just seems to have died now ever since Oculus VR took over? I don't want to start using something that has no support or active development. Does anyone know anything more about this?

Advertisement

I've noticed that every since Oculus VR purchased RakNet it seems to have died?

Looks as if they open sourced it as a way to cut the strings with the project, "free it in the wild" so to speak, so if anybody wanted to pick it and fork it, they would be able to. Prolly employees are working on whatever Oculus is doing now.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Yeah, seems disappointingly quiet.

It is a pretty mature, well documented piece of software so I don't think you should reject it completely just because there's no active support/development, but it's probably something to factor into your decision making.

I'm using it in my game, but only for my local multiplayer. For internet multiplayer I was planning to go with Raknet (and have working code for it), but ended up going with gamecenter instead. Although that decision was mainly to avoid the burden of paying for and running matchmaking facilities.

RakNet is one of the most mature pieces of middleware around. I wouldn't be that worried that the pace of development has slowed.

Besides, Unity uses RakNet, so on that alone, I doubt it is going to die off anytime soon - if there's any danger of it, someone will fork the codebase.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

maybe u can use libevent to instead of raknet if u r worried about.

there have a serverframe show how to use libevent and it is a mature frame.

website:https://github.com/ketoo/NoahGameFrame [https://github.com/ketoo/NoahGameFrame/tree/master/NFComm/NFNet]

https://github.com/ketoo/NoahGameFrame [A fast, scalable, distributed game server framework for C++]

RakNet is one of the most mature pieces of middleware around. I wouldn't be that worried that the pace of development has slowed.

Besides, Unity uses RakNet, so on that alone, I doubt it is going to die off anytime soon - if there's any danger of it, someone will fork the codebase.

Sorry for resurrecting this thread, but recently I had to rebuild my project from scratch and found out RakNet is no longer "alive". I'm not sure how this is possible. I've been using RakNet for 3 years now, and to be honest it always seemed like really messy framework (but it worked so far with my limited needs). Build files are terrible and always require some hand-tweaking, and there is supposedly a ton of buffer overflow bugs and few other major problems. Source has been abandoned by OculusVR and only some life can be found in forks, which have their own problems and don't compile out of the box on popular compilers like MSVC2015.

How library that has been around for so many years can end like this? Are there really no alternatives? Should I stick to RakNet since I already use it in my project and try to somehow fix the problems and follow some pull requests from the community, or there is some reasonable alternative (in terms of functionality, I need some UDP network layer with reliability options for client-server architecture).


Where are we and when are we and who are we?
How many people in how many places at how many times?


or there is some reasonable alternative (in terms of functionality, I need some UDP network layer with reliability options for client-server architecture)

If all you need is reliability over UDP, then there are a ton of options. Enet and UDT both come to mind.

If you need the high-level object and RPC handling that RakNet provides, then you are probably looking for something like ICE, or better yet, Photon.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

there is supposedly a ton of buffer overflow bugs


Don't believe everything you hear on the internet, unless there is verifiable evidence.
Can you link to one active bug report about a buffer overflow bug in RakNet (that shows a problem in the code)?

Second, if you need reliability over UDP, use Enet.
If you are using a particular game engine, like Unity or Unreal, then look at the default solutions for those engines.
enum Bool { True, False, FileNotFound };

there is supposedly a ton of buffer overflow bugs

Don't believe everything you hear on the internet, unless there is verifiable evidence.
Can you link to one active bug report about a buffer overflow bug in RakNet (that shows a problem in the code)?

Second, if you need reliability over UDP, use Enet.
If you are using a particular game engine, like Unity or Unreal, then look at the default solutions for those engines.

Hence "supposedly" smile.png I just got that impression by looking at issues on github, and haven't really checked&confirmed any of those (I just need library that works, if I were to spend time checking for these things in every thing I use I would never get past main() in my project):

https://github.com/OculusVR/RakNet/issues/73

https://github.com/OculusVR/RakNet/issues/25

https://github.com/OculusVR/RakNet/issues/2

https://github.com/OculusVR/RakNet/pull/36

https://github.com/OculusVR/RakNet/issues/57

Some are not very detailed, but one can get the impression there are more such bugs than should be in mature library. Saying this, I'm still hoping RakNet is stable enough to be used in my project, I already integrated it and it worked in development settings for these years, but these signs (selling RakNet, new owner just letting it go on GitHub where noone even approves PR) made me a little worried. Every time I upgraded to new RakNet version in the past I struggled with issues like errors/warnings, problems with CMake generation, so every time it left a feeling that lib may not be as polished as other 3rd party things i use.

I considered Enet but at the time I made the decision it was slightly too low-level for my present knowledge and what I needed - reliable UDP client-server architecture, but also some helper methods for packing data specific to games (vectors, quaternions), so some nice way to read/write data into packets (like RakNet's BitStream), way to prioritize packets, channels etc. This means that right now I'm probably using 5% of what RakNet has to offer, and probably won't be using much more - I will handle object sync myself, not using some ReplicaMaster, same for chats and all other in-game activity. I may need some secure crypted data connection for logging too (I think RakNet also has it).

I'm staring to wonder what would be better in such case:

1) staying with RakNet, as it works, even if I'm using just a small percent of functionality and there are previously mentioned issues with the current state of project

2) trying to convert to some lower level lib like Enet, and adding needed functionality that I'd lack compared to RakNet (plus making it more in object oriented manner). Are there any libraries based on Enet that are slightly more high-level, but not as big as RakNet?


Where are we and when are we and who are we?
How many people in how many places at how many times?
IF you want to ship a game, and RakNet currently gives you what you need, then there is no reason to switch.

I sanity checked the three first links on your list, and all three seemed to be "it's possible to crash RakNet by calling it in a certain way," but none of them seemed to be remote. (Issue "/2" claimed that the sprintf() on the "subject" parameter was possibley "remote" but I don't see evidence of "EmailSender" being remotely exposed -- if it were, you'd have other problems before buffer overruns :-)
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement