Project Proposal: JEnet

Please cast your vote for the following projet:

[quote]Project Name: jenet

I would like to include a new subproject in games-middleware. Its name
is “jenet” and it is a port of the well known "enet"communications
library for C. It has the following relevant features:

Core (enet):

  • Implemented on top of UDP.
  • Reliable/Unreliable/Sequenced/Unsequenced packet delivery.
  • Fully interoperable with C/C++ through enet.
  • Content agnostic.
  • Configurable Outgoing/Incoming bandwidth.
  • Lost connection detection.
  • Built-in Ping.
  • Multiple channels

In addition to the core module, a higher level layer will provide
additional functionality:

  • Packet compression.
  • Packet encription.
  • Master Server.

Core functionality has been implemented and may be considered beta.
The higher level layer is still in the planning stage.

I think that this project would be interesting for the Java game
community, and will simplify transition from C/C++ based platforms to
Java. It worths mentioning that, as the library is aimed to the low-level it
does not conflicts with the JNAG project which is aimed to higher
level functions like object marshalling/unmarshalling.

I hope that you will regard this work as useful and that its inclusion
in java-games-middleware will be approved.

Thanks a lot,

Dizan
[/quote]
All “no” votes must be accompanied by an explanation, to allow the project owner to respond and, if necessary, make changes.

Yes - BUT with a caveat: this has to be done well, and properly. Enet has a decent reputation for doing the job fairly well. Who is going to do this porting that fully understands what they are doing?

Also, are they porting enet to java, or wrapping it?

Hello blahblahblahh,
I hope that following points will answer your questions:

[] The library is a port (i.e. fully java implemented).
[
] An alpha version has been already developed. Moreover, the original C code has been refactored to an object-oriented architecture.
[] Tests have been conducted between C and Java, this includes multiple scenaria: Reliable/Unreliable, Sequenced/Unsequenced, Fragmented/Single packet
[
] In the process I have gained lots of understanding on enet’s internals. In the other hand I have been using enet for C and C++ based projects during the last two years, so, I have thorough user-side experience with the library.
[*] Anyway, I’m aware that such a port won’t be bug free. Testing is one of the main ways the community can contribute to this library and helping make it as trusworthy as its C counterpart (and model).
[/list]

Dizan

You need to develop unit tests. Use junit.org (?)

I’m currently using JUnit, but due to nature of the project I need to go farther than unit tests, maybe the most problematic part are automated integration tests wich C or C++ programs using eNet. Any suggestions on this will be appreciated.

Hello, I am the author of JNAG.

I am pretty slow with my current project, I am very busy with my work. I wish the java programmers to have more ressources and more choice about what network libs they can use for their games, so I vote YES. :smiley:

Some parts of what is described in Jenet is also a part of what I planned to do in JNAG, but it is not a problem at all.

I prefer to not merge our efforts into 1 single lib because I know that we all have a different vision of what should be in the lib, but maybe we can cooperate to enhance our respective libs (if I have time).

Regards,
karma.

Thank you for your vote! I hope also that we may cooperate in the future.

Dizan

Im, sure this is obvious but just to make sure…

It should be noted that BBB speaks for his vote.

What he see as requirement for yes vote from him may or may not be required by others.

Just thought I should make the structure artound here clear because Im not sure how long you’ve been around :slight_smile:

It sound like eNet could be a nice library I could use underneath of HeadQuarter.

So please approve that project.

I’m with B³ that it should only be called jeNet if it is eNet in Java. But from what dix_ans says, I have no doubt this will be the case.

Hello everybody, and thanks for your interest in jeNet. As I have the feeling that there are still some questions about the project, I will try to clarify them:

  • The main driver of the project is, eNet compatibility, in fact I’ve developed it to interact with an existent c++ application.

  • The core is a full java port of eNet. This implies three things: a) it is written in java, b) it is able to communicate with an eNet C client in a transparent fashion, c) the core’s functionality is the same than that present in eNet even if it has been rewritten to follow object oriented principles (eNet is written in plain C).

  • Even if at this moment nothing more than the port has been done, the full project’s scope comprises some functionality that is not present in eNet, however, the use of this higher level layer will be optional.

I hope that this description will answer most of the questions regarding this project.

Dizan

Thank you, Herkules for your support!

I’ve voted yes. This is useful in itself and interoperating with enet is a real bonus.

The higher level features you’re planning aren’t in enet, though, are they?

Am I right in assuming that the basic enet approach is somewhat similar to the Tribes networking paper that was released a year or so ago?

Anyway - I’m very keen to see this come to light.

A more content-related discussion is already going on:

http://www.java-gaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=Networking;action=display;num=1114771374