Closed SokuRitszZ closed 9 months ago
用户希望可以选择自己写好的博弈代码代自己出战。
首先用户可以在前端找到一个入口选择自己的 bot 出战,通过传递 botId 来表示要出战哪个机器人。
其次,用户选择的机器人需要一个启动的时间,要等到后端把机器人全部启动起来,才能开始游戏。
然后,机器人需要等待轮到这个玩家的 turn 才能运行代码来获取决策结果,检测时机设定在AFTER_START, AFTER_STEP。
AFTER_START, AFTER_STEP
其中,机器人需要获取局面信息,至于局面信息怎么获取,需要主站后端发送一个字符串给机器人,机器人代码中解析这个字符串,转化为结构化数据。
并且,需要有一个检验输入输出的合法性的步骤,如果机器人给了非法的输入,就要结束游戏,自己要扣分,并且给对方加分。
这就是整个链路过程。
这里需要实现一个 soku-games 的 GamePlugin,统一任何游戏的核心与代码运行系统的通信链路。
soku-games
GamePlugin
因此,有如下的具体措施
@soku-games/core
用户可选择代码
需求背景
用户希望可以选择自己写好的博弈代码代自己出战。
需求分析
首先用户可以在前端找到一个入口选择自己的 bot 出战,通过传递 botId 来表示要出战哪个机器人。
其次,用户选择的机器人需要一个启动的时间,要等到后端把机器人全部启动起来,才能开始游戏。
然后,机器人需要等待轮到这个玩家的 turn 才能运行代码来获取决策结果,检测时机设定在
AFTER_START, AFTER_STEP
。其中,机器人需要获取局面信息,至于局面信息怎么获取,需要主站后端发送一个字符串给机器人,机器人代码中解析这个字符串,转化为结构化数据。
并且,需要有一个检验输入输出的合法性的步骤,如果机器人给了非法的输入,就要结束游戏,自己要扣分,并且给对方加分。
这就是整个链路过程。
重点需求方案
1. 后端与代码运行系统的通信
这里需要实现一个
soku-games
的GamePlugin
,统一任何游戏的核心与代码运行系统的通信链路。GamePlugin
感知到什么时候才可以发送局面信息给机器人再获取决策结果。因此,有如下的具体措施
@soku-games/core
加上一个接口:toString()。用于将局面信息转换成字符串。