匹配系统和bot运行系统


1.匹配系统1.0

1.匹配战斗力最接近的对手,这是一个异步的过程

2.http请求无法实现,一问一答访问速度快,无延迟

3.websocket,双向通讯,客户端和服务端互相通讯

4.在本地生成地图,导致生成地图信息不一样,需要将生成地图的在服务器端完成

5.FPS游戏在本地判断较多,就越容易有外挂

6.将服务器生成的地图发给用户

7.服务器等待用户输入(wating)或者bot输入

8.websocket,每来一个链接,就会在后端生成一个websocketServer实例

9.websocket使用ConcurrentHashMap来建立保证线程安全

10.websocket使用的是单例模式,

11.安全框架放行/websocket/**

websocket连接验证,使用JWT验证,解析token,如果能解析出来,就合法,否则不合法.

刚开始匹配速度太快,看不到对手是谁,可以设置两秒延迟,

创建游戏地图

只要bot不为空,就赋值给botcode,和botid,否则默认的botcode等于空,botid=-1;

nextStep需要判断是bot还是亲自出马,

12.Matching Pool

2.bot运行系统

目前使用java代码来编写bot的代码,调用joor-java-8,可以扩展为任何语言,用docker实现。

实现一个botPool线程池来一个个的运行代码。

使用restTemplate来实现微服务之间的通讯

RestTemplate是Spring框架提供的一个HTTP客户端,可以方便地进行HTTP请求和响应的处理。在微服务架构中,可以使用RestTemplate来实现不同服务之间的通信。

当一个微服务需要调用另一个微服务时,它会使用RestTemplate创建一个HTTP请求,并发送给目标微服务的HTTP服务端点。

botId等于-1就是人工出马,否则是亲自出马;

整个流程:

1.从客户端发送请求,然后到服务端,服务端将请求发送到匹配系统,匹配系统运行匹配池,匹配成功后返回到服务端,

2.然后发送到游戏地图,下一步操作来判断是人还是机器操作,

如果是机器,就直接到bot运行系统的botPool里运行代码,将结果返回到下一步操作,如果是人,等待用户键盘输入命令。

3.最后判断是否合法。

botPool继承Thread线程


  目录