A idéia de usar planilhas como um ambiente para o desenvolvimento de brinquedos
não é
nova . Neste artigo, compartilharei minha experiência na criação de mecanismos para jogos de interpretação de papéis e formação de equipes em ação ao vivo que podem facilitar muito a vida dos praticantes de jogos.
Por que isso é necessário?
Suponha que você esteja jogando um jogo no qual 50 a 60 pessoas estejam participando ao mesmo tempo. Cada jogador possui um conjunto de parâmetros pessoais (por exemplo, experiência, dinheiro, saúde, reputação), que variam dependendo das ações que ele executou. Há também vários indicadores gerais de jogos (por exemplo, ecologia, orçamento do país ou classificação do governo), que também variam de acordo com as ações e decisões dos jogadores. E há eventos de jogos que ocorrem com uma certa combinação de fatores externos.
Em geral, esse é um fluxo bastante denso de informações que precisa ser calculado com rapidez e precisão. Em um jogo clássico de role-playing, essa função geralmente é executada pelo mestre do jogo. Mas o mestre não está seguro de erros e ainda assim não processará muita informação - nem em sua cabeça, nem mesmo com um pedaço de papel.
Com um mecanismo eletrônico, uma pessoa é capaz de processar um fluxo de informações de qualquer volume. Ao mesmo tempo, as estatísticas do jogo podem ser exibidas no projetor para que os participantes possam observar em tempo real como suas ações afetam os layouts do jogo. Ou, por exemplo, você pode mostrar dados secretos para cada jogador segmentado em um smartphone. E o mais importante - você pode usar esse mecanismo gratuitamente!
Empolgado com as práticas de jogo há cerca de um ano, consegui escrever 7 mecanismos para diferentes jogos de formação de equipes. A maioria desses jogos tem sucesso comercial, e um foi vendido como uma franquia no exterior.
Fluxo de caixa
Tudo começou com o jogo
Cash Flow . Amigos me convidaram para jogar a famosa mesa de Robert Kiyosaki, e ela realmente me fisgou. A única coisa que incomodou o jogo foi a necessidade de fazer constantemente cálculos em uma coluna, apagar os dados desatualizados com o apagador e adicionar novos. Devido ao fato de que todos os participantes, temendo cometer erros, estavam constantemente concentrados em seus próprios cálculos, o jogo perdeu grande parte de sua dinâmica e foi adiado por muitas horas.
Decidi otimizar a jogabilidade, traduzindo todo o custo em uma planilha do Google.

Para testar esta "calculadora", passei vários jogos para amigos. O efeito foi incrível! Em vez de se debruçar sobre os cálculos, os jogadores se envolveram ativamente no jogo, negociaram e criaram esquemas financeiros complexos e fraudes. A velocidade do jogo em si quase dobrou. Conseguimos chegar ao fim quando todos os jogadores deixaram a pista de corrida de ratos e atingiram seus objetivos. Para comparação, na versão “manual”, os participantes mal tiveram paciência para terminar de tocar até o momento em que pelo menos alguém sozinho conseguiu alcançar um grande círculo.
“Enlouquecer! - exclamou meu amigo Ruben durante um dos jogos. - Oito homens adultos se reuniram para olhar a tela com um tablet do Google a noite toda. Mas é realmente mais interessante do que qualquer filme! "
Minha placa para cálculos no jogo "Cash Flow" pode ser baixada
aqui . Se não estiver totalmente claro como usá-lo, escreva para mim e enviarei instruções detalhadas.
Zumbis, Presidentes e Assassinos
Um pouco mais tarde, me deparei com o roteiro do jogo de interpretação de papéis "
All The President's Zombies ", do designer de jogos americano Mike Young. De acordo com a trama, um apocalipse zumbi ocorre no país, e um grupo de altos funcionários se reúne no escritório do presidente para elaborar um plano para resolver esse problema.

Gostei do conceito e decidi criar meu próprio jogo, localizando a criação do Young. O resultado foi o jogo "
Emergency Meeting ", que está longe o suficiente do original. É baseado em uma árvore frondosa de eventos que ocorrem em tempo real, dependendo de certas decisões tomadas pelos jogadores na reunião. Em vez de ensinar meticulosamente os mestres do jogo, criei uma tabela do Google, que calculava automaticamente as consequências de cada uma das ações executadas pelos jogadores. O apresentador apenas teve que marcar a tela e tirar cartas do baralho, cujos números foram exibidos na tabela.

Uma certa dificuldade foi causada pela necessidade de rastrear a dinâmica dos parâmetros do jogo. Afinal, quando um valor de célula é alterado, a tabela reconta instantaneamente todas as fórmulas associadas a ele, sem salvar o valor antigo em nenhum lugar. Eu descobri como contornar essa complexidade, mas falarei sobre isso abaixo.
Depois de realizar algumas dezenas de “Reuniões de Emergência” para amigos e conhecidos, percebi que este é um formato promissor para todos os tipos de criação de equipes e histórias corporativas. Apenas a restrição do número máximo de participantes em 12 pessoas interferiu. E comecei a criar novos jogos que poderiam ser jogados por uma grande equipe. Ao mesmo tempo, um líder ainda deveria gerenciar o ecossistema de jogos. Havia também os jogos “
Freaky Venice ” baseados na franquia Assassin's Creed, “World Domination” sobre o confronto de superpotências no cenário mundial, “Election Day” sobre tecnologias honestas e não muito políticas, e mais alguns jogos que resolvem tarefas específicas de clientes específicos.
Ao desenvolver cada um desses jogos, tive algumas dificuldades e agora analisarei alguns dos exemplos mais interessantes.
Problema - Solução
A base de qualquer mecanismo de jogo é a seguinte sequência de ações: 1) coleta de informações sobre decisões tomadas pelos jogadores, 2) inserção dessas informações no sistema, 3) verificação das condições e cálculo de novos dados pelo sistema, 4) emissão de novos dados para os jogadores. Dependendo da trama do jogo, esse ciclo pode ser repetido de uma a um número condicionalmente infinito de vezes. Ao mesmo tempo, toda a comunicação dos jogadores anteriores à adoção das decisões finais permanece "nos bastidores", e o sistema de jogo não é levado em consideração de forma alguma. Portanto, em geral, o processo não produz a sensação de um jogo de computador, deixando espaço para uma interação emocional animada.
Emulação de loopA principal dificuldade no desenvolvimento do mecanismo na tabela do Google é a falta de familiar para as entidades programadoras como um procedimento variável, loop, interrupção.
Suponha que botões ausentes possam ser substituídos por uma célula com o valor “caixa de seleção” - em uma célula separada, haverá uma fórmula que verifica o estado da caixa de seleção e calcula o valor da célula de destino, dependendo disso. Mas e o fato de que toda a tabela é estática no tempo e, quando você altera o valor de uma célula variável, os valores de todas as outras células que se referem a ela na fórmula são instantaneamente e "sem demanda"? Não criei nada melhor do que compensar a falta de rotinas e loops usando guias. Você simplesmente cria quantas guias na tabela há ciclos no jogo e quantas vezes por jogo, teoricamente, uma variável pode alterar seu valor. Então, por exemplo, uma célula na tab-2 herdará o valor da mesma célula na tab-1, sofrerá algumas alterações e transferirá seu valor para a mesma célula da tab-3. Por exemplo, veja as guias dos ciclos no jogo World Domination.

De acordo com o enredo, o jogo sempre termina após 6 anos, então existem 6 guias com campos de jogo na tabela.
E aqui, por exemplo, está uma fórmula que calcula o orçamento do país no terceiro ano do jogo, resumindo o orçamento inicial do segundo ano e a soma do crescimento do orçamento do segundo ano:

Aqui, E41 é a quantia no orçamento no início do ano, X44 é a quantia de alterações no orçamento durante o ano.
Ou aqui está uma fórmula que exibe dados sobre a condição econômica da cidade em uma célula no tablet do jogador, dependendo do ano em que está no quintal. Dependendo do valor da célula “contador de ano” $ F $ 1, os valores da mesma célula E36 são exibidos, mas em guias diferentes correspondentes a um ano específico.

Infelizmente, essa solução permite desenvolver apenas jogos baseados em turnos que consistem em determinados ciclos (dia, dia-noite, mês, ano etc.). Além disso, o número de ciclos deve ser visível, caso contrário, levará uma eternidade para escrever o código. No entanto, se não houver tarefa de informar os jogadores sobre os valores intermediários dos parâmetros do jogo e acompanhar sua dinâmica no processo, com os ciclos de guias que você não pode se preocupar.
Distribuição de funçãoÀs vezes, antes do início do jogo, quero distribuir sabiamente os papéis para que, por exemplo, os personagens mais ativos sejam dirigidos aos jogadores mais sociáveis, e os papéis de fundo duplo sejam para os participantes que podem blefar e restringir emoções. No jogo "Reunião de Emergência", esta tarefa também é automatizada. Antes do início do jogo, os participantes recebem um link para um questionário no formato Google Forms, onde respondem a várias perguntas sobre suas preferências de jogo.

Esses dados caem na tabela em que o algoritmo baseado neles distribui os papéis entre os jogadores.
Coleta de dados do jogadorComo organizar a coleta de dados dos jogadores, se houver 80 deles? A princípio, pareceu uma boa ideia usar mensageiros para esse fim. Cada jogador (ou cada capitão de equipe) tem uma sala de bate-papo direto com um host, onde ele pode enviar suas equipes e ordens, notificar sobre as decisões tomadas. No entanto, jogos de teste mostraram que os mensageiros são uma má ideia. Os jogadores começam a inundar, fazer várias perguntas, cometer erros e cancelar pedidos enviados anteriormente. Como resultado, a velocidade de processamento diminui, a pilha de consultas aumenta e os jogadores precisam aguardar alguns minutos para que a ordem deles entre em vigor. Além disso, os participantes passam a maior parte do jogo sentados em seus smartphones, e isso não contribui para uma comunicação animada e a formação de equipes.
Uma boa decisão foi coletar dados dos jogadores através de questionários e cartões. Por exemplo, em "Praga de Veneza", os jogadores ao longo do jogo entregam ao anfitrião as cartas completas com frases como "Paolo Alighieri enviou assassinos para Giacomo Sforza" ou "Leonardo Bertolucci seduziu Lucretia Médici", e o anfitrião só precisa verificar a mesa no cruzamento dos nomes correspondentes e sobrenomes.

E no jogo "Dia da eleição", as equipes dos alunos seniores enviam questionários preenchidos desse formato após cada ciclo de jogo.

Os dados desse questionário são otimizados o máximo possível, e o host não precisa mais do que 5 segundos para direcioná-los para a tabela.
Ajuste de saldoNos jogos de interpretação de papéis, o equilíbrio do jogo é importante: os recursos devem sempre ser escassos e várias ferramentas para alcançar objetivos são aproximadamente igualmente eficazes. O equilíbrio pode ser construído apenas manualmente e apenas empiricamente, conduzindo uma série de jogos de teste. Para não ficar louco, alterando os parâmetros em cada fórmula e em cada célula, uma solução muito conveniente é uma guia de referência separada, na qual todos os parâmetros personalizados são exibidos e as fórmulas do restante da tabela se referem a eles. Usando o diretório, você também pode, por exemplo, alterar o idioma do jogo com uma opção da caixa de seleção. Essa função é implementada no jogo "World Domination".
Inserindo dados no sistemaPara impedir que o jogo ceda, o host deve poder inserir dados na tabela o mais rápida e ergonomicamente possível. Nas tabelas do Google, você pode configurar o formato de entrada de dados (validação dada). O formato mais rápido e conveniente é a caixa de seleção. Verdadeiro, nem todas as fórmulas podem funcionar com valores TRUE e FALSE. Portanto, é melhor converter imediatamente os valores da caixa de seleção em zero ou um em alguma célula técnica vizinha e, em seguida, faça o que quiser com esses zero e um.
Uma lista suspensa também é um formato de entrada muito conveniente se mais de dois valores forem assumidos em uma célula. A presença de opções prontas na lista protege o apresentador de erros de digitação, que no jogo podem desempenhar um papel crítico.
Aqui está um exemplo de campos de entrada de dados no World Domination.
Indicação de eventoÉ importante que o facilitador observe os eventos do jogo a tempo e responda a eles. Portanto, na "Reunião de Emergência", você precisa observar alterações nas células com o número de cartões que precisam ser emitidos para os jogadores a tempo. E no "World Domination" você precisa informar aos jogadores a tempo que a cidade sofreu um ataque nuclear. Para que o apresentador não perca nada, você pode usar a propriedade da formatação condicional da célula (formatação condicional) - com sua ajuda, você pode, por exemplo, fazer com que, quando o texto "cidade é destruída" aparecer, a própria célula seja pintada em vermelho. No campo de visão do apresentador, haverá uma mancha vermelha brilhante que é impossível não notar.
Informações IndividuaisPode haver situações no jogo em que alguns dados sejam conhecidos por uma equipe e a outra não. Por exemplo, no jogo World Domination, são classificadas informações sobre a presença de armas nucleares em um país específico. Nesse caso, é conveniente usar dispositivos de saída separados para cada comando e exibir apenas informações publicamente disponíveis na tela principal. Tecnicamente, isso é resolvido como um grupo de tabelas separadas (um arquivo para cada equipe) nas quais apenas as informações necessárias são extraídas da tabela mestre usando a função IMPORTRANGE.
A propósito,
o Planilhas Google oferece a capacidade de exportar dados de uma tabela para a interface da web . Portanto, se você quiser, em vez de uma mesa seca, os jogadores podem exibir dados em tablets na forma de um infográfico lindamente organizado e animado.
Gráficos legaisNo jogo, às vezes, em vez de números, você deseja exibir um gráfico, mas os diagramas padrão o incomodam com sua redundância. E também porque eles não sabem como aderir às células e sempre parecem muito bagunçados. Felizmente, as tabelas do Google têm uma função SPARKLINE. Esta função exibe um mini gráfico dentro da célula. Ele possui certas configurações e pode ser usado para visualização lacônica de alguns dados.
Notícias de jogosÀs vezes, é necessário não apenas exibir o número na célula, mas também formular a ideia na forma de uma frase construída com competência (por exemplo, na seção "Últimas notícias"). Nesse caso, a função CONCATENATE vem ao resgate, que pode colar partes do texto com valores digitais de diferentes células. Aqui está a aparência da fórmula usando esta função.
SumárioEm "Dominação Mundial" e "Praga de Veneza", não apenas o vencedor principal, mas também as equipes que se destacaram em várias indicações são anunciadas na final do jogo. Para resumir, é muito conveniente usar a função MAX, que calcula o número máximo no intervalo. O anfitrião não precisa fazer nada extra - basta ler os nomes das equipes vencedoras na tela.
