
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 ...
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.
Menu utama terdiri dari 5 elemen:
- Bagan dengan parameter reaktor
- Masukkan kode promosi
- Panel kontrol
- Peta
- 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.
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.
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).
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:
Di tab peta, peta tersedia dari aplikasi Yandex Maps yang dibuat menggunakan perancang peta (untuk detail lebih lanjut lihat
Mempersiapkan permainan ).
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:
- Saya mencatat geolokasi (menggunakan aplikasi Yandex Maps yandex.ru/maps );
- Kualitas jaringan yang terukur (menggunakan aplikasi Speedtest www.speedtest.net );
- 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.
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).
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:
- 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),
- 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.
Pada akhirnya
Sesuatu terjadi, sesuatu tidak. Masalah utama bukanlah parameter reaktor yang dipilih dengan sangat baik, yang secara negatif mempengaruhi gameplay:
- tingkat pertumbuhan kecelakaan;
- 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).
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!
