[quote]1. How is it any better than RMI?
2. If it isn’t done entirely with hand-crafted UDP packets, then IMHO there’s no point at all, as far as games are concerned.
[/quote]
Hello,
I am the one who propose this project.
-
It will not do the same things than RMI, but will be used in a similar way. Since they won’t do the same thing, you can understand than one can do better that the other one in what one doesn’t do.
-
At the beginning, I will use TCP, but for the feature concerning the semantic information of the data sent that I want to add later, I will have to use UDP.
For now, java programmers who don’t want to program with RMI for some various reasons have to implement them-self their network layer.
Why games programmers won’t use RMI ? I personnaly tried to use it, but I ran into some problems :
- I could not just send a function call and wait the return of the remote function. I could not also create a thread per new remote call since the number of calls were too numerous. In a game, the programmer often need a “fire & forget” remote function call, whose return type is void.
- I was curious, so I went to see the code generated by the stub … even when it is about to insert an int into a stream, they need an object, so they create a new Integer(value) before they can serialize it. I don’t know if it will affect the performance or not … but I felt a little … afraid.
- RMI was designed for the general purpose, and it makes it nicely. There is some assumptions that are definitly different between the general purpose and the games. For example in games, the network entities knows more about each other, since they all come from the same game development company. They can suppose more things about the behavior of the one that will receive the remote call, and it is usually used to improve the performances of the network.
So, if the programmer don’t want to use RMI, for the previously mentionned reasons, he have to make himself his own RMI-like framework with some solutions to those problems, or he have to give-up the ease to use of the RMI-like framework.
Here, I propose an open source API that will do that for the programmer. The API won’t support all the features of RMI, it just aims to be as easy as it to use.
I will also implement some components that are commonly used in games, as a demo of how to use the library, and as something that can be used directly by the game programmer.
Now, what my API will do that RMI won’t do is to add some special type of information, so that some data can be transmited between the entities in a more efficient way.
A few days ago, I saw your nice network engine. The API I will implement have different purpose. For now, it only deal with the communication between 2 entities.
… and this one will be LGPL, I want to enable everybody to use it for free, in order to promote Java for games.
Regards,
Vincent
Ps: I voted “abstain” when arriving on this thread … that’s more fair