You are here

Aula 01 - 01/03/2013 - WorldServer3D webstart e Programa cliente de teste

  1. Compilação e criação de executável (WebStart) do WorldServer3D. Veja o resultado aqui.
  2. Esta primeira versão do cliente de teste para o World3D permite criar uma criatura no mundo e controlá-la de maneira simples, a partir dos seguintes comandos:
  • F1 - Envia comando "showworldthings".
  • F2 - Cria uma nova criatura, na posição fixa 100, 100, liga seu motor e associa-a a uma câmera.
  • LEFT/RIGHT - Rotaciona a criatura em ângulos de 45°, via comando "setAngle".
  • UP/DOWN - Aumenta/Diminui a velocidade linear da criatura, via comando "setTurn".
  • SPACE - Para completamente a criatura, via comando "setTurn".
  • Esta primeira versão só funciona executando na mesma máquina que o WorldServer3D. Clique aqui para testá-la.
  • O seu código fonte pode ser encontrado aqui.

OBSERVAÇÃO:

  • A primeira versão do programa (pronta antes da aula 08/03/2013) estava apresentado problemas de leitura da resposta do comando de criação de nova criatura; embora executasse no ambiente de desenvolvimento, no laboratório da FEEC não conseguiu receber a resposta desse comando e ficava em loop.
  • A versão 1.1, testada em 15/03/2013 continuou sem executar no ambiente do laboratório. Testes feitos indicaram que o principal problema foi diferenças no LOCALE do ambiente: no laboratório as máquinas estavam com a instalação toda em português brasileiro. Isso causava diferenças na construção dos comandos enviados para o servidor, pois esses são feitos através do comando "String.format(...)"; no laboratório, o ponto decimal era substituído pela vírgula e o servidor não compreendia o comando.
  • Foi feita uma nova versão 1.2 com o uso de "String.format(Locale.US,...)" para forçar a construção dos comandos com o ponto decimal. Foi também acrescentado uma verificação pois em alguns momentos o servidor responde string vazia para o comando "getfullstatus3D" - esse comportamento parece ter haver com o envio de muitos comandos em sequência rapidamente, pois não é constante e quando a execução do cliente é retardada - usando breakpoints por exemplo - não ocorre.
  • O código fonte dessa nova versão (1.2) pode ser encontrado aqui.

OBSERVAÇÃO 2:

  • Uma análise feita indicou também que quando o servidor (WorldServer3D) é terminado fechando-se a janela - e não via a opção de SAIR (Ctrl-E) - o processo do "javaws" fica executando e na execução subsequente do servidor ele passa a ter um comportamento diferente e o cliente para de receber respostar para o comando "getfullstatus3D"; nem via telnet esse comando responde.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer