La idea de usar hojas de cálculo como un entorno para desarrollar juguetes
no es
nueva . En este artículo, compartiré mi experiencia en la creación de motores para juegos de rol de acción en vivo y equipos de trabajo que pueden facilitar enormemente la vida de los practicantes de juegos.
Porque es necesario
Suponga que está jugando un juego en el que participan 50-60 personas al mismo tiempo. Cada jugador tiene un conjunto de parámetros personales (por ejemplo, experiencia, dinero, salud, reputación), que varían según las acciones que realizó. También hay una serie de indicadores generales del juego (por ejemplo, ecología, presupuesto del país o calificación del gobierno), que también fluctúan de acuerdo con las acciones y decisiones de los jugadores. Y hay eventos de juegos que ocurren con una cierta combinación de factores externos.
En general, este es un flujo de información bastante denso que debe calcularse de manera rápida y precisa. En un juego de rol clásico, esta función generalmente la realiza el maestro del juego. Pero el maestro no está a salvo de errores, y todavía no procesará mucha información, ni en su cabeza, ni siquiera con un pedazo de papel.
Con un motor electrónico, una persona puede procesar un flujo de información de cualquier volumen. Al mismo tiempo, las estadísticas del juego se pueden mostrar en el proyector para que los participantes puedan observar en tiempo real cómo sus acciones afectan los diseños del juego. O, por ejemplo, puede mostrar datos secretos a cada jugador seleccionado en un teléfono inteligente. Y lo más importante: ¡puedes usar este motor gratis!
Llevado por las prácticas de juego hace aproximadamente un año, logré escribir 7 motores para diferentes juegos de construcción de equipos. La mayoría de estos juegos tienen éxito comercial, y uno incluso se ha vendido como franquicia en el extranjero.
Flujo de caja
Todo comenzó con el juego
Cash Flow . Mis amigos me invitaron a jugar en la famosa mesa de Robert Kiyosaki, y ella realmente me enganchó. Lo único que molestó al juego fue la necesidad de hacer cálculos constantemente en una columna, borrar los datos obsoletos con el borrador y agregar nuevos. Debido al hecho de que todos los participantes, por temor a cometer un error, se concentraron constantemente en sus propios cálculos, el juego perdió gran parte de su dinámica y se retrasó durante muchas horas.
Decidí optimizar la jugabilidad traduciendo todos los costos en una hoja de cálculo de Google.

Para probar esta "calculadora", pasé varios juegos para amigos. ¡El efecto fue asombroso! En lugar de analizar detenidamente los cálculos, los jugadores participaron activamente en el juego, negociaron y elaboraron esquemas financieros complejos y fraudes. La velocidad del juego en sí casi se ha duplicado. Primero logramos llevarlo al final cuando todos los jugadores abandonaron la pista de carreras de ratas y alcanzaron sus objetivos. A modo de comparación, en la versión "manual", los participantes apenas tuvieron paciencia para terminar de jugar hasta el momento en que al menos alguien solo logró llegar a un gran círculo.
“Para volverse loco! - exclamó mi amigo Ruben durante uno de los juegos. - Ocho hombres adultos se reunieron para mirar la pantalla con una tableta de Google toda la noche. ¡Pero es realmente más interesante que cualquier película! "
Mi placa para los cálculos en el juego "Cash Flow" se puede descargar
desde aquí . Si no está completamente claro cómo usarlo, escríbame y le enviaré instrucciones detalladas.
Zombis, presidentes y asesinos
Un poco más tarde, me encontré con el guión del juego de rol de gabinete "
Todos los zombis del presidente " del diseñador de juegos estadounidense Mike Young. Según la trama, se produce un apocalipsis zombie en el país, y un grupo de altos funcionarios se reúnen en la oficina del presidente para elaborar un plan para resolver este problema.

Me gustó el concepto y decidí crear mi propio juego, localizando la creación de Young. El resultado fue el juego "
Reunión de emergencia ", que está lo suficientemente lejos del original. Se basa en un árbol frondoso de eventos que ocurren en tiempo real dependiendo de ciertas decisiones tomadas por los jugadores en la reunión. En lugar de enseñar minuciosamente a los maestros del juego, creé una tabla de Google, que calculaba automáticamente las consecuencias de cada una de las acciones tomadas por los jugadores. El presentador solo tenía que marcar la pantalla y robar cartas del mazo, cuyos números se mostraban en la tabla.

Una cierta dificultad fue causada por la necesidad de rastrear la dinámica de los parámetros del juego. Después de todo, cuando cambia el valor de una celda, la tabla relata instantáneamente todas las fórmulas asociadas con ella, sin guardar el valor anterior en ninguna parte. Descubrí cómo sortear esta complejidad, pero hablaré de esto a continuación.
Después de pasar un par de docenas de "Reuniones de emergencia" para amigos y conocidos, me di cuenta de que este es un formato prometedor para todo tipo de edificios de equipo e historias corporativas. Solo la restricción sobre el número máximo de participantes en 12 personas interfirió. Y comencé a idear nuevos juegos que un gran equipo pudiera jugar. Al mismo tiempo, se suponía que un líder administraría el ecosistema de los juegos. Así que hubo juegos de "
Freaky Venice " basados en la franquicia de Assassin's Creed, "World Domination" sobre la confrontación de las superpotencias en el escenario mundial, "Día de las elecciones" sobre tecnologías honestas y no muy políticas, y algunos juegos más que resuelven tareas específicas de clientes específicos.
Al desarrollar cada uno de estos juegos, me encontré con ciertas dificultades, y ahora analizaré algunos de los ejemplos más interesantes.
Problema - Solución
La base de cualquier motor de juego es la siguiente secuencia de acciones: 1) recopilar información sobre las decisiones tomadas por los jugadores, 2) ingresar esta información en el sistema, 3) verificar las condiciones y calcular nuevos datos por el sistema, 4) emitir nuevos datos a los jugadores. Dependiendo de la trama del juego, este ciclo puede repetirse de uno a un número de veces condicionalmente infinito. Al mismo tiempo, toda la comunicación de los jugadores que precede a la adopción de decisiones finales permanece "detrás de escena", y el sistema de juego no se tiene en cuenta de ninguna manera. Entonces, en general, el proceso no produce la sensación de un juego de computadora, dejando espacio para una interacción emocional viva.
Emulación de bucleLa principal dificultad para desarrollar el motor en la tabla de Google es la falta de entidades tan familiares para el programador como un procedimiento variable, de bucle, de interrupción.
Suponga que puede reemplazar los botones que faltan con una celda con el valor “casilla de verificación”: en una celda separada, habrá una fórmula que verificará el estado de la casilla de verificación y calculará el valor de la celda objetivo dependiendo de esto. Pero, ¿qué pasa con el hecho de que toda la tabla es estática en el tiempo, y cuando cambia el valor de una celda variable, los valores de todas las otras celdas que se refieren a ella en la fórmula son instantáneos y "sin demanda"? No se me ocurrió nada mejor que compensar la falta de rutinas y bucles con pestañas. Simplemente crea tantas pestañas en la tabla como ciclos en el juego y cuántas veces por juego, en teoría, una variable puede cambiar su valor. Luego, por ejemplo, una celda en tab-2 heredará el valor de la misma celda en tab-1, sufrirá algunos cambios y transferirá su valor a la misma celda desde tab-3. Por ejemplo, mira las pestañas para ver los ciclos en el juego World Domination.

Según la trama, el juego siempre termina después de 6 años, por lo que hay 6 pestañas con campos de juego en la tabla.
Y aquí, por ejemplo, hay una fórmula que calcula el presupuesto del país en el tercer año del juego, resumiendo el presupuesto inicial del segundo año y la suma del crecimiento del presupuesto del segundo año:

Aquí E41 es la cantidad en el presupuesto al comienzo del año, X44 es la cantidad de cambios en el presupuesto durante el año.
O aquí hay una fórmula que muestra datos sobre la condición económica de la ciudad en una celda de la tableta del jugador, según el año en que se encuentre en el patio. Dependiendo del valor de la celda "contador de años" $ F $ 1, se muestran los valores de la misma celda E36, pero de diferentes pestañas correspondientes a un año en particular.

Tal solución, desafortunadamente, hace posible desarrollar solo juegos por turnos que consisten en ciertos ciclos (día, día-noche, mes, año, etc.). Además, el número de ciclos debe ser visible, de lo contrario, tomará una eternidad escribir el código. Sin embargo, si no hay una tarea para informar a los jugadores de los valores intermedios de los parámetros del juego y realizar un seguimiento de su dinámica en el proceso, con los ciclos de pestañas no puede molestarse en absoluto.
Distribución de rolesA veces, antes del comienzo del juego, quiero distribuir sabiamente los roles para que, por ejemplo, los personajes más activos vayan a los jugadores más sociables, y los roles de doble fondo vayan a aquellos participantes que pueden farolear y contener las emociones. En el juego "Reunión de emergencia" esta tarea también está automatizada. Antes del comienzo del juego, los participantes reciben un enlace a un cuestionario en el formato de Formularios de Google, donde responden varias preguntas sobre sus preferencias de juego.

Estos datos caen en la tabla donde el algoritmo basado en ellos distribuye los roles entre los jugadores.
Recolección de datos del jugador¿Cómo organizar la recopilación de datos de los jugadores, si hay 80 de ellos? Al principio, parecía una buena idea usar mensajeros para este propósito. Cada jugador (o el capitán de cada equipo) tiene una sala de chat directa con un anfitrión, donde puede enviar a sus equipos y órdenes, notificar sobre las decisiones tomadas. Sin embargo, los juegos de prueba mostraron que los mensajeros son una mala idea. Los jugadores comienzan a inundar, hacer un montón de preguntas, cometer errores y cancelar pedidos enviados previamente. Como resultado, la velocidad de procesamiento disminuye, la pila de consultas crece y los jugadores tienen que esperar unos minutos para que su orden surta efecto. Además, los participantes pasan la mayor parte del juego sentados en sus teléfonos inteligentes, y esto no contribuye a una comunicación animada y a la formación de equipos.
Una buena decisión fue recopilar datos de los jugadores a través de cuestionarios y tarjetas. Por ejemplo, en "Plague of Venice", los jugadores a lo largo del juego entregan al anfitrión las tarjetas llenas con palabras como "Paolo Alighieri envió asesinos a Giacomo Sforza" o "Leonardo Bertolucci sedujo a Lucretia Medici", y el anfitrión solo necesita revisar la mesa en la intersección de los nombres correspondientes y apellidos

Y en el juego "Día de las elecciones", los equipos de estudiantes de último año envían cuestionarios completos de este formato después de cada ciclo de juego.

Los datos en dicho cuestionario se optimizan tanto como sea posible, y el host no necesita más de 5 segundos para introducirlos en la tabla.
Ajuste de equilibrioEn los juegos de rol, el equilibrio del juego es importante: los recursos siempre deben ser escasos, y varias herramientas para lograr los objetivos son aproximadamente igualmente efectivas. El equilibrio se puede construir solo manualmente y solo empíricamente, realizando una serie de juegos de prueba. Para no volverse loco, cambiando los parámetros en cada fórmula y en cada celda de ida y vuelta, una solución muy conveniente es una pestaña de referencia separada, donde se muestran todos los parámetros personalizados, y las fórmulas del resto de la tabla se refieren a ellos. Usando el directorio, también puede, por ejemplo, cambiar el idioma del juego con un interruptor de la casilla de verificación. Dicha función se implementa en el juego "World Domination".
Introducir datos en el sistemaPara evitar que el juego se hunda, el anfitrión debe poder ingresar datos en la mesa de la manera más rápida y ergonómica posible. En las tablas de Google, puede configurar el formato de entrada de datos (validación dada). El formato más rápido y conveniente es la casilla de verificación. Es cierto que no todas las fórmulas pueden funcionar con valores VERDADERO y FALSO. Por lo tanto, es mejor traducir inmediatamente los valores de la casilla de verificación a cero o uno en alguna celda técnica vecina, y luego hacer lo que quiera con estos cero y uno.
Una lista desplegable también es un formato de entrada muy conveniente si se asumen más de dos valores en una celda. La presencia de opciones listas para usar en la lista protege al presentador de errores tipográficos, que en el juego pueden desempeñar un papel fundamental.
Aquí hay un ejemplo de campos de entrada de datos en World Domination.
Indicación de eventoEs importante que el facilitador note los eventos del juego a tiempo y responda a ellos. Por lo tanto, en la "Reunión de emergencia" debe notar los cambios en las celdas con el número de tarjetas que deben emitirse a los jugadores a tiempo. Y en "World Domination" debes informar a los jugadores a tiempo que la ciudad ha sufrido un ataque nuclear. Para que el presentador no se pierda nada, puede usar la propiedad del formato condicional de la celda (formato condicional); con su ayuda, por ejemplo, puede hacerlo para que cuando aparezca el texto "ciudad destruida", la celda en sí esté pintada en rojo. En el campo de visión del presentador habrá un punto rojo brillante que es imposible no notar.
Informacion individualPuede haber situaciones en el juego cuando algunos de los datos son conocidos por un equipo y el otro no. Por ejemplo, en el juego World Domination, se clasifica la información sobre la presencia de armas nucleares en un país en particular. En este caso, es conveniente usar dispositivos de salida separados para cada comando y mostrar solo la información disponible públicamente en la pantalla principal. Técnicamente, esto se resuelve como un grupo de tablas separadas (un archivo para cada equipo) en el que solo se extrae la información necesaria de la tabla maestra utilizando la función IMPORTRANGE.
Por cierto,
Google Sheets brinda la capacidad de exportar datos de una tabla a la interfaz web , por lo que si lo desea, en lugar de una tabla seca, los jugadores pueden mostrar datos en tabletas en forma de una infografía bellamente diseñada y animada.
Gráficos aseadosEn el juego, a veces, en lugar de números, quieres mostrar un gráfico, pero los diagramas estándar te molestan con su redundancia. Y también porque no saben cómo adherirse a las células y siempre se ven muy desordenadas. Afortunadamente, las tablas de Google tienen una función SPARKLINE. Esta función muestra un mini gráfico dentro de la celda. Tiene ciertas configuraciones y puede usarse para la visualización lacónica de algunos datos.
Noticias de juegosA veces se requiere no solo mostrar el número en la celda, sino también formular la idea en forma de una oración construida de manera competente (por ejemplo, en la sección "Últimas noticias"). En este caso, la función CONCATENAR viene al rescate, que puede pegar fragmentos de texto con valores digitales de diferentes celdas. Así es como se ve la fórmula usando esta función.
ResumenEn "World Domination" y "Plague of Venice", no solo el principal ganador, sino también los equipos que se distinguieron en varias nominaciones se anuncian en la final del juego. Para resumir, es muy conveniente usar la función MAX, que calcula el número máximo en el rango. El anfitrión no necesita hacer nada extra: solo lea los nombres de los equipos ganadores en la pantalla.
