Bom, como alguns já devem saber, a um tempo atrás comecei um projeto em Java tanto no lado cliente como no servidor (Estava tudo indo bem), fizemos um ( Login Server -> Game Server -> Jogo (2D)), inclusive funcinava com mais de um player logado, recentemente fomos tentar melhorar o servidor (Inclusive por necessidade, tivemos alguns problemas), no final resolvi postar aqui umas duvidas:
Informações:
Trabalhamos com Socket (TCP) em tudo.
-
Como seria o fluxo correto de conexões ou bons metodos para a criação de um Servidor?
ex:
Executa Login Server (Valida usuarios e transfere para o Servidor correto (Ex: Server 1, Server 2, Server 3) ).
Executa Game Server ( Game server se conecta via socket com Login, validando usuarios ainda logados).
Executa Cliente (valida no Login Server e abre conexão com o Login e Game server (E mantem aberta conexão em ambos)).
Cliente fica enviando e recebendo dados (Conexão só encerra quando o jogo fecha).
Game Server:
- Pra cada cliente logado criamos uma thread (50 players = 50 threads = 50 conexões diferentes NO SERVIDOR).
Obs: Inclusive antes o cliente ficava a 67+ “FPS” e localmente ainda fica, mas em rede (internet apenas com 2 clientes o FPS cai para 20 FPS) como se o cliente tivesse um delay violento causado pela resposta do servidor ou … (Lembrando que testando tudo na mesma maquina (Login->Server->Jogo) o FPS fica normal, mas em rede ou internete o FPS do cliente cai bruscamente.
Obs: Agora quando dois clientes logam, ambos travam, só um mesmo lento funciona.
2. Qual protocolo aconselham e quando usalo (TCP, UDP, outros …)?
3. Quais são as boas praticas para este tipo de desenvolvimento (Me referindo ao trabalho na conexão).
4. Serialização, como usar isso corretamente?
Antes que perguntem, pretendo migrar para o RedDwarf (ou outro) em algum momento (Ao menos tudo indica que sim), mas preciso do servidor funcionando nem que seja no minimo de 20 players para que eu possa continuar os trabalhos no lado cliente (Lembrando que ele é apenas um terminal burro, e tudo ocorre no servidor). E não sei até que ponto a curva de aprendizado do RedDwarf é longa (Não sei nada dele, exceto que o usam no lado servidor, mas o que ele automatiza para mim? aonde ele agiliza, etc; são estas coisas que podem demorar então resolvemos fazer um servidor do zero, que segure ao menos 20 players).
Espero que tenha me expressado bem em relação aos nossos problemas.
