L'idée d'utiliser des feuilles de calcul comme environnement pour développer des jouets n'est
pas nouvelle . Dans cet article, je partagerai mon expérience dans la création de moteurs pour les jeux de rôle et les teambuildings en direct qui peuvent grandement faciliter la vie des praticiens du jeu.
Pourquoi est-ce nécessaire
Supposons que vous jouez à un jeu auquel 50 à 60 personnes participent en même temps. Chaque joueur a un ensemble de paramètres personnels (par exemple, l'expérience, l'argent, la santé, la réputation), qui varient en fonction des actions qu'il a effectuées. Il existe également un certain nombre d'indicateurs de jeu généraux (par exemple, l'écologie, le budget du pays ou la note du gouvernement), qui fluctuent également en fonction des actions et des décisions des joueurs. Et il y a des événements de jeu qui se produisent avec une certaine combinaison de facteurs externes.
En général, il s'agit d'un flux d'informations assez dense qui doit être calculé rapidement et avec précision. Dans un jeu de rôle classique, cette fonction est généralement exécutée par le maître de jeu. Mais le maître n'est pas à l'abri des erreurs, et il ne traitera toujours pas beaucoup d'informations - ni dans sa tête, ni même avec un morceau de papier.
Avec un moteur électronique, une personne peut traiter un flux d'informations de n'importe quel volume. Dans le même temps, les statistiques du jeu peuvent être affichées sur le projecteur afin que les participants puissent observer en temps réel comment leurs actions affectent les dispositions du jeu. Ou, par exemple, vous pouvez afficher des données secrètes pour chaque joueur ciblé sur un smartphone. Et le plus important - vous pouvez utiliser ce moteur gratuitement!
Emporté par les pratiques de jeu il y a environ un an, j'ai réussi à écrire 7 moteurs pour différents jeux de team-building. La plupart de ces jeux ont un succès commercial, et un a même été vendu en tant que franchise à l'étranger.
Flux de trésorerie
Tout a commencé avec le jeu
Cash Flow . Des amis m'ont invité à jouer la célèbre table de Robert Kiyosaki, et elle m'a vraiment accroché. La seule chose qui agaçait le jeu était la nécessité de constamment faire des calculs dans une colonne, d'effacer les données obsolètes avec la gomme et d'en ajouter de nouvelles. Du fait que tous les participants, craignant de se tromper, étaient constamment concentrés sur leurs propres calculs, le jeu a perdu une grande partie de sa dynamique et a été retardé de plusieurs heures.
J'ai décidé d'optimiser le gameplay en traduisant tous les coûts dans une feuille de calcul Google.

Pour tester cette "calculatrice", j'ai passé plusieurs jeux pour des amis. L'effet était incroyable! Au lieu de se pencher sur les calculs, les joueurs ont été activement impliqués dans le gameplay, ont négocié et ont proposé des stratagèmes financiers complexes et des fraudes. La vitesse du jeu lui-même a presque doublé. Nous avons d'abord réussi à mettre un terme à la situation lorsque tous les joueurs ont quitté la piste de course de rats et atteint leurs objectifs. A titre de comparaison, dans la version «manuelle», les participants ont à peine eu la patience de finir de jouer jusqu'au moment où au moins quelqu'un seul a réussi à atteindre un grand cercle.
«Pour devenir fou! - s'est exclamé mon ami Ruben lors d'un des matchs. - Huit hommes adultes se sont réunis pour regarder l'écran avec une tablette Google toute la soirée. Mais c'est vraiment plus intéressant que n'importe quel film! "
Ma plaque pour les calculs dans le jeu "Cash Flow" peut être téléchargée
ici . Si vous ne savez pas comment l'utiliser, écrivez-moi et je vous enverrai des instructions détaillées.
Zombies, présidents et assassins
Un peu plus tard, je suis tombé sur le scénario du jeu de rôle du cabinet "
All The President's Zombies " du designer américain Mike Young. Selon l'intrigue, une apocalypse zombie a lieu dans le pays et un groupe de hauts fonctionnaires se réunissent dans le bureau du président pour élaborer un plan pour résoudre ce problème.

J'ai aimé le concept et j'ai décidé de créer mon propre jeu, en localisant la création de Young. Le résultat fut le jeu "
Emergency Meeting ", assez éloigné de l'original. Il est basé sur un arbre feuillu d'événements qui se produisent en temps réel en fonction de certaines décisions prises par les joueurs lors de la réunion. Au lieu d'enseigner minutieusement les maîtres du jeu, j'ai créé une table Google, qui calculait automatiquement les conséquences de chacune des actions entreprises par les joueurs. Le présentateur n'avait qu'à cocher l'écran et à tirer des cartes du jeu, dont les numéros étaient affichés dans le tableau.

Une certaine difficulté a été causée par la nécessité de suivre la dynamique des paramètres de jeu. Après tout, lorsqu'une valeur de cellule change, le tableau raconte instantanément toutes les formules qui lui sont associées, sans enregistrer l'ancienne valeur nulle part. J'ai compris comment contourner cette complexité, mais j'en parlerai ci-dessous.
Après avoir passé une douzaine de «réunions d'urgence» pour des amis et des connaissances, j'ai réalisé que c'est un format prometteur pour toutes sortes de team building et d'histoires d'entreprise. Seule la restriction du nombre maximum de participants sur 12 personnes a interféré. Et j'ai commencé à proposer de nouveaux jeux qui pourraient être joués par une grande équipe. Dans le même temps, un leader était encore censé gérer l'écosystème du jeu. Il y avait donc les jeux "
Freaky Venice " basés sur la franchise Assassin's Creed, "World Domination" sur la confrontation des superpuissances sur la scène mondiale, "Election Day" sur les technologies honnêtes et peu politiques, et quelques autres jeux qui résolvent des tâches spécifiques de clients spécifiques.
Lors du développement de chacun de ces jeux, j'ai rencontré certaines difficultés, et maintenant j'analyserai certains des exemples les plus intéressants.
Problème - Solution
La base de tout moteur de jeu est la séquence d'actions suivante: 1) la collecte d'informations sur les décisions prises par les joueurs, 2) la saisie de ces informations dans le système, 3) la vérification des conditions et le calcul de nouvelles données par le système, 4) la publication de nouvelles données aux joueurs. Selon l'intrigue du jeu, ce cycle peut être répété d'une à un nombre conditionnellement infini de fois. Dans le même temps, toute la communication des joueurs précédant l'adoption des décisions finales reste «en coulisses», et le système de jeu n'est en aucun cas pris en compte. Ainsi, en général, le processus ne produit pas la sensation d'un jeu d'ordinateur, laissant la place à une interaction émotionnelle vive.
Émulation de boucleLa principale difficulté à développer le moteur dans la table Google est le manque de familier aux programmeurs comme une variable, boucle, interruption, procédure.
Supposons que vous pouvez remplacer les boutons manquants par une cellule avec la valeur «case à cocher» - dans une cellule séparée, il y aura alors une formule qui vérifie l'état de la case à cocher et calcule la valeur de la cellule cible en fonction de cela. Mais qu'en est-il du fait que la table entière est statique dans le temps, et lorsque vous modifiez la valeur d'une cellule variable, les valeurs de toutes les autres cellules qui s'y réfèrent dans la formule sont instantanément et «sans demande»? Je n'ai rien trouvé de mieux que de compenser le manque de routines et de boucles à l'aide d'onglets. Vous créez simplement autant d'onglets dans le tableau qu'il y a de cycles dans le jeu et combien de fois par jeu, théoriquement, une variable peut changer sa valeur. Ensuite, par exemple, une cellule de l'onglet 2 héritera de la valeur de la même cellule de l'onglet 1, subira quelques modifications et transférera sa valeur dans la même cellule de l'onglet 3. Par exemple, regardez les onglets des cycles dans le jeu World Domination.

Selon l'intrigue, le jeu se termine toujours après 6 ans, il y a donc 6 onglets avec des champs de jeu dans le tableau.
Et voici, par exemple, une formule qui calcule le budget du pays la troisième année du jeu, résumant le budget initial de la deuxième année et la somme de la croissance budgétaire de la deuxième année:

Ici E41 est le montant dans le budget au début de l'année, X44 est le montant des changements dans le budget au cours de l'année.
Ou voici une formule qui affiche des données sur la situation économique de la ville dans une cellule sur la tablette du joueur, selon l'année où elle se trouve dans la cour. Selon la valeur de la cellule «compteur d'année» $ F $ 1, les valeurs de la même cellule E36 sont affichées, mais à partir d'onglets différents correspondant à une année particulière.

Une telle solution ne permet malheureusement de développer que des jeux au tour par tour constitués de certains cycles (jour, jour-nuit, mois, année, etc.). De plus, le nombre de cycles doit être visible, sinon il faudra une éternité pour écrire le code. Cependant, s'il n'y a pas de tâche pour informer les joueurs des valeurs intermédiaires des paramètres de jeu et suivre leur dynamique dans le processus, vous ne pouvez pas vous embêter avec les onglets de cycle.
Répartition des rôlesParfois, avant le début du jeu, je veux répartir judicieusement les rôles afin que, par exemple, les personnages les plus actifs reviennent aux joueurs les plus sociables, et les rôles à double fond aux participants qui peuvent bluffer et restreindre les émotions. Dans le jeu "Emergency Meeting", cette tâche est également automatisée. Avant le début du jeu, les participants reçoivent un lien vers un questionnaire au format Google Forms, où ils répondent à plusieurs questions sur leurs préférences de jeu.

Ces données tombent dans le tableau où l'algorithme basé sur elles répartit les rôles entre les joueurs.
Collecte des données des joueursComment organiser la collecte des données des joueurs, s'il y en a 80? Au début, cela semblait être une bonne idée d'utiliser des messagers à cette fin. Chaque joueur (ou chaque capitaine d'équipe) dispose d'une salle de discussion directe avec un hôte, où il peut envoyer ses équipes et ses ordres, informer des décisions prises. Cependant, les jeux de test ont montré que les messagers sont une mauvaise idée. Les joueurs commencent à affluer, posent un tas de questions, font des erreurs et annulent les commandes précédemment envoyées. En conséquence, la vitesse de traitement diminue, la pile de requêtes augmente et les joueurs doivent attendre quelques minutes pour que leur ordre prenne effet. De plus, les participants passent la majeure partie du jeu assis dans leurs smartphones, ce qui ne contribue pas à une communication animée et à la consolidation d'équipe.
Une bonne décision a été de collecter les données des joueurs via des questionnaires et des cartes. Par exemple, dans "Plague of Venice", les joueurs tout au long du jeu remettent à l'hôte les cartes remplies avec des libellés tels que "Paolo Alighieri a envoyé des tueurs à Giacomo Sforza" ou "Leonardo Bertolucci a séduit Lucretia Medici", et l'hôte n'a qu'à vérifier le tableau à l'intersection des noms correspondants et noms de famille.

Et dans le jeu «Election Day», les équipes d'étudiants seniors soumettent des questionnaires remplis de ce format après chaque cycle de jeu.

Les données d'un tel questionnaire sont rationalisées autant que possible et l'hôte n'a pas besoin de plus de 5 secondes pour les insérer dans le tableau.
Ajustement de l'équilibreDans les jeux de rôle, l'équilibre du jeu est important: les ressources doivent toujours être en nombre insuffisant et divers outils pour atteindre les objectifs sont à peu près tout aussi efficaces. L'équilibre ne peut être construit que manuellement et uniquement empiriquement, en menant une série de jeux de test. Afin de ne pas devenir fou, en changeant les paramètres dans chaque formule et dans chaque cellule d'avant en arrière, une solution très pratique est un onglet de référence séparé, où tous les paramètres personnalisés sont affichés, et les formules du reste du tableau s'y réfèrent. En utilisant le répertoire, vous pouvez également, par exemple, changer la langue du jeu avec un seul commutateur de la case à cocher. Une telle fonction est implémentée dans le jeu "World Domination".
Saisie de données dans le systèmePour éviter que le jeu ne s'affaisse, l'hôte doit être en mesure d'entrer les données dans la table aussi rapidement et ergonomiquement que possible. Dans les tableaux Google, vous pouvez configurer le format d'entrée des données (validation dada). Le format le plus rapide et le plus pratique est la case à cocher. Certes, toutes les formules ne peuvent pas fonctionner avec des valeurs VRAI et FAUX. Par conséquent, il est préférable de traduire immédiatement les valeurs de la case à cocher en zéro ou un dans une cellule technique voisine, puis de faire ce que vous voulez avec ces zéro et un.
Une liste déroulante est également un format d'entrée très pratique si plus de deux valeurs sont supposées dans une cellule. La présence d'options prêtes à l'emploi dans la liste protège le présentateur des fautes de frappe, qui dans le jeu peuvent jouer un rôle critique.
Voici un exemple de champs de saisie de données dans World Domination.
Indication d'événementIl est important que l'animateur remarque les événements du jeu à temps et y réponde. Ainsi, dans la "réunion d'urgence", vous devez remarquer les changements dans les cellules avec le nombre de cartes qui doivent être délivrées aux joueurs à temps. Et dans "World Domination", vous devez informer les joueurs à temps que la ville a subi une frappe nucléaire. Pour que le présentateur ne manque rien, vous pouvez utiliser la propriété de la cellule mise en forme conditionnelle (mise en forme conditionnelle) - avec son aide, vous pouvez, par exemple, faire en sorte que lorsque le texte "ville est détruite" apparaisse, la cellule elle-même est peinte en rouge. Dans le champ de vision du présentateur, il y aura une tache rouge vif qu'il est impossible de ne pas remarquer.
Informations individuellesIl peut y avoir des situations dans le jeu où certaines données sont connues d'une équipe et l'autre pas. Par exemple, dans le jeu World Domination, les informations sur la présence d'armes nucléaires dans un pays particulier sont classées. Dans ce cas, il est pratique d'utiliser des périphériques de sortie séparés pour chaque commande et d'afficher uniquement les informations accessibles au public sur l'écran principal. Techniquement, cela est résolu comme un groupe de tables distinctes (un fichier pour chaque équipe) dans lequel seules les informations nécessaires sont extraites de la table principale à l'aide de la fonction IMPORTRANGE.
Soit dit en passant,
Google Sheets offre la possibilité d'exporter des données d'une table vers l'interface Web , donc si vous le souhaitez, au lieu d'une table sèche, les joueurs peuvent afficher des données sur des tablettes sous la forme d'une infographie magnifiquement agencée et animée.
Des graphismes soignésDans le jeu, parfois, au lieu de chiffres, vous souhaitez afficher un graphique, mais les diagrammes standard vous ennuient par leur redondance. Et aussi parce qu'ils ne savent pas coller aux cellules et ont toujours l'air très en désordre. Heureusement, les tables Google ont une fonction SPARKLINE. Cette fonction affiche un mini graphique à l'intérieur de la cellule. Il a certains paramètres et peut être utilisé pour la visualisation laconique de certaines données.
Actualités du jeuParfois, il est nécessaire non seulement d'afficher le nombre dans la cellule, mais aussi de formuler l'idée sous la forme d'une phrase construite avec compétence (par exemple, dans la section "Dernières nouvelles"). Dans ce cas, la fonction CONCATENER vient à la rescousse, qui peut coller des morceaux de texte avec des valeurs numériques de différentes cellules. Voici à quoi ressemble la formule en utilisant cette fonction.
RésuméDans «World Domination» et «Plague of Venice», non seulement le vainqueur principal, mais aussi les équipes qui se sont distinguées dans diverses nominations sont annoncées en finale du match. Pour résumer, il est très pratique d'utiliser la fonction MAX, qui calcule le nombre maximum dans la plage. L'hôte n'a rien d'autre à faire - il suffit de lire les noms des équipes gagnantes sur l'écran.
