CN110585700B - 单人模式和多人模式统一进入战斗的方法及存储介质 - Google Patents

单人模式和多人模式统一进入战斗的方法及存储介质 Download PDF

Info

Publication number
CN110585700B
CN110585700B CN201910753050.XA CN201910753050A CN110585700B CN 110585700 B CN110585700 B CN 110585700B CN 201910753050 A CN201910753050 A CN 201910753050A CN 110585700 B CN110585700 B CN 110585700B
Authority
CN
China
Prior art keywords
group
execution state
combat
mode
state
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
CN201910753050.XA
Other languages
English (en)
Other versions
CN110585700A (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.)
Fujian Tianyi Network Technology Co ltd
Original Assignee
Fujian Tianyi Network Technology 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 Fujian Tianyi Network Technology Co ltd filed Critical Fujian Tianyi Network Technology Co ltd
Priority to CN201910753050.XA priority Critical patent/CN110585700B/zh
Publication of CN110585700A publication Critical patent/CN110585700A/zh
Application granted granted Critical
Publication of CN110585700B publication Critical patent/CN110585700B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/48Starting a game, e.g. activating a game device or waiting for other players to join a multiplayer session
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/69Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种单人模式和多人模式统一进入战斗的方法及存储介质,包括:接收创建战斗请求,创建组,将客户端加入组,并设置组的状态属性的值;判断当前执行状态是否为空闲状态;若是,则设置结果码为第一值;若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;若否,且当前模式为多人模式,则判断是否强制进行战斗;若是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;若否,则设置当前执行状态和上个执行状态,并设置结果码为第三值;根据结果码,向组内的客户端广播对应的消息。本发明可使用同一套流程来满足两种模式的需要。

Description

单人模式和多人模式统一进入战斗的方法及存储介质
技术领域
本发明涉及游戏技术领域,尤其涉及一种单人模式和多人模式统一进入战斗的方法及存储介质。
背景技术
随着在线游戏的不断发展,多人模式也孕育而生。与单人模式不同,多人模式需要一个虚拟化的组来维护组内成员之间的消息同步。传统的做法是,单人模式与多人模式分开,它们分别单独完成其进入战斗流程。
但上述方法存在以下缺点:容易出错,不易维护。单人模式比较简单,消息回调即可;而多人模式往往需要等待其他队员的异步消息。当需要为游戏增加流程环节,则需要改动两个流程(即使处理代码完全一样),容易遗漏修改,对开发不利。
发明内容
本发明所要解决的技术问题是:提供一种单人模式和多人模式统一进入战斗的方法及存储介质,可使用同一套流程来满足两种模式的需要。
为了解决上述技术问题,本发明采用的技术方案为:一种单人模式和多人模式统一进入战斗的方法,包括:
接收客户端发送的创建战斗请求后,创建组,并生成所述组的唯一标识,所述创建战斗请求包括对应单人模式的第一模式值或对应多人模式的第二模式值;
将所述客户端加入所述组,并根据所述创建战斗请求,设置所述组的状态属性的值,所述状态属性包括是否强制进入战斗、当前模式、当前执行状态和上个执行状态;
判断所述组的当前执行状态是否为空闲状态;
若是,则设置结果码为预设的第一值;
若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若否,且当前模式为多人模式,则判断是否强制进行战斗;
若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若是否强制进入战斗为否,则根据当前执行状态,设置上个执行状态,将当前执行状态设置为等待状态,并设置结果码为预设的第三值;
根据所述结果码,向所述组内的客户端广播对应的消息;
若结果码为第一值,则关闭所述组。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明的有益效果在于:通过定义组的状态属性,并预先定义好不同模式下的状态码,后续通过对组进行状态管理,即可同时满足单人模式和多人模式与战斗服务器的业务流程,代码逻辑复杂度降低,提升了开发效率,有利于后续代码维护与扩展。
附图说明
图1为本发明的一种单人模式和多人模式统一进入战斗的方法流程图;
图2为本发明实施例一的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:根据预先定义的不同模式下的状态码以及不同情况下状态码的变更设置,对组进行状态管理。
请参阅图1,一种单人模式和多人模式统一进入战斗的方法,包括:
接收客户端发送的创建战斗请求后,创建组,并生成所述组的唯一标识,所述创建战斗请求包括对应单人模式的第一模式值或对应多人模式的第二模式值;
将所述客户端加入所述组,并根据所述创建战斗请求,设置所述组的状态属性的值,所述状态属性包括是否强制进入战斗、当前模式、当前执行状态和上个执行状态;
判断所述组的当前执行状态是否为空闲状态;
若是,则设置结果码为预设的第一值;
若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若否,且当前模式为多人模式,则判断是否强制进行战斗;
若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若是否强制进入战斗为否,则根据当前执行状态,设置上个执行状态,将当前执行状态设置为等待状态,并设置结果码为预设的第三值;
根据所述结果码,向所述组内的客户端广播对应的消息;
若结果码为第一值,则关闭所述组。
从上述描述可知,本发明的有益效果在于:可使用同一套流程来满足两种模式的需要。
进一步地,所述判断所述组的当前执行状态是否为空闲状态具体为:
根据预设的业务状态流程,判断所述组的上个执行状态和当前执行状态是否合法;
若合法,则执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
由上述描述可知,通过对组的执行状态进行合法性判断,保证整体流程中执行状态的改变为合法的业务状态跳转。
进一步地,所述根据所述创建战斗请求,设置所述组的状态属性的值具体为:
将是否强制进入战斗设置为否;
根据创建战斗请求中的第一模式值或第二模式值,设置当前模式为单人模式或多人模式;
将当前执行状态设置为准备状态;
将上个执行状态设置为空闲状态。
进一步地,所述若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若当前执行状态不为空闲状态,且当前模式为单人模式,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为单人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若是否强制进入战斗为是,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为多人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
由上述描述可知,根据预先定义的不同模式下的状态码以及不同情况下状态码的变更设置,对组进行状态管理,从而可同时满足单人模式和多人模式的需求。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息具体为:
若所述结果码为预设的第一值,则向所述组内的客户端广播组关闭的消息;
若所述结果码为预设的第二值,则向所述组内的客户端广播组激活的消息;
若所述结果码为预设的第三值,则向所述组内的客户端广播组更新的消息。
由上述描述可知,通过广播对应的消息,使组内的客户端实时得知组的状态。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收其他客户端发送的加入组请求,所述加入组请求包括待加入的组的唯一标识;
根据所述待加入的组的唯一标识,查询到对应的组,并将所述其他客户端加入所述对应的组;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
由上述描述可知,实现多人模式下其他客户端的加入,即实现组队。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收所述客户端发送的激活组请求,所述激活组请求包括待激活的组的唯一标识;
根据所述待激活的组的唯一标识,查询到对应的组,并将所述对应的组的是否强制进入战斗设置为是;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
由上述描述可知,实现多人模式下战斗的开始。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收战斗服务器发送的战斗结束消息,所述战斗结束消息包括结束战斗的组的唯一标识;
根据所述结束战斗的组的唯一标识,查询到对应的组,并将所述对应的组的当前执行状态设置为空闲状态;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
由上述描述可知,实现单人模式或多人模式下战斗的结束。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
实施例一
请参照图2,本发明的实施例一为:一种单人模式和多人模式统一进入战斗的方法,可应用于在线游戏。
本实施例中,预先定义了组的状态属性,包括forceCreate(是否强制进入战斗)、cMode(当前模式)、cState(当前执行状态)和pState(上个执行状态);并且,对状态属性的值进行了如下定义:
forceCreate=true,表示强制进入战斗;forceCreate=false,表示不强制进入战斗;
cMode=1,表示单人模式;cMode=2,表示多人模式;
cState=0,表示空闲状态;cState=1,表示准备状态;cState=2,表示等待状态;cState=3,表示单人战斗中;cState=4,表示多人战斗中;
pState的值的定义与cState一致。
如图2所示,所述方法包括如下步骤:
S1:接收客户端发送的创建战斗请求后,创建组,并生成所述组的唯一标识,所述创建战斗请求包括请求参数$mode$,该请求参数为对应单人模式的第一模式值或对应多人模式的第二模式值;
S2:将所述客户端加入所述组,并根据所述创建战斗请求,设置所述组的状态属性的值;具体地,将是否强制进入战斗设置为否;根据创建战斗请求中的请求参数$mode$,设置当前模式为单人模式或多人模式;将当前执行状态设置为准备状态;将上个执行状态设置为空闲状态。
即将所述客户端与所述组进行绑定,然后令forceCreate=false,cMode=1或2,cState=1,pState=0。
S3:根据预设的业务状态流程,判断所述组的上个执行状态和当前执行状态是否合法,若是,则执行步骤S4,若否,则报错,结束流程。
具体地,对于单人模式,合法的业务状态流程为{cState=0}-->{cState=1}-->{cState=3|cState=0}-->{cState=0};
对于多人模式,合法的业务状态流程为{cState=0}-->{cState=1}-->{cState=2|cState=0}-->{cState=2|cState=4|cState=0}-->{cState=0}。
根据当前模式cMode,选择对应的业务状态流程,若所述组的上个执行状态和当前执行状态的值分别与该业务状态流程中相邻的两个值一致,则判定合法,否则判定不合法。
例如,假设cMode=1,cState=1,pState=0,则根据单人模式的业务状态流程进行判断;由于cState=1,对应单人模式的业务状态流程中的{cState=1},获取{cState=1}的前一状态值,即{cState=0},表示当前执行状态为准备状态,其上个执行状态为空闲状态,与pState=0相符,因此认为所述组的上个执行状态和当前执行状态是合法的业务状态流程。
S4:判断所述组的当前执行状态是否为空闲状态,即判断cState是否为0,若是,则执行步骤S5,若否,则执行步骤S6。
S5:设置结果码为预设的第一值,例如,令code=0。然后执行步骤S11。
S6:判断当前模式是否为单人模式,即判断cMode是否为1,若是,则执行步骤S7,若否,则表示为多人模式,执行步骤S8。
S7:远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;即执行RPC远程调用,然后会接收到一个返回值,该返回值中包括结果码,进一步地,还包括战斗服务器的IP地址与端口。
当返回值正常时,则该返回值中的结果码为预设的第二值,例如为200。若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为单人战斗中;即若code=200,则令pState=cState,cState=3。然后执行步骤S11。
S8:判断是否强制进行战斗,即判断forceCreate是否为true,若是,则执行步骤S9,若否,则执行步骤S10。
S9:远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;同步骤S7,即执行RPC远程调用,然后会接收到一个返回值,该返回值中包括结果码。
当返回值正常时,则该返回值中的结果码为预设的第二值,例如为200。若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为多人战斗中;即若code=200,则令pState=cState,cState=4。然后执行步骤S11。
S10:根据当前执行状态,设置上个执行状态,将当前执行状态设置为等待状态,并设置结果码为预设的第三值(例如为202);即令pState=cState,cState=2,并令code=202。然后执行步骤S11。
S11:根据结果码,向所述组内的客户端广播对应的消息;具体地,若结果码为第一值,则广播TEAM_CLOSED(组关闭)的消息;若结果码为第二值,则广播TEAM_ACTIVED(组激活)的消息;若结果码为第三值,则广播TEAM_UPDATE(组更新)的消息。
S12:判断结果码是否为第一值,若是,则执行步骤S13,若否,则执行步骤S14。
S13:关闭所述组。
S14:等待其他客户端的加入组请求、所述客户端的激活组请求或战斗服务器发送的战斗结束消息,并设置对应的状态属性的值。然后执行步骤S3。
具体地,接收其他客户端发送的加入组请求,所述加入组请求包括待加入的组的唯一标识;根据所述待加入的组的唯一标识,查询到对应的组,并将所述其他客户端加入所述对应的组。
接收所述客户端发送的激活组请求,所述激活组请求包括待激活的组的唯一标识;根据所述待激活的组的唯一标识,查询到对应的组,并将所述对应的组的是否强制进入战斗设置为是,即令forceCreate=true。
接收战斗服务器发送的战斗结束消息,所述战斗结束消息包括结束战斗的组的唯一标识;根据所述结束战斗的组的唯一标识,查询到对应的组,并将所述对应的组的当前执行状态设置为空闲状态,即令cState=0。
即当其他客户端要加入所述组时,则将所述其他客户端与该组进行绑定;当组内的客户端要激活组时,即要开始战斗时,则令所述组的forceCreate=true;然后返回执行步骤S3。当结束战斗后,会接收到战斗服务器发送的战斗结束消息,则令所述组的cState=0。
进一步地,组的状态属性还包括invokeNum(调用序列号)。在将其他客户端加入对应的组、将对应的组的是否强制进入战斗设置为是以及将对应的组的当前执行状态设置为空闲状态之后,对invokeNum进行递增操作,即每次加一;当检测到invokeNum增1后,触发执行步骤S3。
进一步地,图中未示出,但在步骤S7和S9中,当返回值异常时,例如返回值中的结果码为-1时,则将所述组的上个执行状态和当前执行状态设置为空闲状态,即令pState=cState=0,然后执行步骤S3。
本实施例通过定义组的状态属性,并根据预先定义的不同模式下的状态码以及不同情况下状态码的变更设置,对组进行状态管理,即可同时满足单人模式和多人模式与战斗服务器的业务流程,代码逻辑复杂度降低,提升了开发效率,有利于后续代码维护与扩展。
实施例二
本实施例是上述实施例的一具体应用场景。
传统上,多人模式需要创建一个组来做维护队员信息以及组内消息广播。多人模式中一个组中只有一个玩家时,如果再增加一个标识标明此组最大容量是1,那么就认为是单人模式。根据以上研究思路入手,为了保证数据流准确无误地传递到对应的业务流程上,就需要对组进行状态管理。这里分为三个环节来处理整个流程:
一、StateSetter,内部管理一个状态State(状态)和StateExcutor实例。其中,State包含了以下属性:forceCreate(是否强制进入战服)、cMode(当前模式)、invokeNum(调用序列号,StateSetter监测该属性,递增变更才引起StateExcutor执行)、cState(当前执行状态)和pState(上个执行状态)。主要职责为:检测State内从pState到cState值是否为业务合法状态跳转,监控invokeNum是否触发StateExcutor,并调用StateExcutor。
二、StateExcutor,根据State属性值分发执行具体业务(这里交由doProcessByState来执行),doProcessByState返回业务返回值,根据这个返回值转换成消息路由(客户端用来识别的消息通知)向组内所有玩家发送通知,最后设置下一个StateSetter.State.cState;如果需要再次执行,则需要invokeNum增1。主要职责为:触发具体业务;决定下个状态码(即StateSetter.State.cState)。
三、doProcessByState,根据状态处理业务,保证执行完成后返回状态码。
本实施例通过把单人模式与多人模式状态化后,通过以上三个环节统一处理,完成进入战斗过程,提高流程可维护性,提升开发效率。
实施例三
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
接收客户端发送的创建战斗请求后,创建组,并生成所述组的唯一标识,所述创建战斗请求包括对应单人模式的第一模式值或对应多人模式的第二模式值;
将所述客户端加入所述组,并根据所述创建战斗请求,设置所述组的状态属性的值,所述状态属性包括是否强制进入战斗、当前模式、当前执行状态和上个执行状态;
判断所述组的当前执行状态是否为空闲状态;
若是,则设置结果码为预设的第一值;
若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若否,且当前模式为多人模式,则判断是否强制进行战斗;
若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若是否强制进入战斗为否,则根据当前执行状态,设置上个执行状态,将当前执行状态设置为等待状态,并设置结果码为预设的第三值;
根据所述结果码,向所述组内的客户端广播对应的消息;
若结果码为第一值,则关闭所述组。
进一步地,所述判断所述组的当前执行状态是否为空闲状态具体为:
根据预设的业务状态流程,判断所述组的上个执行状态和当前执行状态是否合法;
若合法,则执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述根据所述创建战斗请求,设置所述组的状态属性的值具体为:
将是否强制进入战斗设置为否;
根据创建战斗请求中的第一模式值或第二模式值,设置当前模式为单人模式或多人模式;
将当前执行状态设置为准备状态;
将上个执行状态设置为空闲状态。
进一步地,所述若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若当前执行状态不为空闲状态,且当前模式为单人模式,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为单人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若是否强制进入战斗为是,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为多人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息具体为:
若所述结果码为预设的第一值,则向所述组内的客户端广播组关闭的消息;
若所述结果码为预设的第二值,则向所述组内的客户端广播组激活的消息;
若所述结果码为预设的第三值,则向所述组内的客户端广播组更新的消息。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收其他客户端发送的加入组请求,所述加入组请求包括待加入的组的唯一标识;
根据所述待加入的组的唯一标识,查询到对应的组,并将所述其他客户端加入所述对应的组;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收所述客户端发送的激活组请求,所述激活组请求包括待激活的组的唯一标识;
根据所述待激活的组的唯一标识,查询到对应的组,并将所述对应的组的是否强制进入战斗设置为是;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
进一步地,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收战斗服务器发送的战斗结束消息,所述战斗结束消息包括结束战斗的组的唯一标识;
根据所述结束战斗的组的唯一标识,查询到对应的组,并将所述对应的组的当前执行状态设置为空闲状态;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
综上所述,本发明提供的一种单人模式和多人模式统一进入战斗的方法及存储介质,通过定义组的状态属性,并根据预先定义的不同模式下的状态码以及不同情况下状态码的变更设置,对组进行状态管理,即可同时满足单人模式和多人模式与战斗服务器的业务流程,代码逻辑复杂度降低,提升了开发效率,有利于后续代码维护与扩展。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种单人模式和多人模式统一进入战斗的方法,其特征在于,包括:
接收客户端发送的创建战斗请求后,创建组,并生成所述组的唯一标识,所述创建战斗请求包括对应单人模式的第一模式值或对应多人模式的第二模式值;
将所述客户端加入所述组,并根据所述创建战斗请求,设置所述组的状态属性的值,所述状态属性包括是否强制进入战斗、当前模式、当前执行状态和上个执行状态;
判断所述组的当前执行状态是否为空闲状态;
若是,则设置结果码为预设的第一值;
若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若否,且当前模式为多人模式,则判断是否强制进行战斗;
若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态;
若是否强制进入战斗为否,则根据当前执行状态,设置上个执行状态,将当前执行状态设置为等待状态,并设置结果码为预设的第三值;
根据所述结果码,向所述组内的客户端广播对应的消息;
若结果码为第一值,则关闭所述组。
2.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述判断所述组的当前执行状态是否为空闲状态具体为:
根据预设的业务状态流程,判断所述组的上个执行状态和当前执行状态是否合法;
若合法,则执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
3.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述根据所述创建战斗请求,设置所述组的状态属性的值具体为:
将是否强制进入战斗设置为否;
根据创建战斗请求中的第一模式值或第二模式值,设置当前模式为单人模式或多人模式;
将当前执行状态设置为准备状态;
将上个执行状态设置为空闲状态。
4.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述若否,且当前模式为单人模式,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若当前执行状态不为空闲状态,且当前模式为单人模式,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为单人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
5.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述若是否强制进入战斗为是,则远程调用战斗服务器,并根据返回值中的结果码,设置当前执行状态和上个执行状态具体为:
若是否强制进入战斗为是,则远程调用战斗服务器,并接收返回值;
若返回值中的结果码为预设的第二值,则根据当前执行状态,设置上个执行状态,并将当前执行状态设置为多人战斗中;
若返回值异常,则将所述组的上个执行状态和当前执行状态设置为空闲状态,并执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
6.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述根据所述结果码,向所述组内的客户端广播对应的消息具体为:
若所述结果码为预设的第一值,则向所述组内的客户端广播组关闭的消息;
若所述结果码为预设的第二值,则向所述组内的客户端广播组激活的消息;
若所述结果码为预设的第三值,则向所述组内的客户端广播组更新的消息。
7.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收其他客户端发送的加入组请求,所述加入组请求包括待加入的组的唯一标识;
根据所述待加入的组的唯一标识,查询到对应的组,并将所述其他客户端加入所述对应的组;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
8.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收所述客户端发送的激活组请求,所述激活组请求包括待激活的组的唯一标识;
根据所述待激活的组的唯一标识,查询到对应的组,并将所述对应的组的是否强制进入战斗设置为是;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
9.根据权利要求1所述的单人模式和多人模式统一进入战斗的方法,其特征在于,所述根据所述结果码,向所述组内的客户端广播对应的消息之后,进一步包括:
接收战斗服务器发送的战斗结束消息,所述战斗结束消息包括结束战斗的组的唯一标识;
根据所述结束战斗的组的唯一标识,查询到对应的组,并将所述对应的组的当前执行状态设置为空闲状态;
执行所述判断所述组的当前执行状态是否为空闲状态的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9任一项所述的步骤。
CN201910753050.XA 2019-08-15 2019-08-15 单人模式和多人模式统一进入战斗的方法及存储介质 Active CN110585700B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910753050.XA CN110585700B (zh) 2019-08-15 2019-08-15 单人模式和多人模式统一进入战斗的方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910753050.XA CN110585700B (zh) 2019-08-15 2019-08-15 单人模式和多人模式统一进入战斗的方法及存储介质

Publications (2)

Publication Number Publication Date
CN110585700A CN110585700A (zh) 2019-12-20
CN110585700B true CN110585700B (zh) 2022-06-07

Family

ID=68854288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910753050.XA Active CN110585700B (zh) 2019-08-15 2019-08-15 单人模式和多人模式统一进入战斗的方法及存储介质

Country Status (1)

Country Link
CN (1) CN110585700B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258422B (zh) * 2020-01-14 2023-05-05 深圳十米网络科技有限公司 终端游戏交互方法、装置、计算机设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040011130A (ko) * 2002-07-29 2004-02-05 주식회사 테크리더 비디오 게임기의 1인/다인용 제어장치 및 제어방법
CN1714900A (zh) * 2004-07-01 2006-01-04 阿鲁策株式会社 游戏系统、服务器以及游戏控制方法
CN103475659A (zh) * 2013-09-12 2013-12-25 苏州吉耀网络科技有限公司 一种基于即时战略游戏的战斗方法及系统
CN104857705A (zh) * 2010-03-01 2015-08-26 咖姆波雷特游戏公司 用于博弈游戏场所应用的丰富的游戏环境(单人和/或多人玩家)
CN106924968A (zh) * 2015-12-31 2017-07-07 网易(杭州)网络有限公司 虚拟角色组队控制方法及装置
CN108600388A (zh) * 2018-05-09 2018-09-28 福建星网视易信息系统有限公司 一种异地实时的多人游戏实现方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040011130A (ko) * 2002-07-29 2004-02-05 주식회사 테크리더 비디오 게임기의 1인/다인용 제어장치 및 제어방법
CN1714900A (zh) * 2004-07-01 2006-01-04 阿鲁策株式会社 游戏系统、服务器以及游戏控制方法
CN104857705A (zh) * 2010-03-01 2015-08-26 咖姆波雷特游戏公司 用于博弈游戏场所应用的丰富的游戏环境(单人和/或多人玩家)
CN103475659A (zh) * 2013-09-12 2013-12-25 苏州吉耀网络科技有限公司 一种基于即时战略游戏的战斗方法及系统
CN106924968A (zh) * 2015-12-31 2017-07-07 网易(杭州)网络有限公司 虚拟角色组队控制方法及装置
CN108600388A (zh) * 2018-05-09 2018-09-28 福建星网视易信息系统有限公司 一种异地实时的多人游戏实现方法及系统

Also Published As

Publication number Publication date
CN110585700A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
CN111405304B (zh) 一种主播互动方法、装置、计算机设备和存储介质
KR102094066B1 (ko) 모바일 게임에 대한 데이터 처리 방법 및 장치
CN102035893A (zh) 一种服务器主动推送数据的方法和系统
CN113473169B (zh) 一种组队直播方法、装置、存储介质及计算机设备
US10942792B2 (en) Event driven subscription matching
CN110120931A (zh) 一种信息交互方法、装置及存储介质
CN111290965B (zh) 一种测试方法、装置、计算机设备和存储介质
CN111880929B (zh) 一种实例管理方法及装置、计算机设备
CN106170010A (zh) 一种跨服务器集群的数据处理方法及装置
CN110585700B (zh) 单人模式和多人模式统一进入战斗的方法及存储介质
CN110138721B (zh) 解耦游戏服务和战斗服务的方法、存储介质
CN107508787B (zh) 一种任务执行方法、装置及系统
CN109857439B (zh) 一种游戏版本的更新方法及装置
CN112948804B (zh) 一种程序控制方法、装置和计算机可读存储介质
US9808714B2 (en) Network enabled game controller
WO2015010644A1 (en) Method, apparatus, and system for achieving privilege separation
CN111490931B (zh) 会话管理方法、装置、会话管理设备及存储介质
CN110290139B (zh) 消息传输方法及装置
CN109104472B (zh) 区块链网络组网方法、装置、设备及计算机可读存储介质
CN111841019A (zh) 游戏应用安全验证方法、装置、设备及存储介质
CN107479982B (zh) 一种数据同步的方法及终端
CN113713376B (zh) 互动信息的显示方法、装置及电子设备
CN115920371A (zh) 游戏业务请求的处理方法、装置、计算机设备及存储介质
US20200327122A1 (en) Conflation of topic selectors
CN114338776A (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