Dagaz: la fin de la solitude

Du bonheur pour tous, pour rien
et ne laissez personne s'en offusquer!

A. et B. Strugatsky "Pique-nique en marge"


Les bots, peu importe leur niveau de jeu, sont un mauvais substitut aux joueurs en direct. Si le bot joue mal - ce n'est pas intéressant. Si c'est fort, c'est insultant et encore une fois pas intéressant. Il est sacrément difficile de garder l’équilibre (d’autant plus qu’il est individuel pour chaque joueur). Pendant longtemps, j'allais implémenter un jeu en réseau, mais tout reposait sur la nécessité de maintenir mon propre serveur. Heureusement, la décision est venue sous un angle inattendu.

Ed van Zon est une personne avec laquelle je suis en contact depuis un certain temps. Il se trouve que c'est lui qui a attrapé la bannière tombante de Zillions , lorsque les développeurs (Jeff Mallett et Mark Lefler) se sont soudainement désintéressés du développement du projet. Ainsi, tous ces jeux sont publiés sur le site par ses forces. Et aussi, lui et Christian Freeling sont engagés dans le support et le développement de son propre site (bien sûr, également sur les jeux de société):


Mais tout cela n'était qu'un dicton. L'histoire commence avec le fait que sur ce site il y a un trou (ou plutôt un trou , mais ce n'est pas le but), dans lequel les joueurs en direct peuvent jouer par correspondance. Au contraire, ils le pouvaient, jusqu'à ce que la technologie des applets Java devienne obsolète. Récemment, comme leur utilisation par de simples mortels est devenue difficile, Ed a pensé à des solutions plus modernes. Et puis je suis arrivé, avec mon projet .


Après une très courte tournée de formation, pour ma part, Ed, pendant seulement quelques mois, a obtenu trois douzaines de nouveaux jeux sur le moteur Dagaz et les a publiés sur le site. Permettez-moi de vous rappeler que la licence MIT (comme moi) prend en charge ces actions de toutes les manières.

Il y avait cependant un problème.
Il était entendu que les joueurs pouvaient jouer à tous ces jeux entre eux, et pas seulement avec des bots, mais Dagaz, dans sa mise en œuvre initiale, ne fournissait pas une telle opportunité. J'ai dû trouver rapidement quelque chose. Heureusement, j'avais déjà un gestionnaire de session qui m'a permis de revenir en arrière par erreur. En bonus, il a sauvegardé l'historique du jeu en RAM et il a été décidé de l'utiliser.

Sauvegarde
SessionManager.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; } 

et chargement
 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; } 

Ils ne l'ont fait que quelques dizaines de lignes (je ne pense certainement pas que l'analyseur de format SGF lui-même, tout le monde puisse le voir ici ). Soit dit en passant, la SGF et le gestionnaire de session eux-mêmes prennent en charge le travail avec l'arbre, et pas seulement avec l'historique du jeu, mais pour nos besoins actuels, cela n'était pas nécessaire.

En tant que premier jeu de Dagaz, avec la possibilité de jouer sur le net, je voulais choisir quelque chose d'original (d'autant plus qu'Ed avait déjà Checkers , Chess and Go ). Le choix s'est porté sur le chiffre d' affaires . Ce jeu, à bien des égards similaire aux échecs, a été récemment inventé par Lúcio José Patrocínio Filho.


Les chiffres ici sont préfabriqués. Le plus grand anneau se déplace comme un pion d'échecs , celui du milieu comme un éléphant , et le noyau est une tour . La combinaison de la tour et de l'évêque donne la reine (ce qui est assez logique), et les deux anneaux donnent le chevalier d'échecs . Les trois parties forment ensemble un château - la figure principale qui doit être protégée. Il vaut la peine de dire ici qu'une seule partie, la plus externe, bouge toujours. Ainsi, l'anneau extérieur du château, à tout moment, peut se déplacer avec le pion (y compris un saut à travers le champ), mais le château sera détruit.

Il y a un autre problème qui n'a pas encore été résolu.
Ayant perdu le dernier château, le joueur perd. En fait, le joueur ne peut pas perdre tous les verrous, car le jeu a les règles de check et mat . Les châteaux ne sont pas autorisés à être attaqués, mais uniquement à condition qu'ils soient tous attaqués. De plus, l'intrigue dans le jeu est ajoutée par le fait que de nouvelles figurines (et des châteaux aussi) peuvent être créées à partir de composants en cours de route (y compris à partir du matériel de l'adversaire). Tout cela rend la vérification des chèques et des compagnons de contrôle très difficile et voici un exemple auquel elle ne peut toujours pas faire face:


En fait, il n'y a pas de tapis, mais c'est assez difficile. Le champ D1 est attaqué par un éléphant sur E2 et c'est le dernier château. Les dorés peuvent construire un deuxième château en faisant passer la tour de C3 à C4, mais ce champ est également attaqué! L'astuce est que les deux champs sont attaqués par la même figure, et elle ne peut pas manger les deux mèches en une seule fois! Lúcio a récemment découvert cette erreur et c'est quelque chose sur lequel je travaillerai dans un avenir proche.

Il n'y a pas de roque et de prise dans l'allée du jeu, et en effet, Turnover n'est pas très similaire aux échecs. Il y a beaucoup de rois dans le jeu, mais ils ne peuvent pas bouger (en tout cas, sans destruction), et les chevaux et les reines sont "jetables", car en se déplaçant, l'anneau extérieur détruit la figure. À mon avis, le jeu semble assez intéressant, bien que complètement inexploré. Vous pouvez jouer ici:


Pour jouer sur le réseau, bien sûr, vous devez vous inscrire (le jeu se fait par correspondance) et envoyer à quelqu'un un «Challenge». Si vous voulez jouer avec le bot (ou simplement déplacer des pièces sur le plateau ), aucune inscription n'est requise. Cependant, dans ce mode, le jeu ne différera pas beaucoup de celui publié sur GitHub . De plus, l'inscription n'est pas requise pour surveiller les jeux en cours ou précédents.

En prime
Dagaz prend en charge un autre mode de jeu:


Ainsi, ceux qui le souhaitent peuvent essayer de jouer à l'aveugle (cette fois, uniquement contre le bot).

Les gains / pertes de chiffre d'affaires ne sont pas encore conservés, mais tout est entre vos mains. Si le jeu est populaire, Ed a promis de lui attribuer une note. Et enfin, un petit sondage sur le thème de la poursuite du développement du projet:

Source: https://habr.com/ru/post/fr470065/


All Articles