一种掌上战争游戏控制系统及控制方法与流程

文档序号:13559571阅读:224来源:国知局
一种掌上战争游戏控制系统及控制方法与流程

本发明属于游戏软件技术领域,尤其涉及一种掌上战争游戏控制系统及控制方法。



背景技术:

游戏软件通常是指用各种程序和动画效果相结合起来的软件产品,我们称之为"游戏软件"。目前,在网络上我们经常看到的大型3d网络游戏和webgame网页游戏等都是通过用"3dmax、maya、flash、等动画软件和java、c++、vb、等程序语言相结合而开发出来的,所以叫游戏软件。然而,现有进行游戏的时间较长,不能利用碎片时间进行游戏周期长,游戏体验不佳。传统手机在线游戏往往有如下的一些缺点,如需要复杂的注册过程、在整个游戏过程中需要一直连接互联网、每次游戏的时间往往较长不容易控制游戏的节奏、由于游戏时间不好控制造成不能利用碎片时间进行游戏。

综上所述,现有技术存在的问题是:传统手机在线游戏往往存在需要复杂的注册过程、一直连接互联网、每次游戏的时间往往较长不容易控制游戏的节奏、由于游戏时间不好控制造成不能利用碎片时间进行游戏。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种掌上战争游戏控制系统及控制方法。

本发明是这样实现的,一种掌上战争游戏控制系统,所述掌上战争游戏控制系统包括:

客户端,用于主动的搜索网络,查找服务器资源;当客户端加入游戏服务器后,服务器会适时的更新广播的消息,通知其他游戏玩家;

服务器,通过广播方式在局域网与客户端连接,使用三层架构,包括通信层、数据层、以及游戏逻辑层;网络通信使用tcp/ip协议;应用层通信使用自定可扩展通信协议;建立游戏服务器以后,服务器会向网络广播游戏服务器的信息。

本发明的另一目的在于提供一种所述掌上战争游戏控制系统的掌上战争游戏控制方法,所述掌上战争游戏控制方法包括以下步骤:

步骤一,客户端发送登录指令给服务器,申请进入服务器,服务器接收指令后,根据当前的状态接收或拒绝,完成登录处理;

步骤二,服务器根据当前的状态,决定是否开始游戏,开始游戏向客户端发送游戏开始指令,客户端收到指令,开始游戏;服务器接收到开始指令,检测当前服务器状态,如果满足条件,则开始游戏;不满足,忽略指令;

步骤三,客户端创建新的地图,将新的地图指令发送给服务器,服务器接收指令,获取新的地图,并更新服务器信息;

步骤四,客户端通过摇动设备发送重置角色指令,服务器接收到指令随机为玩家分批角色,客户端获取新角色的信息;

步骤五,客户端获取物品控制权,广播消息在玩家发送完enter_playing_stage后,发送游戏开始指令,通知客户端移除等待界面,启动输入账户名称,通知服务器进入游戏阶段;

步骤六,客户端关闭窗口,服务器接收到信息后,不再响应客户端输入的指令。

进一步,广播服务器信息指令:服务器探测器获取并解析;服务器在创建者登陆后开始广播。

进一步,所述服务器游戏初始时,出生槽处于empty状态,向玩家发送time_to_create_item消息,更新时间。当时间到达后,进入item状态;按规则产生物品,并且发送add_item给玩家,然后将item_list发送给玩家;开始计时并发送time_to_distory_item消息;当时间到达时,发送destroy_item。需要发送如下消息:1;time_to_create_item;2;time_to_distory_item;3;add_item;4;destroy_item;5;item_list。

进一步,所述客户端请求角色信息;取得角色信息,使用到的命令为get_role和role_info,具体在客户端命令中查看定义;gamesettingmanagement会为每一个接入的玩家随机分配一个角色,客户端通过get_role来请求这个信息;服务器会通过role_info返回这个角色信息,在后边的交互过程中,玩家可以请求改变角色信息;但是,不是明确的设置一个角色,而是请求服务器随机的分配所有玩家的角色;同样的这个一个过程也会在每次更新画面时发生。

进一步,设置地图信息创建者设置地图信息,需要客户端向服务器发送set_map命令;服务器响应该命令,设置新的服务器;set_map至少需要包含地图id信息;地图id是guid类型;用于表示一个地图。

进一步,请求重新分配角色每一个接入的玩家都可以请求改变角色;改变角色的方式为摇晃手机;触发客户端向服务器发送重新分配角色的请求;随后客户端通过get_role获取新的角色信息。

进一步,请求的命令为reset_role,请求开始游戏;游戏创建者在合适的时候开始游戏;创建者需要向服务器发送start_game命令,服务器在确认可以开始游戏后,向客户端发送游戏开始命令game_start;如果不满足游戏开始的条件;服务器会忽略该命令start_game;命令的定义在命令定义中查看。

进一步,服务器信息由服务器通过广播方式在局域网中传播,客户端通过监听;广播端口获取服务器信息,具体的端口和信息结构由在服务器广播设计中定义,具体可查看相应段落。

进一步,验证服务器需要解析从网络获取的信息;在从udpobject对象中取得信息后,使用gamecommand类来解析数据;解析失败这视为无效数据抛弃;解析成功后查看是否为广播消息,如果不是也需要放弃数据;最后确定后,取得服务器信息,使用serverinfo保存服务器信息;在解析完成后,需要对信息进行分能,并将信息存入相应的类别中;解析后的信息会先和存活服务器列表中的信息进行比较,如果存在,这更新列表中的生存值;如果不存在,则加入新服务器列表。这里特别规定,绘制层只使用服务器数据和修改与之对应的标签,但是不会改变不同服务器信息所属的类别,即不会在不同列表之间转移数据;数据的转移工作,由服务器侦测类来完成;

服务器信息缓存方式,服务器信息会被分为四类:新服务器列表、存活服务器列表、失效服务器列表、延迟定服务器列表;新服务器列表:如果是新探测到的服务器,将会放入列表;列表的作用是通知绘制层,为新增加的服务器做动画;在动画完成后会将服务器信息移动到存活服务器列表;判断是否为新服务器的标准为:在新服务器列表、存活服务器列表、失效服务器列表、延迟定服务器列表中都没有该条服务器的信息,则视为新服务器列表;

存活服务器列表:用于维持服务性信息;列表会中的每个服务器信息都会带有一个生存指数;当livecount的值为0时会将服务器放入失效服务器列表中;在此列表中的服务器会在界面上显示,并且有动画;客户端会定期检测网络上收到的广播,如果某个服务器不再广播信息,则视为该服务器已经关闭;收到消息的服务器会去更新列表中的livecount(+1);最后还要减去逝去的时间(livecount-1);完成上述操作后,如果livecount为0,则将相应的服务器信息移入到失效服务器列表中。

本发明的优点及积极效果为:本发明不需要注册、建立主机是也不需要负责的设置、游戏会自动寻找附件的游戏服务器、玩家之间面对面的互动、控制每局游戏的时间长度,方便玩家在碎片时间进行游戏;通过合理设计可以缩短制作周期,同时详细的设计可以提供制作质量,从而获得最佳的游戏体验。

附图说明

图1是本发明实施提供的掌上战争游戏控制系统结构示意图;

图中:1、客户端;2、服务器。

图2是本发明实施提供的掌上战争游戏控制方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例提供的掌上战争游戏控制系统包括:客户端1、服务器。

客户端1,用于主动的搜索网络,查找服务器资源;当客户端1加入游戏服务器2后,服务器会适时的更新广播的消息,通知其他游戏玩家。

服务器2,通过广播方式在局域网与客户端1连接,使用三层架构,包括通信层、数据层、以及游戏逻辑层;网络通信使用tcp/ip协议;应用层通信使用自定可扩展通信协议;建立游戏服务器以后,服务器2会向网络广播游戏服务器的信息。

如图2所示,本发明实施例提供的掌上战争游戏控制方法包括以下步骤:

s201:客户端发送登录指令给服务器,申请进入服务器,服务器接收指令后,根据当前的状态接收或拒绝,完成登录处理;

s202:服务器根据当前的状态,决定是否开始游戏,开始游戏向客户端发送游戏开始指令,客户端收到指令,开始游戏;服务器接收到开始指令,检测当前服务器状态,如果满足条件,则开始游戏;不满足,忽略指令;

s203:客户端创建新的地图,将新的地图指令发送给服务器,服务器接收指令,获取新的地图,并更新服务器信息;

s204:客户端通过摇动设备发送重置角色指令,服务器接收到指令随机为玩家分批角色,客户端获取新角色的信息;

s205:客户端获取物品控制权,广播消息在玩家发送完enter_playing_stage后,发送游戏开始指令,通知客户端移除等待界面,启动输入账户名称,通知服务器进入游戏阶段;

s206:客户端关闭窗口,服务器接收到信息后,不再响应客户端输入的指令。

在本发明的优选实施例中:

广播服务器信息指令:客户端:有服务器探测器获取并解析;

服务器:在创建者登陆后开始广播。

拒绝:客户端接收指令,将channel放入gc中回收。

服务器:发送指令给客户端,在服务器的玩家列表已满的情况下发送指令;发送后不会响应客户端的任何输入,将channel放入gc中回收。

接受:客户端接收到指令,开始交互工作;

服务器:发送给玩家,确认登录请求;同时将玩家放入context的玩家列表中。

游戏开始:客户端,接收到指令,处理场景的转换;

服务器,为每一个用户发送完成的消息,处理工作对象的切换工作,使服务器进入游戏状态。

玩家列表:客户端,接收到指令,取得所有玩家的地址和账户名称。

下面结合附图对本发明的应用原理作进一步的描述。

服务器设计

游戏初始时,出生槽处于empty状态,向玩家发送time_to_create_item消息,更新时间。当时间到达后,进入item状态;按规则产生物品,并且发送add_item给玩家,然后将item_list发送给玩家;开始计时并发送time_to_distory_item消息;当时间到达时,发送destroy_item。需要发送如下消息:

1;time_to_create_item;2;time_to_distory_item;3;add_item;4;destroy_item;5;item_list。

完成的工作有如下几个:

1;计时

a)更新倒计时;b)定时发送消息(0;05秒)。

2;物品创建

a)检测创建时机;b)定时发送消息(0;05秒)。

需要发送如下消息:

1;use_item_result(使用结果),发送给操作者。

2;item_has_captured(已经被获取),发送给操作者。

需要处理如下消息:

1;capturing_item;2;shake_item;3;use_item。

客户端设计

完成如下几个工作:

1;保存倒计时;2;物品队列(包含状态和类型等);3;动画状态保存(见上图);4;物品位置对应关系(位置信息)。

inventorytab;gameitem。

流程如下:

请求角色信息;取得角色信息,使用到的命令为get_role和role_info,具体在客户端命令中查看定义;gamesettingmanagement会为每一个接入的玩家随机分配一个角色,客户端通过get_role来请求这个信息;服务器会通过role_info返回这个角色信息,在后边的交互过程中,玩家可以请求改变角色信息;但是,不是明确的设置一个角色,而是请求服务器随机的分配所有玩家的角色(后边有该功能的详细设计);同样的这个一个过程也会在每次更新画面时发生(图中updateperframe)。

流程如下:

设置地图信息创建者设置地图信息,实现这个功能需要客户端(创建者)向服务器发送set_map命令;服务器响应该命令,设置新的服务器;set_map至少需要包含地图id信息;地图id是guid类型(字符串);用于表示一个地图。

请求重新分配角色

每一个接入的玩家都可以请求改变角色;改变角色的方式为摇晃手机(或者平板);这会触发客户端向服务器发送重新分配角色的请求;随后客户端通过get_role获取新的角色信息;这一过程由上边的请求角色信息定义。

请求的命令为reset_role,具体定在命令定义中定义。

流程如下:

请求开始游戏;游戏创建者在合适的时候开始游戏;创建者需要向服务器发送start_game命令,服务器在确认可以开始游戏后,向客户端发送游戏开始命令game_start;如果不满足游戏开始的条件;服务器会忽略该命令(start_game);命令的定义在命令定义中查看。

交互过程如下:

服务器信息由服务器通过广播方式在局域网中传播(socketudp广播),客户端通过监听;广播端口获取服务器信息,具体的端口和信息结构由在服务器广播设计中定义,具体可查看相应段落。

验证服务器

首先,需要解析从网络获取的信息;在从udpobject对象中取得信息后,使用gamecommand类来解析数据;解析失败这视为无效数据抛弃;解析成功后查看是否为广播消息,如果不是也需要放弃数据;最后确定后,取得服务器信息,使用serverinfo保存服务器信息。在解析完成后,需要对信息进行分能,并将信息存入相应的类别中(见后文);解析后的信息会先和存活服务器列表中的信息进行比较,如果存在,这更新列表中的生存值;如果不存在,则加入新服务器列表。这里特别规定,绘制层只使用服务器数据和修改与之对应的标签,但是不会改变不同服务器信息所属的类别,即不会在不同列表之间转移数据;数据的转移工作,由服务器侦测类来完成(gameserverdetector)。

具体流程如下图:

服务器信息缓存方式

服务器信息会被分为四类:新服务器列表、存活服务器列表、失效服务器列表、延迟定服务器列表。新服务器列表:如果是新探测到的服务器,将会放入该列表;该列表的作用是通知绘制层,为新增加的服务器做动画;在动画完成后会将服务器信息移动到存活服务器列表;判断是否为新服务器的标准为:在新服务器列表、存活服务器列表、失效服务器列表、延迟定服务器列表中都没有该条服务器的信息,则视为新服务器列表;该列表中标志位定义如下:

tag=1:表示此serverinfo需要显示动画。

tag=2:表示此serverinfo正在动画中。

tag=3:表示动画已经完成(会被detector移动到存活列表中)。

存活服务器列表:用于维持服务性信息;此列表会中的每个服务器信息都会带有一个生存指数(livecount);当livecount的值为0时会将服务器放入失效服务器列表中;在此列表中的服务器会在界面上显示,并且有动画;客户端会定期检测网络上收到的广播,如果某个服务器不再广播信息,则视为该服务器已经关闭(不用关心原因);收到消息的服务器会去更新列表中的livecount(+1);最后还要减去逝去的时间(livecount-1);完成上述操作后,如果livecount为0,则将相应的服务器信息移入到失效服务器列表中;该列表中标志位定义如下:

tag>=0表示,serverinfo存活。

tag<=0表示serverinfo不在存活(会被detector移动到失效列表中)。

失效服务器列表:绘制层会为失效服务器列表中的服务器绘制消失动画;在消失动画绘制完成后,会将对应的服务器信息放入到延迟定服务器列表中;该列表中标志位定义如下:

tag=0:表示还没有开始动画。

tag=1:正在动画中。

tag=2:动画结束,(需要移动到delayserver中,关联的sprite在做完动画后,会设置将tag设置为该值,同时从layer中移除自身,并且从layer中的列表中删除自己)延迟定服务器列表:延迟列表会将服务器信息缓存一段时间,此时间(livecount)内,如果收到该服务的信息都一律舍弃;客户端会定时更新该列中的livecount;当livecount为0时,删除该条服务器信息;该列表中标志位定义如下:

tag>=0表示,serverinfo继续留在此表中。

tag<=0表示serverinfo彻底删除该列表。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1