CN112044057A - 一种游戏状态监测方法和装置 - Google Patents
一种游戏状态监测方法和装置 Download PDFInfo
- Publication number
- CN112044057A CN112044057A CN202010981351.0A CN202010981351A CN112044057A CN 112044057 A CN112044057 A CN 112044057A CN 202010981351 A CN202010981351 A CN 202010981351A CN 112044057 A CN112044057 A CN 112044057A
- Authority
- CN
- China
- Prior art keywords
- user
- client
- game
- target
- target user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 136
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000012806 monitoring device Methods 0.000 claims abstract description 7
- 230000004044 response Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008859 change Effects 0.000 abstract description 21
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 241001178520 Stomatepia mongo Species 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/45—Controlling the progress of the video game
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种游戏状态监测方法和装置,所述方法包括:服务器接收游戏中的第一用户的客户端发送的用户监测请求;响应用户监测请求确定第一目标用户和第二目标用户;调用预设的观察者组件,将第一用户设置为观察者对象,将第一目标用户设置为第一用户的被观察者对象,以及设置第一用户观察第一目标用户的游戏状态的观察事件,以使第一用户的客户端监测第一目标用户的游戏状态;生成针对第二目标用户的游戏状态的回复消息,以及向第一用户的客户端返回所述回复消息。通过调用预设的观察者组件对被观察者以及观察者的设置,以及第一用户的客户端本地缓存的缓存数据,实现对附近的目标用户的游戏状态变化进行感知。
Description
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种游戏状态监测方法和一种游戏状态监测装置。
背景技术
LBS(Location Based Service)是一套基于地理位置的服务,可以向各个游戏提供查找附近的玩家和反向地理编码等服务,同时提供了一种不依赖于任何第三方服务的用户定位方案,从而大幅提高了查询效率。
当客户端需要查询附近的人的信息时,传统的做法是先去获取地理位置信息,然后向服务端发起请求,即服务端在向LBS查询得到附近的玩家ID之后,还需要查询这些玩家游戏内的状态,再将针对游戏内玩家的状态返回给客户端。整个一套流程走下来,耗时比较长,玩家体验较差,同时由于参与多人互动联网类游戏的玩家数量较多,如果每次都向LBS请求的话,查询压力也会比较大,且向LBS的请求只能获得玩家的附近有哪些人,玩家游戏内的状态还需要游戏自己来维护。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种游戏状态监测方法和相应的一种游戏状态监测装置。
为了解决上述问题,本发明实施例公开了一种游戏状态监测方法,所述方法包括:
服务器接收游戏中的第一用户的客户端发送的用户监测请求;
响应所述用户监测请求,确定第一目标用户和第二目标用户;所述服务器不具有与所述第一目标用户对应的满足预设要求的缓存数据;所述服务器具有与所述第二目标用户对应的满足预设要求的缓存数据;
调用预设的观察者组件,将所述第一目标用户设置为所述第一用户的被观察者对象,将所述第一用户设置为观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息从位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
可选地,所述响应所述用户监测请求,确定第一目标用户,包括:
响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态;所述登陆状态包括在线状态或离线状态;
将登陆状态为在线状态的当前的第二用户确定为第一目标用户。
可选地,所述响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态,包括:
响应所述用户监测请求,检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
若不具有在先查找的第二用户的缓存数据,则调用预设服务获取当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
可选地,所述响应所述用户监测请求,确定第二目标用户,包括:
响应所述用户监测请求查找游戏中当前的第二用户,以及检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
若具有所述在先查找的第二用户的缓存数据,且所述在先查找的第二用户的缓存数据的存储时间未超过预设时长,则将在先查找的第二用户作为当前的第二用户,且确定所述当前的第二用户为第二目标用户。
可选地,还包括:
获取所述第一目标用户的用户信息;所述用户信息包括所述第一目标用户的用户名称、所述第一目标用户的地理位置信息以及所述目标用户的游戏进程信息;
向所述第一用户的客户端发送所述第一目标用户的用户信息,以使所述第一用户的客户端将所述第一目标用户的用户信息进行存储。
可选地,所述用户监测请求包括所述第一用户的地理位置信息,所述地理位置信息由所述第一用户的客户端在检测到所述第一用户具有预设用户意图时获得;所述调用预设服务获取当前的第二用户,包括:
调用预设的地理位置服务,根据所述第一用户的地理位置信息确定当前的第二用户。
可选地,还包括:
当被设置为被观察者对象的第三用户离线后,注销对所述第三用户设置的被观察者对象。
可选地,还包括:
当离线状态的第四用户变为在线状态后,获取所述第四用户对应的观察信息;
根据所述观察信息,确定观察所述第四用户的第五用户;
将所述第五用户设置为所述第四用户的观察者对象,并设置针对所述第四用户的游戏状态的观察事件,以使所述第五用户的客户端监测所述第四用户的游戏状态。
可选地,还包括:
获取所述第一目标用户以及所述第二目标用户的联系信息;
向所述第一用户的客户端发送所述第一目标用户以及所述第二目标用户的联系信息。
本发明实施例还公开了一种游戏状态监测装置,应用于服务器,所述装置包括:
用户监测请求接收模块,用于接收游戏中的第一用户的客户端发送的用户监测请求;
用户监测请求响应模块,用于响应所述用户监测请求,确定第一目标用户和第二目标用户;所述服务器不具有与所述第一目标用户对应的满足预设要求的缓存数据;所述服务器具有与所述第二目标用户对应的满足预设要求的缓存数据;
游戏状态监测模块,用于调用预设的观察者组件,将所述第一用户设置为观察者对象,将所述第一目标用户设置为所述第一用户的被观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
回复消息返回模块,用于生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息从位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
可选地,所述用户监测请求响应模块包括:
第一用户监测请求响应子模块,用于响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态;所述登陆状态包括在线状态或离线状态;
第一目标用户确定子模块,用于将登陆状态为在线状态的当前的第二用户确定为第一目标用户。
可选地,所述第一用户监测请求响应子模块包括:
缓存数据检测单元,用于响应所述用户监测请求,检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
登陆状态第一查询单元,用于若不具有在先查找的第二用户的缓存数据,则调用预设服务获取当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
可选地,所述用户监测请求响应子模块还包括:
登陆状态第二查询单元,用于若在先查找的第二用户的缓存数据的存储时间超过预设时长,则将在先查找的第二用户作为当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
可选地,所述用户监测请求响应模块包括:
第二用户监测请求响应子模块,用于响应所述用户监测请求查找游戏中当前的第二用户,以及检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
第二目标用户确定子模块,用于若具有所述在先查找的第二用户的缓存数据,且所述在先查找的第二用户的缓存数据的存储时间未超过预设时长,则将在先查找的第二用户作为当前的第二用户,且确定所述当前的第二用户为第二目标用户。
可选地,所述用户监测请求响应模块还包括:
用户信息获取子模块,用于获取所述第一目标用户的用户信息;所述用户信息包括所述第一目标用户的用户名称、所述第一目标用户的地理位置信息以及所述第一目标用户的游戏进程信息;
用户信息存储子模块,用于向所述第一用户的客户端发送所述第一目标用户的用户信息,以使所述第一用户的客户端将所述第一目标用户的用户信息进行存储。
可选地,所述用户监测请求包括所述第一用户的地理位置信息,所述地理位置信息由所述第一用户的客户端在检测到所述第一用户具有预设用户意图时获得;所述登陆状态第一查询单元包括:
第二用户确定子单元,用于调用预设的地理位置服务,根据所述第一用户的地理位置信息确定当前的第二用户。
可选地,还包括:
被观察者对象注销模块,用于当被设置为被观察者对象的第三用户离线后,注销对所述第三用户设置的被观察者对象。
可选地,还包括:
观察信息获取模块,用于当离线状态的第四用户变为在线状态后,获取所述第四用户对应的观察信息;
第五用户确定模块,用于根据所述观察信息,确定观察所述第四用户的第五用户;
第五用户监测模块,用于将所述第五用户设置为所述第四用户的观察者对象,并设置针对所述第四用户的游戏状态的观察事件,以使所述第五用户的客户端监测所述第四用户的游戏状态。
可选地,还包括:
联系信息获取模块,用于获取所述第一目标用户以及所述第二目标用户的联系信息;
联系信息发送模块,用于向所述第一用户的客户端发送所述第一目标用户以及所述第二目标用户的联系信息。
本发明实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述游戏状态监测方法的步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述游戏状态监测方法的步骤。
本发明实施例包括以下优点:
本发明实施例提出的游戏状态监测方法和装置,可以应用于服务器,服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,在响应该用户监测请求确定在服务器中不具有满足预设要求的缓存数据所对应的第一目标用户,以及在服务器中具有满足预设要求的缓存数据所对应的第二目标用户之后,可以通过调用预设的观察者组件将附近的第一目标用户作为被观察者对象,且对被观察者对象的游戏状态的观察事件进行设置,以便通过观察者对象的客户端对被观察者对象的游戏状态进行监测,以及可以生成针对第二目标用户的游戏状态的回复消息,以使第一用户的客户端可以从本地缓存数据中获取所述第二目标用户的登陆状态,即通过调用预设的观察者组件对被观察者以及观察者的设置,以及第一用户的客户端本地缓存的缓存数据,实现对附近的目标用户的游戏状态变化进行感知。
附图说明
图1是本发明的一种游戏状态监测方法实施例的步骤流程图;
图2是本发明的另一种游戏状态监测方法实施例的步骤流程图;
图3是本发明的另一种游戏状态监测方法实施例的步骤流程图;
图4是本发明实施例中的一种游戏状态监测方法的应用场景图;
图5是本发明的一种游戏状态监测装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心思想是通过调用观察者模式提供的一种通用的观察者组件,观察者组件可以用于设置观察事件,以感知被观察者对象针对游戏状态的状态变化,即当被观察者对象,这里指的是目标用户有状态变化事件发生时,观察者组件可以将针对被观察者对象(即目标用户)的状态变化事件通知给观察者对象,实现观察者对象对被观察者对象的状态变化事件进行监测。
参照图1,示出了本发明的一种游戏状态监测方法实施例的步骤流程图,应用于服务器,具体可以包括如下步骤:
步骤101,服务器接收游戏中的第一用户的客户端发送的用户监测请求;
在本发明的一种实施例中,服务器可以与客户端通信连接,服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,以便对接收到的用户监测请求进行响应,查找并确定游戏中的目标用户。
其中,客户端可以是用户用于进行游戏的使用端,即游戏客户端,指的是用户使用游戏账号进行登录的客户端,其可以用于连接相应的服务器为用户进行游戏相关服务;服务器可以是为用户游戏客户端提供游戏相关服务所对应的游戏服务器,游戏服务器可以包括用户在通过游戏客户端进行游戏的登录之后,为游戏客户端提供角色选取以及一些常规玩法的大厅服务器,还可以包括用户在通过游戏客户端进行游戏的登录之后,为游戏客户端提供竞技比赛类玩法的战斗服务器等,对此,本发明实施例不加以限制。
需要说明的是,游戏客户端可以运行在终端,终端可以包括个人电脑、手机、笔记本电脑等电子设备,且终端的操作系统可以为安卓系统、IOS系统或Windows系统,对此,本发明实施例不加以限制。
步骤102,响应所述用户监测请求,确定第一目标用户和第二目标用户;
在本发明的一种实施例中,在接收游戏中的第一用户的客户端发送的用户监测请求之后,服务器可以对接收到的用户监测请求进行响应,并对游戏中的目标用户进行查找以及确定,以便通过调用观察者组件实现对目标用户的游戏状态的监测。
在实际应用中,服务器所响应的用户监测请求可以是由客户端生成并发送的,客户端生成的用户监测请求可以是针对目标用户进行监测的请求,且客户端所属的第一用户与服务器查找的目标用户需要位于同一游戏中,即服务器响应用户监测请求的目的是为了查找与第一用户位于同一游戏的目标用户,以便第一用户对目标用户的游戏状态进行监测。
服务器可以对用户的相关信息进行缓存得到缓存数据,查找与第一用户位于同一游戏的目标用户,所查找以及确定的目标用户的类型可以按照缓存数据进行确定,其中,所查找到的在服务器中不具有满足预设要求的缓存数据,其所对应的目标用户可以为第一目标用户,所查找到的具有满足预设要求的缓存数据所对应的目标用户可以为第二目标用户。
步骤103,调用预设的观察者组件,将所述第一用户设置为观察者对象,将所述第一目标用户设置为所述第一用户的被观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
在本发明的一种实施例中,服务器在对游戏中的第一用户的客户端发送用户监测请求进行响应,并对与第一用户位于同一游戏中的目标用户进行查找与确定之后,在一种情况下,可以查找到第一目标用户,此时可以调用预设的观察者组件,并通过观察者组件设置第一用户为观察者对象,以及设置第一目标用户为第一用户的被观察者对象,并设置针对第一目标用户的游戏状态的观察事件,以使第一用户的客户端监测被观察者对象,即第一目标用户的游戏状态。在实际应用中,服务器通过调用预设的观察者组件,并设置针对被观察者对象的游戏状态的观察事件,设置的观察事件可以具有针对被观察者对象的游戏状态的特定属性;游戏状态可以包括在线或者离线等状态,那么针对被观察者对象的游戏状态的特定属性也可以包括在线或者离线等属性信息,其中,针对游戏状态的特定属性可以使用特定属性值进行表示,例如,当被观察者对象的游戏状态为在线时,其对应的特定属性值可以为1;当被观察者对象的游戏状态为离线时,其对应的特定属性值可以为0。
需要说明的是,针对被观察者对象的观察事件除了可以包括游戏状态的特定属性以外,还可以包括被观察者对象参与游戏的游戏进程的特定属性、游戏进展的特定属性等,对于上述关于被观察者对象的观察事件所包含的特定属性以及其特定数据的表示方式,本发明实施例对此不加以限制。
其中,预设的观察者组件可以是能够提供事件通知机制的模块,事件通知机制指的是允许某个对象监听另外一个对象的特定属性的改变,并在改变时可以接收到通知,且其针对的对象是属性。
在本发明实施例的应用中,进行监听的某个对象(即观察者对象)可以是监测第一目标用户的第一用户,被监听的另一个对象(即被观察者对象)可以是被第一用户监测的第一目标用户,那么被监听的另一个对象的特定属性可以是针对第一目标用户游戏内的游戏状态,即当被监听的第一目标用户游戏内的游戏状态发生改变时,进行监听的第一用户可以接收到针对第一目标用户的游戏状态发生改变的通知。
步骤104,生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息从位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
服务器在对游戏中的第一用户的客户端发送用户监测请求进行响应,并对与第一用户位于同一游戏中的目标用户进行查找与确定之后,在另一种情况下,可以查找到具有满足预设要求的缓存数据的第二目标用户,由于第二目标用户的缓存数据满足预设要求,此时可以生成针对查找到的第二目标用户的回复信息,并向第一用户的客户端返回所生成的回复信息,以通过回复信息告知第一用户的客户端可以从本地缓存数据中获取第二目标用户的登陆状态,以得到第二目标用户的游戏状态。
在本发明的实施例中,服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,在响应该用户监测请求确定不具有满足预设要求的缓存数据的第一目标用户,以及具有满足预设要求的缓存数据的第二目标用户之后,可以通过调用预设的观察者组件将附近的目标用户作为被观察者对象,且对被观察者对象的游戏状态的观察事件进行设置,以便通过观察者对象的客户端对被观察者对象的游戏状态进行监测,以及可以生成针对第二目标用户的的游戏状态的回复消息,以使第一用户的客户端可以从本地缓存数据中获取所述第二目标用户的登陆状态,即通过调用预设的观察者组件对被观察者以及观察者的设置,以及第一用户的客户端本地缓存的缓存数据,实现对附近的目标用户的游戏状态变化进行感知。
参照图2,示出了本发明的另一种游戏状态监测方法实施例的步骤流程图,应用于服务器,具体可以包括如下步骤:
步骤201,接收游戏中的第一用户的客户端发送的用户监测请求;
在本发明的一种实施例中,客户端为了对目标用户进行监测,可以生成用于请求监测目标用户的用户监测请求,此时为客户端提供相关服务的服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,以便对接收到的用户监测请求进行响应,查找并确定游戏中的目标用户。
步骤202,响应用户监测请求查找游戏中不具有满足预设要求的缓存数据的第一目标用户;
在实际应用中,服务器在接收客户端发送的针对请求监测目标用户的用户监测请求之后,可以响应用户监测请求,并对游戏中不具有满足预设要求的缓存数据的第一目标用户进行查找以及确定,以便通过调用观察者组件实现对目标用户的游戏状态的监测。其中,服务器不具有与第一目标用户对应的满足预设要求的缓存数据。
在本发明的一种实施例中,步骤202可以包括如下子步骤:
子步骤S11,响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态;所述登陆状态包括在线状态或离线状态;
其中,在对用户监测请求进行响应,并对目标用户进行查找以及确定的过程中,服务器首先可以对游戏中当前的第二用户进行查找,然后对查找到的当前的第二用户的登陆状态进行确定,以便根据登陆状态从当前的第二用户中确定第一目标用户。
具体的,游戏中当前的第二用户与请求监测第一目标用户的第一用户位于同一游戏中,第二用户可以是除了第一用户以外,基于第一用户的地理位置附近的其他用户,即需要对第一用户附近的其他用户的登陆状态进行确定,其中,登陆状态可以包括第二用户针对游戏的在线状态或离线状态。
需要说明的是,服务器所查找的当前的第二用户可以为多个,且其查找得到的第二用户与第二用户的登陆状态之间的表现形式可以是以附近用户列表或附近用户信息的形式,对此,本发明实施例不加以限制。
在本发明的一种实施例中,子步骤S11可以包括如下子步骤:
子步骤S111,响应所述用户监测请求,检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
在实际应用中,当服务器响应第一用户的客户端发送的用户监测请求,并对游戏中当前的第二用户进行查找以及对第二用户的登陆状态进行确定时,可以对在先查找的第二用户的缓存数据进行判断,以便根据判断结果对第二用户的登陆状态进行确定。
具体的,对在先查找的第二用户的缓存数据进行判断,以通过对第二用户的缓存数据的判断结果判断第二用户的缓存数据是否满足预设要求,可以表现为判断是否存在针对第二用户的缓存数据,以及判断针对第二用户的缓存数据的存储时间是否超过预设时长。其中,针对第二用户的缓存数据可以包括第二用户的用户信息,第二用户的游戏进程信息,第二用户的登陆状态信息等;预设时长可以根据游戏时长进行确定,也可以按照实际需要进行设置,对此,本发明实施例不加以限制。
子步骤S112,若不具有在先查找的第二用户的缓存数据,则调用预设服务获取当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态;
在本发明的一种实施例中,缓存数据满足的预设要求可以是服务器具有在先查找的第二用户的缓存数据,且在先查找的第二用户的缓存数据的存储时间未超过预设时长,那么对在先查找的第二用户的缓存数据进行判断,其判断结果可以出现第一种情况,在这种情况下,服务器不具有在先查找的第二用户的缓存数据,即表示服务器的缓存中不具有针对第二用户可以使用的缓存数据,且不确定在先查找的第二用户是否为第一用户附近的用户,此时可以调用预设服务对当前的第二用户进行重新获取,以及从预设游戏数据库查询重新获取的当前的第二用户的登陆状态,以便根据登陆状态从当前的第二用户中确定第一目标用户。
其中,预设服务可以指的是预设的地理位置服务,由于在通过调用预设的地理位置服务对当前的第二用户进行重新获取时,只能获取到第二用户的游戏ID,而针对第二用户的其他信息需要从预设游戏数据库中进行查询;从预设游戏数据库进行,主要可以通过从Mongo数据库(指的是一个基于分布式文件存储的开源数据库系统)中对当前的第二用户的其他信息进行查询,例如第二用户的登陆状态以及第二用户的游戏进程信息等。
需要说明的是,所调用的预设的地理位置服务LBS,可以是一种通用的地理位置服务,也可以是一种游戏商内部使用的地理位置服务,对此,本发明实施例不加以限制。
在一种优选的实施例中,所述用户监测请求包括所述第一用户的地理位置信息;子步骤S112可以包括如下子步骤:
子步骤S1121,调用预设的地理位置服务,根据所述第一用户的地理位置信息确定当前的第二用户。
具体的,服务器从第一用户的客户端接收的用户监测请求可以包括第一用户的地理位置信息,由于第二用户可以是除了第一用户以外,基于第一用户的地理位置附近的其他用户,可以调用预设的地理位置服务,并根据第一用户的地理位置信息,对当前的第二用户进行重新获取。在一种优选的实施例中,用户监测请求所包括的第一用户的地理位置信息的获取方式,可以是第一用户的客户端通过LBS地理位置服务集成于UniSDK的接口进行获取,且可以是由第一用户的客户端在检测到第一用户具有预设用户意图时获得。为了降低客户端请求第一用户附近的用户(即第二用户)时的返回时延,客户端可以在第一用户即将使用该功能时预先获取第一用户的地理位置信息,其中,假设用于获取地理位置信息的功能可以存在于多级UI界面(User Interface,用户界面),预设用户意图可以表现为针对UI界面的打开操作,当打开第一级UI界面时,可以预先获取第一用户的地理位置信息并缓存至本地;当无法预测第一用户是否需要使用该功能时,可以在第一用户在客户端登录游戏账号时,或者在登录之后每隔一定的时间间隔(即预设第一时间间隔)对第一用户的地理位置信息进行预先获取以及缓存至本地,以便在第一用户的客户端向服务器发起针对第一用户附近的用户的请求时,可以直接使用预先本地缓存的地理位置信息,直接将客户端查询地理位置信息的延时降低为0。
同时,上述通过预先对地理位置信息进行处理以及预先缓存至本地的机制,不仅可以降低客户端请求第一用户附近的用户(即第二用户)时的返回时延,还可以降低对LBS请求的QPS(Queries-per-second,每秒查询率),即降低用于查询第一用户附近用户的查询服务器在规定时间内所处理的流量。
子步骤S113,若在先查找的第二用户的缓存数据的存储时间超过预设时长,则将在先查找的第二用户作为当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
在本发明的一种实施例中,缓存数据满足的预设要求可以是服务器具有在先查找的第二用户的缓存数据,且在先查找的第二用户的缓存数据的存储时间未超过预设时长,那么对在先查找的第二用户的缓存数据进行判断,其判断结果可以出现第二种情况,在这种情况下,服务器具有在先查找的第二用户的缓存数据,但在先查找的第二用户的缓存数据的存储时间超过预设时长,即表示服务器的缓存中具有在先查找的第二用户的游戏ID,但不具有针对第二用户除了游戏ID以外可以使用的缓存数据,例如第二用户的登陆状态信息以及游戏进程信息等,此时可以将在先查找的第二用户作为当前的第二用户,即已确定在先查找的第二用户为第一用户附近的用户(即当前的第二用户)。
由于已确定在先查找的第二用户为第一用户附近的用户,且已知当前的第二用户的游戏ID,此时可以直接从Mongo数据库的游戏数据库查询当前的第二用户的最新的登陆状态以及游戏进程信息。
子步骤S12,将登陆状态为在线状态的当前的第二用户确定为第一目标用户。
在本发明的一种实施例中,在对用户监测请求进行响应,并对第一目标用户进行查找以及确定的过程中,服务器在对游戏中当前的第二用户进行查找,并对查找到的当前的第二用户的登陆状态进行确定之后,可以根据登陆状态从当前的第二用户中确定第一目标用户。
在实际应用中,第二用户的登陆状态可以包括在线状态以及离线状态,当所确定当前的第二用户的登陆状态为在线状态,此时可以将该当前的第二用户确定为第一用户请求监测的第一目标用户。
步骤203,获取所述第一目标用户的联系信息;
步骤204,向所述第一用户的客户端发送所述第一目标用户的联系信息;
在本发明的一种实施例中,在对第一目标用户进行确定之后,可以获取目标用户的联系信息,并向第一用户的客户端发送第一目标用户的联系信息,以便第一用户的客户端对目标信息进行明确。
具体的,目标用户的联系信息可以包括第一目标用户的ID、登陆状态、游戏进程等信息,第一用户的客户端在接收第一目标用户的联系信息之后,可以通过客户端进行解析,并将解析后的关于第一目标用户的信息展示在客户端界面,以告知第一用户。
在一种优选的实施例中,获取所述第一目标用户的用户信息;所述用户信息包括所述第一目标用户的用户名称、所述第一目标用户的地理位置信息以及所述第一目标用户的游戏进程信息;将所述第一目标用户的用户信息存储为缓存数据。
具体的,第一用户的服务器可以将所获取的用户信息返回给第一用户的客户端,以便第一用户的客户端对用户信息进行本地缓存。
由于在短时间内,第一用户以及第一用户附近的用户的地理位置变化不会特别大,第一用户的客户端可以将第一目标用户(即第一用户附近的用户)的用户信息(包括联系信息)缓存至本地,即将目标用户的游戏ID、目标用户的用户名称、地理位置信息以及游戏进程信息进行存储,并设置一个过期时间,以便在有效时间内通过某次查询直接使用本地缓存,不必每次都向服务端发起用户监测请求。
其中,设置有效时间的作用主要可以有以下两个作用:第一个作用可以是由于第一用户确定的被观察者对象只有先前处于在线状态的附近用户,如果在这之后存在其他附近的玩家的离线状态变更为在线时,第一用户无法对不是被观察者对象的附近玩家的游戏状态进行感知,此时可以在设置的有效时间过期之后,通过重新拉取第一用户附近的所有用户的登陆状态信息,以再次从第一用户附近的所有用户对被观察者对象进行确定;第二个作用可以是当服务器在运行过程中可能因为逻辑或其它原因导致状态管理出错时,可以通过设置的有效时间对其进行纠错,即当有效时间失效时,出错的状态管理同样失效。
步骤205,将所述第一用户设置为观察者对象,将所述第一目标用户设置为第一用户的被观察者对象,以使第一用户的客户端监测第一目标用户的游戏状态;
在本发明的一种实施例中,由于服务器可以接收由第一用户的客户端发送的请求监测目标用户的请求,在对目标用户进行确定之后,服务器可以所述目标用户设置为第一用户的被观察者对象,即第一用户为第一目标用户的观察者对象,然后设置针对第一目标用户的游戏状态的观察事件,以使作为观察者对象的第一用户的客户端,对作为被观察者对象的第一目标用户的游戏状态进行监测。
在实际应用中,服务器通过调用预设的观察者组件对被观察者对象以及针对被观察者对象的观察事件进行设置,其中,设置的针对被观察者对象的观察事件可以是针对第一目标用户的游戏状态,针对第一目标用户的游戏状态的特定属性也可以包括在线或者离线等属性信息;当被监听的第一目标用户游戏内的游戏状态发生改变时,进行监听的第一用户可以接收到针对目标用户的游戏状态发生改变的通知。
在一种优选的实施例中,对于在需要感知其他用户的游戏状态变化时,由于其他用户的游戏状态变每次可能与前一次的感知不同,其感知的实现方式可以通过观察者模式实现。在本发明实施例中,通过调用的具有观察者模式的观察者组件,该模块观察者可以提供注册与注销接口,其中注册接口需要携带注册原因,以便于当观察事件(例如针对目标用户的游戏状态)发生时,能够准确通知到对应的功能模块或对应的用户。
在本发明实施例中,当被观察者对象的游戏状态发生某个事件,例如游戏状态发生变化时,可以对所有观察该被观察者对象的观察者对象或功能模块进行确定,并根据发生的某个事件生成通知,并对所有观察该被观察者对象的观察者对象或功能模块分发生成的通知。
步骤206,当被设置为被观察者对象的第三用户离线后,注销对所述第三用户设置的被观察者对象。
其中,服务器通过调用预设的观察者组件可以是能够提供事件通知机制的模块,事件通知机制指的是允许某个对象监听另外一个对象的特定属性的改变,并在改变时可以接收到通知。
在本发明的一种实施例中,当被设置为被观察者对象的第三用户离线后,可以注销对第三用户设置的被观察者对象,即第三用户先前的登陆状态可以是在线状态,并存在用户对第三用户的游戏状态进行监测,当第三用户的游戏状态由先前的在线状态变更为离线状态时,此时服务器可以对先前作为被观察者对象的第三用户进行注销,实现对被观察者对象列表或被观察者对象信息的缓存管理。
需要说明的是,第三用户可以是上述发明实施例中提到的第一目标用户的任一个用户,也可以是被其他用户所监测的除目标用户以外的在先查找的第二用户或第一用户,即只要是作为被观察者对象的用户都可以称为第三用户。对此,本发明实施例不加以限制。
在一种优选的实施例中,注销被观察者对象也可以通过调用观察者组件实现,其中观察者组件对观察者对象主要可以提供3个接口,其分别是注册、注销以及筛选接口。
其中,筛选接口可以用于筛选符合条件的用户,例如在对附近用户进行确定的功能中,可以更新针对附近用户最新的登陆状态信息之后,不需要注销此前的所有被观察者对象,只需要注销不在本次更新到的最新在线状态的被观察者对象所对应的用户即可。提供该筛选接口而不是直接访问底层数据结构,这样做主要是可以面向接口编程,以及屏蔽底层的数据和通信细节,使之后的维护和升级更加简单和便捷。
注册接口需要传入待观察的观察事件,在本发明实施例中,该观察事件可以是针对被观察者对象的游戏状态变化事件,其内部数据结构在存储观察事件时,可以通过位数组的方式来记录,如果事件的总体比较大的话,也可以考虑使用观察事件集合来记录。在本发明实施例中,可以直接使用32位整型数字来充当位数组,由于位数组使用的内存更少,且可以直接使用移位和位或运算进行查询,其查询的速度比观察事件集合更快。在向被观察者对象发送观察消息时,如果使用的是位数组来记录事件,则可以全量传输观察事件集合,与增量传输相比,数据量相同,但是全量传输可以避免错误累积,具有一定的纠错能力。注销接口可以和注册接口使用同一个通知方法,只需要将待观察事件置0即可。
在一种优选的实施例中,在被观察者对象的登陆状态处于离线状态时,可以自动注销该被观察者对象,同时也可以向所有观察该被观察者对象的观察者对象发送关于发生被观察者对象下线事件的通知,以使观察者对象取消对该被观察者对象的关注。这样使得观察者模式的相关数据随登录登出而进行销毁,不会对突发的异常状态进行错误累积。
在一种优选的实施例中,还可以包括如下步骤:
当离线状态的第四用户变为在线状态后,获取所述第四用户对应的观察信息;
根据所述观察信息,确定观察所述第四用户的第五用户;
将所述第五用户设置为所述第四用户的观察者对象,并设置针对所述第四用户的游戏状态的观察事件,以使所述第五用户的客户端监测所述第四用户的游戏状态。
在本发明的一种实施例中,当处于离线状态的第四用户的登陆状态变更为在线状态之后,可以重新获取针对第四用户的观察信息,观察信息可以包括针对第四用户的地理位置信息,以及包含有第四用户的游戏ID信息、游戏登陆状态信息与游戏进程信息等的其他信息,以便根据第四用户的观察信息确定观察第四用户的第五用户,即以第四用户作为被观察者对象,第五用户作为观察者对象。
其中,根据第四用户的观察信息确定观察第四用户的第五用户,主要是第五用户通过其自身的地理位置信息以及第四用户的地理位置信息,确定第四用户是否为第五用户附近的用户,若第四用户为第五用户附近的用户,则第五用户可以确定第四用户为其目标用户(即被观察者对象),相对的,第四用户可以确定第五用户为观察其本身的观察者对象。
具体的,可以调用预设的观察者组件,将第五用户设置为第四用户的观察者对象,并设置针对第四用户的游戏状态的观察事件,以使第五用户的客户端监测第四用户的游戏状态,即当第四用户的游戏状态发生变化时,可以生成针对第四用户游戏状态发生变化的通知,并向第五用户发送该通知。
需要说明的是,只要是登陆状态处于离线状态的用户均可以被称为第四用户,只要是对第四用户进行监测的用户均可以被称为第五用户,第四用户以及第五用户,有可能是上述发明实施例中提到的第一用户、第二用户或第三用户,本发明实施例对此不加以限制。
在一种优选的实施例中,对于无法观察当时处于离线状态,但后来登陆上线的附近用户,可以将针对该类用户的观察信息写入数据库,当该类用户作为被观察者对象时,该类用户可以向写入观察信息的数据库查询是否存在观察自身的其他用户,如果存在观察自身的其他用户的话,可以将其他用户注册为其自身的观察者。在这种方式中,可能会导致数据库中存在大量的针对该类用户的观察者信息数据,假设该类数据写入的数据库为Mongo数据库,此时可以利用TTL(Time To Live,能对一个单列配置过期属性来实现对文档的自动过期删除)索引,即将用于表示过期属性的有效时间和对应的该类用户的观察者信息数据进行对应,即为该类用户的每个观察信息文档设置用于表示过期属性的有效时间,一旦到达该文档的有效时间之后,可以自动删除失效的观察信息文档。
在本发明的实施例中,服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,在响应该用户监测请求确定不具有满足预设要求的缓存数据的第一目标用户之后,可以通过调用预设的观察者组件将附近的目标用户作为被观察者对象,且对被观察者对象的游戏状态的观察事件进行设置,以便通过观察者对象的客户端对被观察者对象的游戏状态进行监测,即通过调用预设的观察者组件对被观察者以及观察者的设置,实现对附近的目标用户的游戏状态变化进行感知。
参照图3,示出了本发明的另一种游戏状态监测方法实施例的步骤流程图,应用于服务器,具体可以包括如下步骤:
步骤301,接收游戏中的第一用户的客户端发送的用户监测请求;
在本发明的一种实施例中,客户端为了对目标用户进行监测,可以生成用于请求监测目标用户的用户监测请求,此时为客户端提供相关服务的服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,以便对接收到的用户监测请求进行响应,查找并确定游戏中的目标用户。
步骤302,响应用户监测请求确定具有满足预设要求的缓存数据的第二目标用户;
在实际应用中,服务器在接收客户端发送的针对请求监测目标用户的用户监测请求之后,可以响应用户监测请求,并对游戏中具有满足预设要求的缓存数据的第二目标用户进行查找以及确定,以便直接从本地缓存数据中获取第二目标用户的游戏登陆状态。其中,服务器具有与第二目标用户对应的满足预设要求的缓存数据。
在本发明的一种实施例中,步骤302可以包括如下子步骤:
子步骤S21,响应所述用户监测请求查找游戏中当前的第二用户,以及检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
在实际应用中,当服务器响应第一用户的客户端发送的用户监测请求,并对游戏中当前的第二用户进行查找以及对第二用户的登陆状态进行确定时,可以对在先查找的第二用户的缓存数据进行判断。
具体的,对在先查找的第二用户的缓存数据进行判断,以通过对第二用户的缓存数据的判断结果判断第二用户的缓存数据是否满足预设要求,可以表现为判断是否存在针对第二用户的缓存数据,以及判断针对第二用户的缓存数据的存储时间是否超过预设时长。其中,针对第二用户的缓存数据可以包括第二用户的用户信息,第二用户的游戏进程信息,第二用户的登陆状态信息等;预设时长可以根据游戏时长进行确定,也可以按照实际需要进行设置,对此,本发明实施例不加以限制。
子步骤S22,若具有所述在先查找的第二用户的缓存数据,且所述在先查找的第二用户的缓存数据的存储时间未超过预设时长,则将在先查找的第二用户作为当前的第二用户,且确定所述当前的第二用户为第二目标用户。
在本发明的一种实施例中,缓存数据满足的预设要求可以是服务器具有在先查找的第二用户的缓存数据,且在先查找的第二用户的缓存数据的存储时间未超过预设时长,那么对在先查找的第二用户的缓存数据进行判断,其判断结果可以出现第三种情况,在这种情况下,服务器具有在先查找的第二用户的缓存数据,且在先查找的第二用户的缓存数据的存储时间未超过预设时长,即表示服务器的缓存中具有针对在先查找的第二用户可以使用的缓存数据,此时无需将该第二用户进行设置为被观察者的步骤,例如在先查找的第二用户的游戏ID信息,在先查找的第二用户的登陆状态信息以及在先查找的第二用户的游戏进程信息等,此时可以将在先查找的第二用户作为当前的第二用户,即已确定在先查找的第二用户为第一用户附近的用户(即当前的第二用户)。
步骤303,向所述第一用户的客户端返回针对所述第二目标用户的游戏状态的回复消息,以使所述第一用户的客户端从位于客户端的缓存数据中获取所述第二目标用户的游戏状态;
由于已确定在先查找的第二用户为第一用户附近的用户,且针对当前的第二用户的缓存数据中存在例如游戏ID,登陆状态信息以及游戏进程等信息,此时可以直接从缓存数据中查询当前的第二用户的最新的登陆状态以及游戏进程信息。
在一种优选的实施例中,针对在先查找且具有缓存数据的第二用户,可能出现其登陆状态为持续在线的现象,此时第二用户的登陆状态为在线状态的游戏时长超过预设在线时长,然而当这类第二用户在线时其缓存数据的存储时间也会随着游戏时长的增加而不断增加,为了减小超过预设在线时长的游戏时长对缓存数据的存储时间的影响,可以按照预设第二时间间隔重新设置针对这类第二用户的缓存数据的存储时间,即可以隔断时间进行清零操作。
步骤304,获取所述第二目标用户的联系信息;
步骤305,向所述第一用户的客户端发送所述第二目标用户的联系信息。
在本发明的一种实施例中,在对第二目标用户进行确定之后,可以获取目标用户的联系信息,并向第一用户的客户端发送第二目标用户的联系信息,以便第一用户的客户端对目标信息进行明确。
具体的,目标用户的联系信息可以包括第二目标用户的ID、登陆状态、游戏进程等信息,第一用户的客户端在接收第二目标用户的联系信息之后,可以通过客户端进行解析,并将解析后的关于第二目标用户的信息展示在客户端界面,以告知第一用户。
在本发明的实施例中,服务器可以接收游戏中的第一用户的客户端发送的用户监测请求,在响应该用户监测请求确定具有满足预设要求的缓存数据的第二目标用户之后,可以生成针对第二目标用户的游戏状态的回复消息,以使第一用户的客户端可以从本地缓存数据中获取所述第二目标用户的登陆状态,即通过第一用户的客户端本地缓存的缓存数据,实现对附近的目标用户的游戏状态变化进行感知。
参照图4,示出了本发明实施例中的一种游戏状态监测方法的应用场景图,涉及到LBS服务,用户客户端Client,与用户客户端Client相对应的服务器Server,以及Mongo数据库,且客户端Client通过与服务器Server进行通信以获取与使用LBS服务,服务器Server可以与Mongo数据库进行通信以获取数据库中所存储的数据。
在本发明的实施例中,其游戏状态监测方法的实现可以包括如下过程:
(1)当第一用户需要查询附近的用户时,可以由第一用户的客户端携带第一用户的地理位置信息向服务端发起请求,其中,客户端可以通过LBS集成于UniSDK的接口获取第一用户的地理位置信息;
(2)存在第一种情况,如果服务端的缓存中不存在针对附近的用户的任何缓存数据,或者所缓存的缓存数据的缓存时间过长而导致缓存失效时,则需要向LBS请求第一用户附近的用户列表,在获取附近用户列表之后,可以向Mongo数据库查询附近用户列表中各个用户的当前登陆状态以及当前所在游戏进程信息;在确定各个用户的当前登陆状态之后,可以通过服务器端调用观察者组件向将在线状态的附近用户注册为被观察者对象,同时向之前注册过但本次登陆状态为离线状态的附近用户从被观察者对象中注销,最后将作为被观察者对象的信息返回给客户端;客户端在获取针对被观察者对象的信息之后,可以将该信息缓存至本地,这样在有效时间内可以用直接使用本地缓存,不必每次都向服务端发起请求。在这种情况下,其处理流程为a→b→c→d→e→f→g;
(3)存在第二种情况,如果服务端的缓存中存在针对附近的用户的缓存数据,但是针对附近的用户的登陆状态信息由于缓存时间过长而导致缓存失效时,则可以省略第一种情况中b→c的步骤,即只需要通过Mongo数据库对附近的用户的最新登陆状态信息进行查询,然后通过服务器端调用观察者组件向将在线状态的附近用户注册为被观察者对象,同时向之前注册过但本次登陆状态为离线状态的附近用户从被观察者对象中注销,最后将作为被观察者对象的信息返回给客户端。在这种情况下,其处理流程为a→d→e→f→g;
(4)存在第三种情况,如果服务端的缓存中存在针对附近的用户的任何缓存数据,或者所缓存的缓存数据的缓存时间处于缓存有效时间时,则可以回复客户端直接使用其本地缓存信息。在这种情况下,其处理流程为a→g。
其中,具体的处理流程可以包括如下流程:
a)客户端携带第一用户的地理位置信息向服务器发起用户监测请求;其中,服务器可以预先获取第一用户的地理位置信息;
b)服务器向LBS请求第一用户附近的用户列表;
c)服务器接收LBS返回的附近用户列表;
d)服务器向Mongo数据库查询附近用户列表中的各个用户的登陆状态和游戏进程信息;
e)服务器接收Mongo数据库返回的附近用户列表中的各个用户的登陆状态和游戏进程信息;
f)服务器调用观察者组件,将附近用户列表中登陆状态处于在线状态的附近用户注册为被观察者对象,以及将之前注册过但本次处于离线状态的附近用户注销被观察者对象;
g)服务器将附近用户的信息发送给客户端。
在本发明的一种实施例中,对于多人互动联网类游戏来说,附近用户的查询功能主要为了方便用户进行组队游戏,即需要尽可能拉取到在线的附近用户。在保证用户拉取到的附近用户大部分处于在线状态的情况下,当用户下线或者取消位置共享时,可以向LBS请求删除位置缓存。为了减小压力,同时考虑到该请求对实时性的要求不高,所以服务端可以做一个缓冲队列,对请求速度进行削峰和平滑。
需要说明的是,从线上运行的实际情况来看,LBS只需要使用一台4核8GB的普通机器即可满足多人互动联网类游戏的附近用户相关服务需求。同时用户在请求附近用户时,可以即刻拿到请求结果,感知不到请求延时。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种游戏状态监测装置实施例的结构框图,应用于服务器,具体可以包括如下模块:
用户监测请求接收模块501,用于接收游戏中的第一用户的客户端发送的用户监测请求;
用户监测请求响应模块502,用于响应所述用户监测请求,确定第一目标用户和第二目标用户;所述服务器不具有与所述第一目标用户对应的满足预设要求的缓存数据;所述服务器具有与所述第二目标用户对应的满足预设要求的缓存数据;
游戏状态监测模块503,用于调用预设的观察者组件,将所述第一用户设置为观察者对象,将所述第一目标用户设置为所述第一用户的被观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
回复消息返回模块504,用于生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
在本发明的一种实施例中,用户监测请求响应模块502可以包括如下子模块:
第一用户监测请求响应子模块,用于响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态;所述登陆状态包括在线状态或离线状态;
第一目标用户确定子模块,用于将登陆状态为在线状态的当前的第二用户确定为第一目标用户。
在本发明的一种实施例中,第一用户监测请求响应子模块可以包括如下单元:
缓存数据检测单元,用于响应所述用户监测请求,检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
登陆状态第一查询单元,用于若不具有在先查找的第二用户的缓存数据,则调用预设服务获取当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态;
登陆状态第二查询单元,用于若在先查找的第二用户的缓存数据的存储时间超过预设时长,则将在先查找的第二用户作为当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
在本发明的一种实施例中,用户监测请求响应模块502可以包括如下子模块:
第二用户监测请求响应子模块,用于响应所述用户监测请求查找游戏中当前的第二用户,以及检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
第二目标用户确定子模块,用于若具有所述在先查找的第二用户的缓存数据,且所述在先查找的第二用户的缓存数据的存储时间未超过预设时长,则将在先查找的第二用户作为当前的第二用户,且确定所述当前的第二用户为第二目标用户。
在本发明的一种实施例中,用户监测请求响应模块502还可以包括如下子模块:
用户信息获取子模块,用于获取所述第一目标用户的用户信息;所述用户信息包括所述第一目标用户的用户名称、所述第一目标用户的地理位置信息以及所述第一目标用户的游戏进程信息;
用户信息存储子模块,用于向所述第一用户的客户端发送所述第一目标用户的用户信息,以使所述第一用户的客户端将所述第一目标用户的用户信息进行存储。
在本发明的一种实施例中,所述用户监测请求包括所述第一用户的地理位置信息,所述地理位置信息由所述第一用户的客户端在检测到所述第一用户具有预设用户意图时获得;登陆状态第一查询单元可以包括如下子单元:
第二用户确定子单元,用于调用预设的地理位置服务,根据所述第一用户的地理位置信息确定当前的第二用户。
在本发明的一种实施例中,所述装置还可以包括如下模块:
被观察者对象注销模块,用于当被设置为被观察者对象的第三用户离线后,注销对所述第三用户设置的被观察者对象。
在本发明的一种实施例中,所述装置还可以包括如下模块:
观察信息获取模块,用于当离线状态的第四用户变为在线状态后,获取所述第四用户对应的观察信息;
第五用户确定模块,用于根据所述观察信息,确定观察所述第四用户的第五用户;
第五用户监测模块,用于将所述第五用户设置为所述第四用户的观察者对象,并设置针对所述第四用户的游戏状态的观察事件,以使所述第五用户的客户端监测所述第四用户的游戏状态。
在本发明的一种实施例中,所述装置还可以包括如下模块:
联系信息获取模块,用于获取所述第一目标用户以及所述第二目标用户的联系信息;
联系信息发送模块,用于向所述第一用户的客户端发送所述第一目标用户以及所述第二目标用户的联系信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,为了感知陌生用户的游戏状态变化,此问题类似于CPU与外部设备的交互,可以有中断和轮询两种方式,由于轮询需要大量的通信,效率低下,所以采用类似中断的方式。为了让其他用户的状态发生变化时及时通知到请求的用户,此时可以采取观察者模式,即利用订阅-发布机制,能及时感知对方变化,并对双方进行逻辑解耦。
本发明实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述游戏状态监测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述针对游戏状态监测方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种游戏状态监测方法和一种游戏状态监测装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种游戏状态监测方法,其特征在于,所述方法包括:
服务器接收游戏中的第一用户的客户端发送的用户监测请求;
响应所述用户监测请求,确定第一目标用户和第二目标用户;所述服务器不具有与所述第一目标用户对应的满足预设要求的缓存数据;所述服务器具有与所述第二目标用户对应的满足预设要求的缓存数据;
调用预设的观察者组件,将所述第一用户设置为观察者对象,将所述第一目标用户设置为所述第一用户的被观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息从位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
2.根据权利要求1所述的方法,其特征在于,所述响应所述用户监测请求,确定第一目标用户,包括:
响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态;所述登陆状态包括在线状态或离线状态;
将登陆状态为在线状态的当前的第二用户确定为第一目标用户。
3.根据权利要求2所述的方法,其特征在于,所述响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态,包括:
响应所述用户监测请求,检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
若不具有在先查找的第二用户的缓存数据,则调用预设服务获取当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
4.根据权利要求3所述的方法,其特征在于,所述响应所述用户监测请求查找游戏中当前的第二用户,以及获取当前的所述第二用户的登陆状态,还包括:
若在先查找的第二用户的缓存数据的存储时间超过预设时长,则将在先查找的第二用户作为当前的第二用户,以及从预设游戏数据库查询所述当前的第二用户的登陆状态。
5.根据权利要求1所述的方法,其特征在于,所述响应所述用户监测请求,确定第二目标用户,包括:
响应所述用户监测请求查找游戏中当前的第二用户,以及检测是否具有在先查找的第二用户的缓存数据,且所述缓存数据的存储时间是否超过预设时长;
若具有所述在先查找的第二用户的缓存数据,且所述在先查找的第二用户的缓存数据的存储时间未超过预设时长,则将在先查找的第二用户作为当前的第二用户,且确定所述当前的第二用户为第二目标用户。
6.根据权利要求2所述的方法,其特征在于,还包括:
获取所述第一目标用户的用户信息;所述用户信息包括所述第一目标用户的用户名称、所述第一目标用户的地理位置信息以及所述第一目标用户的游戏进程信息;
向所述第一用户的客户端发送所述第一目标用户的用户信息,以使所述第一用户的客户端将所述第一目标用户的用户信息进行存储。
7.根据权利要求3所述的方法,其特征在于,所述用户监测请求包括所述第一用户的地理位置信息,所述地理位置信息由所述第一用户的客户端在检测到所述第一用户具有预设用户意图时获得;所述调用预设服务获取当前的第二用户,包括:
调用预设的地理位置服务,根据所述第一用户的地理位置信息确定当前的第二用户。
8.根据权利要求2所述的方法,其特征在于,还包括:
当被设置为被观察者对象的第三用户离线后,注销对所述第三用户设置的被观察者对象。
9.根据权利要求8所述的方法,其特征在于,还包括:
当离线状态的第四用户变为在线状态后,获取所述第四用户对应的观察信息;
根据所述观察信息,确定观察所述第四用户的第五用户;
将所述第五用户设置为所述第四用户的观察者对象,并设置针对所述第四用户的游戏状态的观察事件,以使所述第五用户的客户端监测所述第四用户的游戏状态。
10.根据权利要求1所述的方法,其特征在于,还包括:
获取所述第一目标用户以及所述第二目标用户的联系信息;
向所述第一用户的客户端发送所述第一目标用户以及所述第二目标用户的联系信息。
11.一种游戏状态监测装置,其特征在于,应用于服务器,所述装置包括:
用户监测请求接收模块,用于接收游戏中的第一用户的客户端发送的用户监测请求;
用户监测请求响应模块,用于响应所述用户监测请求,确定第一目标用户和第二目标用户;所述服务器不具有与所述第一目标用户对应的满足预设要求的缓存数据;所述服务器具有与所述第二目标用户对应的满足预设要求的缓存数据;
游戏状态监测模块,用于调用预设的观察者组件,将所述第一用户设置为观察者对象,将所述第一目标用户设置为所述第一用户的被观察者对象,以及设置所述第一用户观察所述第一目标用户的游戏状态的观察事件,以使所述第一用户的客户端监测所述第一目标用户的游戏状态;
回复消息返回模块,用于生成针对所述第二目标用户的游戏状态的回复消息,以及向所述第一用户的客户端返回所述回复消息,以使所述第一用户的客户端根据所述回复消息从位于所述客户端的缓存数据中获取所述第二目标用户的游戏状态。
12.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-10中任一项所述游戏状态监测方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-10中任一项所述游戏状态监测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010981351.0A CN112044057A (zh) | 2020-09-17 | 2020-09-17 | 一种游戏状态监测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010981351.0A CN112044057A (zh) | 2020-09-17 | 2020-09-17 | 一种游戏状态监测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112044057A true CN112044057A (zh) | 2020-12-08 |
Family
ID=73603683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010981351.0A Pending CN112044057A (zh) | 2020-09-17 | 2020-09-17 | 一种游戏状态监测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112044057A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579237A (zh) * | 2020-12-17 | 2021-03-30 | 百果园技术(新加坡)有限公司 | 基于mvvm模式的事件响应方法、装置、设备和介质 |
CN112843719A (zh) * | 2021-03-22 | 2021-05-28 | 网易(杭州)网络有限公司 | 技能处理方法、装置、存储介质及计算机设备 |
WO2024066723A1 (zh) * | 2022-09-28 | 2024-04-04 | 华为云计算技术有限公司 | 针对虚拟场景的位置更新方法、设备、介质和程序产品 |
CN112579237B (zh) * | 2020-12-17 | 2024-06-11 | 百果园技术(新加坡)有限公司 | 基于mvvm模式的事件响应方法、装置、设备和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070112492A (ko) * | 2006-05-22 | 2007-11-27 | 배현직 | 멀티플레이어 온라인 게임 서비스 시스템 및 방법 |
US20080220854A1 (en) * | 2007-03-08 | 2008-09-11 | Timothy Michael Midgley | Method and apparatus for collecting user game play data and crediting users in an online gaming environment |
CN101311936A (zh) * | 2007-05-23 | 2008-11-26 | 珠海市西山居软件有限公司 | 一种游戏玩家获得离线收益的方法和装置 |
US20130079128A1 (en) * | 2011-09-26 | 2013-03-28 | Andrew Jack Thomas | System and method of gamification of real-life events |
CN103747014A (zh) * | 2014-01-24 | 2014-04-23 | 腾讯科技(深圳)有限公司 | 一种用户状态的获取方法和业务代理服务器 |
US20150019677A1 (en) * | 2013-07-10 | 2015-01-15 | Tencent Technology (Shenzhen) Company Limited | Systems and Methods for Browser-Based Games |
CN105848201A (zh) * | 2016-05-23 | 2016-08-10 | 北京中科晶上科技有限公司 | 基于lte信令的手机监测方法及系统 |
CN105959147A (zh) * | 2016-06-13 | 2016-09-21 | 青岛海信传媒网络技术有限公司 | 命令存储方法、客户端以及中心服务器 |
CN106027289A (zh) * | 2016-05-09 | 2016-10-12 | 北京奇虎科技有限公司 | 用户状态统计系统及方法 |
CN106302459A (zh) * | 2016-08-16 | 2017-01-04 | 网易(杭州)网络有限公司 | 联网操作方法及装置 |
US20180018178A1 (en) * | 2015-11-17 | 2018-01-18 | Tencent Technology (Shenzhen) Company Limited | Mobile game data processing method and apparatus |
-
2020
- 2020-09-17 CN CN202010981351.0A patent/CN112044057A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070112492A (ko) * | 2006-05-22 | 2007-11-27 | 배현직 | 멀티플레이어 온라인 게임 서비스 시스템 및 방법 |
US20080220854A1 (en) * | 2007-03-08 | 2008-09-11 | Timothy Michael Midgley | Method and apparatus for collecting user game play data and crediting users in an online gaming environment |
CN101311936A (zh) * | 2007-05-23 | 2008-11-26 | 珠海市西山居软件有限公司 | 一种游戏玩家获得离线收益的方法和装置 |
US20130079128A1 (en) * | 2011-09-26 | 2013-03-28 | Andrew Jack Thomas | System and method of gamification of real-life events |
US20150019677A1 (en) * | 2013-07-10 | 2015-01-15 | Tencent Technology (Shenzhen) Company Limited | Systems and Methods for Browser-Based Games |
CN103747014A (zh) * | 2014-01-24 | 2014-04-23 | 腾讯科技(深圳)有限公司 | 一种用户状态的获取方法和业务代理服务器 |
US20180018178A1 (en) * | 2015-11-17 | 2018-01-18 | Tencent Technology (Shenzhen) Company Limited | Mobile game data processing method and apparatus |
CN106027289A (zh) * | 2016-05-09 | 2016-10-12 | 北京奇虎科技有限公司 | 用户状态统计系统及方法 |
CN105848201A (zh) * | 2016-05-23 | 2016-08-10 | 北京中科晶上科技有限公司 | 基于lte信令的手机监测方法及系统 |
CN105959147A (zh) * | 2016-06-13 | 2016-09-21 | 青岛海信传媒网络技术有限公司 | 命令存储方法、客户端以及中心服务器 |
CN106302459A (zh) * | 2016-08-16 | 2017-01-04 | 网易(杭州)网络有限公司 | 联网操作方法及装置 |
Non-Patent Citations (1)
Title |
---|
"《设计模式之观察者模式(Observer)》", Retrieved from the Internet <URL:https://gwb.tencent.com/community/detail/128158> * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579237A (zh) * | 2020-12-17 | 2021-03-30 | 百果园技术(新加坡)有限公司 | 基于mvvm模式的事件响应方法、装置、设备和介质 |
CN112579237B (zh) * | 2020-12-17 | 2024-06-11 | 百果园技术(新加坡)有限公司 | 基于mvvm模式的事件响应方法、装置、设备和介质 |
CN112843719A (zh) * | 2021-03-22 | 2021-05-28 | 网易(杭州)网络有限公司 | 技能处理方法、装置、存储介质及计算机设备 |
WO2024066723A1 (zh) * | 2022-09-28 | 2024-04-04 | 华为云计算技术有限公司 | 针对虚拟场景的位置更新方法、设备、介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9888089B2 (en) | Client side cache management | |
CN107918562B (zh) | 一种统一接口管理方法和系统 | |
US8639817B2 (en) | Content management | |
EP3090342B1 (en) | Methods, systems, and media for managing notifications directed to multiple applications installed on a user device | |
KR101867809B1 (ko) | 검색 결과에 대한 액세스를 향상시키기 위한 시스템 및 방법 | |
US10232252B2 (en) | Information processing system, information processing method, program, and information storage medium | |
CN108452525B (zh) | 一种游戏中聊天信息的监控方法及系统 | |
US8825779B2 (en) | Systems and methods of real-time data subscription and reporting for telecommunications systems and devices | |
CN111787345B (zh) | 基于网络直播间的互动资源处理方法、装置、服务器及存储介质 | |
CN112044057A (zh) | 一种游戏状态监测方法和装置 | |
US20150006622A1 (en) | Web contents transmission method and apparatus | |
JP2014132443A (ja) | 収集サーバ及び収集方法 | |
CN102023997B (zh) | 一种数据查询系统及其构建方法与相应的数据查询方法 | |
CN112169312A (zh) | 云游戏服务的排队调度方法、装置、设备和存储介质 | |
CN113709232B (zh) | 数据包加载方法、客户端、客户端代理、设备及存储介质 | |
JP2015125748A (ja) | 端末装置及び収集方法 | |
KR20110005945A (ko) | 에이전트를 사용하지 않는 퍼포먼스 카운터와 캐시를 이용한 실시간 서버 성능 모니터링 방법 | |
CN111711642A (zh) | 协议请求处理方法、装置、电子设备和存储介质 | |
CN113384873B (zh) | 短连接游戏的通知信息处理方法、电子设备和存储介质 | |
JP2013109547A (ja) | 情報処理システム、情報処理方法、プログラム及び情報記憶媒体 | |
CN116561080A (zh) | 一种数据预缓存方法、装置、设备及介质 | |
CN111150999A (zh) | 游戏数据的访问方法、装置、系统、设备及存储介质 | |
JP2018013817A (ja) | 情報処理装置、リモートサポートシステム及びプログラム | |
CN113509736A (zh) | 游戏账号绑定方法、游戏账号登录方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |