CN102682466B - 三维角色扮演游戏中实现动态阻挡的方法、装置及系统 - Google Patents
三维角色扮演游戏中实现动态阻挡的方法、装置及系统 Download PDFInfo
- Publication number
- CN102682466B CN102682466B CN201110065231.7A CN201110065231A CN102682466B CN 102682466 B CN102682466 B CN 102682466B CN 201110065231 A CN201110065231 A CN 201110065231A CN 102682466 B CN102682466 B CN 102682466B
- Authority
- CN
- China
- Prior art keywords
- game
- scene
- mapping relations
- stop
- barrier zones
- 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
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种三维角色扮演游戏中实现动态阻挡的方法、装置及系统。预先在投影形成的二维游戏场景中,设置需要动态阻挡的区域,建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,保存于文件,分发给服务器和客户端,客户端存储映射关系表,建立三维游戏场景与二维游戏场景的映射关系;确定搜索得到的下一动态阻挡区域包含游戏事件时,获取该游戏事件所属的动态阻挡区域标识;根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;根据更新的映射关系表,确定游戏路径,并根据确定的游戏路径,获取该动态阻挡区域标识的阻挡类型对应的游戏操作策略,进行操作。应用本发明,可以降低用户成本、提高同步效率。
Description
技术领域
本发明涉及计算机通信技术,特别涉及一种三维角色扮演游戏中实现动态阻挡的方法、装置及系统。
背景技术
随着计算机通信技术的发展,基于客户端/服务器(C/S,Client/Server)架构开发的3D大型多人在线角色扮演游戏(3DMMORPG,3DMassivelyMultiplayerOnlineRolePlayingGame),由于具有高流畅度、操作手感好、即时战斗等特点,而且,还可以通过在游戏中加入单机游戏中常见的用于划分战斗区域的动态阻挡机制,即通过在游戏进行过程中动态地改变游戏场景中某些区域的连通关系,可以增强角色与场景之间的互动、提高游戏的可玩度以及观赏性,因而,深受用户喜爱。
现有3D单机游戏中,一般通过基于物理碰撞的检测机制来实现游戏的动态阻挡,具体来说,通过美术人员手工或者工具自动在游戏的三维模型上设置用于实现动态阻挡的碰撞检测数据,并将碰撞检测数据固化在三维模型上,在游戏进行过程中,通过这些数据来进行碰撞检测。例如,游戏中的门为一个三维物体,通过游戏用户与门在三维空间上的交互,如果检测到游戏用户在三维空间与门发生碰撞,则游戏用户就不能穿过该门。
由上述可见,现有的基于物理碰撞的检测机制来实现游戏动态阻挡的方法,需要在三维空间上获取碰撞检测数据,需要耗费大量计算资源,对CPU计算能力要求较高,增加了用户成本;进一步地,由于需要传输三维碰撞检测数据以及游戏事件对应的游戏场景的游戏数据,客户端与服务器之间消耗的资源多,数据传输所需时间较长,使得同步效率较低。
发明内容
有鉴于此,本发明的主要目的在于提出一种三维角色扮演游戏中实现动态阻挡的方法,降低计算所需的资源量、提高数据同步效率。
本发明的另一目的在于提出一种三维角色扮演游戏中实现动态阻挡的装置,降低计算所需的资源量、提高数据同步效率。
本发明的再一目的在于提出一种三维角色扮演游戏中实现动态阻挡的系统,降低计算所需的资源量、提高数据同步效率。
为达到上述目的,本发明提供了一种三维角色扮演游戏中实现动态阻挡的方法,该方法包括:
场景编辑器预先在三维游戏场景投影形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
服务器和客户端加载映射关系表,建立三维游戏场景与二维游戏场景的映射关系;
客户端确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径,并根据服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。
进一步包括:
按照预先设置尺寸的阻挡格子对二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
所述阻挡类型包括:可达、不可达以及条件可达。
所述条件可达包括:只进不出以及只出不进。
所述根据更新的映射关系表,确定游戏路径具体包括:
A1、判断根据预先设置的寻路搜索算法搜索得到的下一阻挡格子的阻挡类型是否为不可达,如果是,寻路失败,继续进行搜索,否则,执行步骤A2;
A2、判断当前阻挡格子的阻挡类型是否为可达、且搜索得到的下一阻挡格子的阻挡类型为条件可达中的只进不出,如果是,执行步骤A3,否则,执行步骤A4;
A3、判断搜索得到的下一阻挡格子所属的区域标识是否大于或等于当前阻挡格子所属的区域标识,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败;
A4、判断当前阻挡格子的阻挡类型是否为条件可达中的只出不进、且搜索得到的下一阻挡格子的阻挡类型为可达,如果是,执行步骤A5,否则,执行步骤A6;
A5、判断搜索得到的下一阻挡格子所属的区域标识是否小于当前阻挡格子所属的动态阻挡区域标识,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败;
A6、判断当前阻挡格子的阻挡类型是否与搜索得到的下一阻挡格子的阻挡类型相同,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败。
所述游戏事件与动态阻挡区域标识绑定。
进一步包括:
确定根据预先设置的寻路搜索算法进行搜索得到的下一动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
一种角色扮演游戏中实现动态阻挡的装置,该装置包括:二维游戏场景处理模块以及阻挡格子划分模块,其中,
二维游戏场景处理模块,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
阻挡格子划分模块,用于按照预先设置尺寸的阻挡格子对二维游戏场景处理模块投影形成的二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
该装置进一步包括:映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,其中,
映射关系表存储模块,用于存储接收的映射关系表;
二维游戏场景加载模块,用于根据接收的二维游戏场景以及映射关系表加载三维游戏场景与二维游戏场景的映射关系;
寻路处理模块,用于确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径;
游戏操作策略表现模块,用于在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行表现。
所述寻路处理模块进一步用于确定用户触发的目的动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
一种角色扮演游戏中实现动态阻挡的系统,该系统包括:场景编辑器、服务器以及客户端,其中,
场景编辑器,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
服务器,用于根据接收的动态阻挡区域标识,逻辑处理并决定接收的动态阻挡区域标识对应的动态阻挡区域的阻挡类型,将更新的动态阻挡区域的阻挡类型信息向客户端发送;
客户端,用于存储接收的映射关系表,根据接收的二维游戏场景以及映射关系表建立三维游戏场景与二维游戏场景的映射关系;
确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径,并根据服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。
所述客户端包括:映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,其中,
映射关系表存储模块,用于存储接收的映射关系表;
二维游戏场景加载模块,用于根据接收的二维游戏场景以及映射关系表加载三维游戏场景与二维游戏场景的映射关系;
寻路处理模块,用于确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径;
游戏操作策略表现模块,用于在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行表现。
所述寻路处理模块进一步用于确定用户触发的目的动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
所述场景编辑器包括:二维游戏场景处理模块以及阻挡格子划分模块,其中,
二维游戏场景处理模块,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
阻挡格子划分模块,用于按照预先设置尺寸的阻挡格子对二维游戏场景处理模块投影形成的二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
由上述的技术方案可见,本发明提供的一种三维角色扮演游戏中实现动态阻挡的方法、装置及系统,场景编辑器预先在三维游戏场景投影形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;服务器和客户端加载映射关系表,建立三维游戏场景与二维游戏场景的映射关系;客户端确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;根据更新的映射关系表,确定游戏路径,并根据服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。这样,通过将三维游戏场景投影形成二维游戏场景,并在二维游戏场景中,将需要动态改变的动态阻挡区域进行标识并设置初始阻挡类型,建立映射关系表,使得在需要更新某个动态阻挡区域的阻挡类型时,只需更新映射关系表中该动态阻挡区域ID对应的阻挡类型,无需对动态阻挡区域中存储的内容进行修改,降低了CPU对计算能力的要求,降低了计算所需的资源量;同时,基于二维游戏场景进行数据传输,降低了传输的数据信息量以及进行数据处理所需的时间,提高了数据同步效率。
附图说明
图1为本发明实施例角色扮演游戏中实现动态阻挡的方法流程示意图;
图2为本发明实施例二维游戏场景中划分的阻挡格子示意图;
图3为本发明实施例动态阻挡区域标识与阻挡类型的映射关系表示意图;
图4为本发明实施例根据更新的映射关系表,确定游戏路径的流程示意图;
图5为本发明实施例角色扮演游戏中实现动态阻挡的系统结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
现有基于物理碰撞检测机制来实现游戏动态阻挡的方法,通过获取三维游戏模型的碰撞检测数据进行上报,并将阻挡改变了的游戏数据发送至客户端以进行同步,使得CPU开销大,要求的CPU计算能力高,同步效率较低。本发明实施例中,考虑将三维游戏场景以顶视图投影形成二维游戏场景,并将该二维游戏场景按照预设尺寸进行细分形成阻挡格子,通过为阻挡格子预先编辑二维阻挡数据并设置寻路算法,用以在二维空间检测能否移动以实现动态阻挡。
图1为本发明实施例角色扮演游戏中实现动态阻挡的方法流程示意图。参见图1,该流程包括:
步骤101,在预先形成的二维游戏场景中设置需要动态阻挡的区域,并建立各设置的动态阻挡区域与对应的阻挡类型的映射关系表;
本步骤中,预先在三维游戏场景投影形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表。
场景编辑器将三维游戏场景以顶视图投影形成二维游戏场景,根据游戏运营商的需求,设置需要动态阻挡的区域,即将原三维游戏场景中需要动态阻挡的区域投影为二维动态阻挡区域,并为每个动态阻挡区域设置动态阻挡区域标识,在动态阻挡区域中存储动态阻挡区域标识,并建立每个动态阻挡区域标识及对应的初始阻挡类型的映射关系表。
本发明实施例中,设置的动态阻挡区域用于表示该区域内的阻挡类型是可变的,对于二维游戏场景中除动态阻挡区域外的区域,其区域内的阻挡类型可以是静态配置的,一般不需改动。
本发明实施例中,阻挡类型包括:可达、不可达以及条件可达,其中,条件可达又包括:只进不出以及只出不进。具体来说,可达用于表示从源动态阻挡区域至目的动态阻挡区域之间的路径是畅通的,不存在任何阻挡;不可达用于表示从源动态阻挡区域至目的动态阻挡区域之间的路径不是畅通的,存在不能穿越的阻挡区域;条件可达用于表示从源动态阻挡区域至目的动态阻挡区域之间的路径的畅通依赖条件的变化;只进不出用于表示游戏用户只能沿源动态阻挡区域至目的动态阻挡区域的路径移动,而不能沿目的动态阻挡区域至源动态阻挡区域的路径移动;只出不进则与只进不出相反。
进一步地,还可以对二维游戏场景按照预先设置尺寸的阻挡格子进行细化,每个阻挡格子中存储所属的动态阻挡区域标识。这样,可以避免阻挡格子类型改变时需要修改大量阻挡格子中的内容。
图2为本发明实施例二维游戏场景中划分的阻挡格子示意图。参见图2,场景编辑器将二维游戏场景设置为由1024*1024个阻挡格子组成的地图,按照游戏运营商的配置,将多个阻挡格子组成一个动态阻挡区域,在阻挡类型改变时,该动态阻挡区域内的所有阻挡格子对应的阻挡类型相应发生变化。本发明实施例中,投影的二维游戏场景中包括三个配置的需要动态修改的动态阻挡区域:区域1~区域3,并设置区域1的区域标识为1,即其中包含的阻挡格子的标识为1,区域2的区域标识为2,区域3的区域标识为3。动态阻挡区域内的阻挡格子存储所属动态阻挡区域标识,例如,区域1中的阻挡格子存储的内容为1,区域2中的阻挡格子存储的内容为2,以此类推,不属于任何设置的动态阻挡区域的阻挡格子存储的内容为0。
图3为本发明实施例动态阻挡区域标识(区域ID)与阻挡类型的映射关系表示意图。参见图3,区域1的初始阻挡类型为1,区域2以及区域3的初始阻挡类型为2。在游戏进行中,动态阻挡区域以包含的游戏事件进行表现,服务器在特定游戏事件触发后,例如,门开启/关闭、怪物被击杀等,同步该动态阻挡区域的阻挡类型。
步骤102,服务器和客户端加载映射关系表,建立三维游戏场景与二维游戏场景的映射关系;
本步骤中,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端,服务器和客户端将接收的二维游戏场景映射至三维游戏场景,即在客户端进行游戏时,显示游戏的三维场景,当用户进行游戏寻路后触发游戏事件时,以映射的二维场景进行游戏的处理。
步骤103,确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在的动态阻挡区域标识,向服务器发送;
本步骤中,当用户通过客户端在三维游戏场景中移动时,需要进行寻路,通过寻路以确定在三维游戏中的移动路径,本发明实施例中,根据预先设置的寻路搜索算法进行游戏路径搜索,寻路搜索算法用于判定用户能否通过动态阻挡区域,更确切地说,是返回一条能够移动到目的动态阻挡区域的路径,如果通过寻路搜索算法能够确定至目的动态阻挡区域的可达路径,则游戏用户沿该可达路径移动;如果通过寻路搜索算法不能够确定至目的动态阻挡区域的可达路径,则可以通过改变目的动态阻挡区域,例如,缩短路径距离,重新进行寻路搜索,如果搜索得到的下一动态阻挡区域包含游戏事件时,表明该动态阻挡区域需要由服务器确定是否进行动态阻挡类型更新,只有在确定该动态阻挡区域的阻挡类型后,才能确定该动态阻挡区域是否可为游戏路径,因而,在确定用户触发搜索得到的下一动态阻挡区域包含游戏事件后,例如,游戏用户通过手动触发(用鼠标去点击门)或通过服务器逻辑触发(游戏用户击杀BOSS)。获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,触发游戏事件,以便服务器进行同步处理。
本发明实施例中,可以将游戏事件与动态阻挡区域ID进行绑定,当然,实际应用中,对于一个动态阻挡区域包含多个游戏事件的情形,可以设置游戏事件分别与该动态阻挡区域内的子标识进行绑定,例如,当区域1内包含的门有多个进出口时,设置子标识用以控制门开启/关闭操作。
步骤104,根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
本步骤中,游戏事件所属的动态阻挡区域存储的是该动态阻挡区域标识,因而,本发明实施例中,只需要更新建立的映射关系表,而无需对游戏事件所属的动态阻挡区域存储的内容进行修改,降低了CPU的资源消耗。
本步骤中,阻挡类型的改变由服务器发起,服务器根据接收的游戏事件所属的动态阻挡区域标识以及预先获取的客户端游戏信息,逻辑处理并决定游戏事件所属的动态阻挡区域的阻挡类型,将更新的动态阻挡区域的阻挡类型信息向客户端发送,客户端接收服务器发送的动态阻挡区域的阻挡类型信息并进行相应的更新。
后续中,服务器如果需要更新某一动态阻挡区域的阻挡类型,只需要将该动态阻挡区域ID以及对应的阻挡类型信息发送至客户端,客户端根据接收的动态阻挡区域ID,查找并更新映射关系表中该接收的动态阻挡区域ID映射的阻挡类型。
步骤105,根据更新的映射关系表,确定游戏路径,查询预先存储的游戏操作策略,按照确定的游戏路径对应的游戏操作策略进行操作。
本步骤中,客户端在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型确定的游戏路径对应的游戏操作策略进行操作。
实际应用中,在游戏寻路过程中,客户端需要根据客户端当前所在路径(当前动态阻挡区域)对应的阻挡类型以及搜索得到的下一路径(下一动态阻挡区域)对应的阻挡类型,确定该下一路径是否为游戏路径。并在确定游戏路径后,根据游戏路径中更新的阻挡类型信息,查询获取该路径对应的游戏操作策略,进行相应的动画播放。例如,当用户触发三维游戏场景中的门、阻隔道路的石头、桥断裂等游戏事件时,如果用户达到门事件所在的动态阻挡区域、且该门事件对应的阻挡类型为只进不出,当用户点击门,则客户端播放相应门开启的动画,并在用户进入该门后,播放该门关闭的动画;再例如,如果用户达到桥断裂事件所在的动态阻挡区域、且该桥断裂事件对应的阻挡类型为不可达,则在用户到达该桥断裂事件所属的动态阻挡区域时,客户端播放相应桥断裂的动画。
实际应用中,当搜索得到的下一动态阻挡区域不包含游戏事件时,表明该动态阻挡区域对应的阻挡类型为静态配置,不需要向服务器上报以确定是否需要动态更新阻挡类型信息,直接根据客户端存储的映射关系表,确定游戏路径。
图4为本发明实施例根据更新的映射关系表,确定游戏路径的流程示意图。参见图4,也就是判断搜索得到的下一阻挡格子与当前阻挡格子的连通关系,以动态阻挡区域划分为阻挡格子为例,该流程包括:
步骤401,判断根据预先设置的寻路搜索算法搜索得到的下一阻挡格子的阻挡类型是否为不可达,如果是,寻路失败,继续进行搜索,直到下一个格子包含目的点,如果已经没有需要考察的阻挡格子,且未达到目的点,则返回失败。否则,执行步骤402;
本步骤中,寻路搜索算法具体可参见相关技术文献,在此不再赘述。
步骤402,判断当前阻挡格子的阻挡类型是否为可达、且搜索得到的下一阻挡格子的阻挡类型为条件可达中的只进不出,如果是,执行步骤403,否则,执行步骤404;
步骤403,判断搜索得到的下一阻挡格子所属的区域ID是否大于或等于当前阻挡格子所属的区域ID,如果是,寻路路径为搜索得到的下一阻挡格子,否则,寻路失败;
本步骤中,如果搜索得到的下一阻挡格子所属的区域ID大于或等于当前阻挡格子所属的区域ID,即寻路路径为搜索得到的下一阻挡格子,将该下一阻挡格子作为当前阻挡格子,返回执行步骤401,继续寻路,直到下一个格子包含目的点,如果已经没有需要考察的阻挡格子,且未达到目的点,则返回失败
步骤404,判断当前阻挡格子的阻挡类型是否为条件可达中的只出不进、且搜索得到的下一阻挡格子的阻挡类型为可达,如果是,执行步骤405,否则,执行步骤406;
步骤405,判断搜索得到的下一阻挡格子所属的区域ID是否小于当前阻挡格子所属的动态阻挡区域ID,如果是,寻路路径为搜索得到的下一阻挡格子,否则,寻路失败;
本步骤中,如果搜索得到的下一阻挡格子所属的区域ID小于当前阻挡格子所属的动态阻挡区域ID,将该下一阻挡格子作为当前阻挡格子,返回执行步骤401,继续寻路,直到下一个格子包含目的点,如果已经没有需要考察的阻挡格子,且未达到目的点,则返回失败。
步骤406,判断当前阻挡格子的阻挡类型是否与搜索得到的下一阻挡格子的阻挡类型相同,如果是,寻路路径为搜索得到的下一阻挡格子,否则,寻路失败。
本步骤中,如果当前阻挡格子的阻挡类型与搜索得到的下一阻挡格子的阻挡类型相同,将该下一阻挡格子作为当前阻挡格子,返回执行步骤401,继续寻路,直到下一个格子包含目的点,如果已经没有需要考察的阻挡格子,且未达到目的点,则返回失败。
设:
α=0为动态阻挡区域ID,α∈[0,255],其中,α=0和α=255是游戏运行中阻挡类型固定不变的区域,即设置的动态阻挡区域外的区域,且设置α=0所属的区域是始终可达,α=255所属的区域是始终不可达。
β为阻挡类型:
本发明实施例中,设当前阻挡格子所在的动态阻挡区域ID为α1,对应的阻挡类型为β1,下一阻挡格子所在的动态阻挡区域ID为α2,对应的阻挡类型为β2,成功表示将当前寻路路径更新为搜索得到的下一阻挡格子,然后继续进行寻路,直至达到目的动态阻挡区域。则上述更新的映射关系表,确定游戏路径的程序段代码如下:
由上述可见,本发明实施例的角色扮演游戏中实现动态阻挡的方法,预先在三维游戏场景投影形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表;将投影形成的二维游戏场景以及映射关系表下发至客户端,客户端存储映射关系表,建立三维游戏场景与二维游戏场景的映射关系;确定根据预先设置的寻路搜索算法进行搜索得到的下一动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;根据更新的映射关系表,确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该动态阻挡区域标识的阻挡类型对应的游戏操作策略进行操作。这样,通过将三维游戏场景投影形成二维游戏场景,并在二维游戏场景中,将需要动态改变的动态阻挡区域进行标识并设置初始阻挡类型,建立映射关系表,使得在需要更新某个动态阻挡区域的阻挡类型时,只需更新映射关系表中该动态阻挡区域ID对应的阻挡类型,无需对动态阻挡区域中存储的内容进行修改,降低了CPU对计算能力的要求,降低了用户成本;同时,基于二维游戏场景进行数据传输,大大降低了传输的数据信息量以及进行数据处理所需的时间,提高了同步效率;而且,可修改任意形状动态阻挡区域的阻挡类型、改变阻挡类型的代价小,动态阻挡区域的预先指定保证了策划对游戏运行中阻挡改变时表现的预期,并简化了程序设计的复杂度;此外,在传统A*寻路的基础上,加入考虑动态阻挡的前后阻挡格子关联的处理算法,保证了阻挡类型改变时寻路的有效性。
图5为本发明实施例角色扮演游戏中实现动态阻挡的系统结构示意图。参见图5,该系统包括:场景编辑器、服务器以及客户端,其中,
场景编辑器,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
服务器,用于根据接收的动态阻挡区域标识,逻辑处理并决定接收的动态阻挡区域标识对应的动态阻挡区域的阻挡类型,将更新的动态阻挡区域的阻挡类型信息向客户端发送;
客户端,用于存储接收的映射关系表,根据接收的二维游戏场景以及映射关系表建立三维游戏场景与二维游戏场景的映射关系;
确定根据预先设置的寻路搜索算法进行搜索得到的下一动态阻挡区域(用户触发的目的动态阻挡区域)包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径,并根据服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。
其中,服务器包括:阻挡类型更新模块,
阻挡类型更新模块,用于根据接收的动态阻挡区域标识,逻辑处理并决定接收的动态阻挡区域标识对应的动态阻挡区域的阻挡类型,将更新的动态阻挡区域的阻挡类型信息向客户端发送。
场景编辑器包括:二维游戏场景处理模块,
二维游戏场景处理模块,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
进一步包括:
阻挡格子划分模块,用于按照预先设置尺寸的阻挡格子对二维游戏场景处理模块投影形成的二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
客户端包括:映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,其中,
映射关系表存储模块,用于存储接收的映射关系表;
二维游戏场景加载模块,用于根据接收的二维游戏场景以及映射关系表加载三维游戏场景与二维游戏场景的映射关系;
寻路处理模块,用于确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径;
游戏操作策略表现模块,用于在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行表现。
实际应用中,寻路处理模块还可以进一步用于确定根据预先设置的寻路搜索算法进行搜索得到的下一动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
当然,实际应用中,场景编辑器与客户端也可以集成在同一物理设备中,即在该物理设备中,包含二维游戏场景处理模块、阻挡格子划分模块、映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,各模块执行的功能如上所述,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种三维角色扮演游戏中实现动态阻挡的方法,其特征在于,该方法包括:
场景编辑器预先在三维游戏场景投影形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;所述阻挡类型包括:可达、不可达以及条件可达;
服务器和客户端加载映射关系表,建立三维游戏场景与二维游戏场景的映射关系;
客户端确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径,并在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。
2.如权利要求1所述的方法,其特征在于,进一步包括:
按照预先设置尺寸的阻挡格子对二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
3.如权利要求2所述的方法,其特征在于,
所述条件可达包括:只进不出以及只出不进。
4.如权利要求3所述的方法,其特征在于,所述根据更新的映射关系表,确定游戏路径具体包括:
A1、判断根据预先设置的寻路搜索算法搜索得到的下一阻挡格子的阻挡类型是否为不可达,如果是,寻路失败,继续进行搜索,否则,执行步骤A2;
A2、判断当前阻挡格子的阻挡类型是否为可达、且搜索得到的下一阻挡格子的阻挡类型为条件可达中的只进不出,如果是,执行步骤A3,否则,执行步骤A4;
A3、判断搜索得到的下一阻挡格子所属的区域标识是否大于或等于当前阻挡格子所属的区域标识,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败;
A4、判断当前阻挡格子的阻挡类型是否为条件可达中的只出不进、且搜索得到的下一阻挡格子的阻挡类型为可达,如果是,执行步骤A5,否则,执行步骤A6;
A5、判断搜索得到的下一阻挡格子所属的区域标识是否小于当前阻挡格子所属的动态阻挡区域标识,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败;
A6、判断当前阻挡格子的阻挡类型是否与搜索得到的下一阻挡格子的阻挡类型相同,如果是,将该下一阻挡格子作为当前阻挡格子,返回执行步骤A1,否则,返回失败。
5.如权利要求1所述的方法,其特征在于,所述游戏事件与动态阻挡区域标识绑定。
6.如权利要求1所述的方法,其特征在于,进一步包括:
确定根据预先设置的寻路搜索算法进行搜索得到的下一动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
7.一种三维角色扮演游戏中实现动态阻挡的装置,其特征在于,该装置包括:二维游戏场景处理模块、映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,其中,
二维游戏场景处理模块,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;所述阻挡类型包括:可达、不可达以及条件可达;
映射关系表存储模块,用于存储接收的映射关系表;
二维游戏场景加载模块,用于根据接收的二维游戏场景以及映射关系表加载三维游戏场景与二维游戏场景的映射关系;
寻路处理模块,用于确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;根据更新的映射关系表,确定游戏路径;
游戏操作策略表现模块,用于在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行表现。
8.如权利要求7所述的装置,其特征在于,所述装置进一步包括:阻挡格子划分模块,用于按照预先设置尺寸的阻挡格子对二维游戏场景处理模块投影形成的二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
9.如权利要求8所述的装置,其特征在于,所述寻路处理模块进一步用于确定用户触发的目的动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
10.一种三维角色扮演游戏中实现动态阻挡的系统,其特征在于,该系统包括:场景编辑器、服务器以及客户端,其中,
场景编辑器,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;所述阻挡类型包括:可达、不可达以及条件可达;
服务器,用于根据接收的动态阻挡区域标识,逻辑处理并决定接收的动态阻挡区域标识对应的动态阻挡区域的阻挡类型,将更新的动态阻挡区域的阻挡类型信息向客户端发送;
客户端,用于存储接收的映射关系表,根据接收的二维游戏场景以及映射关系表建立三维游戏场景与二维游戏场景的映射关系;
确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径,并在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行操作。
11.如权利要求10所述的系统,其特征在于,所述客户端包括:映射关系表存储模块、二维游戏场景加载模块、寻路处理模块以及游戏操作策略表现模块,其中,
映射关系表存储模块,用于存储接收的映射关系表;
二维游戏场景加载模块,用于根据接收的二维游戏场景以及映射关系表加载三维游戏场景与二维游戏场景的映射关系;
寻路处理模块,用于确定用户触发的目的动态阻挡区域包含游戏事件时,获取该游戏事件所在三维游戏场景映射的二维游戏场景中的动态阻挡区域标识,向服务器发送;
根据服务器返回的携带动态阻挡区域标识的阻挡类型信息,更新建立的映射关系表;
根据更新的映射关系表,确定游戏路径;
游戏操作策略表现模块,用于在服务器同步阻挡类型改变时,查询预先存储的游戏操作策略,按照服务器同步改变的阻挡类型对应的游戏操作策略进行表现。
12.如权利要求11所述的系统,其特征在于,所述寻路处理模块进一步用于确定用户触发的目的动态阻挡区域不包含游戏事件时,根据存储的映射关系表,执行所述确定游戏路径,并根据确定的游戏路径查询预先存储的游戏操作策略,按照获取的该游戏路径的阻挡类型对应的游戏操作策略进行操作。
13.如权利要求11或12所述的系统,其特征在于,所述场景编辑器包括:二维游戏场景处理模块以及阻挡格子划分模块,其中,
二维游戏场景处理模块,用于将三维游戏场景投影形成二维游戏场景,在形成的二维游戏场景中,设置需要动态阻挡的区域,分配动态阻挡区域标识,并建立各设置的动态阻挡区域标识及对应的阻挡类型的映射关系表,将投影形成的二维游戏场景以及映射关系表保存于文件,分发给服务器和客户端;
阻挡格子划分模块,用于按照预先设置尺寸的阻挡格子对二维游戏场景处理模块投影形成的二维游戏场景进行细化,并在每个阻挡格子中存储所属的动态阻挡区域标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065231.7A CN102682466B (zh) | 2011-03-17 | 2011-03-17 | 三维角色扮演游戏中实现动态阻挡的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110065231.7A CN102682466B (zh) | 2011-03-17 | 2011-03-17 | 三维角色扮演游戏中实现动态阻挡的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102682466A CN102682466A (zh) | 2012-09-19 |
CN102682466B true CN102682466B (zh) | 2016-02-24 |
Family
ID=46814330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110065231.7A Active CN102682466B (zh) | 2011-03-17 | 2011-03-17 | 三维角色扮演游戏中实现动态阻挡的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102682466B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103207951B (zh) * | 2013-04-22 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 一种寻路方法和装置 |
CN103957224B (zh) | 2014-05-21 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种在线游戏中的人物移动方法和系统 |
CN105469445B (zh) * | 2015-12-08 | 2018-06-29 | 电子科技大学 | 一种步长可变地图生成方法 |
CN107527375A (zh) * | 2016-06-20 | 2017-12-29 | 北京八亿时空信息工程有限公司 | 在无线智能终端设备上加载三维模型的方法及系统 |
CN108211360B (zh) * | 2016-12-14 | 2021-08-10 | 盛趣信息技术(上海)有限公司 | 多人在线网络游戏的跨地图寻路方法 |
CN107067475A (zh) * | 2017-03-30 | 2017-08-18 | 北京乐动卓越科技有限公司 | 一种3d游戏的场景管理系统及其实现方法 |
CN107273008B (zh) * | 2017-05-23 | 2019-11-12 | 武汉秀宝软件有限公司 | 一种虚拟环境中的碰撞处理方法、客户端、服务器及系统 |
CN107481305B (zh) * | 2017-08-18 | 2021-02-09 | 苏州歌者网络科技有限公司 | 游戏动画制作方法 |
CN108257103B (zh) * | 2018-01-25 | 2020-08-25 | 网易(杭州)网络有限公司 | 游戏场景的遮挡剔除方法、装置、处理器及终端 |
CN110102047B (zh) * | 2018-02-01 | 2023-10-24 | 腾讯科技(上海)有限公司 | 游戏操作处理方法和装置、游戏效果展示方法和装置 |
CN108421257B (zh) * | 2018-03-29 | 2021-02-12 | 网易(杭州)网络有限公司 | 不可见元素的确定方法、装置、存储介质和电子装置 |
CN109675316B (zh) * | 2019-01-08 | 2022-04-15 | 网易(杭州)网络有限公司 | 游戏场景图生成方法及装置 |
CN109675309B (zh) * | 2019-02-01 | 2022-09-13 | 网易(杭州)网络有限公司 | 一种游戏场景的构造方法和装置 |
CN110152296B (zh) * | 2019-04-04 | 2022-05-20 | 腾讯科技(深圳)有限公司 | 一种生成目标对象的方法及装置 |
CN110772791B (zh) * | 2019-11-05 | 2023-07-21 | 网易(杭州)网络有限公司 | 三维游戏场景的路线生成方法、装置和存储介质 |
CN113877208A (zh) * | 2020-07-03 | 2022-01-04 | 上海莉莉丝科技股份有限公司 | 游戏对象寻路方法、装置及计算机可读存储介质 |
CN112494942A (zh) * | 2020-12-16 | 2021-03-16 | 网易(杭州)网络有限公司 | 信息处理方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004089486A1 (ja) * | 1996-06-21 | 2004-10-21 | Kyota Tanaka | 3次元ゲーム装置及び情報記憶媒体 |
-
2011
- 2011-03-17 CN CN201110065231.7A patent/CN102682466B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101615305A (zh) * | 2009-07-24 | 2009-12-30 | 腾讯科技(深圳)有限公司 | 碰撞检测的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102682466A (zh) | 2012-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102682466B (zh) | 三维角色扮演游戏中实现动态阻挡的方法、装置及系统 | |
CN107038128B (zh) | 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置 | |
CN106215419B (zh) | 碰撞控制方法及装置 | |
CN103593546B (zh) | 一种无动态阻挡网络游戏系统及其处理方法 | |
CN109771947A (zh) | 游戏角色的换装方法、装置、计算机存储介质和电子设备 | |
KR101640904B1 (ko) | 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템 | |
CN102099792A (zh) | 用于分布式raid实现的方法和系统 | |
CN106651247A (zh) | 基于gis拓扑分析的地址匹配区域块方法和系统 | |
US8284195B2 (en) | Cooperative utilization of spatial indices between application and rendering hardware | |
US20080231628A1 (en) | Utilizing Ray Tracing for Enhanced Artificial Intelligence Path-Finding | |
US10867426B2 (en) | Image rendering method and system | |
RU2011116066A (ru) | Система и способ для моделирования событий в реальном окружении | |
CN107430553B (zh) | 用于存储器管理单元的命令驱动转换预取 | |
CN101370025A (zh) | 地理信息数据的存储方法、调度方法及管理系统 | |
CN104780109A (zh) | 虚拟机迁移方法及装置 | |
EP3262513A1 (en) | Data caching | |
US20220217536A1 (en) | Communication method and apparatus for vehicle, and electronic device | |
WO2012063279A1 (ja) | 地図シンボル描画装置 | |
JP2019511719A (ja) | 地図に基づくナビゲーション方法、装置、記憶媒体及び機器 | |
CN106899474A (zh) | 一种报文转发的方法和装置 | |
CN102387132A (zh) | 战斗系统实现方法 | |
CN105426443A (zh) | 一种地图数据的处理方法、装置及系统 | |
CN104571527B (zh) | 一种基于增强现实技术的3d分子交互对接系统及实现方法 | |
CN102227717A (zh) | 用于数据储存和访问的方法和设备 | |
US20160321049A1 (en) | Processor emulation using multiple translations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |