Multiplayer game logic setup! (not asking for code)

Hey everyone!

I have been learning about network programming and as I theorize about how I would implement the networking code for a game I had a few questions.

I know that a good amount of game logic should be server side (to prevent easy cheating) and the game client will be mostly for rendering the game and other players/objects. I also learned how to use Ashley, and wondering now how did I ever not use that for my other more complicated projects (not game related). This got me thinking…

Would it be wise to have Ashley on both the server and client? The server could handle spawning of various entities (including other players) in the game world and I could send this data and have the game client use Ashley to manage rendering these entities. To maximize the efficiency of the server, I was wondering if I could use Ashley without libgdx. I have heard of a “headless version” of libgdx that doesn’t include the rendering code, is this a better option?

EDIT: Also I have heard of Netty and Kryo libraries. I see Kryo isn’t being updated any more and Netty still is. Would you guys recommend me using a networking library for stability and ease of use?

Also if you have any other advice about structuring my server side logic, please let me know!

Thank you!

Headless LiGDX is a good option, you don’t need to handle the loop timing yourself with that.
Having an ES on both sides is a viable option.

[quote]Ashley lives under the Libgdx family but it does not force you to use that specific framework if you do not wish to do so.
[/quote]
I always recommend Artemis-odb, it’s faster and more fleshed out afaik, but Ashley works too.

KryoNet is still very functional and also “easy” (Networking is always finicky) to use, i had good experiences with it so far.
Netty on the other hand is a layer of abstraction below KryoNet, therefore has more options but is harder to use at first.

If you end up with KryoNet, just remember to set the object buffer and queue buffer correctly (obj-buf=600…1400, queue-buf=~64000; for the internet at least).
Otherwise the performance will be abysmal (obj-buffer too large, gets allocated for every packet => huge overhead) or your clients disconnect (queue-overflow/packet does not fit => buffers to small) all the time and other weird bugs like that.