CN117018599A - 游戏事件传输方法、装置、设备及存储介质 - Google Patents
游戏事件传输方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117018599A CN117018599A CN202310917043.5A CN202310917043A CN117018599A CN 117018599 A CN117018599 A CN 117018599A CN 202310917043 A CN202310917043 A CN 202310917043A CN 117018599 A CN117018599 A CN 117018599A
- Authority
- CN
- China
- Prior art keywords
- event
- game
- channel
- bus
- subscriber
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000008569 process Effects 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 16
- 238000012423 maintenance Methods 0.000 abstract description 10
- 238000011161 development Methods 0.000 abstract description 6
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 239000002609 medium Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/40—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种游戏事件传输方法、装置、设备及存储介质,涉及游戏技术领域。该方法包括:事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。通过上述技术手段,解决了现有技术中游戏系统中各个组件存在高耦合的问题,降低系统复杂度,提高系统开发效率,降低后期系统框架的维护和迭代的难度。
Description
技术领域
本申请涉及游戏技术领域,尤其涉及一种游戏事件传输方法、装置、设备及存储介质。
背景技术
在游戏设计过程中的一种重要任务是模拟现实世界的某些特征,以使游戏更加人性化和更加通俗易懂。现实世界中,关联是普遍存在的,一件事情的发生往往具有蝴蝶效应,会引发一系列关联事情的发生。同样的,在游戏中,一个玩家的行为、非玩家角色状态的改变或者事情的进展过程的某个阶段都可以引发一个游戏事件,在一个游戏事件的发生或许会引发另外的游戏事件。
在现有技术中,游戏事件由对应的组件负责,当组件A处理的游戏事件A会引发游戏事件B时,在游戏事件B由组件B负责的情况下,可以在组件A调用游戏组件B中的方法处理游戏事件B。但是组件A需要明确知道组件B的存在时,才能通过调用方式使用组件B的方法处理,也即组件A和组件B存在耦合关系,系统复杂度较高,影响系统开发效率,而且不利于后期系统框架的维护和迭代。
发明内容
本申请提供一种游戏事件传输方法、装置、设备及存储介质,解决了现有技术中游戏系统中各个组件存在高耦合的问题,降低系统复杂度,提高系统开发效率,降低后期系统框架的维护和迭代的难度。
第一方面,本申请提供了一种游戏事件传输方法,包括:
事件总线根据事件订阅者的订阅事件类型,确定所述事件订阅者订阅的通道,所述事件总线包括多个所述通道,不同通道管理不同事件类型的游戏事件;
所述事件总线接收各个事件发布者发布的游戏事件,根据所述游戏事件的事件类型将所述游戏事件分发至对应的通道;
所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者。
第二方面,本申请提供了一种游戏事件传输装置,包括:
订阅处理模块,被配置为事件总线根据事件订阅者的订阅事件类型,确定所述事件订阅者订阅的通道,所述事件总线包括多个所述通道,不同通道管理不同事件类型的游戏事件;
事件分配模块,被配置为所述事件总线接收各个事件发布者发布的游戏事件,根据所述游戏事件的事件类型将所述游戏事件分发至对应的通道;
事件推送模块,被配置为所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者。
第三方面,本申请提供了一种游戏事件传输设备,包括:
一个或多个处理器;
存储器,存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的游戏事件传输方法。
第四方面,本申请提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的游戏事件传输方法。
在本申请中,事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。通过上述技术手段,事件发布者将游戏事件发布到事件总线,由事件总线将游戏事件推送到事件订阅者,因此作为事件发布者的组件无需知道作为事件订阅者的组件的存在,从而将各个组件独立开来,实现了组件的解耦,降低了系统复杂度。由于组件解耦后,后期可以单独维护和迭代各个组件,降低了后期系统框架的维护和迭代的难度。事件总线通过多个通道对游戏事件进行分区分流处理,以使每个游戏事件分发到一个通道中,从而降低了事件总线的事件流量,有利于提高事件传输效率。
附图说明
图1是本申请实施例提供的一种游戏事件传输方法的流程图;
图2是本申请实施例提供的游戏事件传输框架的示意图;
图3是本申请实施例提供的事件总线处理游戏子事件的流程图;
图4是本申请实施例提供的游戏子事件传输框架的示意图;
图5是本申请实施例提供的一种游戏事件传输装置的结构示意图;
图6是本申请实施例提供的一种游戏事件传输设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在较为常见的现有实现方式中,游戏系统框架采用观察者模式进行游戏事件的传输。观察者模式有两个重要的角色,分别是目标和观察者,作为观察者的组件需要将自身添加到作为目标的组件中进行管理。在目标触发内容改变的目标游戏事件时,目标亲自去通知所有的观察者来取目标游戏事件,因此观察者和目标之间知道对应的存在。由于观察者和目标之间存在耦合关系,导致系统复杂度较高,影响系统开发效率。当后期对观察者进行维护和迭代时,可能同样需要对目标进行维护和迭代,后续维护和迭代的难度较高。
为解决上述问题,本实施例提供了一种游戏事件传输方法,以通过事件总线将从事件发布者接收到的游戏事件推送至事件订阅者,实现了事件发布者和事件订阅者之间的解耦,降低系统复杂度,提高系统开发效率,降低后期系统框架的维护和迭代的难度。
本实施例中提供的游戏事件传输方法可以由游戏事件传输设备执行,该游戏事件传输设备可以通过软件和/或硬件的方式实现,该游戏事件传输设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。例如游戏事件传输设备可以是运行游戏的计算机。
游戏事件传输设备安装有至少一类操作系统,其中,操作系统包括但不限定于安卓系统、Linux系统及Windows系统。游戏事件传输设备可以基于操作系统安装至少一个应用程序,应用程序可以为操作系统自带的应用程序,也可以为从第三方设备或者服务器中下载的应用程序。在该实施例中,游戏事件传输设备至少有可以执行游戏事件传输方法的应用程序。
为便于理解,本实施例以计算机为执行游戏事件传输方法的主体为例进行描述。
图1给出了本申请实施例提供的一种游戏事件传输方法的流程图。参考图1,该游戏事件传输方法具体包括:
S110、事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件。
图2是本申请实施例提供的游戏事件传输框架的示意图。如图2所示,游戏事件传输框架由事件总线、事件订阅者和事件发布者组成。事件发布者是产生游戏事件的组件,其可以发布对应事件类型的游戏事件,可以在任意线程任意位置发布游戏事件。事件订阅者是订阅游戏事件的组件,其可以订阅一种或多种事件类型的游戏事件,事件订阅者可通过回调函数对接收到的游戏事件进行处理,事件订阅者可以订阅游戏事件,也可以取消订阅游戏事件。事件总线是不同组件和模块之间事件流通的管道,其使用发布订阅的方式支持事件发布者和事件订阅者之间的事件传输,摒弃了观察者模式需要显示注册回调的缺点。事件总线负责事件订阅者和游戏事件等信息的存储,同时处理游戏事件的流动和分发。由于事件总线的存在,事件订阅者和事件发布者之间不直接进行通信,即两者无需得知对方的存在,从而实现解耦。
事件订阅者作为接收游戏事件的一方,需要在自己的方法上添加注解声明自身为事件订阅者,并将所在类注册到事件总线中,使得事件总线可以扫描到该事件订阅者。而事件发布者作为发送游戏事件到事件总线的一方,其可以调用Post()函数将游戏事件发送给事件总线,事件发布者可以在程序任何地方调用该Post()函数。在一实施例中,事件发布者将游戏事件发布到事件总线后,事件总线将该游戏事件广播给所有事件订阅者,以使所有事件订阅者接收到该游戏事件。在另一实施例中,事件订阅者在注册到事件总线时,事件总线可确定事件订阅者感兴趣的事件类型,也即事件订阅者的订阅事件类型。事件发布者将游戏事件发布到事件总线后,事件总线将该游戏事件的事件类型与各个事件订阅者的订阅事件类型进行匹配,进而将该游戏事件推送给类型匹配的事件订阅者。
参考图2,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件,一个通道可以管理一个或多个事件类型。事件总线配置有一个用于存储游戏事件的事件空间,将事件空间划分为多个互不相交的子事件空间,这些子事件空间分配到不同的通道,由对应的通道进行管理。在事件订阅者在注册到事件总线时,事件总线根据事件订阅者的订阅事件类型,确定该事件订阅者所订阅的通道,并通过该通道保存该事件订阅者的信息。在该实施例中,事件总线可根据事件订阅者的数量和订阅事件类型,确定各个通道所管理的事件类型和事件订阅者,以使各个通道平均分配游戏事件,平衡各个通道的事件流量。或者,预先根据各种事件类型和对应的游戏事件数量,确定各个通道所管理的事件类型,进而在事件订阅者注册到事件总线时,根据事件订阅者的订阅事件类型,将事件订阅者的信息存储至管理对应通道,以使该事件订阅者订阅该通道。
S120、事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道。
参考图2,事件发布者A在生成游戏事件A后,调用Post()函数将游戏事件A发送给事件总线,事件发布者B在生成游戏事件B后,调用Post()函数将游戏事件B发送给事件总线。事件总线将游戏事件A与游戏事件B的事件类型与各个通道对应管理的事件类型进行匹配,确定游戏事件A的事件类型与通道A对应管理的事件类型相匹配以及游戏事件B的事件类型与通道B对应管理的事件类型相匹配,进而将游戏事件A分发至通道A,将游戏事件B分发至通道B。通道A将游戏事件A存储至对应的事件子空间,通道B将游戏事件B存储至对应的事件子空间。
在一实施例中,事件继承参照面向对象语言中的继承机制,假设游戏子事件和游戏父事件是继承关系,当发布游戏子事件时,对游戏子事件和游戏父事件感兴趣的事件订阅者都会接收到该游戏子事件,而当发布游戏父事件时,对游戏子事件感兴趣的事件订阅者不会接收到该游戏父事件。通过事件继承可以丰富事件传输机制,提高事件传输的灵活性。在该实施例中,图3是本申请实施例提供的事件总线处理游戏子事件的流程图。如图3所述,该事件总线处理游戏子事件的步骤具体包括S1201-S1202:
S1201、事件总线接收到游戏子事件时,确定游戏子事件对应的游戏父事件。
S1202、事件总线根据游戏子事件的事件类型和游戏父事件的事件类型,将游戏子事件分发至管理游戏子事件的事件类型和游戏父事件的事件类型的通道。
图4是本申请实施例提供的游戏子事件传输框架的示意图。如图4所示,事件发布者向事件总线发布游戏事件C后,确定游戏事件C继承了游戏事件D,也即确定游戏事件C为游戏子事件,游戏事件D为游戏事件C的游戏父事件。事件总线根据游戏事件C的事件类型以及游戏事件D的事件类型分别与各个通道对应的事件类型进行匹配,确定游戏事件C的事件类型与通道A的事件类型相匹配,游戏事件D的事件类型与通道B的事件类型相匹配,进而将游戏事件C分配到通道A和通道B,以通过通道A和通道B将游戏事件C推送到对应订阅通道的事件订阅者,使得订阅游戏子事件和订阅游戏父事件的订阅者均可以接收到该游戏子事件。
S130、事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。
参考图2,通道A存储有事件订阅者A注册时的信息,因此通道A可确认事件订阅者A订阅了自身管理的游戏事件,通道A可将存储在事件子空间内的游戏事件A推送至事件订阅者A,事件订阅者A接收到游戏事件A后可通过回调函数对游戏事件A进行处理。同样的,通道B存储有事件订阅者A和事件订阅者B注册时的信息,因通道B可确认事件订阅者A和事件订阅者B订阅了自身管理的游戏事件,通道B可将存储在事件子空间内的游戏事件B推送至事件订阅者A和事件订阅者B,事件订阅者B接收到游戏事件B后可通过回调函数对游戏事件B进行处理,事件订阅者A接收到游戏事件B后可通过回调函数对游戏事件B进行处理。
需要说明的,在通道管理多种游戏类型的情况下,通道可能会将事件订阅者不感兴趣的游戏事件推送至该事件订阅者,此时事件订阅者可判断接收到的游戏事件是否为自身订阅的游戏事件,在接收到的游戏事件不为自身订阅的游戏事件的情况下,不对该游戏事件做处理,在接收到游戏事件为自身订阅的游戏事件的情况下,对该游戏事件做处理。
参考图4,假设事件订阅者B订阅了游戏事件C的游戏父事件,而游戏父事件的游戏类型由通道B管理,也即事件订阅者B订阅了通道B。通道B可将游戏事件C推送至事件订阅者B,使得订阅游戏父事件的事件订阅者可以接收到对应的游戏子事件。事件订阅者A订阅了游戏事件C,游戏事件C的游戏类型由通道A管理,也即事件订阅者A订阅了通道A。通道A可将游戏事件C推送至事件订阅者A,使得订阅游戏子事件的事件订阅者可以接收到该游戏子事件。
在一实施例中,事件发布者基于第一线程向事件总线发布第一游戏事件,事件总线接收到该第一游戏事件,并将该第一游戏事件推送至事件订阅者。其中,第一线程可以是任一线程,第一游戏事件可以是事件发布者发布的任一游戏事件。相应的,事件订阅者基于第一线程、第二线程或守护线程接收事件总线推送的第一游戏事件,对第一游戏事件进行处理。其中,第二线程是不同于第一线程的线程。守护线程是指程序运行时在后台提供一种通用服务的线程,其可以在任何时候发生中断。当事件发布者和事件订阅者基于第一线程发布和接收第一游戏事件时,第一游戏事件的发布和接收处于同一线程中,在该线程模型中,事件订阅者尽量避免执行耗时操作以避免阻塞第一游戏事件的传递。当事件发布者基于第一线程发布第一游戏事件和事件订阅者基于第二线程接收第一游戏事件时,无论第一游戏事件在哪个线程中发布,第一游戏事件在异步线程中处理,事件订阅者的执行操作对第一游戏事件的发布线程没有影响,因此可异步线程处理一些较为复杂的操作。当事件订阅者基于异步线程处理游戏事件时,事件订阅者可按照自身节奏接收处理游戏事件,缓解系统压力。当事件发布者基于第一线程发布第一游戏事件和事件订阅者基于守护线程接收第一游戏事件时,无论第一游戏事件在哪个线程中发布,第一游戏事件都会在守护线程中处理,也即第一游戏事件的优先级较低,可以慢慢处理而不会对系统造成影响。可理解,本实施例提供三种线程模式,分别是同步模式、异步模式和守护模式,开发人员可结合业务类型使用不同的线程模型,以更好地提高游戏性能。
在该实施例中,当游戏事件的发布和接收处于同一线程中时,事件订阅者需等待上一事件订阅者处理完该游戏事件后才能开始处理该游戏事件。但该游戏事件可能对某个事件订阅者不太重要,而对另一事件订阅者很重要,因此本实施例定义了在线程同步模式下各个事件订阅者的事件处理优先级,以将游戏事件优先推送至优先级更高的事件订阅者处理,使得事件订阅者优先关注最重要的游戏事件,事件调度方式比较灵活。示例性的,事件总线根据订阅通道的事件订阅者的优先级,通过通道将游戏事件推送至事件订阅者。参考图2,通道B要将游戏事件B推送至事件订阅者A和事件订阅者B,若事件订阅者B的优先级高于事件订阅者A,则通道B先将游戏事件B推送至事件订阅者B,在事件订阅者B处理完游戏事件B后,通道B再将游戏事件B推送至事件订阅者A。
在一实施例中,游戏事件可以分为普通事件和粘滞事件。在游戏事件为普通事件的情况下,事件总线清理通道中的游戏事件;在游戏事件为粘滞事件的情况下,事件总线保留通道中的游戏事件,在确定新的事件订阅者订阅通道时,通过通道将游戏事件推送至新的事件订阅者。示例性的,普通事件一般是对当前的事件订阅者有效,因此在所有订阅该普通事件的事件订阅者处理完该普通事件后,事件总线可以清理对应通道的事件子空间内存储的该普通事件。而粘滞事件除了可以对当前的事件订阅者有效,还可以对后来注册的事件订阅者有效,因此在所有订阅该普通事件的事件订阅者处理完该粘滞事件后,事件总线可以保留对应通道的事件子空间内存储的该粘滞事件。当后续有新的事件订阅者订阅该通道时,将该通道的事件子空间内存储的该粘滞事件推送至新的事件订阅者,避免游戏事件因事件订阅者不在场而忽略,事件调度方式比较灵活。
在一实施例中,事件发布者从游戏事件对应的事件池中获取事件对象,根据事件对象生成游戏事件,将游戏事件发布至事件总线。可理解,在游戏事件传输框架下,游戏事件被频繁创建和作为垃圾回收,这容易造成对游戏性能的影响。对此,事件发布者可创建一个事件池来管理游戏事件的事件对象,在创建游戏事件时,优先从游戏事件对应的事件池中获取事件对象,在没有事件对象时再创建一个全新的事件对象。在游戏事件使用完后,将事件对象放回事件池中,事件对象的所有属性都会无效,以便后续复用。
游戏事件传输框架应独立于游戏应用的组件库,然后由依赖管理工具引入游戏应用中,对应事件组件来说,其为游戏应用的一部分,但需要独立于游戏应用的其他组件,以保证组件之间的相互独立。在游戏应用中,事件发布者发布的游戏事件,事件订阅者订阅的游戏事件往往都是业务规则,因此游戏事件的事件类型和事件订阅者的订阅事件类型通过注解编制的方式定义,相比于继承实现反射使用的方式,注解编制的方式不仅可以降低事件组件的侵入性,更能提高事件组件的高效性。除此之外,低侵入也降低了使用的复杂度,使得开发更容易上手,节约学习成本,减少改动。
综上,本申请实施例提供的游戏事件传输方法,通过事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。通过上述技术手段,事件发布者将游戏事件发布到事件总线,由事件总线将游戏事件推送到事件订阅者,因此作为事件发布者的组件无需知道作为事件订阅者的组件的存在,从而将各个组件独立开来,实现了组件的解耦,降低了系统复杂度。由于组件解耦后,后期可以单独维护和迭代各个组件,降低了后期系统框架的维护和迭代的难度。事件总线通过多个通道对游戏事件进行分区分流处理,以使每个游戏事件分发到一个通道中,从而降低了事件总线的事件流量,有利于提高事件传输效率。
在上述实施例的基础上,图5为本申请实施例提供的一种游戏事件传输装置的结构示意图。参考图5,本实施例提供的游戏事件传输装置具体包括:订阅处理模块21、事件分配模块22和事件推送模块23。
其中,订阅处理模块21,被配置为事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;
事件分配模块22,被配置为事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;
事件推送模块23,被配置为事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。
在上述实施例的基础上,事件分配模块22包括:父事件确定单元,被配置为事件总线接收到游戏子事件时,确定游戏子事件对应的游戏父事件;事件分配单元,被配置为事件总线根据游戏子事件的事件类型和游戏父事件的事件类型,将游戏子事件分发至管理游戏子事件的事件类型和游戏父事件的事件类型的通道。
在上述实施例的基础上,游戏事件传输装置包括:事件发布模块,被配置为在事件总线接收各个事件发布者发布的游戏事件之前,事件发布者基于第一线程向事件总线发布第一游戏事件;事件接收模块,被配置为在事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者之后,事件订阅者基于第一线程、第二线程或守护线程接收事件总线推送的第一游戏事件,对第一游戏事件进行处理。
在上述实施例的基础上,事件推送模块23包括:事件推送单元,被配置为事件总线根据订阅通道的事件订阅者的优先级,通过通道将游戏事件推送至事件订阅者。
在上述实施例的基础上,游戏事件传输装置包括:事件清理模块,被配置为在游戏事件为普通事件的情况下,事件总线清理通道中的游戏事件;事件保留模块,被配置为在游戏事件为粘滞事件的情况下,事件总线保留通道中的游戏事件,在确定新的事件订阅者订阅通道时,通过通道将游戏事件推送至新的事件订阅者。
在上述实施例的基础上,游戏事件传输装置包括:事件生成模块,被配置为在事件总线接收各个事件发布者发布的游戏事件之前,事件发布者从游戏事件对应的事件池中获取事件对象,根据事件对象生成游戏事件,将游戏事件发布至事件总线。
在上述实施例的基础上,游戏事件的事件类型和事件订阅者的订阅事件类型通过注解编制的方式定义。
上述,本申请实施例提供的游戏事件传输装置,通过事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。通过上述技术手段,事件发布者将游戏事件发布到事件总线,由事件总线将游戏事件推送到事件订阅者,因此作为事件发布者的组件无需知道作为事件订阅者的组件的存在,从而将各个组件独立开来,实现了组件的解耦,降低了系统复杂度。由于组件解耦后,后期可以单独维护和迭代各个组件,降低了后期系统框架的维护和迭代的难度。事件总线通过多个通道对游戏事件进行分区分流处理,以使每个游戏事件分发到一个通道中,从而降低了事件总线的事件流量,有利于提高事件传输效率。
本申请实施例提供的游戏事件传输装置可以用于执行上述实施例提供的游戏事件传输方法,具备相应的功能和有益效果。
图6是本申请实施例提供的一种游戏事件传输设备的结构示意图,参考图6,该游戏事件传输设备包括:处理器31、存储器32、通信装置33、输入装置34及输出装置35。该游戏事件传输设备中处理器31的数量可以是一个或者多个,该游戏事件传输设备中的存储器32的数量可以是一个或者多个。该游戏事件传输设备的处理器31、存储器32、通信装置33、输入装置34及输出装置35可以通过总线或者其他方式连接。
存储器32作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例的游戏事件传输方法对应的程序指令/模块(例如,游戏事件传输装置中的订阅处理模块21、事件分配模块22和事件推送模块23)。存储器32可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器32可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置33用于进行数据传输。
处理器31通过运行存储在存储器32中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的游戏事件传输方法。
输入装置34可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置35可包括显示屏等显示设备。
上述提供的游戏事件传输设备可用于执行上述实施例提供的游戏事件传输方法,具备相应的功能和有益效果。
本申请实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种游戏事件传输方法,该游戏事件传输方法包括:事件总线根据事件订阅者的订阅事件类型,确定事件订阅者订阅的通道,事件总线包括多个通道,不同通道管理不同事件类型的游戏事件;事件总线接收各个事件发布者发布的游戏事件,根据游戏事件的事件类型将游戏事件分发至对应的通道;事件总线通过通道将对应游戏事件推送至订阅通道的事件订阅者。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的游戏事件传输方法,还可以执行本申请任意实施例所提供的游戏事件传输方法中的相关操作。
上述实施例中提供的游戏事件传输装置、存储介质及游戏事件传输设备可执行本申请任意实施例所提供的游戏事件传输方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的游戏事件传输方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (10)
1.一种游戏事件传输方法,其特征在于,包括:
事件总线根据事件订阅者的订阅事件类型,确定所述事件订阅者订阅的通道,所述事件总线包括多个所述通道,不同通道管理不同事件类型的游戏事件;
所述事件总线接收各个事件发布者发布的游戏事件,根据所述游戏事件的事件类型将所述游戏事件分发至对应的通道;
所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者。
2.根据权利要求1所述的游戏事件传输方法,其特征在于,所述事件总线接收各个事件发布者发布的游戏事件,根据所述游戏事件的事件类型将所述游戏事件分发至对应的通道,包括:
所述事件总线接收到游戏子事件时,确定所述游戏子事件对应的游戏父事件;
所述事件总线根据所述游戏子事件的事件类型和所述游戏父事件的事件类型,将所述游戏子事件分发至管理所述游戏子事件的事件类型和所述游戏父事件的事件类型的通道。
3.根据权利要求1所述的游戏事件传输方法,其特征在于,在所述事件总线接收各个事件发布者发布的游戏事件之前,还包括:
所述事件发布者基于第一线程向所述事件总线发布第一游戏事件;
相应的,在所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者之后,还包括:
所述事件订阅者基于所述第一线程、第二线程或守护线程接收所述事件总线推送的所述第一游戏事件,对所述第一游戏事件进行处理。
4.根据权利要求1所述的游戏事件传输方法,其特征在于,所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者,包括:
所述事件总线根据订阅所述通道的事件订阅者的优先级,通过通道将所述游戏事件推送至所述事件订阅者。
5.根据权利要求1所述的游戏事件传输方法,其特征在于,在所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者之后,还包括:
在所述游戏事件为普通事件的情况下,所述事件总线清理所述通道中的所述游戏事件;
在所述游戏事件为粘滞事件的情况下,所述事件总线保留所述通道中的所述游戏事件,在确定新的事件订阅者订阅所述通道时,通过所述通道将所述游戏事件推送至所述新的事件订阅者。
6.根据权利要求1所述的游戏事件传输方法,其特征在于,在所述事件总线接收各个事件发布者发布的游戏事件之前,还包括:
所述事件发布者从所述游戏事件对应的事件池中获取事件对象,根据所述事件对象生成所述游戏事件,将所述游戏事件发布至所述事件总线。
7.根据权利要求1所述的游戏事件传输方法,其特征在于,所述游戏事件的事件类型和所述事件订阅者的订阅事件类型通过注解编制的方式定义。
8.一种游戏事件传输装置,其特征在于,包括:
订阅处理模块,被配置为事件总线根据事件订阅者的订阅事件类型,确定所述事件订阅者订阅的通道,所述事件总线包括多个所述通道,不同通道管理不同事件类型的游戏事件;
事件分配模块,被配置为所述事件总线接收各个事件发布者发布的游戏事件,根据所述游戏事件的事件类型将所述游戏事件分发至对应的通道;
事件推送模块,被配置为所述事件总线通过所述通道将对应游戏事件推送至订阅所述通道的事件订阅者。
9.一种游戏事件传输设备,其特征在于,包括:
一个或多个处理器;
存储器,存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一所述的游戏事件传输方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7任一所述的游戏事件传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310917043.5A CN117018599A (zh) | 2023-07-25 | 2023-07-25 | 游戏事件传输方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310917043.5A CN117018599A (zh) | 2023-07-25 | 2023-07-25 | 游戏事件传输方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117018599A true CN117018599A (zh) | 2023-11-10 |
Family
ID=88628970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310917043.5A Pending CN117018599A (zh) | 2023-07-25 | 2023-07-25 | 游戏事件传输方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117018599A (zh) |
-
2023
- 2023-07-25 CN CN202310917043.5A patent/CN117018599A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bordeaux et al. | When are two web services compatible? | |
CN101821721A (zh) | 具有误差处理的事务型基于图的计算 | |
US20120151484A1 (en) | Virtual Machine and Programming Language for Event Processing | |
US10037263B1 (en) | Methods, systems, and articles of manufacture for implementing end-to-end automation of software services | |
CN109445841B (zh) | 接口文档管理方法、装置、服务器及存储介质 | |
CN111182019B (zh) | 跨平台通信方法及装置、电子设备 | |
CN112363913B (zh) | 一种并行测试任务调度寻优的方法、装置和计算设备 | |
US8161127B2 (en) | Process mapping in parallel computing | |
US8868532B2 (en) | Message exchange pattern rendezvous abstraction | |
US20180316572A1 (en) | Cloud lifecycle managment | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
CN116414521A (zh) | 分布异构靶场的虚拟机远程命令交互方法、装置及介质 | |
CN117018599A (zh) | 游戏事件传输方法、装置、设备及存储介质 | |
CN114944979A (zh) | 一种多管理域的通信方法和装置 | |
CN107911442B (zh) | 接收响应接口交互方法、装置、计算机设备及存储介质 | |
CN107450813B (zh) | 一种自带触发功能的按钮的设计方法与设备 | |
CN110096377B (zh) | 一种定制化软件发布的实现方法 | |
KR101951430B1 (ko) | Dds 기반 고해상도 공학급 모델 간 계층적 분산 시뮬레이션 장치 및 방법 | |
CN112711602A (zh) | 一种存储过程的运行方法、装置,数据库系统及存储介质 | |
US20130139175A1 (en) | Process mapping parallel computing | |
US11586528B2 (en) | Software development kit with independent automatic crash detection | |
Raskin | Protocols with constant local storage and unreliable communication | |
US20240103941A1 (en) | Flow configurable event-driven microservices | |
CN110825529B (zh) | 业务消息管理系统及方法 | |
Phillips et al. | Workspaces: A multi-level architectural style for synchronous groupware |
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 |