Installation
tilttek/game-engine-bundlePrérequis
- PHP 8.5 ou une version plus récente, et Symfony 8.2 ou une version plus récente.
tilttek/game-engineetdoctrine/dbal, que Composer installe avec le bundle.- Pour les intégrations, chacune facultative :
symfony/cachepour le cache d'états,symfony/lockpour le verrou des tables,symfony/mercure-bundlepour la publication de chaque changement,symfony/framework-bundlepour les points de terminaison et leurs routes,symfony/consolepour les commandes,doctrine/ormpour les tables dans le schéma généré,symfony/twig-bundleetsymfony/ux-twig-componentavec le kit PHIL UX pour le gabarit d'une table,symfony/asset-mapperet Stimulus pour le contrôleur qui relit la vue.
Installer
composer require tilttek/game-engine-bundle
La recette Flex du bundle l'enregistre dans config/bundles.php, écrit config/packages/tilttek_game_engine.yaml avec
ses options commentées et importe les routes dans config/routes/tilttek_game_engine.yaml. Elle se trouve dans
recipe/ du paquet, prête pour le dépôt des recettes. Sans elle :
// config/bundles.php
return [
// …
Tilttek\GameEngineBundle\TilttekGameEngineBundle::class => ['all' => true],
];
Les tables des journaux
Les journaux vivent dans deux tables de la connexion Doctrine DBAL configurée, tilttek_game_engine_table et
tilttek_game_engine_move. Avec l'ORM, le bundle les ajoute au schéma qu'il génère, de sorte que
doctrine:migrations:diff écrit la migration qui les crée ; sans l'ORM, tilttek:game-engine:setup les crée, ou en
montre le SQL avec --dump-sql. Voir Stockage.
Les jeux
Chaque service qui implémente Tilttek\GameEngine\Contract\Game est un jeu, par autoconfiguration ; la scène de jeu de
rôle de la bibliothèque en est un de plus quand roleplaying_scene est activée. Les services sont nommés par le nom du
jeu lui-même, definition()->game :
final readonly class Chess implements Game
{
// …
}
Les routes
Les points de terminaison des vues et des journaux sont des routes que l'application importe sous un préfixe :
# config/routes/tilttek_game_engine.yaml
tilttek_game_engine:
resource: '@TilttekGameEngineBundle/config/routes.php'
prefix: /game-tables
Elles ne lisent aucune table tant que l'application ne donne pas son ViewerResolver, ou n'ouvre pas la vue du public
à tous ; voir Tables en direct.
Le contrôleur Stimulus
Avec AssetMapper, le bundle ajoute son répertoire assets/src sous l'espace de noms @tilttek/game-engine-bundle ;
activez le contrôleur dans assets/controllers.json :
{
"controllers": {
"@tilttek/game-engine-bundle": {
"game-table": { "enabled": true, "fetch": "eager" }
}
}
}
Les recettes du kit
Le gabarit d'une table est construit avec les recettes Card et Badge du kit PHIL UX, installées par le Toolkit de Symfony UX :
php bin/console ux:install card badge --kit phil/ux-kit