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线程