Atomquest im Bitsevsky-Park



Aufgrund des allgegenwärtigen Hype um Tschernobyl im Frühsommer (zumindest in der Atomindustrie) sowie der summenden Worte der Digitalisierung und Gamifizierung haben wir bei IBRAE RAS beschlossen, eine Art Questanwendung zu erstellen, in der der Betrieb eines Kernkraftwerks konzeptionell modelliert und durchgeführt wird seine Tests im Bitsevsky Park.

Einführung


Das ursprüngliche Ziel bei der Erstellung einer solchen Anwendung ist natürlich das Interesse daran, wie Sie den Prozess der Verwaltung eines solch komplexen Objekts nicht nur technisch, sondern auch psychologisch einfach simulieren können (aufgrund der Beziehung zwischen drei verschiedenen Parteien: Stationsbetreiber, Regierung und Saboteure). Ein weiteres Ziel ist es, den Menschen das Gefühl zu geben, eine der Parteien des Prozesses zu sein, und zu sehen, wie sie sich an ihrem Platz im wirklichen Leben verhalten. Ich spreche nicht von Bildung und Bildungsprogramm. Grundsätzlich sind alle Teilnehmer unserer Suche mehr oder weniger mit diesem Bereich menschlicher Aktivitäten vertraut, aber Sie können trotzdem immer etwas Neues lernen. Und natürlich wollten wir an den letzten warmen Tagen dieses Jahres 2019 Spaß haben.

Das Wesentliche der Suche ist folgende: Die Teilnehmer werden in drei Teams aufgeteilt (Stationsbetreiber, Regierung und Saboteure), und jedes von ihnen wird geschickt, um Aufgaben an Geolokalisierungen auszuführen. Parallel zum Herumlaufen und Lösen von Rätseln wirkt jedes der Teams über eine Anwendung, die auf einer Website ausgeführt wird, auf den Reaktor. Gleichzeitig können Teams den Reaktor in begrenztem Umfang beeinflussen, indem sie Aktionspunkte ausgeben, die sie nach erfolgreichem Abschluss der Aufgaben erhalten (in Form von Aktionscodes für die Anwendung).

Am Ende der Quest wird die für den Abschluss der Quest aufgewendete Zeit angepasst, je nachdem, wie erfolgreich die Teams den Reaktor kontaktiert haben. Ich muss sofort sagen, dass als Ergebnis der ersten und einzigen Tests im Moment alle aufhörten, auf die Zeit zu achten, und einfach um die schönen Orte des Bitsevsky-Waldes gingen, insbesondere den kahlen Berg und den alten slawischen Tempel, Aufgaben erledigten und die Septembersonne genossen, die sich so sanft mit Honig erwärmte ...

Alter slawischer Tempel


Honig Sonne


App


Die Anwendung ist in Python geschrieben. Das Frontend (dies ist die Eingabe / Ausgabe von Daten vom Player) wurde mit vuejs, jquery und flask erstellt. Das Backend (Reaktorlogik und Ereignisverarbeitung) wurde in reinem Python geschrieben. Die Kommunikation zwischen Frontend und Backend erfolgte über eine Datenbank (SQLite). Die Datenbank wurde mit sqlachemy umbrochen. Zum Bereitstellen der Anwendung wurde Yandex Cloud verwendet.

Dies ist keine Werbung.
Aber dank der 4000 Bonus-Rubel, die Yandex zum Testen der Cloud gibt, war dieser Bonus sehr praktisch;)



Frontend


Der Serverteil ist in Python (Flask) geschrieben. Der Client-Teil (Schnittstelle für den Player) wurde mit vuejs, jquery und einem kleinen Rendering von Seitenvorlagen auf dem Server erstellt.
Wenn Sie auf die Website gehen, wird der Teilnehmer aufgefordert, einen für jedes Team eindeutigen Code einzugeben. Anschließend wird das Hauptmenü aufgerufen.

Login


Das Hauptmenü besteht aus 5 Elementen:

  1. Diagramme mit Reaktorparametern
  2. Geben Sie den Aktionscode ein
  3. Schalttafel
  4. Karte
  5. Geh raus

Im Grafikfenster kann der Player den aktuellen und mehrere vorherige Zustände des Reaktors verfolgen. Sehen Sie sich auch die Änderungsrate der Macht, die Wahrscheinlichkeit eines Unfalls, ihre Anzahl und die Zähler der Siegpunkte an.

Grafiken

Im Fenster zur Eingabe von Promo-Codes. Ein Teilnehmer kann einen auf die eine oder andere Weise erhaltenen Aktionscode in der Regel aktivieren, nachdem ein Team einen Test bestanden hat.

Aktionscodes

Ein Reaktorstatus ist auch im Bedienfeld verfügbar, ähnlich wie in der Grafikansicht. Anschließend wird ein Stapel aktueller Ereignisse mit einer Angabe des Namens, des Teams, des Zählers bis zum Ende des Ereignisses sowie der Möglichkeit, es abzubrechen (nur Ihre eigenen), angezeigt.

Schalttafel

Und natürlich die Aktionen selbst. Sie sind für jedes Team einzigartig. Beispielsweise steht den Bedienern eine Vielzahl von Maßnahmen zur Steuerung des Reaktors zur Verfügung (Steuerstäbe, Durchflussrate des Arbeitsmediums, Zugabe von Bor usw.). Für die Regierung sind dies alle möglichen Anforderungen und Einschränkungen für den Betrieb des Geräts (Erhöhung der Last, Druck auf das Stationspersonal). Für Saboteure ist dies das Versagen von Pumpen, Bestechungsgeldern usw.

Für jedes Team stehen Aktionen zur Verfügung, die die Aktionen anderer abbrechen, z. B. eine Anti-Terror-Operation, die Einführung eines Spions in die Regierung oder die Bestechung von Beamten (natürlich gibt es so etwas im wirklichen Leben nicht, aber um das Spiel auszugleichen, mussten wir Dinge erfinden).

Alle Aktionen der Parteien sind in der Tabelle beschrieben:

Tabelle
TitelZugangLeistungsänderungAktionszeitKostenKommentar
UnfallReaktorbis 0sofortEs arbeitet automatisch mit der Wahrscheinlichkeit des Parameters Wahrscheinlichkeit eines Unfalls. Jeder Schritt wird überprüft.
JodgrubeReaktor-0,1 / SchrittsofortEs funktioniert automatisch bei einer Last von weniger als 50%
EntladungAdminsLeistung, Geschwindigkeit, alle Zähler auf 0, Abbruch aller aktuellen Aktionensofort
Heben Sie die Stangen anBetreiber+5 für die gesamte Dauer der Aktion5 Schritte10
Senken Sie die StangenBetreiber-5 für die gesamte Dauer der Aktion5 Schritte10
Durchfluss erhöhenBetreiber+5 für die gesamte Dauer der Aktion10 Schritte5
Verbrauch reduzierenBetreiber-5 für die gesamte Dauer der Aktion10 Schritte5
BorBetreiber-5 für die gesamte Dauer der Aktion2 Schritte25
AZ-5BetreiberLeistung bis 0sofort100
Pumpe sprengenSaboteure+25 alle Zeit1 Schritt250
Pumpe abbrechenSaboteure+25 alle Zeit10 Schritt50
FeuerSaboteurebis 0sofort300
Bediener aufschiebendie Regierung+5 für die gesamte Dauer der Aktion5 Schritte10
das VirusSaboteurevon -15 bis 15 zufällig15 Schritte150
Bestechung des ChefingenieursSaboteure-20 für alle Zeiten20 Schritte10
Bestechung des ChefingenieursSaboteure+20 alle Zeit20 Schritte10
schweige über den Unfalldie Regierung-1 zum Unfallzählersofort75
Sparen Sie auf Stangendie Regierung+10 für die gesamte Dauer der Aktion60 Schritte25
Betreiber belästigenSaboteure50% Stornierung der Betreiber12 Schritte150
einen Spion in die Regierung einführenSaboteure50% Stornierung der Regierung12 Schritte150
Anti-Terror-Operationdie Regierung50% Stornierung von Saboteuren12 Schritte150
Mitarbeiter einschüchterndie Regierung50% Stornierung der Betreiber12 Schritte150
Führen Sie eine Inspektion am Bahnhof durchBetreiber50% Stornierung von Saboteuren12 Schritte150
Beamte bestechenBetreiber50% Stornierung der Regierung12 Schritte150


Auf der Registerkarte "Karte" ist eine Karte in der Yandex Maps-Anwendung verfügbar, die mit dem Karten-Designer erstellt wurde (weitere Informationen finden Sie unter Vorbereiten des Spiels ).

Karte


Backend


Das gesamte Backend ist in reinem Python geschrieben. Tatsächlich besteht der gesamte Code aus einem Reaktorobjekt (Reaktor, Leistungsteil, Station) mit einem Leistungs- oder Zustandsparameter. Bei jedem Schrittzeitschritt (manuell eingestellt, wir stellen 1 Sekunde ein) ändert sich der Status in Abhängigkeit von den Ereignissen, die bei diesem Schritt aufgetreten sind. Der Stapel aktueller Ereignisse wird bei jedem Schritt durch Zugriff auf die Datenbank aktualisiert, die wiederum von den Spielteilnehmern über die Webanwendungsoberfläche ausgefüllt wird.

Der Einfachheit halber werden alle Ereignisse in einer Ereignisfabrik gesammelt und erhalten das Reaktorobjekt und seine eindeutige Kennung (Zeilennummer in der Datenbank) als Eingabe. Da das Reaktorklassenobjekt alles weiß, was in der Anwendung geschieht, wissen Ereignisse dementsprechend alles davon, was den Prozess ihrer Erstellung sehr flexibel macht.

Zum Testen wurden auch Bots erstellt, die gemäß einer bestimmten Strategie handelten. Um diese Logik zu beschreiben, wurde auch eine Strategiefabrik erstellt.

Es wurde auch eine Fabrik zum Zählen von Punkten eingerichtet, um die Logik des Zählens von Spiel zu Spiel zu variieren. Die Grundlogik schuf zu jedem Zeitschritt einen Siegpunkt und gab ihn je nach Leistungsstufe in diesem Schritt an eines der Teams weiter (50-75 - Betreiber, 75-100 - Regierung, 0 und mehr als 100 - Saboteure, in anderen Fällen an niemanden).

Quest


Vorbereitung



Die Hauptvorbereitung bestand darin, Orte für die Suche zu finden sowie die Anwendung im Labor vorab zu testen.

Um die Orte vorzubereiten, wurde der Veranstalter eine Woche vor der Veranstaltung im Bitsevsky-Wald ausgesetzt. Er ging durch das Gebiet und fand interessante und auffällige Orte. An jedem Ort führte er drei Operationen durch:

  1. Ich habe die Geolokalisierung aufgezeichnet (mithilfe der Yandex Maps-Anwendung yandex.ru/maps ).
  2. Gemessene Netzwerkqualität (mit der Speedtest-Anwendung www.speedtest.net );
  3. Hat einen Foto- oder Videostandort aufgenommen.

Als Ergebnis wurden 30 Standorte gesammelt (10 für jedes Team).

Mit Yandex Maps konnte die Erstellung einer Karte dank des Kartenerstellers yandex.ru/map-constructor erheblich vereinfacht werden. Hier können Sie Ihren Standort, Ihre Zonen und alle Arten von Markierungen zur Karte hinzufügen. Integrieren Sie es dann in Form von JavaScript oder Iframe-Code in Ihre Anwendung oder platzieren Sie es als Link und drucken Sie es im schlimmsten Fall einfach aus. Speicherorte können durch Importieren aus einer XLSX-, CSV-, KML-, GPX- oder GeoJSON-Datei hinzugefügt werden. Die einzige Unannehmlichkeit war die Unmöglichkeit, Standorte von gewöhnlichen Yandex-Karten direkt in den Konstruktor zu importieren (zumindest haben wir sie nicht gefunden). Ich musste sie in eine xlsx-Tabelle unterbrechen und bereits importieren. Zonen mit schlechter Netzwerkqualität wurden im Karten-Designer als roter Bereich hervorgehoben.

Karte


Am Tag vor dem Spiel (na ja, wie immer) haben wir das Spiel mit 3 Personen getestet (1 von jedem Team). Im Allgemeinen gab es keine besonderen Kommentare, wir haben die vorläufige Schätzung der Kosten der Aktionen der Teams nur geringfügig angepasst. Ich stelle sofort fest, dass das Spiel selbst einige Probleme aufgedeckt hat (abschließend), und die Schlussfolgerung ist, dass wir sie unter Gewächshausraumbedingungen kaum herausfinden konnten.

Das Spiel


Am Morgen des 14. September 2019 versammelten wir uns im Bitsa-Wald. Am Anfang führten unser Athlet, Komsomol-Mitglied und nur ein guter Wissenschaftler Brandmorgenübungen durch.

Dann wurden die Teilnehmer in Teams aufgeteilt, gaben ihnen einen Start-Promotion-Code und kündigten den Start des Spiels an.

Die Teams verteilten sich langsam auf Standorte (jetzt verstehe ich, wahrscheinlich weil sie versucht haben, die Anwendung auf dem Weg herauszufinden). In den ersten 10-15 Minuten hatten die Spieler Schwierigkeiten, aber dann gewöhnten sie sich irgendwie daran und ihre Aufmerksamkeit richtete sich darauf, Promotion-Codes zu verdienen.

Für mehr Aufregung haben wir einen besonderen Charakter in einem von weitem sichtbaren Kopfschmuck hervorgehoben, der Teams besuchte und Fragen zu Aktionscodes stellte (gleichzeitig korrigierte er die Pfosten in der Quest).

Besonderes Charakter


Ich muss sagen, dass wir, nachdem wir uns voll und ganz auf die Anwendung konzentriert hatten, die Vorbereitung für die Quest komplett aufgegeben haben. Infolgedessen haben wir einen Teil der Requisiten bereits nachts vor der Quest fertiggestellt und vergessen, einen Teil zu kaufen. Zum Beispiel mussten wir aufgrund der Tatsache, dass wir vergessen hatten, eine ausreichende Anzahl von Eimern zu kaufen, mental mit dem Gießen von Wasser konkurrieren, da unsere Spieler eine gut entwickelte Vorstellungskraft hatten.

Im Allgemeinen begannen die Teams, Aufgaben zu erledigen, nicht um alle Punkte schneller zu vergeben, sondern um mehr als nur Gold- Promotion-Codes zu erhalten. Es kam zu unverschämtem Betteln, was natürlich stark unterdrückt wurde. Irgendwann sind uns die Bonus-Promotion-Codes ausgegangen, aber die Teams haben keine Lust, sie zu bekommen. Die Schlussfolgerung ist also, mehr Werbecodes und Fragen / Aufgaben für den Empfang vorzubereiten.

Der vielleicht denkwürdigste Moment für mich war der Anruf eines Teilnehmers aus dem Regierungsteam an das Betreiberteam, der über die Qualität seiner Arbeit und die Anforderungen empört war:

  1. Erhöhen Sie die Leistung schneller (irgendwann war das Team des Bedieners, das über eine große Gewinnspanne verfügte, unrentabel, um die Leistung zu erhöhen, und hielt das Gerät bei geringer Last).
  2. Es ist besser, die Leistung bei hohen Lasten zu regulieren (da die Saboteure mit ihnen alle möglichen schmutzigen Tricks machten und die Bediener nicht immer Zeit hatten, auf sie zu reagieren).

Darauf antworteten die Betreiber vernünftigerweise, dass sie nicht genügend Aktionspunkte (sprich: Finanzierung) hätten, um ihre Wünsche zu erfüllen, und würden sich freuen, wenn das Regierungsteam ein bisschen von ihren eigenen teilen würde. Leider wurde die Übertragung von Punkten nicht umgesetzt, aber angesichts dieses Präzedenzfalls werden wir sie in Zukunft sicherlich umsetzen. Auch in Zukunft wäre es schön, der Anwendung für die Korrespondenz zwischen Teams einen Chat hinzuzufügen, um die Teams zu ermutigen, aktiver miteinander zu interagieren.

Im Allgemeinen charakterisiert dieses Foto den Arbeitsprozess an Orten gut: Jemand löst die Aufgabe, jemand steuert den Reaktor, jemand genießt das Leben und irgendwo im Hintergrund versteckt sich ein Hund.

Der Prozess


Da ist sie!


Zusammenfassend


Etwas ist passiert, etwas nicht. Die Hauptprobleme waren nicht sehr gut ausgewählte Reaktorparameter, die sich negativ auf das Gameplay auswirkten:

  1. Unfallwachstumsrate;
  2. Trägheit des Reaktors.

Der erste kollabierte den Reaktor fast sofort auf 0, nachdem er kritische Leistungswerte (mehr als 100) erreicht hatte, und die Bediener hatten einfach keine Zeit zu reagieren, da sie nur wenige Sekunden Zeit hatten, dies zu tun (obwohl es Beispiele gibt, bei denen sie dies geschafft haben, zum Beispiel das Hinzufügen von Bor zu Reaktorkern).

Reaktorrettung

Die zweite machte die Veranstaltungen schnell genug und erlaubte den Teilnehmern erneut nicht, die Situation einzuschätzen und eine fundierte Entscheidung zu treffen. In der Realität ist dies wahrscheinlich der Fall, aber vergessen Sie nicht, dass die Teams immer noch an Orten herumliefen und verschiedene Aufgaben ausführten, die sie vom Block ablenkten. Es war zumindest notwendig, die Fähigkeit, Parameter in Echtzeit zu steuern, in das Programm aufzunehmen, was wir nicht getan haben.

Im Rahmen der Suche haben wir die Frage mit den Requisiten speziell nicht beantwortet, weshalb wir in Echtzeit eine Aufgabe mit improvisierten Materialien entwickeln mussten. Nun, die eigentliche Bedeutung der Quest wurde dahingehend geändert, dass man sich schnell an Orten bewegt, um als erster Promotion-Codes für die Generierung von Bonuspunkten zu erhalten (oh, dieser Durst nach Gewinn ...). Vor allem aber hatten wir am Ende eine fröhliche Stimmung, viele denkwürdige Momente sowie die Befriedigung unserer eigenen Neugier.

Die Statistiken des Spiels finden Sie in reactor-quest.imtqy.com , einem interaktiven Zeitplan (auf PCs). Unten können Sie den gewünschten Zeitbereich für eine detailliertere Ansicht auswählen.

Der Anwendungscode ist auf GitHub github.com/reactor-quest/reactor-quest veröffentlicht. Sie können ihn frei verwenden.

Alles gute und friedliche Atom, ein Team junger Wissenschaftler IBRAE RAS!

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


All Articles