O PlanetServer é usado para desenvolver ambientes virtuais de vários usuários, fornecendo uma camada intermediária entre o cliente e o servidor. Ele usa soquetes para que todas as mensagens enviadas de um cliente possam ser transmitidas a todos os outros clientes. O PlanetServer suporta plataformas Android/iOS/Windows/Max/Linux no momento. Ele usa um protocolo personalizado no TCP e em breve também apoiaremos o UDP. ## diretórios
PlanetServer tem alguns diretórios principais que você deve conhecer
Lib - contém todas as dependências necessárias para o servidor '
Extensão - contém seu frasco de extensão de jogo e quaisquer outras dependências personalizadas necessárias para sua extensão
Conf - contém um arquivo de configuração para o servidor e também um arquivo de configuração para log4j (log)
##Configuração
O PlanetServer contém um arquivo config.properties na pasta conf. Este arquivo pode ser editado para configurar configurações específicas para o seu servidor.
Server.tcp.port A configuração é usada para configurar a porta que seu servidor está ouvindo
Server.threads.Executor A configuração é usada para configurar o número de threads no ThreadPool. Você deseja aumentar esse valor com base na quantidade de atividade por motivos de desempenho.
Há também um arquivo log4j.properties , onde você pode configurar o log para o seu servidor. Consulte a documentação log4j para obter mais detalhes sobre isso.
Dentro da pasta de extensão, existe um arquivo do mundo.Properties . Este arquivo contém propriedades específicas para o seu jogo e são acessíveis através do seu código de jogo. A única propriedade necessária aqui é a extensão.class.name, que aponta para o ponto de entrada principal do seu aplicativo. O exemplo fornecido foi configurado para que, para sua própria extensão, basta alterar o nome da classe.
## Extensões Ao criar seu aplicativo Você cria uma extensão para o planetserver. A extensão é simplesmente um arquivo JAR que é colocado dentro da pasta de extensão com todos os outros arquivos JAR necessários para o seu aplicativo. Você deve criar uma classe principal para a extensão para o ponto de entrada. A classe principal deve se estender da psextensão e substituir os métodos init e destruir. Por exemplo
public class WorldExtension extends PSExtension {
@Override
public void init()
{
}
@Override
public void destroy()
{
super.destroy();
}
}
Coloque qualquer funcionalidade personalizada no init e destrua os métodos. Isso pode conter qualquer código personalizado necessário para o seu aplicativo.
## solicitações de extensão Para enviar comandos personalizados para o servidor Você deve registrar uma classe personalizada para um manipulador de solicitação. Por exemplo, digamos que você tenha um jogador e queira enviar uma solicitação para fazer algo para o jogador. Primeiro, adicione o manipulador de solicitação AddRequestHandler ("Player", PlayerRequest.class); Em seguida, crie o arquivo Java PlayerRequest, que se estende do BasicClientRequestHandler. Você substitui o método HandleClientRequest e, em seguida, pode analisar a solicitação enviada.
Todos os comandos são enviados usando uma notação de pontos. Por exemplo, qualquer coisa que comece com o jogador. será tratado pelo manipulador de solicitação registrado para a string "player", alguns comandos de exemplo podem ser player.save, player.load, player.move etc ... Uma boa maneira é ter uma enumeração dos comandos e, em seguida, você pode escrever uma instrução Switch para lidar com os comandos separadamente por arquivo java. Você pode visualizar o exemplo no arquivo java de amostra.
## Planos futuros para a próxima versão principal da versão 1.1 suportarão as mensagens UDP. Acreditamos que isso é necessário para alguns jogos de taxa de mensagens mais altos.