quarta-feira, 13 de fevereiro de 2013

Entendendo o Mundo do "Computer Chess"

Fala pessoal, blz?

Como muitos leitores são iniciantes no “computer chess”, algumas dúvidas básicas normalmente surgem. Dúvidas que também já foram minhas no começo. Então eu resolvi fazer um tutorial bem básico pra quem está tentando entender os conceitos preliminares desta prática.
Existem três elementos que formam um conjunto que precisam ser identificados e entendidos: Programa (interface), Engine (motor) e o Opening Book (livro de aberturas).

O PROGRAMA: também chamado de GUI (Graphical User Interface), como a sigla já define, é a interface gráfica entre a função que o programa executa e o usuário que está usando esta função. Fazendo uma analogia, o Word é um programa utilizado basicamente para digitarmos textos, certo? Criar arquivos de textos é a função do Word e para utilizarmos esta função precisamos de um programa (interface). A função do programa de xadrez é utilizar cálculos para escolher a melhor jogada para determinada posição no jogo. O programa de xadrez pode ser Fritz, Rybka, Shredder, Arena, Aquarium. Acontece que a interface necessita de ferramentas para realizar estes cálculos. As ferramentas são o engine e o processador.

O ENGINE: o motor é o coração do programa, não é a toa que é chamado de motor. Porque assim como em um carro, é ele quem dá potência ao conjunto como um todo. Cada engine possui sua característica e sua força. Existem engines que são mais táticas, umas que são melhores no meio do jogo, outras são boas pra jogos longos, outras mais lentas, algumas mais rápidas, tudo isso é uma questão de programação. Atualmente, Houdini é o engine mais potente, mas existem muitas outras. Engine Rybka foi unanimidade por muitos anos. Essas duas estão sempre no topo da lista. Os engines, NORMALMENTE, são no formato .uci, mas existem algumas que são .exe, como é o caso do Houdini 2.0 PRO.

O BOOK: é a base de partidas que serve para iniciar o jogo. É o livro de aberturas. O engine utiliza o book para fazer a abertura. Cada book, assim como o engine, possui suas características. O autor do book (bookmaker) é quem define qual será a linha principal de abertura. Se o livro vai sair de Siciliana, Caro Kann, Ruy López, etc. Os lances principais são marcados de verde. Vocês podem notar isso na janela do book que fica do lado direito do programa. Vejam a imagem:



Alguns bookmakers marcam os lances que eles não querem que o book faça, de vermelho.
Para que o programa jogue com o book da forma que o bookmaker planejou, ou seja, usando as jogadas e as linhas principais, é preciso que vocês habilitem alguns parâmetros no “Book Options”. Para acessar essas opções, pressione F4.



Os books, GERALMENTE, são no formato .ctg, mas já usei um que era .exe. Se chamava Antimaster, mas não lembro a versão. PORÉM, MUITO CUIDADO COM BOOKS E ENGINES .EXE. Confirmem a autenticidade com alguém de confiança.

Entendido os três elementos principais de um programa de xadrez? Ok, vamos falar um pouco deste conjunto como um todo. Muitos leitores me fazem a seguinte pergunta: “que book, que engine e quais a configurações que preciso pra ser INVENCÍVEL??”. A resposta que dou a todos é a mesma: NÃO EXISTE INVENCIBILIDADE NO XADREZ. Aliás, onde há? Se pra ser invencível preciso de um Processador Xeon, outros também podem comprar. Se pra ser invencível preciso do book XXXX.ctg, outros também podem baixa-lo. Se preciso do engine Houdini, todos podem baixar, então teoricamente você não poderia ser imbatível se tudo está à disposição de todos.
Não dá pra ser imbatível, mas dá para estar entre os melhores se você tiver um bom processador, instalar o melhor engine, escolher um bom book e ir melhorando ele a cada derrota e a cada empate. Esta prática é chamada de “Tunar o Book”. Você precisa ter um bom conjunto para estar sempre bem nos jogos. Eu até me arrisco a dizer que se você tunar muito bem o seu book, seu processador nem precisa ser tão potente. Como “tunar o book” já foi discutido aqui nestapostagem e em vários comentários. Vamos escrever mais sobre isto em uma outra oportunidade.


INSTALAÇÃO DO ENGINE
Bom, você já possui o Programa (GUI), o Book e o Engine, então vamos aprender um pouco sobre algumas funções básicas.
Primeiro, vejamos como adicionar um engine ao programa: para instalar um engine no programa GUI, clique na aba Engine, depois em Create UCI Engine, na caixa que abrir, clique no botão com os três pontinhos, localize a pasta onde está o engine a ser instalado, clique em Abrir e por último em OK.



Pressionando a tecla F3, você abrirá as configurações do engine. Vamos comentar apenas os principais itens a serem entendidos.



Permanent brain: marcando esta caixa, você permite que o programa “pense” na jogada que o oponente fará em seguida. Ou seja, você joga e enquanto espera a jogada do adversário o programa já vai calculando baseado na jogada que ele acredita que será feita. Dá uma certa vantagem.

Hashtable size: Hash é um arquivo criado pra armazenar jogadas acumuladas ao longos dos jogos. Este arquivo ajuda na hora em que o engine está calculando. É usado principalmente para jogos longos. O tamanho a ser usado, geralmente não ultrapassa 128mb. Pelo menos é o que se recomenda, mas acredito que a maioria usa valores altos. Eu uso 128mb.

Use Tablebases: marcando você libera o uso das tabelas de final de jogo “endgames tablebases”. A mais conhecida é a Nalimov, seguida pela Gaviota.


ABRINDO O BOOK NO PROGRAMA
Do lado direito do tabuleiro, você verá três abas (Notation, Score Sheet e Opening Book), clique em Opening Book, caso já exista um book aberto clique com o botão direito do mouse na área varia, depois em Close Book File. Então aparecerá o botão Load Book. Clique nele e vá ate a pasta onde o book que você quer abrir está.





Agora vamos dar uma olhada nas configurações do Book (Book Options). Pressione a tecla F4 para abrir a janela. Veja na imagem que do lado esquerdo que os parâmetros Use Book e Tournament Book estão desmarcados. Deixei desmarcado propositalmente para que você notem o seguinte: clicando em Optimize, estaremos fazendo com que as configurações mudem deixando o book com um ajuste melhor.
Vamos entender:
Use Book: marcamos para que o book que está aberto seja usado pelo engine.
Tournament Book: com esta opção marcada, você evita que sejam feitas jogadas excluídas para o modo torneio. Por exemplo, aquelas jogadas que ficam marcadas em vermelho. Estas configurações de quais jogadas estão no modo torneio são feitas pelo criador do book.

As Barras
Variety of Play: aqui você configura com que variedade o programa irá jogar. Deixando a barra mais a esquerda você está fazendo com que o programa use as jogadas com maiores índices estatísticos. Por exemplo: existem dois lances marcados como verde e o programa irá escolher um deles para jogar, se a barra estiver mais pro lado direito (onde aumenta a variedade), ele vai escolher qualquer um e pode escolher um lance no primeiro jogo e outro lance no segundo jogo, ou seja, ele está variando a escolha. Se a barra estivesse toda pra esquerda, ele faria sempre a jogada que tivesse maior índice estatístico.

Influence os learn value: bom pessoal, existe uma propriedade no programa que permite que o book “aprenda” com os jogos. Esse “aprendizado” vai mudando o “peso das jogadas” (weights). Quanto mais esta barra estiver para a direita, mais esta mudança de peso irá influenciar na escolha de uma jogada.

 Learning strength: pode ser entendido como a força do aprendizado. Ou seja, aqui você configura quão forte será a modificação do valor do peso (weight).
Lembrem-se que nas três barras, movendo para esquerda você diminui e pra direita, aumenta.

Minimum games: na janela do book é mostrado o lance e logo a frente um número. Correto? Aquele número representa quantos jogos o bookmaker adicionou ao book para aquela jogada. À medida em que a abertura vai sendo feita, o número vai diminuindo até não haver mais jogos e o “programa sair do book”, como dizemos. O valor Minimum games informa quantos jogos deve haver para determinado lance para que ele possa ser escolhido pelo engine. Exemplo: você configurou com o valor 2. Então o programa chega a um lance e para ele só existe 1 jogo, então seu programa não fará este lance, pois ele tem menos do que você informou na caixinha.

Up to move: aqui você configura quanto o programa deve se manter no book. Simples.

Pessoal, acho que está de bom tamanho o nosso tutorial “basicão”. Espero que ajude. Qualquer dúvida, entrem em contato.

Abraços.

Por Thiago Ferreira, maracatuu

18 comentários:

Cláudio disse...

massa

Prof.Francisco ou ticão disse...

thiago o que pode me diser sobre criação de engine ? eu sei que são poderosas ai fiquei curioso!!? qualquer coisa ta valendo!!! o blog ta 10!!!!.

fbc disse...

oi thiago bem a suas informações forão uteis mas mesmo lendo tada as informações não fica facil configurar o programa para deixa o mais forte se pocivel fizece uma video aula agudaria muito ficaria mais facil para tunar o book le agradeçeria muito abrigado mesmo assim pelas informaçoes abraços .
Fabricio

Thiago Ferreira disse...

Fabrício, acho que você não entendeu direito. O mais importante é ir melhorando o book e não buscar configuração no programa. O programa é apenas a interface, como ja falei.

Pra desenvolver a técnica de tunar books é preciso tentar bastante e estudar. Sem prática, não vai. As informações que já disponibilizei até hoje aqui no blog são suficientes. Disponho de pouco tempo, portanto não poderei criar uma video-aula.

Vai tentando e me manda as dúvidas por e-mail.

Valeu.

Thiago Ferreira disse...

Prof. Francisco,

Primeiramente precisa ser programador. Com isso, é só programar. Hehehe. Nunca pesquisei sobre criação de Engine.

Cláudio disse...

normalmente quando criar um book ele tá verde, precisa amadurecer jogando com outros books para melhorar suas fraquezas é impossivel já criar um 100%forte
realmente tunar precisa de tempo .
valeu mestre!

Cláudio disse...

Thiago, o que vc acha sobre books com base de jogos de humanos tipo campeoes de mundo de xadrez. dizem que e fraco que so serve o 15primeiros lances, passando disso chances para derrota aumenta. que vc acha ? conhece algum ?

Thiago Ferreira disse...

Não se usa jogos de humanos para criação de books, amigo. Contém muitas jogadas fracas EM COMPARAÇÃO com a análise de um computador.

Valeu.

Cláudio disse...

faço troneios diarios de xadrez notei que "1337chess2012" que baixei do seu blog é muito bom. ele vem evoluindo muito nos troneios suas linha fact só tem aumenado a cada torneio sempre aparece entre os 5primeiros quando não vence. legal e e pequeno. quem e o autor?

Thiago Ferreira disse...

Eu usava o 1337chessF61 e sempre gostei muito. Ainda não testei o 2012.
Cara, eu esqueci o nome do autor, mas vou ver se encontro.

Valeu.

Cláudio disse...

será que fritz13 com engime houdini3 funcione na plataforma linux

Thiago Ferreira disse...

Cara, pra ser sincero eu não sei. Acredito que esta versão aí, não. Vou dar uma pesquisada.

Valeu.

Unknown disse...

cade vc Thiago ?

Thiago Ferreira disse...

Trabalhando muito. Sem tempo pro blog, sem tempo pra jogar. Mas vou tentar voltar.

Abraço.

Unknown disse...

tem um amigo meu diamantNegro que joga no flyordie sem programa, ele é campeão de xadrez a qui na Bahia, passei pra ele seu blog ele gostou muito, não conhecia sobre engime, eu falei a ele que muitos jogam com programa lá ele nao sabia, ultimamente estou me dedicando a treinar para torneios de tabuleiro. mas ainda jogo no flyordie sem programa.uso só para verificar meus erros.
abraço...

Unknown disse...

vamos atualizar 2014
kkkkkkkk...

Thiago Ferreira disse...

Vou tentar. Rsrsr.

Abraço.

Unknown disse...

ganhei uma no floyordie sem engime, ja saiu houdini4 ta bom