Versão 3.10 e futuras versões

2 views
Skip to first unread message

Carlos Duarte do Nascimento (Chester)

unread,
Nov 11, 2007, 10:01:21 PM11/11/07
to minitruc...@googlegroups.com
Caros,

Coloquei uma nova versão no ar. Além da mudança para a GPLv3 que
conversamos, eu ressucitei o jogo via internet, removi o confronto de
estratégias da versão "light" (minha meta é fazer ela chegar perto dos
45K, pois acho que ainda tem celular com problema nisso) e fiz
pequenos acertos.

O principal motivador é que agora tenho hospedagem para o server
melhor que o PC que ficava embaixo da minha mesa (o jogo não consome
muito, mas é preciso servir o microemulator a partir dele, senão não
dá pra conectar, por restrições do sandbox das applets), e também
porque eu q

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

Carlos Duarte do Nascimento (Chester)

unread,
Nov 11, 2007, 10:08:19 PM11/11/07
to minitruc...@googlegroups.com
Droga, enviei antes da hora. Retificando:

Caros,

Coloquei uma nova versão no ar. Além da mudança para a GPLv3 que
conversamos, eu ressucitei o jogo via internet, removi o confronto de
estratégias da versão "light" (minha meta é fazer ela chegar perto dos
45K, pois acho que ainda tem celular com problema nisso) e fiz
pequenos acertos.

O principal motivador é que agora tenho hospedagem para o server

melhor que o PC que ficava embaixo da minha mesa - e isso permite
fazer o jogo via internet rolar de dentro da applet (o jogo não


consome muito, mas é preciso servir o microemulator a partir dele,

senão não dá pra conectar, por restrições do sandbox das applets).

O Sandro andou fazendo checkins no branch dele, o que indica que uma
nova estratégia vem aí :-). Aproveitando o ensejo, estou pensando nos
seguintes itens para o médio prazo:

- Mostrar os donos das estratégias (como discutido anteriormente)
- Opção de idioma (inglês)
- Integração do jogo via applet/internet com o Orkut, via OpenSocial

O terceiro eu estou cuidando, os outros dois se ninguém quiser/puder
fazer vou mandar brasa também.

E mais adiante:

- Ranking no jogo via internet (se esse modo "colar")

Se alguém tiver mais idéias e sugestões, é só falar (ou sair fazendo,
mas nesse caso é bom - embora não essencial - dar um toque pra evitar
duplicidade de trabalho). Como de costume, estou tocando quando dá,
mas a gente vai encaixando...

[]s,
Chester

Sandro Gasparoto

unread,
Nov 12, 2007, 7:06:04 AM11/12/07
to minitruc...@googlegroups.com
Oi Chester,

tudo bem? Primeiramente, não podia deixar de comentar sobre o
multiplayer via Internet, ficou muito bom mesmo! A idéia de widgets
também ficou fantástica.

Quanto à nova estratégia, vc já percebeu ;-) pode "chupar" do meu
branch a nova estratégia Gasparotto v1.2. Gostei do resultado final,
alguns bugs corrigidos, novos algoritmos de decisão, e algumas coisas
novas como capacidade para fazer "cama" (como dizem no interior)
deixando a aparência mais "humana" e "malaca" (com coisas do tipo
"segurar" o ZAP para a última, etc...). No geral, acredito que a
estratégia acabou ficando bem forte no jogo contra humanos (agora com
jogo via Internet, precisamos criar uns desafios tipo humanos x
CPUs...). A próxima versão (não agora, mais para a frente), estava
pensando em adicionar mais inteligência humana de acordo com a
situação geral do jogo (e não somente com a análise da mão corrente),
tipo a estratégia ficando mais agressiva ou conservadora de acordo com
o placar, por exemplo, se estiver vencendo por uma boa margem, não
arriscar tanto, se estiver perdendo, arriscar mais, etc... vamos
ver... e também coisas do tipo o mão na primeira gritando "truco sem
ver" (seria muito engraçado - o cúmulo da bestialidade humana em uma
máquina...).

Ah, não se esqueça de alterar nas demais classes o letreiro para
"v1.2", pois o meu branch encontra-se totalmente desatualizado, com
excessão da própria classe da estratégia Gasparotto... ;-)

Com relação às demais idéias, acho que podemos incluir mais uma, que é
a de mostrar o número de partidas vencidas (tipo melhor de 3 -
"vaquinhas no pasto") no jogo normal, e não somente no modo CE. Agora
que temos duelos via Internet, ficaria ainda mais legal com disputas
"da nega" (quando o jogo encontra-se empatado 1x1), como dizem por aí.
Sobre a parte em inglês, uma vez realizada a programação da parte de
internacionalização (que não tenho a mínima idéia como fazer), posso
porém ajudar na parte de tradução das frases.

Agora uma dúvida: não sou muito bom em OOL, mas não seria uma boa
prática destruir os objetos após serem completamente utilizados (tipo
ao final das partidas)? Será que não otimizaria a utilização de
memória?...

Ah, durante uns testes, me deparei com o seguinte:

[java] Jogador 1 pede aumento
[java] Jogador 2 vai avaliar truco
[java] Jogador 2aceitou
[java] Exception in thread "Thread-3497"
java.lang.ArrayIndexOutOfBoundsException: -1
[java] at java.util.Vector.elementAt(Unknown Source)
[java] at mt.JogadorBot.vez(JogadorBot.java:215)
[java] at mt.JogoLocal$1ThreadNotifica.run(JogoLocal.java:614)
[java] Jogador 4 vai avaliar truco

Foi a primeira vez que vi no Eclipse, porém no meu Nokia esse tipo de
erro é até certa forma comum, acontecendo de vez em quando.
Coincidência ou não, aconteceu sempre quando a estratégia Sellani
encontra-se selecionada. Será que tem a ver com aquele comentário que
vc adicionou sobre o handling de threads no Nokia? No log acima, veja
que o jogador 2 aceitou o truco durante o lançamento das threads, será
que isso não alterou algumas propriedades do objeto gerando o erro?...

Beleza, por enquanto é só!...

Um grande abraço,
Sandro


On Nov 12, 2007 3:08 AM, Carlos Duarte do Nascimento (Chester)

--
Sandro Rodrigo Gasparoto

36 Riseley Road
Maidenhead/Berks
SL6 6EP - United Kingdom
Home: +44 (1628) 630046

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

Skype: sgasparoto

Sandro Gasparoto

unread,
Nov 13, 2007, 7:32:10 AM11/13/07
to minitruc...@googlegroups.com
Oi Chester,

estava outro dia viajando na tela e acabei percebendo uma leve falha
gramatical, veja se vc concorda: "stone age scanners apresentam":
tenho a impressão que "stone age scanners" se refere a um grupo ou
sociedade, correto? Nesse caso acredito que a forma singular seria a
mais apropriada: "stone age scanners apresenta"; a não ser que os
"scanners" estejam apresentando o jogo, o que me parece que não é o
caso... ;-)

Abraço,
Sandro

On Nov 12, 2007 3:08 AM, Carlos Duarte do Nascimento (Chester)

--

Carlos Duarte do Nascimento (Chester)

unread,
Dec 30, 2007, 6:50:24 AM12/30/07
to minitruc...@googlegroups.com
Prosseguindo com a "limpeza da fila" de questões do miniTruco... :-)

Em 12/11/07, Sandro Gasparoto < sandro.g...@gmail.com> escreveu:

Quanto à nova estratégia, vc já percebeu ;-) pode "chupar" do meu
branch a nova estratégia Gasparotto v1.2. Gostei do resultado final,
[...]
 
Você já deve ter visto que a última versão inclui a nova estratégia - que realmente está forte.

Com relação às demais idéias, acho que podemos incluir mais uma, que é
a de mostrar o número de partidas vencidas (tipo melhor de 3 -
"vaquinhas no pasto") no jogo normal,  e não somente no modo CE. Agora
que temos duelos via Internet, ficaria ainda mais legal com disputas
"da nega" (quando o jogo encontra-se empatado 1x1), como dizem por aí.

Sim, só é preciso ajustar legal a questão de tempo de vida do jogo. Não tive tempo de olhar muito a fundo, mas quando eu testo no meu micro com melhor de N para N maior que 3, o jogo pára no meio sem maiores explicações.

Talvez seja conseqüência do maior erro de projeto do miniTuco, que é criar uma nova thread a cada descarte da CPU (ao invés de cada JogadorCPU ter sua thread própria) - vou cadastrar um issue para isso, porque tenho uma certa convicção de que não só esse problema, mas os NullPointerException aleatórios em celulares particulares também estão relacionados.

Agora uma dúvida: não sou muito bom em OOL, mas não seria uma boa
prática destruir os objetos após serem completamente utilizados (tipo
ao final das partidas)? Será que não otimizaria a utilização de
memória?...

O problema é que o Java não permite controlar isso. Você não pode forçar a destruição de um objeto (como faz em C++, por exemplo) - o que dá pra fazer é eliminar todas as referências a ele, e deixar que o garbage collector o destrua na próxima execução (mesmo o método System.gc() não tem garantia de execução, e não é boa idéia tirar esse controle da JVM de qualquer forma).

Imagino que muitos celulares tenham este problema agravado pelo fato de não usarem técnicas que as JVMs modernas de desktop usam (tais como gestão de memória especializada para objetos "short-lived") - pra não mencionar que as JVMs 1.0/1.1 de desktop tinham problemas com referências cíclicas e outras dificuldades.

O que daria pra fazer é reduzir (mais) a criação de objetos ao longo do jogo. Os maiores "vilões" neste sentido, a meu ver, são o SituacaoJogo e as Threads criadas a cada jogada. Para os primeiros daria pra reaproveitar - mas eu acho que o maior problema são as Threads mesmo (vide texto acima).

Ah, durante uns testes, me deparei com o seguinte:

     [java] Jogador  1 pede aumento
     [java] Jogador 2 vai avaliar truco
     [java] Jogador  2aceitou
     [java] Exception in thread "Thread-3497"
java.lang.ArrayIndexOutOfBoundsException: -1
     [java] at java.util.Vector.elementAt(Unknown Source)
     [java] at mt.JogadorBot.vez (JogadorBot.java:215)

     [java] at mt.JogoLocal$1ThreadNotifica.run(JogoLocal.java:614)
     [java] Jogador 4 vai avaliar truco

Foi a primeira vez que vi no Eclipse, porém no meu Nokia esse tipo de
erro é até certa forma comum, acontecendo de vez em quando.
Coincidência ou não, aconteceu sempre quando a estratégia Sellani
encontra-se selecionada. Será que tem a ver com aquele comentário que
vc adicionou sobre o handling de threads no Nokia? No log acima, veja
que o jogador 2 aceitou o truco durante o lançamento das threads, será
que isso não alterou algumas propriedades do objeto gerando o erro?...

É possível, sem dúvida - vou adicionar como issue também, qualquer hora alguém poderia colocar breakpoints nos lugares apropriados e estressar o jogo até fazer rolar.
 
[]s,
  Chester

Carlos Duarte do Nascimento (Chester)

unread,
Dec 30, 2007, 6:52:58 AM12/30/07
to minitruc...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages