Server for an Android Turn-Based game.

Hey guys. I create a post already here, but after I found that Board. ::slight_smile:

I am creating a Java 4 players turn-based game for Android but i haven’t create a server again in my life so I have some questions.
I have already wrote the code and is playing fine in Java @ my PC. Now I have to write it for Android and create the server and the connection with the clients.
I did some research and I think that I need a Java server, to check for inputs, but what else should I have my mind before starting writing the code?
The game should be running only in server? What the client should have in?
I have some medium experience in networking but all from college and nothing more.

I appreciate your help. Thanks for your time.

I would use kryonet
It does a lot of the stuff for you
I would use TCP

The game logic should be in the server

Im kinda new at this stuff so that all the advice i can offer

The client should primarily be used for (obviously) interfacing with the player and taking input from both the player and the server, then sending data to the server, where it will be processed appropriately. If you want to make a safe and secure client, the game logic should be handled server side. The client should accept input from the player, and then send packets containing the data to the server. The server intercepts the packets, reads them, performs the game logic, and then it may send packets back to the clients. Really the only thing that is different from non-networking games is the fact that the game cannot directly process the input information from the player, the server must do it.

I would also recommend Kryonet for networking, its ridiculously easy to set up and use, and requires only minimal (to none) knowledge of how networking works.

Turn based is pretty easy, because you don’t have to worry much about congestion or latency.

I would use KryoNet, as others suggested. It serializes Java objects and sends them over TCP or UDP. For turn based definitely use TCP.

I would make a special container object for network data/commands to send over the wire.