Java server side game, and also a Java client game GUI that communicate with TCP. The client can either play single player, which means they will play against the server's AI, or they can play multiplayer, which means the client side will act as both Player One and Player Two (i.e Both players are playing on the same computer). All of the game logic resides in the server.