Scheduling events within a program

It really deoends on what you need/want.



If Frog's JGN exactly meets your needs then go for it.  There is no question that there is less overhead on a number of fronts.  As I understand JGN (which is not as well as I probably should) it provides solid networking and can be used in a peer to peer network for an individual game session without any other major overhead.



Darkstar is definitely a heavier-weight solution.  It requires at least one server.  (Although that server could theoretically be launched on one client's system) and enforces a star-network network model.  We chose that for its security characteristics, but if security is not an an issue to you then it may well be over-kill.



Darkstar's real strengths start emerging when you either want to:

(a) Run massive numbers of people in the same game or

(b) Run massive numbers of game sessions. 



As one Darkstar developer put it.  "Getting from a single player game to a two player game isn't much easier with Darkstar then with other solutions.  Going from a 2 person game to a 2,000 person game though is almost no work at all."



The other place Darkstar shines is if you need to track persistent data.  This could be ranking data in a causal or similar kind of game or world information in an MMO.



Eventually we plan to have pluggable transports and protocols.  We had this in the prototype but it dropped out in the 9.x re-engineering.  It will come abck however.  When it does, you could even have a clean way to use JGN and Darkstar together, if you wanted to.


Jeff, I feel like we've already had this conversation.  :smiley:



I do agree…I wouldn't argue that Darkstar necessarily scales better, but definitely has had a lot more money thrown at testing it in scalable environments. ;)  If I can convince Jeff to better modularize Darkstar I can then just rip-off their data persistence architecture and there will be no debate.  :stuck_out_tongue:

In the unlikely scenario this game becomes big enough to get even 20 players online at once, I'll design it with Darkstar so I can have up to 1500 on a server or something.

jeffpk said:

As I understand JGN (which is not as well as I probably should) it provides solid networking and can be used in a peer to peer network for an individual game session without any other major overhead.

Darkstar is definitely a heavier-weight solution.  It requires at least one server.  (Although that server could theoretically be launched on one client's system) and enforces a star-network network model.


Here you go ... I did not know that :) This alone makes me want to use JGN as for regular games, it really is not good that as a result of the server disconnecting, the game ends. I guess there would be ways around that... but with more coding.

Anyways I really wish I could have the best of both frameworks :)

PS. Could Darkstar put 15K people together at one time in one persistant world like Eve-Online does with stackless python? Not that I am that ambitious... just wondering :)
darkfrog said:

Jeff, I feel like we've already had this conversation.  :D

I do agree...I wouldn't argue that Darkstar necessarily scales better, but definitely has had a lot more money thrown at testing it in scalable environments. ;)  If I can convince Jeff to better modularize Darkstar I can then just rip-off their data persistence architecture and there will be no debate.  :P


Let me clarify something....

I'm NOT suggesting that JGN wont scale for communications.  I trust Frog enough that I suspect it probably can.  Darkstar just attacks some issues beyond communication scaling.  It has an execution model that allows you to write mono-threaded server code that automagically scales out across a large parallel back-end.  It has (almost) orthogonal persistence and we are solving the scaling problems there because it is central to our execution model.  It also has a transactional execution engine udner the hood that eliminates a large number of common kinds of game-server errors that come about from race conditions or partial execution of operations.  (So called "dupe bugs" are one of the msot common artifacts caused by these kinds of errors.)

So I'm not saying JGN wont scale for communications... just that Darkstar attacks the rest of the issues of scaling (and making reliable) an entire game server system as well.

And....  I'm pushing regularly on the guys to get pluggable transports back into the system DF.  When thats there Id actually LOVE to see a good hybrid system.  :)

jeffpk said:

So I'm not saying JGN wont scale for communications... just that Darkstar attacks the rest of the issues of scaling (and making reliable) an entire game server system as well.


No argument. This is one of the major divergent points on JGN. Darkstar attempts to encapsulate so much of the system that goes beyond networking that I have no interest in dealing with in the core of JGN. I much prefer to focus on a strong basic foundation that enables developers to leverage third-party or create their own APIs that provide that higher level functionality. I always plan to keep the core of JGN very simple and focused towards performance and modularity. I have no idea what strange ideas people may have for creating games in the future and that's how I approached JGN. Create a foundational system that never hinders, only enables.

jeffpk said:

And....  I'm pushing regularly on the guys to get pluggable transports back into the system DF.  When thats there Id actually LOVE to see a good hybrid system.  :)


It might make me feel a little dirty, but I'd be willing to assist with that...after all, it might be the only way you guys ever get UDP support.  :P 

Well I dun started a hot debate.

What games been tested with JGN, what is real testing in number clients on JGN.



Have JGN been prooved, if it have please name 10 games that have prooved it.




Nah, not heated, I just give Jeff a hard time.  I was fortunate enough to get to meet him here at JavaOne this week and we have a lot of very similar ideas about networking, just different systems for different needs.



Take a look at javagn.org for a couple games that are using JGN…there's several released games mentioned even on here that were done with JGN.


Ahh, so not have 10 games and none released.

Is jgn a new project for it be so immature

Yeah DF why is JGN so immature?!  It can't even hit the industry standard 10; you suck!

maybe i should ask if anyone tested the network with more than 300 clients.

I've done some scalability tests using more than 1,000 clients, but it was all on the local network.  It performed quite well and as far as communication over a network JGN makes an extremely small footprint on the network.  I think a basic message can be as small as 5 bytes over the actual pipe.



My purpose in JGN was not to write a system that I solely control and I end up trying to sell people on, but rather to have an open networking framework that anyone can help make better and make networking in games easier.  I think JGN is a great framework but I gain nothing by people using it apart from assistance in making it better…that's a primary differing factor between JGN and Darkstar. :wink:



If you like it, use it.  If you don't, either contribute to make it better or use something else…it's that simple. :slight_smile:

last advice word - you need to get some proper benchmark, lastly you need to become salesman

There are a couple stress tests in JGN but since JGN was originally designed to meet my own needs I haven't really had the time or cared enough to put together a good benchmark.  On a local network it can send an average of about one million messages per second.



I have no intention of becoming a salesman, and like I said, it's an open-source project, so the best I get some people contributing back to the engine I use to handle my networking. :slight_smile:

Hey Guys,



We're all friends here, or should be :slight_smile:



I appreciate DF's passion for his efforts, and I think he in turn appreciates mine for ours.  As he says, we attacked slightly different problems from different angles and came up with different solutions.  Thats a good thing.  Its up to individual game projects to figure out what solutions are best for their indvidiual needs.




I don't really know a lot about networking or what would be required to do some proper benchmarking.  But I'd be happy to participate in some 'in the wild' testing of JGN.



Well as long as I didn't have to do anything too complicated!

I've used JGN for a small business application which in no way had anything to do with games. The G in JGN might be deceiving but its actually really a lightweight librairy that can get stuff done. I wouldn't really call JGN immature, but thats just me. :slight_smile:

Yeah, I've often thought about pulling the core of JGN and making just a networking library out of it and building JGN on top of that with all the game support.  However, apart from games there are not many scenarios where you need the type of real-time messaging that it provides so I lazily just left it all together. :o



It has been around for quite a while…the oldest version I have a recorded release date for is 0.6 of JGN on November 30th, 2005.

hey guys



I really need to understand WHY is darkstar more scalable?

I mean in what sense?

Because of it's "features" (persistence etc) or because of the network model it was designed itself?

For example if i remove all of this "extra" features and leave only the basic functionality of the network layer (messages and channels) will it be faster in a MMO than JGN?



Why?  :smiley: