
由于在初夏(至少在核电行业中)关于切尔诺贝利的大肆宣传,以及数字化和游戏化的
流行语 ,我们在
IBRAE RAS决定创建某种
探寻应用程序,在此应用程序中概念性地建模和执行了核电装置的运行在Bitsevsky公园进行测试。
介绍性
创建这样一个应用程序的最初目标当然是感兴趣的是,您不仅可以从技术上而且可以从心理方面简单而轻松地模拟管理这样一个复杂对象的过程(由于站点运营商,政府和破坏者三方的关系)。 另一个目标是使人们感觉自己像是流程的当事方,并观察他们在现实生活中的表现。 我并不是在谈论教育和教育计划,原则上,我们追求的所有参与者或多或少都对人类活动领域有所了解,但是,您始终可以学习新的知识。 当然,我们希望在2019年的最后温暖的日子里玩得开心。
任务的实质是:将参与者分为三个团队(站点运营商,政府和破坏者),然后将他们每个派遣去执行地理位置任务。 与四处奔跑和解决难题并行,每个团队都通过在网站上运行的应用程序对反应堆进行操作。 同时,团队可以在一定程度上影响反应堆,即花费在成功完成任务后收到的行动要点(以应用程序的促销代码形式)。
任务结束时,将根据团队与反应堆联系的成功程度来调整完成任务所需的时间。 我必须马上说,由于此刻的第一次也是唯一的测试,每个人都停止了关注时间,只是漫步在Bitsevsky森林的美丽地方,特别是秃头山和古老的斯拉夫神庙,执行任务并享受了九月的阳光,所以蜂蜜如此柔和地温暖...
应用程式
该应用程序是用Python编写的。 前端(这是来自播放器的数据输入/输出)是使用vuejs,jquery和flask创建的。 后端(反应堆逻辑和事件处理)是用纯Python编写的。 前端和后端之间的通信是使用数据库(SQLite)进行的。 该数据库用sqlachemy包装。 要部署使用Yandex Cloud的应用程序。
这不是广告。但是感谢Yandex为测试云提供的4000卢布奖金,这个奖金非常方便;)

前端
服务器部分是用Python(烧瓶)编写的。 客户端部分(播放器的界面)是使用vuejs,jquery和服务器上的页面模板的少量渲染创建的。
当您访问网站时,要求参与者输入每个团队唯一的代码,然后进入主菜单。
主菜单包含5个元素:
- 带有反应堆参数的图表
- 输入促销代码
- 控制面板
- 地图
- 外出
在图表查看窗口中,玩家可以跟踪反应堆的当前状态和几个先前状态。 还要查看功率变化的速度,发生事故的机会,发生的次数,以及获胜点。
在用于输入促销代码的窗口中。 在团队通过某种测试后,参与者通常可以激活以一种或另一种方式收到的促销代码。
与图形视图面板类似,控制面板中也可以提供反应堆状态。 然后,将显示一堆当前事件,并显示名称,团队,计数器,直到事件结束,以及取消事件的可能性(仅由您自己决定)。
当然还有行动本身。 它们对于每个团队都是唯一的。 例如,操作员可以使用多种动作来控制反应堆(控制棒,工作流体的流量,添加硼等)。 对于政府而言,这是对设备运行的各种要求和限制(增加负载,给加油站工作人员带来压力)。 对于破坏者而言,这是水泵,贿赂操作员等的故障。
对于每个团队,都有可以取消其他团队行动的行动,例如反恐行动,向政府介绍间谍或贿赂官员(当然,现实生活中没有这种事情,但是为了平衡游戏,我们必须发明一些东西)。
下表描述了各方的所有操作:
在“地图”选项卡中,可以从使用地图设计器创建的Yandex Maps应用程序中获取地图(有关更多详细信息,请参见
为游戏做准备 )。
后端
整个后端都是用纯Python编写的。 实际上,整个代码由一个具有功率或状态参数的Reactor对象(电抗器,功率单元,电站)组成。 每一步时间步长(手动设置,我们设置为1秒),状态都会根据在此步骤发生的事件而改变。 当前事件的堆栈通过访问数据库的每一步进行更新,而数据库又由游戏参与者从Web应用程序界面中填充。
为了方便起见,所有事件都收集在事件工厂中,并接收反应堆对象及其唯一标识符(数据库中的行号)作为输入。 由于反应堆类对象知道应用程序中发生的所有事情,因此事件也相应地从中知道一切,这使得创建它们的过程非常灵活。
为了进行测试,还创建了根据某些策略起作用的机器人。 为了描述这些逻辑,还创建了一个策略工厂。
还创建了一个工厂来计数点数,以改变游戏之间的计数逻辑。 基本逻辑在每个步骤中都创造了一个胜利点,并根据该步骤中的力量水平将其分配给其中一个团队(50-75-操作员,75-100-政府,0和超过100-破坏者,在其他情况下则没有人)。
追求
准备工作
主要准备工作包括寻找任务的位置,以及在实验室中对该应用程序进行初步测试。
为了准备地点,在活动开始前一周,组织者被遗弃在Bitsevsky森林中。 他在该领土上走来走去,发现了有趣而引人注目的地方,在每个地方他都执行了三个操作:
- 我记录了地理位置(使用Yandex Maps应用程序yandex.ru/maps );
- 测得的网络质量(使用Speedtest应用程序www.speedtest.net );
- 拍摄了照片或视频位置。
结果,收集了30个地点(每个团队10个地点)。
借助yandex.ru/map-constructor地图构建器,Yandex Maps可以极大地简化地图的创建。 它允许您将位置,区域和各种标记添加到地图。 然后以JavaScript或iframe代码的形式将其集成到您的应用程序中,或将其作为链接放置,最糟糕的是,仅打印它。 可以通过从XLSX,CSV,KML,GPX或GeoJSON文件导入位置来添加位置。 唯一的不便是无法将普通Yandex映射中的位置直接导入到构造函数中(至少我们没有找到它),我不得不将其中断到xlsx表中并已经将其导入。 网络质量较差的区域在地图设计器中突出显示为红色区域。
比赛的前一天(和往常一样),我们与3个人(每队1个人)一起测试了比赛。 总的来说,没有什么特别的评论,我们只对团队成本进行了初步估算。 我马上注意到游戏本身(在结论中)发现了一些问题,结论是我们很难在温室条件下找到它们。
游戏
2019年9月14日上午,我们聚集了比塔森林(Bitsa Forest)的参与者。 一开始,我们的运动员,Komsomol成员和一名优秀的科学家进行了燃烧性早操。
然后将参与者分成团队,给他们一个开始的促销代码,并宣布比赛开始。
团队慢慢分散到各个地点(据我所知,可能是因为他们试图一路搞清楚应用程序)。 在开始的10-15分钟内,玩家遇到了困难,但是后来他们习惯了,他们的注意力转向了获取促销代码。
为了更加兴奋,我们在远处可见的头饰中突出了一个特殊字符,他参观了球队并询问了促销代码的问题(与此同时,他更正了任务中的门框)。
我必须说,在完全专注于应用程序之后,我们完全放弃了任务的准备工作,结果,我们在任务之前的晚上已经完成了部分道具,而忘记了购买部分。 例如,由于我们忘记购买足够数量的水桶,因此我们必须在精神上与倒水竞争,因为我们的球员具有丰富的想象力。
通常,团队开始执行任务不是为了更快地通过所有点,而是要获得不仅仅是
金牌促销代码的任务。 乞imp乞讨,当然被严厉压制。 在某个时候,我们已经用完了奖金促销代码,但各团队并不希望得到它们。 因此,结论是准备更多的促销代码和问题/任务以接收它们。
对我而言,最难忘的时刻可能是政府团队的参与者召集操作员团队,他们对他们的工作质量和要求感到愤慨:
- 更快地增加功率(在某个时候,拥有很大胜利分的运营商团队无法增加利润,因此他们将装置保持在低负荷状态),
- 最好在高负载下调节功率(因为破坏者开始与他们合作,进行各种肮脏的s俩,而操作员并不总是有时间对其作出反应)。
运营商对此做出了合理的答复,他们没有足够的行动要点(请参阅:融资)来实现自己的意愿,如果政府团队分享自己的观点,他们将感到高兴。 不幸的是,积分的转让没有实现,但是在将来,鉴于这一先例,我们一定会实现。 同样在将来,最好将聊天添加到应用程序中以进行团队之间的通信,以鼓励团队之间更积极地互动。
通常,这张照片很好地描绘了工作地点的特征:有人解决了任务,有人控制了反应堆,有人享受生活,而狗在背景中的某个地方躲藏着。
最后
发生了什么,没有发生。 主要问题不是很好选择的反应堆参数,这会对游戏玩法产生负面影响:
- 事故增长率
- 反应堆的惯性
第一个反应堆在达到临界功率值(超过100个)后几乎立即将反应堆坍塌为0,操作人员根本没有时间做出反应,因为他们只有几秒钟的时间来进行反应(尽管有一些实例设法做到这一点,例如向反应堆中添加硼)。反应堆堆芯)。
第二个事件使事件足够快,并且再次不允许参与者评估情况并做出明智的决定。 当然,实际上可能发生了这种情况,但不要忘记,团队仍在各地运行并执行各种任务,这分散了他们的注意力。 至少有必要使程序具有实时控制参数的能力,而我们没有这样做。
作为探索的一部分,我们特别用道具使问题未能通过,结果我们不得不用即兴制作的材料实时提出任务。 好吧,这项任务的意义已经从快速在各地移动而变,以便第一个获得用于生成奖励积分的促销代码(哦,这是对利润的渴求...)。 但最重要的是,最终我们获得了愉悦的心情,许多令人难忘的时刻以及对自己好奇心的满足。
游戏的统计信息可以在
react-quest.imtqy.com (在个人计算机上的交互式时间表)中找到,在底部,您可以选择感兴趣的时间范围以获取更详细的视图。
该应用程序代码发布在GitHub
github.com/reactor-quest/reactor-quest上,您可以自由使用它。
一群美好而和平的原子,一群年轻的科学家IBRAE RAS!
