CN109598551B - 一种分布式服务器结构的游戏抽奖方法及装置 - Google Patents

一种分布式服务器结构的游戏抽奖方法及装置 Download PDF

Info

Publication number
CN109598551B
CN109598551B CN201811458593.0A CN201811458593A CN109598551B CN 109598551 B CN109598551 B CN 109598551B CN 201811458593 A CN201811458593 A CN 201811458593A CN 109598551 B CN109598551 B CN 109598551B
Authority
CN
China
Prior art keywords
player
data
winning
game
redis database
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.)
Active
Application number
CN201811458593.0A
Other languages
English (en)
Other versions
CN109598551A (zh
Inventor
宋浪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201811458593.0A priority Critical patent/CN109598551B/zh
Publication of CN109598551A publication Critical patent/CN109598551A/zh
Application granted granted Critical
Publication of CN109598551B publication Critical patent/CN109598551B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • G06Q30/0209Incentive being awarded or redeemed in connection with the playing of a video game

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供了一种分布式服务器结构下的游戏抽奖方法及装置,分布式服务器运行多个游戏进程,所述游戏进程可以通过网络与Redis数据库直接连接,分布式服务器通过游戏进程获取报名玩家的标识信息,然后根据报名玩家的标识信息,从报名玩家中选取中选玩家,并获取中选玩家的玩家数据,接着通过游戏进程将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序,然后由游戏进程从Redis数据库依次选取中选玩家的玩家数据作为中奖玩家的玩家数据,实现了在对海量玩家进行抽奖的情况下,通过分阶段随机抽奖,分散了服务器的计算压力,且参数可配置,服务器的性能不会随用户量的增长而受到影响。

Description

一种分布式服务器结构的游戏抽奖方法及装置
技术领域
本发明涉及游戏技术领域,特别是涉及一种分布式服务器结构的游戏抽奖方法及装置。
背景技术
大型多人在线角色扮演游戏(Massive Multiplayer Online Role-PlayingGame,MMORPG),MMORPG分为客户端和服务器两部分。玩家从客户端通过互联网连接,登陆服务器端后才能进行游戏。玩家的资料保存在服务器端。在游戏运营过程中,当遇到一些重大的节点活动,如新年,周年庆典,网络游戏营运商会举办一些玩家参与门槛很低的,奖励价值很高的的活动——如全服免费抽奖,可以活跃气氛,冲击在线人数,制造营销话题。大部分在线运营的游戏都有这种全服抽奖活动的需求。
在现阶段,实现MMORPG全服抽奖活动的方式主要有以下三种:
第一种方式,单服游戏结构,例如比较早期mmorpg游戏(梦话,大话端游),不同服务器的玩家数据相互隔离,进度不同。同一个游戏服中有且仅有一个唯一逻辑游戏服务器,这种情况不需要跨服务器进行通信,一般只需要一个抽奖业务模块,在活动期间收集玩家数据到内存中,当达到指定时间时,通过随机方法,抽取玩家。这种情况一般为单个游戏服,玩家的数量不多,且在同一个服务器中,实现简单。
第二种方式,单服游戏结构,但是由多个游戏服务器组成。一般的mmorpg游戏都采用类似结构,便于单个游戏服可以支撑更多的玩家。这种形式,需要在服务器内设计中心的游戏服务器,或者独立的处理公共逻辑的主服务器。可以通过服务器之间的通信把玩家的报名数据收集在单点服务器中,然后再定点实现抽奖。这种情况,玩家数量级,一般不会超过10W,处于可控的范围。
第三种方式,大世界类型的游戏,这种类型游戏所有玩家都在同一个虚拟世界游戏,如现在的moba类游戏,吃鸡类游戏。特点是玩家众多,日活跃用户数量(Daily ActiveUser,DAU)可以达到在千万级,甚至更高。其服务器结构的特点是分布式的,具备平行扩展,支持海量用户的能力。玩家在看上去统一的入口背后,运行着几百甚至上千的游戏服务器。这个情况,需要考虑玩家的数据量,存储的内存占用。一般的做法是由一个中心服的单点来登记参与玩家的信息。然后再通过随机算法抽奖,只不过由于服务器架构复杂,这种游戏的报名通信,通知广播等也都更加复杂。
基于上述分析可知,第一种游戏服务器结构已经较为过时,处理方式虽然简单但不适用于当先游戏服务端的发展。第二种、第三种是当前游戏服务端的处理方案,然而在上述方案,需要考虑系统容灾能力,在数据量超大的情况下,容易造成I/O瓶颈,同时服务器启动时,也需要耗费较多的加载时间。
发明内容
本发明实施例提供一种分布式服务器结构的游戏抽奖方法和相应的一种分布式服务器结构的游戏抽奖装置。
为了解决上述问题,本发明实施例公开了一种分布式服务器结构的游戏抽奖方法,所述分布式服务器运行了多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述方法包括:
通过所述游戏进程获取报名玩家的标识信息;
由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。
优选地,所述由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据,包括:
通过所述游戏进程获取预设中选人数;
由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
判断所述报名玩家的第一数值是否在中选区间内;
若是,则将所述报名玩家选取为中选玩家。
优选地,所述通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序,包括:
由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
通过所述游戏进程将所述中选数据写入所述Redis数据库中;
由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
优选地,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据,包括:
当达到开奖条件时,选取一个所述游戏进程作为开奖进程;
所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
优选地,所述选取一个所述游戏进程作为开奖进程,包括:
所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;
将写入成功的游戏进程作为所述开奖进程。
优选地,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据的步骤之后,所述方法还包括:
通过所述Redis数据库返回所述中奖数据;
由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;
通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。
本发明实施例还公开了一种分布式服务器结构的游戏抽奖装置,其特征在于,所述分布式服务器运行多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述装置包括:
玩家信息获取模块,用于通过所述游戏进程获取报名玩家的标识信息;
中选玩家选取模块,用于由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
玩家数据排序模块,用于通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
中奖玩家选取模块,用于由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。
优选地,所述中选玩家选取模块包括:
中选人数获取子模块,用于由所述游戏进程获取预设中选人数的数值;
第一数值分配子模块,用于通过所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
中选判断子模块,用于判断所述报名玩家的第一数值是否在中选区间内;
中选玩家选取子模块,用于当所述报名玩家的第一数值落入所述中选区间内时,将所述报名玩家选取为中选玩家;
中选玩家确定子模块,用于由所述游戏进程对所述第一数值与所述预设中选人数的数值进行比较,当所述第一数值小于或等于所述预设中选人数的数值时,将所述报名玩家选取为所述中选玩家。
优选地,所述玩家数据排序模块包括:
中选数据生成子模块,用于由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
中选数据写入子模块,用于通过所述游戏进程将所述中选数据写入所述Redis数据库中;
排序表生成子模块,用于由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
优选地,所述中奖玩家选取模块包括:
开奖进程选取子模块,用于当达到开奖条件时,选取一个所述游戏进程作为开奖进程;
中奖数据读取子模块,用于所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
优选地,所述开奖进程选取子模块,还用于:
所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;
将写入成功的游戏进程作为所述开奖进程。
优选地,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述装置还包括:
中奖数据返回模块,用于通过所述Redis数据库返回所述中奖数据;
中奖数据解析模块,用于由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
中奖信息生成模块,用于由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;
中奖信息发布模块,用于通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。
本发明实施例还公开了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的一种分布式服务器结构下的全服抽奖方法的一个或多个步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的一种分布式服务器结构下的全服抽奖方法的一个或多个步骤。
本发明实施例包括以下优点:
在本发明实施例中,分布式服务器运行多个游戏进程,所述游戏进程可以通过网络与Redis数据库直接连接,分布式服务器通过游戏进程获取报名玩家的标识信息,然后根据报名玩家的标识信息,从报名玩家中选取中选玩家,并获取中选玩家的玩家数据,接着通过游戏进程将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序,然后由游戏进程从Redis数据库依次选取中选玩家的玩家数据作为中奖玩家的玩家数据,实现了在对海量玩家进行抽奖的情况下,通过分阶段随机抽奖,分散了服务器的计算压力,且参数可配置,服务器的性能不会随用户量的增长而受到影响。
并且,在初选结束后,将中选玩家的玩家数据写入数据库中,同时进行排序,一方面保证了抽奖过程中中选玩家玩家数据的一致性以及数据的容灾能力,降低了服务器的负载,另一方面由于在写入数据库中同时对玩家数据进行排序,抽奖过程只需要按预设顺序抽取预设数目的玩家即可实现抽奖,抽奖结果稳定性高。
进一步,由于所有游戏进程运行着相同的逻辑,则通过选取其中的一个游戏进程进行中奖广播发布和奖品发放,实现了去中心化,不需要专门设计特定的中心游戏进程,降低了对中心服务器的依赖。
附图说明
图1是本发明的一种分布式服务器结构的游戏抽奖方法实施例的步骤流程图;
图2是本发明另一实施例提供的一种分布式服务器结构的游戏抽奖方法的步骤流程图;
图3是本发明另一实施例提供的一种分布式服务器结构的游戏抽奖方法的步骤流程图;
图4是本发明另一实施例提供的一种分布式服务器结构的游戏抽奖方法的步骤流程图;
图5是本发明另一实施例提供的一种分布式服务器结构的游戏抽奖方法的步骤流程图;
图6是本发明的一种分布式服务器结构的游戏抽奖装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
参照图1,示出了本发明的一种分布式服务器结构的游戏抽奖方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101、通过所述游戏进程获取报名玩家的标识信息;
对于网络游戏,它们可以看作是由提供多个特定游戏功能的服务器组合而成。因此,网络游戏可以通过一定的方式将这些特定游戏功能的服务分割,从而把负载分布到独立的服务器上。例如,一般的网络游戏包括用户的角色命名的服务、管理用户角色账户的服务和游戏本身的服务(例如管理游戏内所获得虚拟物品道具的服务、操作制定用户角色进行游戏的服务和匹配其他用户进行游戏的服务等)。通过上述分布式的服务,网络游戏不再只运行在单台服务器上,而是将组成游戏的多个服务分配到多个服务器内,多台服务器之间连接成一个统一的网络,从而使得网络游戏可以运行在分布式服务器上。
在实际应用中,对于分布式服务器游戏架构中的服务器而言,可以采用多进程单线程的服务器设计模式,在该模式下,每个服务器运行着多个游戏进程。同时,服务器可以将玩家的数据存储于数据库中,每一个游戏进程都可以通过网络直接与数据库进行连接。
在本实施例中,由于服务器运行着多个游戏进程,服务器可以通过游戏进程获取存储在数据库中的玩家数据,从而获取报名玩家的标识信息,即玩家的唯一标识ID。
例如,在一些重大的节点活动,如新年、周年庆典等,游戏运营者会举办一些玩家参与门槛低,但奖励价值很高的节日活动,如全服抽奖活动,当玩家符合一定的条件之后,如完成一场资质赛(或排位赛),并获得胜利,服务器会通过游戏进程在结算时处理该事件,自动为玩家报名,然后获取玩家数据,进而获取玩家的ID。
步骤102、由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
在本实施例中,服务器中的游戏进程会根据玩家的标识信息,从所有的报名玩家中按照预设的中选概率选取一定数目的玩家,作为中选玩家,并获取中选玩家的玩家数据,其中,玩家数据可以包括:玩家唯一标识ID、玩家所在大厅标识、玩家名字、玩家头像图标以及玩家头像框。
在本发明实施例的一种优选实施例中,步骤102可以包括如下子步骤:
通过所述游戏进程获取预设中选人数;
由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
判断所述报名玩家的第一数值是否在中选区间内;
若是,则将所述报名玩家选取为中选玩家。
在具体实现中,采用分阶段随机抽奖的方式进行抽奖,包括预选和竞选,随机过程则设置在开奖时进行,该分阶段随机抽奖的方式能够保证每个参与抽奖的玩家的中奖率都是一致的。
服务器通过游戏进程首先获取预设中选人数的数值,接着为每一个报名玩家分配一个与报名玩家ID对应的第一数值,并判断所述报名玩家的第一数值是否在中选区间内,若是,则将所述报名玩家选取为中选玩家。
在具体实现中,为了体现公平性,可以随机设置至少一个数值区间,作为抽奖活动的中选区间。当玩家的第一数值落入中选区间时,则将该玩家确定为中选玩家,并提示玩家报名成功;当玩家的第一数值落在中选区间之外时,只提示玩家报名成功(实际已被淘汰)。通过设置预选机制,在玩家进行报名的时候进行初步筛选,降低了进入竞选的玩家数量,分散了服务器的计算压力,且减小了服务器的负载。
其中,游戏运营者根据游戏的活跃用户数设置中选概率,得到中选人数后,可以设置中选区间,如预估有1000万用户参加该抽奖活动,游戏运营商期望有10000个玩家进入竞选名单,则设置中选概率为1/1000,可以使用如:Random(1,10000000)<=10000、1100<=Random(1,10000000)<=11000、1<=Random(1,10000000)<=5000和9995000<=Random(1,10000000)<=10000000等作为预设条件。
需要说明的是,在本发明实施例中,可以根据参与活动的玩家人数,设置中选概率,得到中选人数之后,可以设置至少一个中选区间,实现对报名玩家的初步筛选。
在本发明实施例的一种示例中,游戏运营者根据游戏的活跃用户数设置了千分之一的中选概率,此时参加抽奖活动的人数为15000000,则预设中选人数=参加活动的人数*中选概率=15000,中选区间为Random(1,15000000)<=15000。玩家A和玩家B完成了一场资质赛,符合报名条件,游戏进程在为玩家A和玩家B报名的同时,分配一个与玩家ID对应的score值,如score=Random(1,15000000),则玩家A的score值为12888,玩家B的score值为16888,玩家A的score值落入中选区间内,则确定玩家A为中选玩家,提示报名成功,而玩家B的score值落在中选区间外,则只提示报名成功,实则已被淘汰。
在本发明实施例的另一种示例中,游戏运营者根据游戏的活跃用户数设置了千分之一的中选概率,此时参加抽奖活动的人数为10000000,则预设中选人数=参加活动的人数*中选概率=10000,中选区间为1<=Random(1,10000000)<=5000和9995000<=Random(1,10000000)<=10000000。玩家C、玩家D和玩家E完成了一场资质赛,符合报名条件,游戏进程在为玩家C、玩家D和玩家E报名的同时,分配一个与玩家ID对应的score值,如score=Random(1,10000000),则玩家C的score值为4888,玩家D的score值为9999999,玩家E的score值为666666,玩家C和玩家D的score值落入中选区间内,则选取玩家C和玩家D为中选玩家,并提示报名成功,玩家E的score值落在了中选区间外,则只提示报名成功,实则已经被淘汰。
需要说明的是,在本发明中活动人数、预设中奖概率等包括但不限于实施例中所述描述的数值,在游戏运营过程中,可以根据实际需要进行调整,本发明在此不作限制。
步骤103、通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
在本发明实施例中,分布式服务器中的游戏进程可以通过网络直接与数据库进行连接,当服务器通过游戏进程从所有的报名玩家中选取出中选玩家之后,获取中选玩家的玩家数据,可以将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序。
通过在初选结束后,将中选玩家的玩家数据写入数据库中,同时进行排序,一方面保证了抽奖过程中中选玩家玩家数据的一致性以及数据的容灾能力,降低了服务器的负载,另一方面由于在写入数据库中同时对玩家数据进行排序,抽奖过程只需要按预设顺序抽取预设数目的玩家即可实现抽奖,抽奖结果稳定性高。
需要说明的是,在本实施例中,预设排序规则可以是顺序,也可以是倒叙,本发明对此不作限制。
在本发明一实施例中,步骤103可以包括如下子步骤:
由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;通过所述游戏进程将所述中选数据写入所述Redis数据库中;由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
在本发明实施例中,当服务器通过游戏进程选取出中选玩家之后,可以获取中选玩家的玩家数据,包括:玩家唯一标识ID、玩家所在大厅标识、玩家名字、玩家头像图标以及玩家头像框,然后结合第一数值,生成中选数据。
在具体实现中,游戏进程会将中选玩家的玩家数据转换为Json格式,具体为:{'guid':player.guid,'hs':player.hall_stub,'name':player.name,'ic':player.icon,'fr':player.frame},分别为玩家唯一标识ID、玩家所在大厅标识、玩家名字、玩家头像图标以及玩家头像框。
中选玩家的玩家数据转换格式完毕后,以中选玩家的唯一标识ID作为Key,打包玩家的玩家数据player.data,将玩家数据以(Key,score)的形式写入Redis数据库中,并根据score值的大小,对玩家数据进行排序。
在本实施例中,利用Redis数据库zset排序功能对中选玩家的玩家数据进行排序,具体采用的数据存储的表结构为Redis数据库的Sorted Set结构,使用ZADD命令:ZADDsetname score player.data插入一条数据。set根据score值,对所有player.data进行排序,并保证新插入的player.data在正确的位置。插入的时间复杂度为O(M*log(N)),其中N是有序集的基数,M为成功添加的新成员的数量。
需要说明的是,在本实施例中,以Redis数据库为例进行示例性说明,本领域技术人员还可以采用具备有序集特点的数据库,本发明对此不作限制。
在本发明实施例的一种示例中,以五个中选玩家为例进行说明,五个玩家在进行预选时分配到的score值分别是80、50、90、10、30,以玩家的唯一标识ID作为Key,打包玩家数据player.data,依次插入Key1、Key2、Key3、Key4、Key5,则玩家数据依次为(key1,80),(key2,50),(key3,90),(key4,10),(key5,30),在Redis Sorted Set中的排序为:
(key4,10)
(key5,30)
(key2,50)
(key1,80)
(key3,90)
需要说明的是,在本实施例中,以升序为例进行说明,本领域技术人员还可以采用降序进行排序,或者其他排序方式,本发明对此不作限制。
由于在写入Redis数据库的时候,可以按照为玩家分配的score值进行排序,则此时生成的中选数据列表为一个有序的数据列表,在最终的竞选过程中,只需要按顺序抽取中选数据即可。
需要说明的是,在本发明实施例中步骤102和步骤103以服务器中的一个游戏进程为例进行示例性说明,在具体实现中,多个游戏进程运行着相同的逻辑。
步骤104、由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。
在本发明实施例中,由于服务器运行着多个游戏进程,且每个游戏进程同时运行着相同的逻辑,则只需要一个游戏进程去执行开奖工作即可,由一个游戏进程到Redis数据库中的中选数据排序表依次选取预设数目的中选数据作为中奖数据。
在具体实现中,可以在游戏进程中挂载一个定时器,还可以通过服务器的timer或者tick逻辑,实现对开奖点的监控。当达到开奖条件时,从所有运行的游戏进程中选取一个游戏进程作为开奖进程,用于从Redis数据库中的中选数据排序表中按照顺序,或,倒序读取预设数目的中选数据作为中奖数据。
在具体实现中,所有运行的游戏进程可以按照当前抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,然后将第一键值写入Redis数据库的中选数据排序表中,当其中的一个游戏进程写入成功时,则将该游戏进程作为开奖进程,此时,除去写入成功的游戏进程,其他游戏进程再执行第一键值的写入时,则会写入失败。通过选取其中的一个游戏进程进行中奖广播发布和奖品发放,实现了去中心化,不需要专门设计特定的中心游戏进程,降低了对中心服务器的依赖。
在本发明实施例的一种示例中,当确定开奖进程之后,按照预先配置的中奖人数,假设为N,服务器可以通过开奖进程从Redis数据库的中选数据排序表中读取N个中选数据作为中奖数据,其中,可以从正序读取N个中选数据,也可以从倒叙读取N个中选数据。
例如,以从五个玩家中选玩家中选取一个中奖玩家为例进行说明,五个玩家在进行预选时分配到的score值分别是80、50、90、10、30,以玩家的唯一标识ID作为Key,打包玩家数据player.data,依次插入Key1、Key2、Key3、Key4、Key5,则玩家数据依次为(key1,80),(key2,50),(key3,90),(key4,10),(key5,30),则在Redis sorted set中的排序为:
(key4,10)
(key5,30)
(key2,50)
(key1,80)
(key3,90)
此时,中奖人数为1个,则开奖进程从中选玩家排序表中按正序读取一个中选数据为(key4,10);或者,按倒叙读取一个中选数据为(key3,90)。
在本发明实施例的一种优选实施例中,还可以包括如下步骤:
通过所述Redis数据库返回所述中奖数据;
由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;
通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。
在本发明实施例中,当确定开奖进程之后,开奖进程可以向Redis数据库发送中奖数据获取请求,其中,中奖数据获取请求包括:按照正序读取预设数目的中选数据作为中奖数据;或者,按照倒叙读取预设数目的中选数据作为中奖数据。Redis数据库接收到开奖进程发送的请求之后,返回相应的中奖数据,接着由开奖进程对中奖数据进行解析,获得中奖玩家的玩家数据,接着向所有在线客户端发送中奖信息,并向中奖玩家发放奖品。
在具体实现中,开奖进程采用玩家的唯一标识ID、玩家所在大厅标识、玩家名字玩家头像以及玩家头像框,生成中奖信息,然后向所有在线客户端发送广播,通知所有玩家抽奖结束,并公布中奖名单,然后可以通过邮件方式为中奖玩家发放奖品。
需要说明的是,在本发明实施例中,通过邮件方式向中奖玩家发放奖品,本领域技术人员还可以采用其他方式进行奖品发放,如到游戏中的NPC(Non-Player Character,非玩家角色)领奖等,本发明对此不作限制。
在本发明实施例中,分布式服务器运行多个游戏进程,所述游戏进程与可以通过网络与Redis数据库直接连接,分布式服务器通过游戏进程获取报名玩家的标识信息,然后根据报名玩家的标识信息,从报名玩家中选取中选玩家,并获取中选玩家的玩家数据,接着通过游戏进程将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序,然后由游戏进程从Redis数据库依次选取中选玩家的玩家数据作为中奖玩家的玩家数据,实现了在对海量玩家进行抽奖的情况下,通过分阶段随机抽奖,分散了服务器的计算压力,且参数可配置,服务器的性能不会随用户量的增长而受到影响。
并且,在初选结束后,将中选玩家的玩家数据写入数据库中,同时进行排序,一方面保证了抽奖过程中中选玩家玩家数据的一致性以及数据的容灾能力,降低了服务器的负载,另一方面由于在写入数据库中同时对玩家数据进行排序,抽奖过程只需要按预设顺序抽取预设数目的玩家即可实现抽奖,抽奖结果稳定性高。
进一步,由于所有游戏进程运行着相同的逻辑,则通过选取其中的一个游戏进程进行中奖广播发布和奖品发放,实现了去中心化,不需要专门设计特定的中心游戏进程,降低了对中心服务器的依赖。
实施例二
参考图2,示出了本发明的一种分布式服务器结构的游戏抽奖方法实施例的流程框图,具体可以包括如下步骤:
步骤201、通过所述游戏进程获取报名玩家的标识信息;
分布式服务器中运行着多个游戏进程,通过游戏进程获取存储在数据库中的报名玩家的玩家数据,包括获取玩家的ID、玩家所在大厅标识、玩家名字、玩家头像以及玩家头像框,从而获取玩家的ID。
步骤202、由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
服务器中的游戏进程可以根据玩家的ID,从所有报名玩家中按照预设的中选概率选取一定数目的玩家,作为中选玩家,并获取中选玩家的玩家数据。
参考图3、在本发明实施例的一种优选实施例中,步骤202可以包括如下子步骤:
子步骤2021、通过所述游戏进程获取预设中选人数;
在具体实现中,采用分阶段随机抽奖的方式进行抽奖,包括预选和竞选,随机过程则设置在开奖时进行,该分阶段随机抽奖的方式能够保证每个参与玩家的中奖率都是一致的。
在预选过程中,游戏运营者可以根据实际参与玩家人数,对中选概率进行设置,从而确定中选人数,其中,中选人数=参与活动的玩家人数*中选概率。当游戏运营则确定中选概率之后,服务器中的游戏进程可以根据参与活动的玩家人数确定中选人数。
子步骤2022、由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
当玩家在游戏中达到抽奖条件时,游戏进程会自动为玩家报名,并为每一个报名玩家分配一个与报名玩家ID对应的第一数值。
子步骤2023、判断所述报名玩家的第一数值是否在中选区间内;
子步骤2024,若是,则将所述报名玩家选取为中选玩家。
服务器通过游戏进程判断玩家的第一数值是否落入中选区间内,若是,则确定该报名玩家是否为中选玩家。
当玩家的第一数值落入中选区间时,则将该玩家确定为中选玩家,并提示玩家报名成功;当玩家的第一数值大落在中选区间之外时,只提示玩家报名成功(实际已被淘汰)。通过设置预选机制,在玩家进行报名的时候进行初步筛选,降低了进入竞选的玩家数量,分散了服务器的计算压力,且减小了服务器的负载。
步骤203、通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
在本发明实施例中,分布式服务器中的游戏进程可以通过网络直接与数据库进行连接,当服务器通过游戏进程从所有的报名玩家中选取出中选玩家之后,获取中选玩家的玩家数据,可以将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序。
参考图4、在本发明实施例的一种优选实施例中,步骤203可以包括如下子步骤:
子步骤2031、由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
在具体实现中,当选取出中选玩家之后,游戏进程可以从所有报名玩家数据中提取出中选玩家的玩家数据,包括:玩家唯一标识ID、玩家所在大厅标识、玩家名字、玩家头像图标以及玩家头像框,然后结合第一数值,生成中选数据。
在具体实现中,游戏进程会将中选玩家的玩家数据转换为Json格式,具体为:{'guid':player.guid,'hs':player.hall_stub,'name':player.name,'ic':player.icon,'fr':player.frame},分别为玩家唯一标识ID、玩家所在大厅标识、玩家名字、玩家头像图标以及玩家头像框。
子步骤2032、通过所述游戏进程将所述中选数据写入所述Redis数据库中;
子步骤2033、由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
当游戏进程对玩家数据的格式转换完毕后,以中选玩家的唯一标识ID作为Key,打包玩家的玩家数据player.data,将玩家数据以(Key,score)的形式写入Redis数据库中,并根据score值的大小,对玩家数据进行排序,生成中选数据排序表。
步骤204、由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据;
在本发明实施例中,由于服务器运行着多个游戏进程,且每个游戏进程同时运行着相同的逻辑,则只需要一个游戏进程去执行开奖工作即可,由一个游戏进程到Redis数据库中的中选数据排序表依次选取预设数目的中选数据作为中奖数据。
参考图5、在本发明实施例的一种优选实施例中,步骤204可以包括如下子步骤:
子步骤2041、当达到开奖条件时,选取一个所述游戏进程作为开奖进程;
子步骤2042、所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
在具体实现中,当达到开奖点时,分布式服务器可以从所有运行的游戏进程中选取一个游戏进程作为开奖进程,具体为:所有运行的游戏进程可以按照当前抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,然后将第一键值写入Redis数据库的中选数据排序表中,当其中的一个游戏进程写入成功时,则将该游戏进程作为开奖进程,此时,除去写入成功的游戏进程,其他游戏进程再执行第一键值的写入时,则会写入失败。
通过选取其中的一个游戏进程进行中奖广播发布和奖品发放,实现了去中心化,不需要专门设计特定的中心游戏进程,降低了对中心服务器的依赖。
步骤205、通过所述Redis数据库返回所述中奖数据;
在具体实现中,当确定开奖进程之后,开奖进程可以向Redis数据库发送中奖数据获取请求,其中,中奖数据获取请求包括:按照正序读取预设数目的中选数据作为中奖数据;或者,按照倒叙读取预设数目的中选数据作为中奖数据。Redis数据库接收到开奖进程发送的请求之后,返回相应的中奖数据。
步骤206、由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
当接收到中奖数据之后,开奖进程可以通过解析中奖数据,获得中选玩家的玩家数据,包括:玩家的ID、玩家所在大厅标识、玩家名字玩家头像以及玩家头像框。
步骤207、由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;
在具体实现中,游戏进程采用玩家的ID、玩家所在大厅标识、玩家名字玩家头像以及玩家头像框,生成中奖玩家的中奖信息。
步骤208、通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。
当生成中奖玩家的中奖信息之后,开奖进程向所有在线客户端发送广播,通知所有玩家抽奖结束,并公布中奖名单,然后可以通过邮件为中奖玩家发放奖品。
在本发明实施例中,分布式服务器运行多个游戏进程,所述游戏进程与可以通过网络与Redis数据库直接连接,分布式服务器通过游戏进程获取报名玩家的标识信息,然后根据报名玩家的标识信息,从报名玩家中选取中选玩家,并获取中选玩家的玩家数据,接着通过游戏进程将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序,然后由游戏进程从Redis数据库依次选取中选玩家的玩家数据作为中奖玩家的玩家数据,实现了在对海量玩家进行抽奖的情况下,通过分阶段随机抽奖,分散了服务器的计算压力,且参数可配置,服务器的性能不会随用户量的增长而受到影响。
并且,在初选结束后,将中选玩家的玩家数据写入数据库中,同时进行排序,一方面保证了抽奖过程中中选玩家玩家数据的一致性以及数据的容灾能力,降低了服务器的负载,另一方面由于在写入数据库中同时对玩家数据进行排序,抽奖过程只需要按预设顺序抽取预设数目的玩家即可实现抽奖,抽奖结果稳定性高。
进一步,由于所有游戏进程运行着相同的逻辑,则通过选取其中的一个游戏进程进行中奖广播发布和奖品发放,实现了去中心化,不需要专门设计特定的中心游戏进程,降低了对中心服务器的依赖。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
参照图6,示出了本发明的一种分布式服务器结构的游戏抽奖装置实施例的结构框图,具体可以包括如下模块:
玩家信息获取模块601,用于通过所述游戏进程获取报名玩家的标识信息;
中选玩家选取模块602,用于由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
玩家数据排序模块603,用于通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
中奖玩家选取模块604,用于由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。
在本发明一实施例中,所述中选玩家选取模块包括:
中选人数获取子模块,用于由所述游戏进程获取预设中选人数的数值;
第一数值分配子模块,用于通过所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
中选判断子模块,用于判断所述报名玩家的第一数值是否在中选区间内;
中选玩家选取子模块,用于当所述报名玩家的第一数值落入所述中选区间内时,将所述报名玩家选取为中选玩家。
在本发明一实施例中,所述玩家数据排序模块包括:
中选数据生成子模块,用于由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
中选数据写入子模块,用于通过所述游戏进程将所述中选数据写入所述Redis数据库中;
排序表生成子模块,用于由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
在本发明一实施例中,所述中奖玩家选取模块包括:
开奖进程选取子模块,用于当达到开奖条件时,选取一个所述游戏进程作为开奖进程;
中奖数据读取子模块,用于所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
在本发明一实施例中,所述开奖进程选取子模块,还用于:
所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;
将写入成功的游戏进程作为所述开奖进程。
在本发明一实施例中,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述装置还包括:
中奖数据返回模块,用于通过所述Redis数据库返回所述中奖数据;
中奖数据解析模块,用于由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
中奖信息生成模块,用于由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;
中奖信息发布模块,用于通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还公开了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的一种分布式服务器结构下的全服抽奖方法的一个或多个步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的一种分布式服务器结构下的全服抽奖方法的一个或多个步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种分布式服务器结构的游戏抽奖方法和一种分布式服务器结构的游戏抽奖装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种分布式服务器结构的游戏抽奖方法,其特征在于,所述分布式服务器运行了多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述方法包括:
通过所述游戏进程获取报名玩家的标识信息;
由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据;
其中,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据,还包括:
当达到开奖条件时,选取一个所述游戏进程作为开奖进程,所述开奖进程用于采用所述中奖玩家的玩家数据,生成中奖信息,并向所有在线客户端发送所述中奖信息,以及为所述中选玩家发奖。
2.根据权利要求1所述的方法,其特征在于,所述由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据,包括:
通过所述游戏进程获取预设中选人数;
由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
判断所述报名玩家的第一数值是否在中选区间内;
若是,则将所述报名玩家选取为中选玩家。
3.根据权利要求2所述的方法,其特征在于,所述通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序,包括:
由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
通过所述游戏进程将所述中选数据写入所述Redis数据库中;
由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
4.根据权利要求3所述的方法,其特征在于,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据,包括:
所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
5.根据权利要求4所述的方法,其特征在于,所述选取一个所述游戏进程作为开奖进程,包括:
所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;
将写入成功的游戏进程作为所述开奖进程。
6.根据权利要求4所述的方法,其特征在于,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据的步骤之后,所述方法还包括:
通过所述Redis数据库返回所述中奖数据;
由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息。
7.一种分布式服务器结构的游戏抽奖装置,其特征在于,所述分布式服务器运行多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述装置包括:
玩家信息获取模块,用于通过所述游戏进程获取报名玩家的标识信息;
中选玩家选取模块,用于由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;
玩家数据排序模块,用于通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;
中奖玩家选取模块,用于由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据;
其中,所述中奖玩家选取模块还包括:
开奖进程选取子模块,用当达到开奖条件时,选取一个所述游戏进程作为开奖进程,所述开奖进程用于采用所述中奖玩家的玩家数据,生成中奖信息,并向所有在线客户端发送所述中奖信息,以及为所述中选玩家发奖。
8.根据权利要求7所述的装置,其特征在于,所述中选玩家选取模块包括:
中选人数获取子模块,用于由所述游戏进程获取预设中选人数的数值;
第一数值分配子模块,用于通过所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;
中选判断子模块,用于判断所述报名玩家的第一数值是否在中选区间内;
中选玩家选取子模块,用于当所述报名玩家的第一数值落入所述中选区间内时,将所述报名玩家选取为中选玩家;
中选玩家确定子模块,用于由所述游戏进程对所述第一数值与所述预设中选人数的数值进行比较,当所述第一数值小于或等于所述预设中选人数的数值时,将所述报名玩家选取为所述中选玩家。
9.根据权利要求8所述的装置,其特征在于,所述玩家数据排序模块包括:
中选数据生成子模块,用于由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;
中选数据写入子模块,用于通过所述游戏进程将所述中选数据写入所述Redis数据库中;
排序表生成子模块,用于由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。
10.根据权利要求9所述的装置,其特征在于,所述中奖玩家选取模块包括:
中奖数据读取子模块,用于所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。
11.根据权利要求10所述的装置,其特征在于,所述开奖进程选取子模块,还用于:
所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;
将写入成功的游戏进程作为所述开奖进程。
12.根据权利要求10所述的装置,其特征在于,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述装置还包括:
中奖数据返回模块,用于通过所述Redis数据库返回所述中奖数据;
中奖数据解析模块,用于由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;
中奖信息生成模块,用于由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息。
13.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-6所述的一个或多个的步骤。
14.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6所述的一个或多个的步骤。
CN201811458593.0A 2018-11-30 2018-11-30 一种分布式服务器结构的游戏抽奖方法及装置 Active CN109598551B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811458593.0A CN109598551B (zh) 2018-11-30 2018-11-30 一种分布式服务器结构的游戏抽奖方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811458593.0A CN109598551B (zh) 2018-11-30 2018-11-30 一种分布式服务器结构的游戏抽奖方法及装置

Publications (2)

Publication Number Publication Date
CN109598551A CN109598551A (zh) 2019-04-09
CN109598551B true CN109598551B (zh) 2021-03-02

Family

ID=65960020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811458593.0A Active CN109598551B (zh) 2018-11-30 2018-11-30 一种分布式服务器结构的游戏抽奖方法及装置

Country Status (1)

Country Link
CN (1) CN109598551B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113034207A (zh) * 2021-04-20 2021-06-25 青岛冠成软件有限公司 一种抽奖信息处理方法、装置、服务器和可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593386B (zh) * 2008-05-30 2011-07-20 科乐美数码娱乐株式会社 游戏系统及构成该游戏系统的游戏装置和管理装置
CN104981853A (zh) * 2012-08-15 2015-10-14 Lms专利(曼岛)有限公司 游戏系统
CN105727558A (zh) * 2014-12-11 2016-07-06 博雅网络游戏开发(深圳)有限公司 互动邀请处理方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010068905A1 (en) * 2008-12-12 2010-06-17 Herrmann Mark E Method and apparatus for off property prize pooling
KR101398088B1 (ko) * 2012-11-15 2014-06-02 (주)위메이드엔터테인먼트 온라인 게임에서의 데이터 관리 방법 및 데이터 관리 시스템을 포함하는 게임 서버 및 기록매체
CN105653654B (zh) * 2015-12-28 2021-11-30 上海瀚之友信息技术服务有限公司 一种抽奖资格索引系统及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593386B (zh) * 2008-05-30 2011-07-20 科乐美数码娱乐株式会社 游戏系统及构成该游戏系统的游戏装置和管理装置
CN104981853A (zh) * 2012-08-15 2015-10-14 Lms专利(曼岛)有限公司 游戏系统
CN105727558A (zh) * 2014-12-11 2016-07-06 博雅网络游戏开发(深圳)有限公司 互动邀请处理方法和装置

Also Published As

Publication number Publication date
CN109598551A (zh) 2019-04-09

Similar Documents

Publication Publication Date Title
KR101007195B1 (ko) 온라인 캡슐 추첨 시스템 및 그 방법
CN112316442B (zh) 一种直播互动方法、装置、计算机设备及存储介质
US20020119824A1 (en) Tournament network for linking amusement games
US20060211465A1 (en) Jackpot wagering with supplementary draw
EP1912185A1 (en) Method and system for providing deal-making in multiplayer tournaments
US20020072413A1 (en) Entertainment platform
US20060287100A1 (en) Game system and method of controlling game information
JP4955829B1 (ja) ゲームシステム及びその制御方法、プログラム
CN113082704A (zh) 一种互动游戏直播方法、装置、存储介质及设备
CN106998506A (zh) 比赛竞猜互动方法及系统
CN112090074B (zh) 应用中的虚拟物品控制方法、装置、设备及介质
CN106232193A (zh) 使用检索到的部分用户数据的游戏进展
GB2501457A (en) Assigning player positions in an online table game
CN109598551B (zh) 一种分布式服务器结构的游戏抽奖方法及装置
JP2006223419A (ja) ゲームシステム
US8221232B2 (en) Game system
JP2018183573A (ja) ゲームシステム、アイテム配分方法、ならびに、プログラム
CN110585722A (zh) 基于区块链的游戏时间信息的处理方法及装置、游戏控制方法及装置
CN110113414A (zh) 一种管理副本的方法、装置、服务器及存储介质
CN106657292B (zh) 一种数据处理方法及装置
JP5980160B2 (ja) ゲームシステム、そのサーバ装置、コンピュータプログラム及びマッチング制御方法
JP5021835B1 (ja) ゲームシステム及びその制御方法、プログラム
JP2015073579A (ja) ゲームシステム、それに用いられる制御方法、及びコンピュータプログラム
WO2006071392A2 (en) Method and system for conducting card games
CN111971099A (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
GR01 Patent grant
GR01 Patent grant