Pencarian atom di taman Bitsevsky



Karena hype di mana-mana tentang Chernobyl di awal musim panas (setidaknya di industri tenaga nuklir), serta kata-kata mendengung dari digitalisasi dan gamifikasi, kami di IBRAE RAS memutuskan untuk membuat semacam aplikasi pencarian di mana operasi unit tenaga nuklir secara model dimodelkan dan dijalankan. pengujiannya di taman Bitsevsky.

Pendahuluan


Tujuan awal pembuatan aplikasi semacam itu tentu saja menarik bagi bagaimana Anda dapat dengan mudah dan mudah mensimulasikan proses mengelola objek yang sedemikian kompleks, tidak hanya dari sisi teknis, tetapi juga dari sisi psikologis (karena hubungan tiga pihak yang berbeda: operator stasiun, pemerintah dan penyabot). Tujuan lain adalah membuat orang merasa seperti salah satu pihak dalam proses tersebut, dan melihat bagaimana mereka berperilaku di tempat mereka dalam kehidupan nyata. Saya tidak berbicara tentang pendidikan dan program pendidikan, pada prinsipnya, semua peserta dalam pencarian kami kurang lebih akrab dengan bidang aktivitas manusia ini, namun demikian, Anda selalu dapat mempelajari sesuatu yang baru. Dan tentu saja, kami ingin bersenang-senang di hari-hari hangat terakhir tahun 2019 ini.

Inti dari pencarian adalah ini: para peserta dibagi menjadi tiga tim (operator stasiun, pemerintah dan penyabot), kemudian masing-masing dari mereka dikirim untuk melakukan tugas di geolokasi. Sejalan dengan berlarian dan memecahkan teka-teki, masing-masing tim bertindak pada reaktor melalui aplikasi yang berjalan di situs web. Pada saat yang sama, tim dapat mempengaruhi reaktor sampai batas tertentu, yaitu dengan mengeluarkan poin tindakan yang mereka terima setelah berhasil menyelesaikan tugas (dalam bentuk kode promosi untuk aplikasi).

Pada akhir pencarian, waktu yang dihabiskan untuk menyelesaikan pencarian disesuaikan tergantung pada seberapa sukses tim menghubungi reaktor. Saya harus segera mengatakan bahwa sebagai hasil dari pengujian pertama dan satu-satunya saat ini, semua orang berhenti memperhatikan waktu, dan hanya berjalan di sekitar tempat-tempat indah di hutan Bitsevsky, khususnya, gunung botak dan kuil Slavia lama, melakukan tugas dan menikmati matahari September yang begitu lembut dengan pemanasan dengan madu ...

Kuil Slavia Tua


Sayang matahari


Aplikasi


Aplikasi ini ditulis dengan Python. Frontend (ini adalah input / output data dari pemain) dibuat menggunakan vuejs, jquery, dan labu. Backend (logika reaktor dan pemrosesan peristiwa) ditulis dalam python murni. Komunikasi antara frontend dan backend dilakukan menggunakan database (SQLite). Basis data dibungkus dengan sqlachemy. Untuk menyebarkan aplikasi digunakan Yandex Cloud.

Ini bukan iklan.
Tetapi berkat 4000 rubel bonus yang Yandex berikan untuk menguji cloud, bonus ini sangat berguna;)



Frontend


Bagian server ditulis dengan Python (termos). Bagian klien (antarmuka untuk pemain) dibuat menggunakan vuejs, jquery, dan sedikit render templat halaman di server.
Ketika Anda pergi ke situs web, peserta diminta untuk memasukkan kode yang unik untuk setiap tim, setelah itu memasuki menu utama.

Login


Menu utama terdiri dari 5 elemen:

  1. Bagan dengan parameter reaktor
  2. Masukkan kode promosi
  3. Panel kontrol
  4. Peta
  5. Keluarlah

Di jendela tampilan grafik, pemain dapat melacak keadaan saat ini dan beberapa reaktor sebelumnya. Lihat juga tingkat pergantian kekuasaan, peluang terjadinya kecelakaan, jumlah mereka, dan juga lihat penghitung poin kemenangan.

Grafik

Di jendela untuk memasukkan kode promo. Seorang peserta dapat mengaktifkan kode promosi yang diterima dengan satu atau lain cara, sebagai suatu peraturan, setelah suatu tim lulus beberapa tes.

Kode Promosi

Status reaktor juga tersedia di panel kontrol, mirip dengan panel tampilan grafik. Kemudian tumpukan acara saat ini ditampilkan dengan indikasi nama, tim, penghitung hingga akhir acara, serta kemungkinan membatalkannya (hanya milik Anda sendiri).

Panel kontrol

Dan tentu saja aksinya sendiri. Mereka unik untuk setiap tim. Misalnya, berbagai tindakan tersedia bagi operator untuk mengontrol reaktor (batang kendali, laju aliran fluida kerja, menambahkan boron, dll.). Bagi pemerintah, ini adalah segala macam persyaratan dan pembatasan operasi unit (menambah beban, memberi tekanan pada staf stasiun). Untuk penyabot, ini adalah kegagalan pompa, operator suap, dll.

Untuk setiap tim, tersedia tindakan yang membatalkan tindakan orang lain, seperti operasi anti-teroris, memperkenalkan mata-mata ke pemerintah atau menyuap pejabat (tentu saja, ini tidak terjadi dalam kehidupan nyata, tetapi untuk keseimbangan permainan kami harus membuat penemuan).

Semua tindakan para pihak dijelaskan dalam tabel:

Meja
JudulAksesPerubahan kekuatanWaktu tindakanBiayaKomentar
kecelakaanreaktorke 0secara instanIni bekerja secara otomatis dengan probabilitas peluang parameter kecelakaan. Setiap langkah diperiksa.
lubang yodiumreaktor-0.1 / langkahsecara instanIni bekerja secara otomatis pada beban kurang dari 50%
debitadminkekuatan, kecepatan, semua penghitung ke 0, pembatalan semua tindakan saat inisecara instan
Angkat tongkatoperator+5 untuk seluruh durasi aksi5 langkah10
menurunkan batangoperator-5 untuk seluruh durasi aksi5 langkah10
meningkatkan aliranoperator+5 untuk seluruh durasi aksi10 langkah5
kurangi konsumsioperator-5 untuk seluruh durasi aksi10 langkah5
boronoperator-5 untuk seluruh durasi aksi2 langkah25
AZ-5operatordaya hingga 0secara instan100
meledakkan pompapenyabot+25 sepanjang waktu1 langkah250
hancurkan pompapenyabot+25 sepanjang waktu10 langkah50
apipenyabotke 0secara instan300
mendorong operatorpemerintah+5 untuk seluruh durasi aksi5 langkah10
viruspenyabotdari -15 hingga 15 secara kebetulan15 langkah150
sogok kepala insinyurpenyabot-20 untuk semua waktu20 langkah10
sogok kepala insinyurpenyabot+20 sepanjang waktu20 langkah10
tutup mulut tentang kecelakaan itupemerintah-1 ke konter kecelakaansecara instan75
menghemat batangpemerintah+10 untuk seluruh durasi aksi60 langkah25
melecehkan operatorpenyabot50% pembatalan operator12 langkah150
memperkenalkan mata-mata ke pemerintahpenyabot50% pembatalan pemerintah12 langkah150
operasi anti-terorispemerintah50% pembatalan penyabot12 langkah150
staf yang mengintimidasipemerintah50% pembatalan operator12 langkah150
melakukan inspeksi di stasiunoperator50% pembatalan penyabot12 langkah150
petugas suapoperator50% pembatalan pemerintah12 langkah150


Di tab peta, peta tersedia dari aplikasi Yandex Maps yang dibuat menggunakan perancang peta (untuk detail lebih lanjut lihat Mempersiapkan permainan ).

Peta


Backend


Seluruh backend ditulis dalam Python murni. Bahkan, seluruh kode terdiri dari satu objek Reaktor (reaktor, unit daya, stasiun) dengan parameter daya atau status. Setiap langkah waktu langkah (diatur secara manual, kami menetapkan 1 detik), keadaan berubah tergantung pada peristiwa yang terjadi pada langkah ini. Tumpukan acara saat ini diperbarui setiap langkah dengan mengakses database, yang pada gilirannya diisi oleh peserta game dari antarmuka aplikasi web.

Untuk kenyamanan, semua acara dikumpulkan di pabrik acara dan menerima objek reaktor dan pengenal uniknya (nomor baris dalam database) sebagai input. Karena objek kelas reaktor mengetahui segala sesuatu yang terjadi dalam aplikasi, peristiwa yang sesuai mengetahui segalanya darinya, yang membuat proses pembuatannya sangat fleksibel.

Untuk pengujian, bot juga dibuat yang bertindak sesuai dengan beberapa strategi. Untuk menggambarkan logika ini, pabrik strategi juga telah dibuat.

Sebuah pabrik juga diciptakan untuk menghitung poin, untuk memvariasikan logika penghitungan dari game ke game. Logika dasar menciptakan satu titik kemenangan pada setiap langkah waktu dan memberikannya kepada salah satu tim tergantung pada tingkat daya pada langkah itu (50-75 - operator, 75-100 - pemerintah, 0 dan lebih dari 100 - penyabot, dalam kasus lain tidak kepada siapa pun).

Quest


Persiapan



Persiapan utama terdiri dari menemukan lokasi untuk pencarian, serta pengujian awal aplikasi di laboratorium.

Untuk mempersiapkan lokasi, seminggu sebelum acara, panitia ditinggalkan di Hutan Bitsevsky. Dia berjalan di sekitar wilayah itu dan menemukan tempat-tempat yang menarik dan menarik, di setiap tempat dia melakukan tiga operasi:

  1. Saya mencatat geolokasi (menggunakan aplikasi Yandex Maps yandex.ru/maps );
  2. Kualitas jaringan yang terukur (menggunakan aplikasi Speedtest www.speedtest.net );
  3. Mengambil lokasi foto atau video.

Hasilnya, 30 lokasi dikumpulkan (10 untuk setiap tim).

Yandex Maps memungkinkan untuk menyederhanakan pembuatan peta, karena pembuat peta yandex.ru/map-constructor . Ini memungkinkan Anda untuk menambahkan lokasi Anda, zona dan semua jenis tanda ke peta. Kemudian mengintegrasikannya ke dalam aplikasi Anda dalam bentuk JavaScript atau kode iframe atau letakkan sebagai tautan, dan paling buruk, cukup cetak saja. Lokasi dapat ditambahkan dengan mengimpornya dari file XLSX, CSV, KML, GPX, atau GeoJSON. Satu-satunya ketidaknyamanan adalah ketidakmungkinan mengimpor lokasi dari peta Yandex biasa langsung ke konstruktor (setidaknya kami tidak menemukannya), saya harus menyela mereka ke dalam tabel xlsx dan sudah mengimpornya. Zona dengan kualitas jaringan yang buruk disorot dalam perancang peta sebagai area merah.

Peta


Sehari sebelum pertandingan (yah, seperti biasa) kami menguji permainan dengan 3 orang (1 dari masing-masing tim). Secara umum, tidak ada komentar khusus, kami hanya sedikit menyesuaikan perkiraan awal biaya tindakan tim. Saya segera mencatat bahwa permainan itu sendiri mengungkapkan beberapa masalah (dalam kesimpulan), dan kesimpulannya adalah bahwa kita hampir tidak bisa mengetahuinya dalam kondisi ruang rumah kaca.

Permainan


Pada pagi hari tanggal 14 September 2019, kami mengumpulkan peserta di Hutan Bitsa. Pada awalnya, atlet kami, anggota Komsomol dan hanya seorang ilmuwan yang baik melakukan latihan pagi pembakar.

Kemudian para peserta dibagi menjadi beberapa tim, memberi mereka kode promosi awal dan mengumumkan awal pertandingan.

Tim perlahan menyebar ke lokasi (sekarang saya mengerti, mungkin karena mereka mencoba mencari aplikasi di sepanjang jalan). Dalam 10-15 menit pertama, para pemain mengalami kesulitan, tetapi kemudian mereka terbiasa dan perhatian mereka beralih ke mendapatkan kode promosi.

Untuk kegembiraan yang lebih besar, kami menyoroti karakter khusus dalam hiasan kepala yang terlihat dari jauh, yang mengunjungi tim dan mengajukan pertanyaan untuk kode promosi (pada saat yang sama, ia mengoreksi tiang tembok dalam pencarian).

Spesial karakter


Saya harus mengatakan bahwa setelah sepenuhnya fokus pada aplikasi, kami sepenuhnya meninggalkan persiapan untuk pencarian, sebagai hasilnya, kami menyelesaikan bagian dari alat peraga di malam hari sebelum pencarian, dan lupa untuk membeli bagian. Misalnya, karena kami lupa membeli ember dalam jumlah yang cukup, kami harus bersaing secara mental dengan penuangan air, karena pemain kami memiliki imajinasi yang berkembang dengan baik.

Secara umum, tim mulai melakukan tugas bukan untuk melewati semua poin lebih cepat, tetapi untuk mendapatkan lebih dari kode promosi emas . Itu datang ke pengemis kurang ajar, yang tentu saja sangat ditekan. Pada titik tertentu, kode promosi bonus kami habis, tetapi tim tidak memiliki keinginan untuk mendapatkannya. Jadi kesimpulannya adalah untuk mempersiapkan lebih banyak kode promosi dan pertanyaan / tugas untuk menerimanya.

Mungkin momen yang paling berkesan bagi saya adalah panggilan dari seorang peserta dari tim pemerintah ke tim operator dengan kemarahan pada kualitas pekerjaan mereka, dan persyaratan:

  1. Tingkatkan daya lebih cepat (pada titik tertentu, tim operator, yang memiliki margin poin kemenangan besar, tidak menguntungkan untuk meningkatkannya dan mereka menjaga unit pada beban rendah),
  2. Lebih baik mengatur daya pada beban tinggi (karena dengan mereka penyabot mulai melakukan segala macam trik kotor, dan operator tidak selalu punya waktu untuk meresponsnya).

Untuk itu operator menjawab dengan masuk akal bahwa mereka tidak memiliki poin tindakan yang cukup (baca: pembiayaan) untuk memenuhi keinginan mereka dan akan senang jika tim pemerintah berbagi sedikit dari mereka sendiri. Sayangnya, transfer poin tidak diterapkan, tetapi di masa depan, mengingat preseden ini, kami pasti akan mengimplementasikannya. Juga di masa depan, akan menyenangkan untuk menambahkan obrolan ke aplikasi untuk korespondensi antara tim untuk mendorong tim untuk lebih aktif berinteraksi satu sama lain.

Secara umum, foto ini menandai proses kerja di lokasi dengan baik: seseorang menyelesaikan tugas, seseorang mengendalikan reaktor, seseorang menikmati hidup, dan di suatu tempat di latar belakang seekor anjing bersembunyi.

Prosesnya


Itu dia!


Pada akhirnya


Sesuatu terjadi, sesuatu tidak. Masalah utama bukanlah parameter reaktor yang dipilih dengan sangat baik, yang secara negatif mempengaruhi gameplay:

  1. tingkat pertumbuhan kecelakaan;
  2. inersia reaktor.

Yang pertama hampir dengan segera membuat reaktor menjadi 0 setelah mencapai nilai daya kritis (lebih dari 100) dan operator tidak punya waktu untuk bereaksi, karena mereka hanya punya beberapa detik untuk melakukannya (walaupun ada contoh ketika mereka berhasil melakukan ini, misalnya, menambahkan boron ke teras reaktor).

Penyelamatan reaktor

Yang kedua membuat acara cukup cepat dan sekali lagi tidak memungkinkan para peserta untuk menilai situasi dan membuat keputusan. Pada kenyataannya, tentu saja, ini mungkin yang terjadi, tetapi jangan lupa bahwa tim masih berlari di sekitar lokasi dan melakukan berbagai tugas, yang mengalihkan mereka dari blok. Minimal diperlukan, untuk meletakkan dalam program kemampuan untuk mengontrol parameter secara real time, yang tidak kami lakukan.

Sebagai bagian dari pencarian, kami secara khusus gagal dalam pertanyaan dengan alat peraga, sebagai akibatnya kami harus datang dengan tugas secara real time dengan bahan improvisasi. Nah, makna dari pencarian itu berubah dari bergerak cepat di sekitar lokasi untuk menjadi yang pertama yang menerima kode promosi untuk menghasilkan poin bonus (oh, haus akan keuntungan ini ...). Namun yang paling penting, pada akhirnya kami mendapat suasana ceria, banyak momen yang berkesan, serta kepuasan atas keingintahuan kami sendiri.

Statistik permainan dapat ditemukan di reactor-quest.imtqy.com , jadwal interaktif (di komputer pribadi), di bagian bawah Anda dapat memilih rentang waktu yang menarik untuk tampilan yang lebih detail.

Kode aplikasi diposting di GitHub github.com/reactor-quest/reactor-quest Anda dapat dengan bebas menggunakannya.

Semua atom yang baik dan damai, tim ilmuwan muda IBRAE RAS!

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


All Articles