Possível comportamento incorreto do comando I qdo usuário sai da mesa enquanto jogo não tenha iniciado

17 views
Skip to first unread message

Sandro Gasparoto

unread,
Feb 9, 2009, 11:04:16 AM2/9/09
to minitruc...@googlegroups.com
Oi Chester,

estava realizando uns testes com o servidor e acabei me deparando com uma inconsistência a qual estou com dificuldades de encontrar exatamente onde consertar, apesar de não ser algo muito complicado. E isto é, caso seja um problema mesmo... talvez vc possa ajudar!

Aqui vai a descrição do caso:

jogador 1 senta-se à mesa 1
jogador 2 senta-se à mesa 1
jogador 2: Q
jogador 1 sai da mesa
nesse ponto, recebemos um comando I onde todos os jogadores estão setados como prontos para jogar "TTTT", porém acredito que o correto seria o jogador 2 ser re-setado como "F" pois ele é obrigado a entrar o comando Q novamente para iniciar a partida...
Sumarizando, penso que talvez o comportamente mais correto fosse, toda vez que alguém abandonasse a mesa, os jogadores fossem re-setados para "F", pois a situação acabou mudando, e o jogador teria que entrar o comando "Q" reconhecendo essa mudança e enviando seu sinal de "preparado para jogar"...

O que vc acha?? Estou viajando na maionese?....

Acabei identificando esse comportamento pois no gTruco, ao clicarmos no botão verde, ele se esconde, e caso este cenário descrito venha a acontecer, não tenho como reconhecer a situação para colocar o botão verde novamente na tela!...

Um grande abraço,
Sandro


 

Sandro Gasparoto

unread,
Feb 13, 2009, 6:14:52 AM2/13/09
to minitruc...@googlegroups.com
Oi Chester,

fiz um patch no código para corrigir esse comportamento para o gTruco...

em Sala.java:

public void resetReadyToPlay() {
        for (int i = 0; i <= 3; i++) {
            if (jogadores[i] instanceof JogadorConectado) {
                ((JogadorConectado) jogadores[i]).querJogar = false;
            }
        }
    }

em ComandoS.java:

s.resetReadyToPlay();


Um grande abraço,
Sandro



2009/2/9 Sandro Gasparoto <sandro.g...@gmail.com>



--
Sandro Rodrigo Gasparoto

46 Hedingham Mews,
All Saints Avenue
Maidenhead/Berks
SL6 6ET - United Kingdom
Mobile: +44 (7739) 226386

1840 W. Whittier Blvd #1350
La Habra/CA
90631 - United States

Carlos Duarte do Nascimento (Chester)

unread,
Feb 13, 2009, 6:22:21 AM2/13/09
to minitruc...@googlegroups.com
Ótimo, eu mal consegui tempo de repsonder o email e você já arrumou :-)

Em tempo: o seu servidor de devel tem um uptime razoável? Eu tou com um problema no servidor "oficial" já tem um tempo (e ele está fora por conta disso), pensei em redirecionar pra ele, o que você acha? (pior que tá não fica, a galera já tá ha quase um mês sem jogar GPRS)...

[]s

2009/2/13 Sandro Gasparoto <sandro.g...@gmail.com>



--
 Carlos Duarte do Nascimento (Chester)
 c...@pobox.com

Sandro Gasparoto

unread,
Feb 13, 2009, 8:12:35 AM2/13/09
to minitruc...@googlegroups.com
Oi Chester,

sem problemas, só preciso liberar a porta 6912 no roteador, chegando em casa já providencio!

[]s
Sandro

2009/2/13 Carlos Duarte do Nascimento (Chester) <ches...@gmail.com>

Sandro Gasparoto

unread,
Feb 13, 2009, 10:39:50 AM2/13/09
to minitruc...@googlegroups.com
Chester,

eu liberei a porta no roteador, só que agora me lembrei de uma coisinha... esse servidor está otimizado para o gTruco, ou seja, coloquei alguns timeouts para ajudar um pouco pois estava com alguns problemas com o setTimeout do javascript, e como vc sabe, javascript não possui wait, é single-thread, aquelas coisas.. :-( outra coisa é que sempre entra a estratégia Gasparotto, agora rebatizada para HAL :-) então tem esses lances... depois que lançar o gTruco, vou ver a carga certinho do servidor, aí se estiver com processamento sobrando, posso acionar outra instância do miniTrucoServer em outra porta, o que vc acha?

[]s
Sandro

Carlos Duarte do Nascimento (Chester)

unread,
Feb 13, 2009, 11:10:47 AM2/13/09
to minitruc...@googlegroups.com
Certo... bem, você é quem diz... acho legal rodar todo mundo junto pra dar massa crítica... será que os timeouts realmente atrapalham?

Sobre estratégia eu nem discuto com você... :-) A Gasparotto realmente manda muito bem.

Fica a seu critério - se quiser testamos tudo no mesmo server, senão aguardamos.

Abraço!

2009/2/13 Sandro Gasparoto <sandro.g...@gmail.com>

Sandro Gasparoto

unread,
Feb 13, 2009, 11:52:17 AM2/13/09
to minitruc...@googlegroups.com
Chester,

do meu lado tudo ok, a porta já está liberado no roteador! Manda bala! Os timeouts não influenciam de maneira alguma!

www.gtruco.com.br porta 6912

Carlos Duarte do Nascimento (Chester)

unread,
Feb 23, 2009, 12:43:29 PM2/23/09
to minitruc...@googlegroups.com
Legal, atualizei a versão (e estou de tempos em tempos apontando o
chester.servegame.org para o IP do server.gtruco.com.br).

O problema é que pela página ainda está vindo a applet antiga - acho
que é preciso atualizar o .jar no servidor com o que está em
http://www.chester.blog.br/m/deploy/miniTrucoServer.jar (que é o que
está na tag "miniTrucoServer 2.0 gT" (resolvi adotar o seu esquema de
numeração pras tags do server de agora em diante). Se você puder
atualizar esse jar (e ver se eu não quebrei nada) é uma boa, porque aí
quem experimentar na página já mexe com a nova estratégia.

Farei um anúncio assim que eu estiver mais apto a escrever (acabei de
voltar de um happy-hour da empresa, não é o momento :-) )

Abraço,
Chester

Sandro Gasparoto

unread,
Feb 24, 2009, 4:57:18 AM2/24/09
to minitruc...@googlegroups.com
Oi Chester,

fiquei meio confuso agora!... não entendi exatamente qual jar necessita atualização?... o que está em server.gtruco.com.br responde ao comando W com 2.0 gT, e é a última versão contendo todos os patches... c puxou do meu branch e fez um 'diff'?!

[]s
Sandro



2009/2/23 Carlos Duarte do Nascimento (Chester) <ches...@gmail.com>

Carlos Duarte do Nascimento (Chester)

unread,
Feb 24, 2009, 6:34:11 AM2/24/09
to minitruc...@googlegroups.com
Desculpe, eu não fui muito claro mesmo, e o assunto é meio enrolado... :-/

Sim, eu atualizei o trunk com as mudanças do seu branch (tanto o
server quanto o client), adicionei uma mudança minha (o lance do
JogoLocalServer para garantir que as pausas só aconteçam no server e
não no client) e isso virou a nova versão do client e do server. Você
pode atualizar o seu branch com o que está no trunk, que já inclui as
suas mudanças até ontem (eu ia marcar ele com merged, mas estou
perdendo feio a briga com o Eclipse/Subversive :-P ).

A princípio não precisaria atualizar nada no servidor, mas o que
acontece é que o server também funciona como um mini-servidor HTTP
para você baixar o MicroEmulator e os .jar do celular quando chama ele
pela página. Motivo: o browser não deixa uma applet se conectar num
server diferente daquele do qual ela foi baixada (sandbox security).
Pra tornar isso menos chato, o processo de build enfia tudo isso
dentro do miniTrucoServer.jar - daí a necessidade de atualizar.

Você pode observar isso solicitando
http://server.gtruco.com.br:6912/miniTruco.jar - ele vai trazer a
versão 3.15. Se você usar o .jar novo (ou der um rebuild a partir do
trunk) ele vai passar a fornecer o 3.16 (que já aponta direto pro novo
server e tem a nova estratégia) - e aí já aproveitamos e vemos se eu
não quebrei nada do ponto de vista do gTruco.

Sem pressa com isso - quando estiver vindo a 3.16 do server (o que vai
permitir que o pessoal que testa pela página, que não é pouca gente,
interaja com os usuários do gTruco), eu vou fazer um post anunciando o
gTruco com pompa e circusntância :-)

Side note: eu já atualizei os Google Gadgets do
http://chester.blog.br/minitruco e http://chester.blog.br/minitruco_en
para pegar o miniTruco do seu servidor (e permitir o jogo via internet
conectando nele), mas o cache do iGoogle é um pouco insistente... de
qualquer forma, apontei o IP do chester.servegame.org para o IP do seu
servidor.

Ufa!

[]s,
Chester

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>:

Sandro Gasparoto

unread,
Feb 24, 2009, 10:16:55 AM2/24/09
to minitruc...@googlegroups.com
Chester,

beleza, saquei agora!

Vc disse que o miniTrucoServer é um tipo também de mini-servidor HTTP para o microEmulador e os .jar do celular, existe qualquer tipo de perda de desempenho no server quando alguém estiver puxando esses arquivos, ou é um 'thread' separado?

Outro lance... pois como vc sabe meu servidor é um laptop pendurado em uma conexão ADSL... verifiquei que o tamanho do microEmulador é coisa de uns 600-700K, o que pode ser um pouco demais talvez... inclusive, mesmo no caso do gTruco, para otimizar, somente o arquivo .html é puxado de lá, o resto .css, .js, imagens, etc é puxado do hosting que tenho conta (truco.23one.com). Aliás, o fórum e tudo mais, fica lá...

Então, estava pensando em um 'workaround' com crossdomain.xml (pelo que vi, disponível após JavaSE6 update 10) (um colega daqui me falou desse lance, não conhecia, dei uma pesquisada no google e parece legal), ou seja, colocar esses arquivos nesse hosting e instalar crossdomain.xml em server.gtruco.com.br para habilitar essa conexão. O que vc acha?! Mais tarde vou fazer um teste real. O único inconveniente é que os navegadores teriam que ter essa mínima versão do java machine instalada... (apesar que existe pelo que pesquisei um 'workaround' com sign, etc, talvez fique muito trabalhoso e não valha a pena)

[]s
Sandro



2009/2/24 Carlos Duarte do Nascimento (Chester) <ches...@gmail.com>

Sandro Gasparoto

unread,
Feb 24, 2009, 11:00:58 AM2/24/09
to minitruc...@googlegroups.com
Oi Chester,

passei todos os arquivos para truco.23one.com/miniTruco/ e implementei crossdomain.xml em server.truco.com.br, me diga se vc consegue testar positivo!

[]s
Sandro

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>

Carlos Duarte do Nascimento (Chester)

unread,
Feb 24, 2009, 11:03:07 AM2/24/09
to minitruc...@googlegroups.com
Hmm... interessante, não sabia esse lance do crossdomain.xml (meu
conhecimento de applets é jurássico, tudo o que eu sei é que não ia
nem a pau hospedando em outro lugar).

Bem, se for o caso a gente desabilita o gadget também, no big deal. Se
você puder fazer esse teste e rolar, show - os arquivos estão todos em
http://chester.blog.br/m/deploy (é onde eu coloco as versões
"stable"), e ali suporta download forte.

Obrigado!

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>:

Sandro Gasparoto

unread,
Feb 24, 2009, 11:24:54 AM2/24/09
to minitruc...@googlegroups.com

Sandro Gasparoto

unread,
Feb 24, 2009, 11:33:19 AM2/24/09
to minitruc...@googlegroups.com
Hummm... agora estou em dúvida se está funcionando mesmo, pois o proxy daqui bloqueia a porta 6912, então não vi realmente... mas não apareceu nenhum "security warning"!...

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>

Carlos Duarte do Nascimento (Chester)

unread,
Feb 24, 2009, 1:05:01 PM2/24/09
to minitruc...@googlegroups.com
Aqui acho que não rolou... a applet entra, mas ao conectar no server,
o sandbox bloqueia:

Tue Feb 24 19:38:18 SAST 2009 JEP creating applet
com.barteo.emulator.applet.Main (http://truco.23one.com/miniTruco/)
Title: MicroEmulator
Author: Bartek Teodorczyk, 2001
Applet::init()
<<< ProxyClassLoader: defined LiveConnectProxy class. >>>
<<< Here're the permissions you've got: >>>
<<< java.security.Permissions@c6552a (
(java.net.SocketPermission truco.23one.com connect,accept,resolve)
)
>>>
Exception in thread "Thread-112" java.security.AccessControlException:
access denied (java.net.SocketPermission server.gtruco.com.br resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
at java.security.AccessController.checkPermission(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031)
at java.net.InetAddress.getAllByName0(InetAddress.java:1134)
at java.net.InetAddress.getAllByName(InetAddress.java:1072)
at java.net.InetAddress.getAllByName(InetAddress.java:1008)
at java.net.InetAddress.getByName(InetAddress.java:958)
at java.net.InetSocketAddress.<init>(InetSocketAddress.java:124)
at java.net.Socket.<init>(Socket.java:180)
at com.barteo.cldc.socket.Connection.open(Unknown Source)
at javax.microedition.io.Connector.open(Unknown Source)
at javax.microedition.io.Connector.open(Unknown Source)
at ae.run(Unknown Source)
at java.lang.Thread.run(Thread.java:613)

Idéias?

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>:

Sandro Gasparoto

unread,
Feb 24, 2009, 4:53:56 PM2/24/09
to minitruc...@googlegroups.com
O JVM do seu navegador é JavaSE6 update 10 pelo menos?

Carlos Duarte do Nascimento (Chester)

unread,
Feb 25, 2009, 3:15:43 AM2/25/09
to minitruc...@googlegroups.com
é, não era :-(

(eu achei que era, mas, pra variar, no Mac isso anda uma bagunça)

Bem, eu vou fazer o seguinte: vou desativar esses gadgets por ora,
para não emperrar a vida (o principal uso deles nem era demonstrar o
miniTruco, e sim rodar no browser, o que o gTruco oferece). Em breve
eu publico um post e vamos ver o quanto isso tudo vira :-)

Novamente, parabéns pelo esforço - ficou *muito* legal, tanto o gTruco
quanto a nova estratégia.

Abraço!

2009/2/24 Sandro Gasparoto <sandro.g...@gmail.com>:

Sandro Gasparoto

unread,
Feb 25, 2009, 4:12:13 AM2/25/09
to minitruc...@googlegroups.com
Fala Chester!

Sem pressa, deixa eu dar uma pesquisada com uns camaradas daqui nesses próximos dias, na verdade não está funcionando mesmo pois o meu navegador oferece essa versão do JVM e está com pau... testei em casa ontem à noite. É melhor tentar adiantar essas partes que exigem mais testes agora pois é ruim ficar tirando do ar o server mais para a frente para atualizações, não é verdade?...

[]s
Sandro

2009/2/25 Carlos Duarte do Nascimento (Chester) <ches...@gmail.com>

Sandro Gasparoto

unread,
Feb 25, 2009, 10:02:20 AM2/25/09
to minitruc...@googlegroups.com
Oi Chester!

Realmente, não rolou... tentei de tudo, crossdomain, etc, e nada...

Estava pensando nas possibilidades... o que vc acha se vc criasse um miniTruco (talvez até exista no build.xml) com jogo via internet desabilitado para rolar no applet? Assim os usuários poderiam continuar a testar o jogo, antes de baixar, que é o que realmente interessa. Qualquer coisa, poderia ter uma nota dizendo que o jogo "baixado" oferece o jogo via internet, somente para não deixar dúvidas da funcionalidade. O que vc acha? Qto aos "timers" implementados para compatibilidade, eu posso testar daqui do meu celular para ter certeza que tudo está ok.

Outra coisinha... não sei se estaria interessado em adicionar no trunk principal, mas eu coloquei uma mensagem de boas-vindas para acessos via telnet, e para prevenir acesssos não autorizados (uma nota apenas):

JogadorConectado.java:

    public void run() {
        ServerLogger.evento(this, "conectou");
        try {
            // Configura um timeout para evitar conexões presas
            ServerLogger.evento(this, "timeout antes:" + cliente.getSoTimeout());
            //Timeout is set to 30secs
            cliente.setSoTimeout(30000);
            ServerLogger.evento(this, "timeout depois:" + cliente.getSoTimeout());
            // Prepara o buffer de saída
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    cliente.getInputStream()));
            out = new PrintStream(cliente.getOutputStream());
            // welcome message
            this.println("Welcome to gTruco miniTrucoServer. Authorized access only.");


E para finalizar, para fins estéticos apenas no placar do gTruco, gostaria de saber se poderia ser checado mínimo de 3 caracteres no apelido no acesso via celular, o que vc acha?

Também não encontrei no trunk a parte que coloca "(celular)" como apêndice no nome...

Estamos quase lá!

Um grande abraço,
Sandro


 

2009/2/25 Sandro Gasparoto <sandro.g...@gmail.com>

Sandro Gasparoto

unread,
Feb 26, 2009, 6:26:53 AM2/26/09
to minitruc...@googlegroups.com
Oi Chester,

complementando meu último email... estava realizando uns testes com o miniTruco no celular e está dando pau na hora de conectar, às vezes aparece erro_versao_msg, e às vezes simplesmente sai para a tela de abertura... aparentemente deve ser pelo fato de termos adicionado o gT ao exibir o comando W, e em ServidorTCP.java dá pau...

A versão que está rolando agora em server.gtruco.com.br é a que está em chester.blog.br/m/deploy/

O que vc acha melhor? Mexermos no client ou no server para corrigir?...

Abraço,

Carlos Duarte do Nascimento (Chester)

unread,
Feb 26, 2009, 6:51:45 AM2/26/09
to minitruc...@googlegroups.com
Ah, sorry, my bad - agora olhando o código do cliente é que eu me dei conta que essa notificação não era exatamente para dar a versão do servidor - e sim a versão mínima do cliente que o servidor exige.

Voltei no server (talvez o melhor seja ter outro comando para pegar informações do servidor), veja se deu certo (estou com dificuldades pra fazer o build aqui, maldita hora em que eu resolvi usar o Zend Studio :-P ).

As duas mudanças são válidas, mas como tou com essa dificuldade de testes, vou dar uma geral nisso mais tarde, ok? (se você estiver com pressa, pode mandar bala :-) )

Abraço!

2009/2/26 Sandro Gasparoto <sandro.g...@gmail.com>

Sandro Gasparoto

unread,
Feb 26, 2009, 8:48:49 AM2/26/09
to minitruc...@googlegroups.com
Oi Chester,

beleza, agora está funcionando... interessante como pequenas alterações acabam impactando outras coisas que a gente nem espera! Efeito borboleta... rsrsrs Na verdade, não somente o "gT" estava causando erro, como também a mensagem inicial que coincidentemente começava com "W" (Welcome to...). Então também alterei isso na minha versão e ok...

Recapitulando... acredito que essas sejam as pendências e pontos para análise nesse momento:

1. realmente parece que os timeouts implementados no server estão impactando a jogabilidade no miniTruco, acho que ficou um pouco demorado principalmente depois da distribuição de cartas. Mas nada trágico! Talvez o melhor fosse retirar quaisquer timeouts no client e "rely" apenas nos do server?... Para te falar a verdade, eu não me lembro de ter jogado miniTruco no servidor antigo, então não posso dizer com exatidão como se compara com o que era antes...

2. com relação ao lance do applet: o que vc acha se fosse criado um miniTruco (talvez até exista no build.xml) com jogo via internet desabilitado para rolar no applet? Assim os usuários poderiam continuar a testar o jogo, antes de baixar, que é o que realmente interessa. Qualquer coisa, poderia ter uma nota dizendo que o jogo "baixado" oferece o jogo via internet, somente para não deixar dúvidas da funcionalidade.

3. não sei se vc gostaria de adicionar no trunk principal (a seu critério logicamente), talvez somente para ficar aqui documentado, (trunk principal que aliás eu testei e todas as modificações entraram beleza, no problems at all :-) ), mas eu coloquei uma mensagem de boas-vindas para acessos via telnet, e para prevenir acesssos não autorizados (uma nota apenas) (repare que agora começa com um ">"):

em JogadorConectado.java:


    public void run() {
        ServerLogger.evento(this, "conectou");
        try {
            // Configura um timeout para evitar conexões presas
            ServerLogger.evento(this, "timeout antes:" + cliente.getSoTimeout());
            //Timeout is set to 30secs
            cliente.setSoTimeout(30000);
            ServerLogger.evento(this, "timeout depois:" + cliente.getSoTimeout());
            // Prepara o buffer de saída
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    cliente.getInputStream()));
            out = new PrintStream(cliente.
getOutputStream());
            // welcome message
            this.println("> Welcome to gTruco miniTrucoServer. Authorized access only.");

4. para fins estéticos apenas no placar do gTruco, deveria ser checado mínimo de 3 caracteres no apelido no acesso via celular, o que vc acha?

5. Seria legal um patch que coloca "(celular)" como apêndice no nome... assim o gTruco pode exibir o avatar correto.

Ufa! No rush mate!

Abraço,
Sandro







2009/2/26 Carlos Duarte do Nascimento (Chester) <ches...@gmail.com>
Reply all
Reply to author
Forward
0 new messages