Felicidade para todos, por nada
e não deixe ninguém ficar ofendido!
A. e B. Strugatsky "Piquenique à margem"Os bots, por melhores que sejam, são um mau substituto para os jogadores ao vivo. Se o bot jogar mal - isso não é interessante. Se é forte, é um insulto e, novamente, não é interessante. É muito difícil manter o equilíbrio (ainda mais porque é individual para cada jogador). Durante muito tempo eu estava implementando um jogo em rede, mas tudo dependia da necessidade de manter meu próprio servidor. Felizmente, a decisão veio de um ângulo inesperado.
Ed van Zon é uma pessoa com quem estou em contato há algum tempo. Aconteceu que foi ele quem capturou a bandeira de queda do
Zillions , quando os desenvolvedores (Jeff Mallett e Mark Lefler) de repente perderam o interesse no desenvolvimento do projeto. Então, todos
esses jogos são publicados no site por suas forças. Além disso, ele e
Christian Freeling estão envolvidos no suporte e desenvolvimento de seu próprio site (é claro, também sobre jogos de tabuleiro):
Mas tudo isso foi um ditado. A história começa com o fato de que neste site existe um buraco (ou melhor, um
buraco , mas esse não é o ponto), no qual jogadores ao vivo podem jogar por correspondência. Em vez disso, eles poderiam, até que a tecnologia dos applets Java se tornasse obsoleta. Recentemente, como seu uso por meros mortais se tornou difícil, Ed tem pensado em soluções mais modernas. E então eu apareci, junto com o meu
projeto .
Depois de uma turnê de treinamento muito curta, da minha parte, Ed, por apenas alguns meses, conseguiu três dúzias de novos jogos no mecanismo Dagaz e os publicou no site. Deixe-me lembrá-lo de que a
licença do
MIT (como eu) suporta essas ações de todas as formas.
Havia, no entanto, um problema.Entendeu-se que os jogadores podiam jogar todos esses jogos entre si, e não apenas com bots, mas o Dagaz, em sua implementação inicial, não ofereceu essa oportunidade. Eu tive que inventar algo rapidamente. Felizmente, eu já tinha um
gerente de sessão que me permitia reverter movimentos feitos por engano. Como bônus, ele salvou o histórico do jogo na RAM e foi decidido usá-lo.
SalvandoSessionManager.prototype.save = function() { if (_.isUndefined(this.current) || _.isUndefined(this.current.board)) return null; var states = []; var board = this.current.board; while (board.parent !== null) { states.push(board); board = board.parent; } var r = "("; while (states.length > 0) { var board = states.pop(); r = r + ";" + Dagaz.Model.playerToString(board.parent.player); r = r + "[" + Dagaz.Model.moveToString(board.move) + "]"; } r = r + ")"; return r; }
e carregamento SessionManager.prototype.load = function(sgf) { var res = Dagaz.Model.parseSgf(sgf); this.states = []; delete this.current; var board = Dagaz.Model.getInitBoard(); this.addState(Dagaz.Model.createMove(), board); for (var i = 0; i < res.length; i++) { var p = res[i].name; if (p != Dagaz.Model.playerToString(board.player)) return false; if (res[i].arg.length != 1) return false; var move = this.locateMove(board, res[i].arg[0]); if (move === null) return false; board = board.apply(move); this.addState(move, board); } this.controller.setBoard(board); return true; }
Eles fizeram isso apenas algumas dezenas de linhas (eu certamente não acho que o analisador de
formato SGF em si, qualquer um pode vê-lo
aqui ). A propósito, tanto o SGF quanto o gerente de sessão apóiam o trabalho com a árvore, e não apenas com o histórico do jogo, mas para nossos propósitos atuais isso não era necessário.
Como o primeiro jogo da Dagaz, com a possibilidade de jogar na rede, eu queria escolher algo original (principalmente porque o Ed já tinha
Damas ,
Xadrez e
Go ). A escolha recaiu sobre o
volume de
negócios . Esse jogo, em muitos aspectos semelhante ao xadrez, foi recentemente inventado por Lúcio José Patrocínio Filho.
As figuras aqui são pré-fabricadas. O anel maior se move como um
peão de xadrez , o do meio como um
elefante , e o núcleo é uma
torre . A combinação de uma torre e um elefante dá à
rainha (o que é bastante lógico), e os dois anéis dão ao
cavaleiro do
xadrez . Todas as três partes juntas formam um castelo - a figura principal que precisa ser protegida. Vale dizer aqui que apenas uma, a parte mais externa, sempre se move. Assim, o anel externo do castelo, a qualquer momento, pode se mover com o peão (incluindo um salto no campo), mas o castelo será destruído.
Há outro problema que ainda não foi resolvido.Tendo perdido o último castelo, o jogador perde. De fato, o jogador não pode perder todos os bloqueios, já que o jogo tem as regras de
check e
checkmate . Castelos não podem ser deixados sob ataque, mas apenas com a condição de que
todos sejam atacados. Além disso, a intriga no jogo é adicionada pelo fato de que novas figuras (e castelos também) podem ser criadas a partir de componentes ao longo do caminho (inclusive do material do oponente). Tudo isso torna a verificação do cheque e do xeque-mate uma tarefa muito difícil e aqui está um exemplo com o qual ela ainda não consegue lidar:
De fato, não há tapete, mas é bastante difícil. O campo D1 é atacado por um elefante no E2 e este é o último castelo. Os dourados podem construir um segundo castelo subindo a torre de C3 para C4, mas esse campo também é atacado! O truque é que ambos os campos são atacados pela mesma figura e ela não pode comer os dois cachos de uma só vez! Lúcio descobriu esse erro recentemente e é algo em que trabalharei no futuro próximo.
Não há jogo de castelos e
corredores no jogo e, de fato, a rotatividade não é muito semelhante ao xadrez. Existem muitos reis no jogo, mas eles não podem se mover (em qualquer caso, sem destruição), e os cavalos e rainhas são "descartáveis", pois, ao se mover, o anel externo destrói a figura. Na minha opinião, o jogo parece bastante interessante, embora completamente inexplorado. Você pode jogar aqui:
Para jogar na rede, é claro, você precisa se registrar (o jogo é por correspondência) e enviar a alguém um "Desafio". Se você quiser
brincar com o bot (ou apenas
mover as peças no tabuleiro ), não é necessário registrar-se. No entanto, nesse modo, o jogo não será muito diferente do publicado no
GitHub . Além disso, o registro não é necessário para monitorar os jogos atuais ou jogados anteriormente.
Como bônusDagaz suporta outro modo de jogo:

Então, quem quiser pode tentar jogar às cegas (desta vez, apenas contra o bot).
As vitórias / perdas de rotatividade ainda não são mantidas, mas tudo está em suas mãos. Se o jogo é popular, Ed prometeu atribuir uma classificação a ele. E, finalmente, uma pequena pesquisa sobre o tema do desenvolvimento do projeto: