Missão atômica no parque Bitsevsky



Devido ao hype onipresente sobre Chernobyl no início do verão (pelo menos no setor de energia nuclear), bem como as palavras vibrantes de digitalização e gamificação, nós do RAS do IBRAE decidimos criar algum tipo de aplicativo de busca no qual a operação de uma unidade de energia nuclear é modelada e realizada conceitualmente. seus testes no parque Bitsevsky.

Introdutório


O objetivo inicial de criar uma aplicação desse tipo é, obviamente, o interesse em como você pode simular de maneira simples e fácil o processo de gerenciamento de um objeto tão complexo, não apenas do lado técnico, mas também psicológico (devido ao relacionamento de três partes diferentes: operadores de estações, governo e sabotadores). Outro objetivo é fazer com que as pessoas se sintam como uma das partes no processo e ver como elas se comportam em seu lugar na vida real. Não estou falando de educação e programa educacional, em princípio, todos os participantes de nossa busca estão mais ou menos familiarizados com essa área de atividade humana, mas, no entanto, você sempre pode aprender algo novo. E, claro, queríamos nos divertir nos últimos dias quentes deste 2019.

A essência da busca é a seguinte: os participantes são divididos em três equipes (operadores de estações, governo e sabotadores) e, em seguida, cada uma delas é enviada para realizar tarefas em geolocalizações. Paralelamente a percorrer e resolver quebra-cabeças, cada uma das equipes atua no reator por meio de um aplicativo em execução em um site. Ao mesmo tempo, as equipes podem influenciar o reator em uma extensão limitada, ou seja, gastando pontos de ação que recebem após a conclusão bem-sucedida das tarefas (na forma de códigos promocionais para o aplicativo).

No final da missão, o tempo gasto na conclusão da missão é ajustado dependendo do sucesso das equipes em contato com o reator. Devo dizer imediatamente que, como resultado do primeiro e único teste no momento, todo mundo parou de prestar atenção ao tempo e apenas andou pelos belos lugares da floresta de Bitsevsky, em particular, a montanha careca e o antigo templo eslavo, executou tarefas e desfrutou o sol de setembro tão suavemente aquecido com mel ...

Antigo templo eslavo


Sol do mel


App


O aplicativo é escrito em Python. O frontend (esta é a entrada / saída de dados do player) foi criado usando vuejs, jquery e flask. O back-end (lógica do reator e processamento de eventos) foi escrito em python puro. A comunicação entre front-end e back-end foi realizada usando um banco de dados (SQLite). O banco de dados foi empacotado com sqlachemy. Para implantar o aplicativo, use o Yandex Cloud.

Este não é um anúncio publicitário.
Mas, graças aos 4000 rublos de bônus que o Yandex oferece para testar a nuvem, esse bônus foi muito útil;)



Frontend


A parte do servidor está escrita em Python (balão). A parte do cliente (interface para o player) foi criada usando vuejs, jquery e uma pequena renderização de modelos de página no servidor.
Quando você acessa o site, o participante é solicitado a inserir um código exclusivo para cada equipe, após o qual entra no menu principal.

Entrar


O menu principal é composto por 5 elementos:

  1. Gráficos com parâmetros do reator
  2. Digite o código promocional
  3. Painel de controle
  4. Mapa
  5. Sair

Na janela de visualização do gráfico, o jogador pode rastrear o estado atual e vários estados anteriores do reator. Observe também a taxa de mudança de poder, a chance de um acidente, seu número e também veja os marcadores dos pontos de vitória.

Gráficos

Na janela para inserir códigos promocionais. Um participante pode ativar um código promocional recebido de uma maneira ou de outra, como regra, depois que uma equipe passa em algum teste.

Códigos Promocionais

Um status do reator também está disponível no painel de controle, semelhante ao painel de visualização do gráfico. Em seguida, uma pilha de eventos atuais é exibida com uma indicação do nome, equipe e contador até o final do evento, bem como a possibilidade de cancelá-lo (somente o seu).

Painel de controle

E, claro, as próprias ações. Eles são únicos para cada equipe. Por exemplo, uma ampla gama de ações está disponível para os operadores controlarem o reator (hastes de controle, vazão do fluido de trabalho, adição de boro etc.). Para o governo, são todos os tipos de requisitos e restrições de operação da unidade (aumente a carga, exerça pressão sobre o pessoal da estação). Para sabotadores, é a falha de bombas, suborno de operadores, etc.

Para cada equipe, estão disponíveis ações que cancelam as ações de outras pessoas, como uma operação antiterrorista, introduzindo um espião no governo ou subornando funcionários (é claro, não existe isso na vida real, mas para equilibrar o jogo, tivemos que inventar coisas).

Todas as ações das partes estão descritas na tabela:

Quadro
TítuloAcessoMudança de poderTempo de açãoCustoComentário
acidentereatorpara 0instantaneamenteFunciona automaticamente com a probabilidade do parâmetro chance de um acidente. Cada passo é verificado.
poço de iodoreator-0,1 / etapainstantaneamenteFunciona automaticamente a uma carga inferior a 50%
descargaadministradorespotência, velocidade, todos os contadores até 0, cancelamento de todas as ações atuaisinstantaneamente
levante as varasoperadores+5 por toda a duração da ação5 passos10
abaixe as hastesoperadores-5 por toda a duração da ação5 passos10
aumentar fluxooperadores+5 por toda a duração da ação10 passos5
reduzir o consumooperadores-5 por toda a duração da ação10 passos5
borooperadores-5 por toda a duração da ação2 passos25
AZ-5operadorespotência até 0instantaneamente100
explodir a bombasabotadores+25 o tempo todo1 passo250
quebrar a bombasabotadores+25 o tempo todo10 passo50.
fogosabotadorespara 0instantaneamente300
empurrar operadoreso governo+5 por toda a duração da ação5 passos10
o vírussabotadoresde -15 a 15 por acaso15 passos150
subornar o engenheiro-chefesabotadores-20 para sempre20 passos10
subornar o engenheiro-chefesabotadores+20 o tempo todo20 passos10
fique calado sobre o acidenteo governo-1 no contador de acidentesinstantaneamente75
economizar em hasteso governo+10 por toda a duração da ação60 passos25
assediar operadoressabotadores50% de cancelamento de operadores12 passos150
introduzir um espião no governosabotadores50% de cancelamento do governo12 passos150
operação antiterroristao governo50% de cancelamento de sabotadores12 passos150
intimidar funcionárioso governo50% de cancelamento de operadores12 passos150
realizar uma inspeção na estaçãooperadores50% de cancelamento de sabotadores12 passos150
subornar funcionáriosoperadores50% de cancelamento do governo12 passos150


Na guia mapa, um mapa está disponível no aplicativo Yandex Maps criado usando o designer de mapas (para obter mais detalhes, consulte Preparando o jogo ).

Mapa


Backend


Todo o back-end é escrito em Python puro. De fato, todo o código consiste em um objeto Reator (reator, unidade de potência, estação) com um parâmetro de potência ou estado. A cada etapa do tempo (definida manualmente, definimos 1 segundo), o estado muda dependendo dos eventos que ocorreram nessa etapa. A pilha de eventos atuais é atualizada a cada passo, acessando o banco de dados, que por sua vez é preenchido pelos participantes do jogo na interface do aplicativo da web.

Por conveniência, todos os eventos são coletados em uma fábrica de eventos e recebem o objeto do reator e seu identificador exclusivo (número da linha no banco de dados) como entrada. Como o objeto da classe do reator sabe tudo o que acontece no aplicativo, os eventos sabem tudo sobre ele, o que torna o processo de criação muito flexível.

Para o teste, também foram criados bots que agiram de acordo com alguma estratégia. Para descrever essas lógicas, uma fábrica de estratégia também foi criada.

Também foi criada uma fábrica para contar pontos, a fim de variar a lógica da contagem de jogo para jogo. A lógica básica criava um ponto de vitória a cada etapa e o dava a uma das equipes, dependendo do nível de potência nessa etapa (50-75 - operadores, 75-100 - governo, 0 e mais de 100 - sabotadores, em outros casos, para ninguém).

Quest


Preparação



A preparação principal consistiu em encontrar locais para a busca, bem como testes preliminares da aplicação em laboratório.

Para preparar os locais, uma semana antes do evento, o organizador foi abandonado na floresta de Bitsevsky. Ele andou pelo território e encontrou lugares interessantes e atraentes, em cada lugar realizou três operações:

  1. Gravei a localização geográfica (usando o aplicativo Yandex Maps yandex.ru/maps );
  2. Qualidade de rede medida (usando o aplicativo Speedtest www.speedtest.net );
  3. Tirou uma foto ou vídeo.

Como resultado, foram coletados 30 locais (10 para cada equipe).

O Yandex Maps tornou possível simplificar bastante a criação de um mapa, devido ao construtor de mapas yandex.ru/map-constructor . Permite adicionar sua localização, zonas e todos os tipos de marcas ao mapa. Em seguida, integre-o ao seu aplicativo na forma de código JavaScript ou iframe ou coloque-o como um link e, na pior das hipóteses, imprima-o. É possível adicionar locais importando-os de um arquivo XLSX, CSV, KML, GPX ou GeoJSON. O único inconveniente foi a impossibilidade de importar locais de mapas Yandex comuns diretamente para o construtor (pelo menos não o encontramos), tive que interrompê-los em uma tabela xlsx e importá-los já. As zonas com baixa qualidade de rede foram destacadas no designer de mapas como uma área vermelha.

Mapa


No dia anterior ao jogo (bem, como sempre), testamos o jogo com 3 pessoas (1 de cada equipe). Em geral, não houve comentários especiais, apenas ajustamos ligeiramente a estimativa preliminar do custo das ações das equipes. Devo dizer imediatamente que o jogo em si revelou alguns problemas (em conclusão), e a conclusão é que dificilmente poderíamos descobrir sobre eles em condições de estufa.

O jogo


Na manhã de 14 de setembro de 2019, reunimos participantes na Floresta Bitsa. No começo, nosso atleta, membro do Komsomol e apenas um bom cientista realizaram exercícios incendiários pela manhã.

Os participantes foram divididos em equipes, deram a eles um código promocional inicial e anunciaram o início do jogo.

As equipes dispersaram-se lentamente para locais (agora eu entendo, provavelmente porque tentaram descobrir o aplicativo ao longo do caminho). Nos primeiros 10 a 15 minutos, os jogadores tiveram dificuldades, mas depois se acostumaram e sua atenção se voltou para ganhar códigos promocionais.

Para maior empolgação, destacamos um personagem especial em um toucado visível de longe, que visitou equipes e fez perguntas para obter códigos promocionais (ao mesmo tempo, ele corrigiu os batentes da missão).

Especial personagem


Devo dizer que, tendo focado totalmente no aplicativo, abandonamos completamente a preparação para a missão, como resultado, concluímos parte dos adereços já à noite antes da missão e esquecemos de comprar parte. Por exemplo, devido ao fato de termos esquecido de comprar um número suficiente de baldes, tivemos que competir mentalmente com o derramamento de água, pois nossos jogadores tinham uma imaginação bem desenvolvida.

Em geral, as equipes começaram a executar tarefas não para passar todos os pontos mais rapidamente, mas para obter mais do que códigos promocionais de ouro . Chegou-se a um pedido implacável, que obviamente foi severamente reprimido. Em algum momento, acabamos com os códigos promocionais de bônus, mas as equipes não desejam obtê-los. Portanto, a conclusão é preparar mais códigos promocionais e perguntas / tarefas para recebê-los.

Talvez o momento mais memorável para mim tenha sido a chamada de um participante da equipe do governo para a equipe do operador com indignação com a qualidade do trabalho e os requisitos:

  1. Aumente a potência mais rapidamente (em algum momento, a equipe do operador, com uma grande margem de pontos de vitória, não era lucrativa para aumentá-la e mantinham a unidade com cargas baixas),
  2. É melhor regular a potência em altas cargas (já que foi com eles que os sabotadores começaram a fazer todo tipo de truques sujos, e os operadores nem sempre tiveram tempo de responder a eles).

A que os operadores responderam razoavelmente que não possuíam pontos de ação suficientes (leia-se: financiamento) para satisfazer seus desejos e ficariam felizes se a equipe do governo compartilhasse um pouco da sua parte. Infelizmente, a transferência de pontos não foi implementada, mas no futuro, diante desse precedente, certamente iremos implementá-lo. Também no futuro, seria bom adicionar bate-papo ao aplicativo para correspondência entre equipes, a fim de incentivar as equipes a interagir mais ativamente entre si.

Em geral, esta foto caracteriza bem o processo de trabalho em locais: alguém resolve a tarefa, alguém controla o reator, alguém desfruta a vida e em algum lugar no fundo um cão está escondido.

O processo


Lá está ela!


No final


Algo aconteceu, algo não. Os principais problemas não eram parâmetros do reator muito bem escolhidos, o que afetou negativamente a jogabilidade:

  1. taxa de crescimento de acidentes;
  2. inércia do reator.

O primeiro reduziu quase imediatamente o reator para 0 depois de atingir valores críticos de potência (mais de 100) e os operadores simplesmente não tiveram tempo de reagir, já que tinham apenas alguns segundos para fazer isso (embora existam exemplos em que eles conseguiram fazer isso, por exemplo, adicionando boro a núcleo do reator).

Resgate do reator

O segundo fez os eventos com rapidez suficiente e, novamente, não permitiu que os participantes avaliassem a situação e tomassem uma decisão informada. Na realidade, é claro, é provavelmente o que acontece, mas não se esqueça que as equipes ainda estavam correndo pelos locais e realizando várias tarefas, o que as distraía do quarteirão. Era necessário, no mínimo, estabelecer no programa a capacidade de controlar parâmetros em tempo real, o que não fizemos.

Como parte da missão, falhamos especificamente na questão com os adereços, como resultado disso tivemos que elaborar uma tarefa em tempo real com materiais improvisados. Bem, o próprio significado da missão foi transformado, movendo-se rapidamente pelos locais, para ser o primeiro a receber códigos promocionais para gerar pontos de bônus (ah, essa sede de lucro ...). Mas o mais importante é que, no final, temos um clima alegre, muitos momentos memoráveis, além da satisfação de nossa própria curiosidade.

As estatísticas do jogo podem ser encontradas em reactor-quest.imtqy.com , uma programação interativa (em computadores pessoais). Na parte inferior, você pode selecionar o intervalo de tempo de interesse para uma visualização mais detalhada.

O código do aplicativo está publicado no GitHub github.com/reactor-quest/reactor-quest, você pode usá-lo livremente.

Todo átomo bom e pacífico, uma equipe de jovens cientistas do IBRAE RAS!

Source: https://habr.com/ru/post/pt469345/


All Articles