Page 1 of 1

Taking another swing at networking

PostPosted: 07 Apr 2017, 13:50
by BetaSteward
Hey XMage Devs,

I'm back at it again. First off let me start by saying that everyone has done a fantastic job with XMage. It's awesome to see how far it has come from it's early days on Google Code.

The last time I was working on XMage I was attempting to convert the networking layer to use Netty but then real-life got in the way and I had to step away for some time. Life has started to return to normal so I'm now in the mood to get back to coding.

Recently I took a look at what I had done and I decided that it might be of some use to other projects so I simplified the code and split it out into a separate repo. I even took a stab at converting everything to Scala but I found the integration with Java was just too awkward.

The new project is called jorre. You can find the repo here: It is a networking framework that allows java based applications to exchange request/response objects using Netty.

My plan is to redo the XMage networking layer using this framework. I am hoping that it will be somewhat less complicated than my previous attempt. Over the next few weeks I will create a new branch and start the process of removing the jboss-remoting networking and replacing it with jorre. I suspect that this operation will probably require some rework to the jorre framework as well.

When in place, this networking overhaul should hopefully allow much greater throughput and reduce the number of disconnects and possibly reduce the number of server restarts. After that I'm considering doing some work on making the server scalable so that additional instances could be added as load increases.

If you're interested in helping or if you just want more info let me know.



Re: Taking another swing at networking

PostPosted: 07 Apr 2017, 17:04
by fireshoes
We have a gitter page to chat now too, if you want to communicate with other devs. That's where nearly all of conversations take place.

Re: Taking another swing at networking

PostPosted: 08 Apr 2017, 01:56
by escplan9
Hey! Welcome back! Looking forward to your contributions! Join us on Gitter to keep more up to date on the project!

Re: Taking another swing at networking

PostPosted: 15 Apr 2017, 08:53
by noxx
Hi BetaSteward,

Did you finally get to the chat fireshoes gave link to? I've been looking into network issue for last months (when had time) and I believe the application (engine) itself should be changed first (especially from bandwidth perspective - see The root cause I see is the way the server sends updates that is far from being effective.

Regarding your topic: first I'd like to ask LevelX if we really had network issues so far: I see players reporting some of them but I also see 500 players online so means protocol level may work well. And still even if we choose new framework for networking it's long path since it should be tested carefully (not on a single machine) and with emulating network outages.

Recently joined chat for the 1st time, we may discuss it there.

If you're interested in helping
Yes, I'm. Do you have feature branch created or any progress on it from xmage code basis?


Re: Taking another swing at networking

PostPosted: 16 Apr 2017, 20:27
by BalanceOfPower
I am interested in the network part. I originally started working on XMage to work on that but ended up making another large change instead (moving cards from sets to individual cards in alphabet folders). The interest in the network code was to change XMage to use a format that could be shared by clients other than Java. I'm wanting to create a new client using Electron (Html/Javascript).