======== Precisamos implementar que ele seja Dual Thread com seus clientes
Cada player Mantem sua conexao viva ate o fim do jogo reutiliza aquele socket
precisamos de um loop no servidor
Seguinte precisamos de um protocolo para este projeto.
todo json deve conter um campo "action". Exemplo: "action":"Join"
Join -> Pedido para jogar deve seguir o formato:
{ "action":"Join", "nome":"Yasmin yaz bollaz" }
Char -> cria personagem, formato:
{ "action":"char", "class":"empty", "playerId":"0", "hp":"25", "attack":"30", "ability":"12", "armor":"10", "magicResistance":"15", "speed":"35", "mana":"20" }
Hit -> hit ou acerto, formato:
{ "action":"hit", "playerId":"0", "with":"0", "to":"0", "dano":"10" }
E -> fim da jogada fez todas as suas ações ou escolheu terminar
todo json deve conter um campo "Response". Exemplo: "Response":"accepted"
accepted -> aceitou o join, formato:
{
"Response":"accepted",
"playerId":"0"
}
U -> update ->
{ "Response":"update" "attacker":"0", "target":"0", "dano":"10" }
T -> {Numero do turno} diz pros clientes quem possui o turno no momento
F -> fim de jogo servidor manda pros clientes fecha a conexao e envia "F -> {você venceu}" ou "F -> {você perdeu}"
tem algumas coisas que nos permitem usar Json pode facilitar a comunicacao
Para criar o jogo, devemos concluir certas etapas que estarão listadas a seguir. Trocar o "- [ ] " por "- [X] " quando concluir algum item da lista.
Sprites dos personagens devem ser .png e ter a seguinte resolução de imagem: 80x131* *Inimigos maiores são excessão
-
Escolher Tema do jogo
- Feito
Ou seja, os personagens pertencem à um contexto específico? (ex.: temática asiática, só podem personagens com esse estilo, como samurais e etc).
-
Direção de arte
- Feito
Qual o padrão artístico devemos seguir para os sprites? (ex.: personagens são "sticks", então todos os personagens tem que seguir esse modelo de sprite)
Seguir princípios SOLID
- Estabelescer conexão com servidor quando o jogo iniciar
- Capacidade de salvar progresso -> melhor mudar para um sistema de torneio continuo desafiante 1 2 e 3
- Criar um menu inicial:
- Criar uma seleção de personagens
- Carregar progresso salvo
-
classe Cenário:
- conteúdo do Cenário(Posição dos jogadores e monstros conforme sua formação)
-
classe Mapa:
- Possuir um objeto do tipo Cenário
- Preencher a tela com elementos de acordo com um objeto do tipo Cenário
- Colocar os sprites do mapa
-
classe Personagem:
- Possuir atributos de vida, dano, velocidade e etc
- Possuir uma forma de "função"(ex.: Mago, Guerreiro)
-
classe Jogador:
- Possuir objeto do tipo Personagens
- Cada personagem deve agir conforme input do jogador em seu respectivo turno
-
classe Combate:
- Possuir objeto do tipo equipe do jogador
- Possuir objeto do tipo equipe do inimigo
- Deve ser capaz de dizer quando o combate terminar
-
classe Main:
- Possuir as regras gerais do jogo conforme personagens, inimigos e combate
-
classe App:
- Possuir o método rodar que utiliza uma instância da classe main para fazer o jogo funcionar
-
classe Configuração:
- Possuir as configurações gerais do jogo, que podem ser utilizadas por todas as outras classes do jogo