Atualmente, estou fazendo um jogo MMORPG, baseado em turnos. O cliente deve executar no Android. Agora, meu amigo está fazendo os gráficos, e eu tenho feito as aulas de jogo (jogador, armamento, etc.). Agora, se a luta começar, as classes podem ser manipuladas por interfaces (na verdade, para meu parceiro, é como trabalhar com interfaces puras, ele não precisa de acesso às classes de implementação).
Agora precisamos introduzir um servidor de jogo para permitir vários jogadores. E algumas questões muito importantes surgem:
1) Devo copiar o modelo do jogo para o servidor completamente, sem deixar classes no cliente ou é melhor ter 2 cópias do modelo - 1 no servidor e 1 no dispositivo e concluir a sincronização periódica entre elas?
2) Qual método de conexão escolher entre o cliente e o servidor (o cliente à vista é o telefone Android)? Quanto ao servidor - estou me voltando para o java, porque tenho alguma experiência com ele. Mas agora a pergunta é: é melhor usar soquetes para esta tarefa ou eu posso usar serviços REST, ou até é possível conectá-lo de alguma forma ao servidor Java EE, o que é legal do meu ponto de vista, porque isso remove muita programação complicação? Mesmo que o jogo seja multiplayer, é baseado em turnos, portanto, não precisa ser renovado com muita frequência.
3) E o encadeamento? Todo cliente deve ter seu próprio segmento (no caso de soquetes)?
4) Existem livros sobre programação de jogos para servidores REAL MMORPG por aí ???