Coder Social home page Coder Social logo

tablut's Introduction

Tablut

Build Status Waffle.io - Columns and their card count

Tablut board game implementation for BoardGameArena.

Board screenshot

Rules:

Feel free to report bugs, send pull requests or even express feature requests through the issues section of this GitHub project.

Game state machine

Very basic:

4-states simple state machine

Development

Installation

composer install
npm install

Code validation

composer check-php
composer test  # require a MySQL daemon running
composer test -- --filter testSimpleGetGameProgression
composer bgaw-validate

npm test
npm run lint-js
npm run lint-css

Deploying to Studio

cp bgaproject.yml.dist bgaproject.yml
# then fill in sftp properties
composer bgaw-deploy

Continuous Deployment to Studio

Watches development files and deploys them as they change.

composer bgaw-watch

tablut's People

Contributors

lucas-c avatar ntaffore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

tablut's Issues

Pre-release check-list

From: http://studio.boardgamearena.com/#!doc/Pre-release_checklist

Metadata and graphics

  • Game_meta-information: gameinfos.inc.php has correct and up to date information about the game
  • Game box graphics is 3D version of the game box (if available) and publisher icon is correct (see Game art: img directory). Space around the box has to be transparent, not white.
  • There is no images in img directory which are not needed anymore
  • Multiple images (i.e. cards) are compressed in "Sprite" (see Game art: img directory)
  • Each image should not exceed 4M
  • Total size should not exceed 10M, image compression should be used otherwise

Server side

  • Game progression is implemented (getGameProgression() in php)
  • Zombie turn is implemented (zombieTurn() in php). Note: it can only be tested with two different studio accounts (dev0 and devzombi0 for example, not dev0 and dev1)
  • You have defined and implemented some meaningful statistics for your game (i.e. total points, point from source A, B, C...)
  • Game has meaningful notification messages (but don't overkill it, more user logs will slow down the loading)
  • [NA] You implemented tiebreaking (using aux score field) and updated tiebreaker description in meta-data - cf. http://en.doc.boardgamearena.com/Main_game_logic:_yourgamename.game.php#Manage_player_scores_and_Tie_breaker

Special testing

  • Game is tested with spectator (non player observer)
  • Game is tested with in-game replay feature (by clicking on notification log items)
  • Game works in Chrome and Firefox browsers at least. Also very recommended to test in IE 11 and Edge.
  • Game works on mobile device (if you don't have mobile device to test at least test in Chrome with smaller screen, they have a mode for that)
  • Test your game in realtime mode. Usually people will run out of time if you use default times unless you add call giveExtraTime($active_player_id) before each turn
  • Test your game in 3D mode

Cleanup

  • Remove all extra console.log from your js code
  • Remove all unnecessary debug logging from your php code
  • Copyright headers in all source files have your name

User Interface

  • Review BGA UI design Guidelines BGA_Studio_Guidelines : https://en.boardgamearena.com/#!doc/BGA_Studio_Guidelines
    • tester rendu sur petit écran ? (la doc des guidelines indique qu'il faut supporter au minimum du 1024px de large)
    • ajouter plus d'infos dans le "gamelog" ?
  • Non-self explanatory graphic elements should have tooltips
  • If graphic elements appear in notification log they should have titles (i.e. title attribute of div) so can be read in non rendered form (i.e. as text only)
  • Strings in your source code are ready for translation. See Translations

Finally

  • Send e-mail to bga admins asking for review of the game, you cannot post to pre-production yourself using control panel until review is done and they unlock it. If they don't reply post on dev forum.

Affichage spécifique raichi/tuichi

Quand le roi a directement une voie libre jusqu'à la périphérie, il doit avertir son adversaire en disant raichi. Quand il a deux voies libres, il annonce triomphalement tuichi; dans ce cas, il a gagné le coup suivant parce qu'on ne peut pas bloquer simultanément deux voies libres.

Derniers retours Emmanuel

  • Avec la variante "king escapes from the corners", le coin permet de capturer (sinon noir pourrait simplement bloquer les coins...)

  • Quand il y a 'Tuichi', la partie est terminée, les blancs gagnent immédiatement (actuellement il faut que le roi s'échappe pour que la partie se termine).

  • Il reste quelques coquilles dans le texte en anglais. Vous avez besoin d'aide là dessus ou je vous laisse simplement relire ?

  • Le trône et le konakis c'est la même chose si j'ai bien compris, et les emplacement de départ des noirs s'appellent "forteresse". Là c'est un peu mélangé.

  • L'icône utilisé pour le jeu correspond à la version "king escapes from the corners", du coup il vaudrait probablement mieux que ce soit la variante par défaut.

  • indiquer les règles de référence (ajouter URLs dans la règle du jeu)

Ajouter des messages d'aide / tooltips

Messages à rajouter:

  • lorsque la souris "hover" sur les fortins, indiquer: nul ne peut entrer dans les fortins !
  • au début du jeu, indiquer une première fois de quelle couleur est le joueur connecté (ex #20)
  • au début du jeu, indiquer une première fois 2 messages d'aide:
    • cliquez sur un pion pour le sélectionner
    • cliquez sur une case colorée pour déplacer votre pion dessus, ou à nouveau sur le pion pour le désélectionner

Le raichi / tuichi est traité dans une issue à part car il faudrait également colorer les cases

La doc des tooltips JS: http://en.doc.boardgamearena.com/Studio_function_reference

+ essayer de rendre ces messages traduisibles par langue (i18n) :
http://en.doc.boardgamearena.com/Translations

Feedbacks admins BGA

  • La mention "You play the black pawns, the muscovites" élargit la zone de statut et ne disparaît pas après le début de partie sauf en cas de refresh. Vous pouvez simplement l'afficher dans le log avec notifyPlayer au début de la partie. De manière générale, afficher un bloc supplémentaire au dessus de la barre de statut ne correspond pas au fonctionnement général sur BGA. Il vaut mieux afficher l'information dans le log, et le cas échéant un "showMessage( _('message'), 'info' )" côté javascript si on veut attirer particulièrement l'attention.

  • L'icône que vous avez choisi pour le jeu utilise un fond "bois", alors que le style que vous avez choisi à l'intérieur du jeu est sur fond blanc. Il faudrait que les deux soient cohérents.

  • Toutes les cases du plateau sont mises en surbrillance quand on les survole avec le curseur de la souris. Il vaudrait mieux que ce soient les pions du joueur courant qui soient mis en surbrillance.

  • Comme pour les échecs et la plupart des jeux abstraits, c'est bien d'indiquer des coordonnées de colonnes A B C D... et de lignes 1 2 3 4... à côté du plateau et de mentionner précisément les coups dans le log, par exemple "Een moves a piece from H5 to H3", "Een captured a piece in E8"

Note @Lucas-C: il faudra alors rajouter à gauche du plateau les noms de lignes (A, B, C...) et en bas ceux des colonnes (1, 2, 3...)

  • Les pions capturés disparaissent directement, ce qui est un peu rapide et pas très visuel. Il vaudrait mieux soit les déplacer en dehors du plateau dans une "zone de capture", soit les déplacer vers le nom du joueur en haut à droite et les faire disparaître ensuite.

  • Pour l'option de début de partie, il vaudrait mieux l'appeler "Variant" avec deux valeurs "King escapes from the borders" et "King espapes from the corners", ce serait plus clair.

  • Dans les règles que j'ai trouvées, le roi ne participe pas à la capture http://www.stmoroky.com/games/tablut/tabrules.htm

Note @Lucas-C: la moitié de celles que j'ai trouvé semblent l’autoriser :

Note @Lucas-C: comme les notifs ne peuvent être envoyées que côté PHP, ça signifie implémenter la détection de RAICHI / TUICHI de ce côté là aussi...

  • Quand il y a 'Tuichi', c'est la fin du jeu. On peut directement indiquer "Tuichi! (the King gained two clear paths to corners: the game ends)" dans le log + éventuellement un "showMessage( _('message'), 'info' )" et faire gagner les blancs puisque les noirs n'ont plus aucun moyen de bloquer le roi.

  • Quand on survole les coins et le konakis avec la variante "King escapes from the corners", un tooltip s'affiche avec le texte "No one can enter fortress squares". Le texte devrait être "Only the king may occupy the konakis and the corner squares".

  • Le roi doit pouvoir revenir au centre / passer par le centre. Les autres pièces doivent pouvoir traverser le centre sans s'y arrêter (à mon avis, pour les deux variantes, mais en tout cas au moins pour la variante 'corners').

Note @Lucas-C: nous nous étions basés sur cette règle qui interdit le passage par la case centrale ; http://jeuxstrategieter.free.fr/Tablut_complet.php , mais après un rapide tour des autres règles que j'ai trouvé sur le web en français et anglais, ça paraît en effet la règle la plus courante : cette case peut être traversée par tous les pions, mais ne peut être occupée que par le roi et peut servir à le capturer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.