Aller au contenu

Séance zéro

tilttek/table-safety

Une séance zéro est le questionnaire auquel une table répond avant de jouer : le ton, les thèmes, les attentes, l'horaire. Ses réponses, rassemblées, forment le pacte de la table.

Questions

Une Question a une clé, un genre et, pour un choix, ses options :

GenreRéponse
QuestionKind::Textun texte, rogné, jusqu'à 2 000 caractères
QuestionKind::Choiceune option
QuestionKind::Choicesplusieurs options, gardées dans l'ordre de la question

Une question intégrée n'a ni énoncé ni étiquettes d'options : l'application les traduit à partir de leurs clés, sous la forme session_zero.questions.<key> et session_zero.options.<question>.<option>. Une question qu'écrit le meneur de jeu porte son propre énoncé — de 1 à 300 caractères — et ses propres étiquettes :

new Question('snacks', QuestionKind::Choice, 'What do we snack on?', ['chips' => 'Chips', 'fruit' => 'Fruit']);

Une question à choix a de 2 à 20 options ; une question peut être required.

Les gabarits intégrés

GabaritQuestions
one-shotton, piliers, thèmes bienvenus, conflit entre personnages, mort de personnage, confort
campaign — le gabarit par défautton, piliers, attentes, thèmes bienvenus, conflit entre personnages, mort de personnage, fréquence, horaire, règles de la table, confort
conventionexpérience, ton, conflit entre personnages, confort
onlineton, piliers, thèmes bienvenus, caméra, enregistrement, règles de la table, confort

Templates::get('online') en retourne un, Templates::all() tous. Le ton est obligatoire, tout comme l'enregistrement d'une table en ligne.

Le gabarit d'un meneur de jeu

Un meneur de jeu part d'un gabarit et le modifie ; un Template compte de 1 à 50 questions, chaque clé une seule fois :

$template = Templates::get('convention')
    ->with(new Question('own-1', QuestionKind::Text, 'Anything we should know?'))
    ->without('experience');

with() ajoute une question à la fin, ou la met à la place de celle qui porte sa clé. Le gabarit est gardé dans les réglages de la table.

Réponses

Template::answer() accepte les réponses d'un participant par clé de question : un texte est rogné, une option doit être l'une de celles de la question, une réponse vide est écartée, une question obligatoire exige une réponse, et une clé que le gabarit n'a pas est refusée.

$safety->answerSessionZero($table, $participant, ['tone' => 'dark', 'pillars' => ['mystery', 'social']], $now);

Le pacte

TableSafety::pact() rassemble les réponses d'une table sans dire qui a donné quoi : pour une question à choix, combien ont choisi chaque option ; pour une question à texte, les réponses en ordre alphabétique plutôt que dans l'ordre où elles ont été données.

$pact = $safety->pact($table);

$pact->tally('tone');      // ['light' => 0, 'mixed' => 1, 'serious' => 0, 'dark' => 3]
$pact->texts('comfort');   // ['Breaks every hour', 'Captions']
$pact->respondents;        // 4

Une réponse à une option ou à une question que le gabarit n'a plus est écartée.