基于虚拟环境的视野数据包发送方法、装置、设备及介质

文档序号:1161884 发布日期:2020-09-18 浏览:17次 >En<

阅读说明:本技术 基于虚拟环境的视野数据包发送方法、装置、设备及介质 (Visual field data packet sending method, device, equipment and medium based on virtual environment ) 是由 向熠 刘源 肖扬 于 2020-05-28 设计创作,主要内容包括:本申请公开了一种基于虚拟环境的视野数据包发送方法、装置、设备及介质,涉及虚拟环境领域。该方法包括:场景进程生成第一参战角色的视野数据包,向世界进程同步视野数据包;第一参战角色是运行在场景进程上在虚拟环境中参与对战的虚拟角色,视野数据包用于在客户端上显示观战第一参战角色的观战界面;响应于第一观战对象拥有第一参战角色的观战权限,世界进程向观战进程同步视野数据包;第一观战对象是运行在观战进程上观看虚拟环境中的对战的对象;响应于第一观战对象拥有第一参战角色的观战权限,观战进程向第一观战对象的客户端发送视野数据包;客户端用于根据视野数据包显示观战界面。该方法能提高服务器的资源利用率。(The application discloses a visual field data packet sending method, device, equipment and medium based on a virtual environment, and relates to the field of virtual environments. The method comprises the following steps: a scene process generates a visual field data packet of a first fighting role, and the visual field data packet is synchronized to a world process; the first fighting role is a virtual role running on a scene process and participating in fighting in a virtual environment, and the view data packet is used for displaying a fighting interface for fighting the first fighting role on the client; responding to the first fighting object having the fighting authority of the first fighting role, and synchronizing the view data packet to the fighting process by the world process; the first spectator object is an object operating on a spectator progress to watch a battle in the virtual environment; responding to the first spectator object having the spectator authority of the first spectator character, and sending a visual field data packet to the client of the first spectator object by the spectator process; the client is used for displaying the fighting interface according to the visual field data packet. The method can improve the resource utilization rate of the server.)

基于虚拟环境的视野数据包发送方法、装置、设备及介质

技术领域

本申请实施例涉及虚拟环境领域,特别涉及一种基于虚拟环境的视野数据包发送方法、装置、设备及介质。

背景技术

在基于三维虚拟环境的应用程序中,例如:大型多人在线角色扮演游戏(Massively Multiplayer Online Role-PlayingGame,MMORPG),提供有大规模战场,大规模战场通常由成百上千个参战者共同参与。此外,玩家还可以对大规模战场中的参战者进行观战。在战场开启后,玩家可以以观战者的身份进入战场,观战者只能获取战场画面,不能参与对战。

相关技术中,服务器提供有场景进程和观战进程,场景进程用于运算参战者在对局过程中的逻辑运算,观战进程用于运算观战者在观战过程中的逻辑运算。参战者在场景进程中进行对战,观战者在观战进程中进行观战。其中,观战进程会全量同步场景进程中的战场数据,即,在观战进程中复制一个镜像战场,每当战场数据发生变化时,场景进程向观战进程同步战场数据,使观战者在镜像战场中进行观战。

相关技术中的观战方法,观战进程需要全量同步场景进程中的战场数据,数据流量过大,浪费服务器资源。

发明内容

本申请实施例提供了一种基于虚拟环境的视野数据包发送方法、装置、设备及介质,可以减少观战过程中的数据流量,提高服务器的资源利用率。所述技术方案如下:

一方面,提供了一种基于虚拟环境的视野数据包发送方法,所述方法应用在服务器中,所述服务器运行有:场景进程、观战进程和世界进程,所述方法包括:

所述场景进程生成第一参战角色的视野数据包,向所述世界进程同步所述视野数据包;所述第一参战角色是运行在所述场景进程上在虚拟环境中参与对战的虚拟角色,所述视野数据包用于在客户端上显示观战所述第一参战角色的观战界面;

响应于第一观战对象拥有所述第一参战角色的观战权限,所述世界进程向所述观战进程同步所述视野数据包;所述第一观战对象是运行在所述观战进程上观看所述虚拟环境中的对战的对象;

响应于所述第一观战对象拥有所述第一参战角色的所述观战权限,所述观战进程向所述第一观战对象的客户端发送所述视野数据包;所述客户端用于根据所述视野数据包显示所述观战界面。

另一方面,提供了一种基于虚拟环境的视野数据包发送装置,所述装置包括:

场景模块,用于生成第一参战角色的视野数据包,向世界模块同步所述视野数据包;所述第一参战角色是运行在所述场景模块上在虚拟环境中参与对战的虚拟角色,所述视野数据包用于在客户端上显示观战所述第一参战角色的观战界面;

世界模块,用于响应于第一观战对象拥有所述第一参战角色的观战权限,向观战模块同步所述视野数据包;所述第一观战对象是运行在所述观战模块上观看所述虚拟环境中的对战的对象;

观战模块,用于响应于所述第一观战对象拥有所述第一参战角色的所述观战权限,向所述第一观战对象的客户端发送所述视野数据包;所述客户端用于根据所述视野数据包显示所述观战界面。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的基于虚拟环境的视野数据包发送方法。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上方面所述的基于虚拟环境的视野数据包发送方法。

另一方面,提供了一种计算机程序产品,其特征在于,所述计算机程序产品中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一所述的基于虚拟环境的视野数据包发送方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

通过在服务器中设置观战进程、世界进程、场景进程,将观战者和参战者的逻辑运算分别用两个不同的进程进行运算,世界进程作为观战进程和场景进程间信息交流的中转站,当参战者的视野数据发生变化时,场景进程将参战者的视野数据包同步到世界进程,由世界进程查询具有该参战者的观战权限的观战者,将视野数据包同步给观战者所在的观战进程,再由观战进程将视野数据包发送给观战者的客户端,从而在客户端上显示出参战者视角的战场画面,实现观战。使场景进程、世界进程、观战进程之间只需要同步被观战的参战者的视野数据包,不需要全量同步战场中的全部数据,减少服务器的流量,提高服务器的资源利用率。此外,这种观战方法,服务器可以通过扩展观战进程的方法,来无限扩展可容纳的观战者的数量,使用世界进程来管理多个观战进程与多个场景进程之间的数据流向,从而实现大规模的观战场景。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本申请一个示例性实施例提供的终端的结构示意图;

图2是本申请一个示例性实施例提供的计算机系统的结构框图;

图3是本申请另一个示例性实施例提供的服务器的结构框图;

图4是本申请一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图5是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图6是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图7是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的观战界面的示意图;

图8是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的用户界面的示意图;

图9是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图10是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图11是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的用户界面的示意图;

图12是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的用户界面的示意图;

图13是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图;

图14是本申请另一个示例性实施例提供的基于虚拟环境的视野数据包发送装置的框图;

图15是本申请一个示例性实施例提供的服务器的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的名词进行简单介绍:

虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真世界,也可以是半仿真半虚构的世界,还可以是纯虚构的世界。虚拟环境可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种,本申请对此不加以限定。下述实施例以虚拟环境是三维虚拟环境来举例说明。

虚拟角色:是指虚拟环境可以自主活动的对象。该可以自主活动的对象可以是虚拟人物、虚拟动物、动漫人物等,比如:在三维虚拟环境中显示的人物、动物、植物、油桶、墙壁、石块等。可选地,虚拟角色是基于动画骨骼技术创建的三维立体模型。每个虚拟角色在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。示例性的,虚拟角色可以是由用户控制的虚拟角色,也可以是由服务器或AI(ArtificialIntelligence,人工智能)自动控制的虚拟角色。

本申请中提供的方法可以应用于具有虚拟环境和虚拟角色的应用程序中。示例性的,支持虚拟环境的应用程序是用户可以控制虚拟角色在虚拟环境内移动的应用程序。示例性的,本申请中提供的方法可以应用于:大型多人在线角色扮演游戏(MassivelyMultiplayer Online Role-PlayingGame,MMORPG)、虚拟现实(Virtual Reality,VR)应用程序、增强现实(Augmented Reality,AR)程序、三维地图程序、军事仿真程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏(First-Person Shooting Game,FPS)、第三人称射击游戏(Third-Personal Shooting Game,TPS)、多人在线战术竞技游戏(MultiplayerOnline Battle Arena Games,MOBA)、策略游戏(Simulation Game,SLG)中的任意一种程序。

示例性的,虚拟环境中的游戏由一个或多个游戏世界的地图构成,游戏中的虚拟环境模拟现实世界的场景,用户可以操控游戏中的虚拟角色在虚拟环境中进行行走、跑步、跳跃、射击、格斗、驾驶、释放技能、使用虚拟武器攻击其他虚拟角色等动作,交互性较强。示例性的,多个用户可以在线组队进行竞技游戏。

在一些实施例中,上述应用程序可以是射击类游戏、竞速类游戏、角色扮演类游戏、冒险类游戏、沙盒游戏、战术竞技游戏、军事仿真程序等程序。该客户端可以支持Windows操作系统、苹果操作系统、安卓操作系统、IOS操作系统和LINUX操作系统中的至少一种操作系统,并且不同操作系统的客户端可以互联互通。在一些实施例中,上述客户端是适用于具有触摸屏的移动终端上的程序。

在一些实施例中,上述客户端是基于三维引擎开发的应用程序,比如三维引擎是Unity引擎。

本申请中的终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器等等。该终端中安装和运行有支持虚拟环境的客户端,比如支持三维虚拟环境的应用程序的客户端。该应用程序可以是战术竞技生存(Battle Royale,BR)游戏、虚拟现实应用程序、增强现实程序、三维地图程序、军事仿真程序、第三人称射击游戏、第一人称射击游戏、多人在线战术竞技游戏、大型多人在线角色扮演游戏中的任意一种。可选地,该应用程序可以是单机版的应用程序,比如单机版的3D游戏程序,也可以是网络联机版的应用程序。

图1是本申请一个示例性实施例提供的终端的结构示意图。如图1所示,该终端包括处理器11、触摸屏12以及存储器13。

处理器11可以是单核处理器、多核处理器、嵌入式芯片以及具有指令运行能力的处理器中的至少一种。

触摸屏12包括普通触摸屏或压力感应触摸屏。普通触摸屏可以对施加在触摸屏12上的按压操作或滑动操作进行测量;压力感应触摸屏可以对施加在触摸屏12上的按压力度进行测量。示例性的,触摸屏12也可以替换为显示屏,用于显示虚拟环境画面。

存储器13存储有处理器11的可执行程序。示意性的,存储器13中存储有虚拟环境程序A、应用程序B、应用程序C、触摸压力感应模块18、操作系统的内核层19。其中,虚拟环境程序A为基于三维虚拟环境模块17开发的应用程序。可选地,虚拟环境程序A包括但不限于由三维虚拟环境模块(也称虚拟环境模块)17开发的游戏程序、虚拟现实程序、三维地图程序、三维演示程序中的至少一种。比如,终端的操作系统采用安卓操作系统时,虚拟环境程序A采用Java编程语言以及C#语言进行开发;又比如,终端的操作系统采用IOS操作系统时,虚拟环境程序A采用Object-C编程语言以及C#语言进行开发。

三维虚拟环境模块17是一款支持多种操作系统平台的模块,示意性的,三维虚拟环境模块可用于游戏开发领域、虚拟现实(Virtual Reality,VR)领域以及三维地图领域等多领域的程序开发,本申请实施例对三维虚拟环境模块17的具体类型不限,在下文实施例中以三维虚拟环境模块17是使用Unity引擎开发的模块为例来举例说明。

触摸(以及压力)感应模块18是用于接收触摸屏驱动程序191所上报的触摸事件(以及压力触控事件)的模块,可选地,触摸感应模块可以不具有压力感应功能,不接收压力触控事件。触摸事件包括:触摸事件的类型和坐标值,触摸事件的类型包括但不限于:触摸开始事件、触摸移动事件和触摸落下事件。压力触控事件中包括:压力触控事件的压力值以及坐标值。该坐标值用于指示压力触控操作在显示屏上的触控位置。可选地,以显示屏的水平方向建立横坐标轴,显示屏的竖直方向建立竖坐标轴得到一个二维坐标系。

示意性的,内核层19包括了触摸屏驱动程序191以及其它驱动程序192。触摸屏驱动程序191是用于检测压力触控事件的模块,当触摸屏驱动程序191检测到压力触控事件后,将压力触控事件传递给压力感应模块18。

其它驱动程序192可以是与处理器11有关的驱动程序、与存储器13有关的驱动程序、与网络组件有关的驱动程序、与声音组件有关的驱动程序等。

本领域技术人员可以知晓,上述仅为对终端的结构的概括性示意。在不同的实施例中,终端可以具有更多或更少的组件。比如,终端还可以包括重力加速度传感器、陀螺仪传感器、电源等等。

图2示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统包括:第一终端210、服务器集群220和第二终端230。

第一终端210上安装和运行有支持虚拟环境的第一客户端211,该第一客户端211可以是支持虚拟环境的应用程序。当第一终端210运行第一客户端211时,第一终端210的屏幕上显示第一客户端211的用户界面。该第一客户端可以是MMORPG、FPS游戏、TPS游戏、军事仿真程序、MOBA游戏、战术竞技游戏、SLG游戏的任意一种。在本实施例中,以该第一客户端是MMORPG来举例说明。第一终端210是第一用户使用的终端,第一客户端211上登录有参战用户帐号。示例性的,第一用户使用第一终端210控制位于虚拟环境中的第一虚拟角色进行活动,第一虚拟角色可以称为第一用户的主控虚拟角色。第一虚拟角色的活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、飞行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,第一虚拟角色是虚拟人物,比如仿真人物角色或动漫人物角色。

第二终端230安装和运行有支持虚拟环境的第二客户端231,该第二客户端231可以是支持虚拟环境的应用程序。当第二终端230运行第二客户端231时,第二终端230的屏幕上显示第二客户端231的用户界面。该第二客户端可以是MMORPG、FPS游戏、TPS游戏、军事仿真程序、大逃杀射击游戏、VR应用程序、AR程序、三维地图程序、虚拟现实游戏、增强现实游戏、MOBA、SLG中的任意一种,在本实施例中,以该客户端是MMORPG来举例说明。第二终端230是第二用户使用的终端,第二客户端231上登录有观战用户帐号。第二用户使用第二终端230控制位于虚拟环境中的第二虚拟角色进行活动,第二虚拟角色可以称为第二用户的主控虚拟角色。示意性的,第二虚拟角色是虚拟人物,比如仿真人物角色或动漫人物角色。

示例性的,参战用户帐号是观战者的用户帐号,观战用户帐号是参战者的用户帐号。即,在第一客户端上显示以第二虚拟角色的视角对虚拟环境进行观察得到的虚拟环境画面。

可选地,第一终端210和第二终端230上安装的客户端是相同的,或两个终端上安装的客户端是不同操作系统平台(安卓或IOS)上的同一类型客户端。第一终端210可以泛指多个终端中的一个,第二终端230可以泛指多个终端中的另一个,本实施例仅以第一终端210和第二终端230来举例说明。第一终端210和第二终端230的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。

图2中仅示出了一个终端,但在不同实施例中存在多个其它终端可以接入服务器集群220。在一些实施例中,还存在至少一个终端是开发者对应的终端,在终端上安装有虚拟环境的客户端的开发和编辑平台,开发者可在终端上对客户端进行编辑和更新,并将更新后的客户端安装包通过有线或无线网络传输至服务器集群220,第一终端210或第二终端230可从服务器集群220下载客户端安装包实现对客户端的更新。

第一终端210和第二终端230通过无线网络或有线网络与服务器集群220相连。

服务器集群220包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器集群220用于为支持三维虚拟环境的客户端提供后台服务。可选地,服务器集群220承担主要计算工作,终端承担次要计算工作;或者,服务器集群220承担次要计算工作,终端承担主要计算工作;或者,服务器集群220和终端之间采用分布式计算架构进行协同计算。

可选地,上述终端和服务器均为计算机设备。

在一个示意性的例子中,服务器集群220上运行有连接层227、场景进程、观战进程和世界进程228。

连接层227用于连接服务器与客户端,提供客户端与服务器之间的数据中转、通信协议的切换。

场景进程用于处理参战角色在虚拟环境中活动、对战时的逻辑运算。观战进程用于处理观战对象在观战时的逻辑运算。

世界进程228用于连接观战进程和场景进程,进行用户帐号的在线管理、观战和被观战关系的管理,进行观战进程和场景进程之间的数据中转。

示例性的,服务器集群220中运行的观战进程的数量可以是任意的,运行的场景进程的数量同样可以是任意的。例如,观战进程包括第一观战进程225、第n观战进程226。场景进程包括第一场景进程222、第二场景进程223、第n场景进程224,n是正整数。再如,场景进程包括第一场景进程222、第二场景进程223、第m场景进程224,m是正整数。

示例性的,服务器为用户提供有多个逻辑区,用户注册完用户账号后,可以选择一个逻辑区创建参战角色,示例性的,一个用户帐号可以在多个逻辑区创建多个参战角色。示例性的,每个逻辑区对应一个场景进程,场景进程用于为该逻辑区内的参战角色提供游戏场景内的逻辑运算服务。例如,逻辑区可以是不同国家,服务器为用户提供了三个国家,用户可以选择其中一个国家来创建参战角色。示例性的,第一场景进程对应第一逻辑区,第二场景进程对应第二逻辑区。示例性的,第一参战角色是参战用户帐号在第一逻辑区创建的参战角色,由第一场景进程负责第一参战角色对战时的逻辑运算。第二参战角色是观战用户帐号在第二逻辑区创建的参战角色,由第二场景进程负责第二参战角色对战时的逻辑运算。

示例性的,连接层、观战进程、场景进程和世界进程可以设置在同一个物理服务器上,由该物理服务器运行多个进程。

示例性的,连接层、观战进程和场景进程也可以分别设置在不同的物理服务器上。例如,如图3所示,服务器集群220包括连接层服务器201、第一场景服务器202、第二场景服务器203、第m场景服务器204、第一观战服务器205、第n观战服务器206、世界服务器207。其中,连接层服务器201用于运行连接层的进程;第一场景服务器202用于运行第一场景进程;第二场景服务器203用于运行第二场景进程;第m场景服务器204用于运行第m场景进程;第一观战服务器205用于运行第一观战进程;第n观战服务器206用于运行第n观战进程;世界服务器207用于运行世界进程。

示例性的,服务器集群220还可以是云服务器,由云服务器来运行连接层、场景进程、观战进程和世界进程。

结合上述对虚拟环境的介绍以及实施环境说明,对本申请实施例提供的基于虚拟环境的视野数据包发送方法进行说明,以该方法的执行主体为图2所示出的服务器来举例说明。

在一种支持虚拟环境的应用程序中,用户可以观战大规模战场。本实施例提供了一种观战方法,该方法可以应用于图2中的服务器集群中。服务器将观战者和参战者的逻辑运算放在两个进程中进行,参战者位于场景进程,观战者位于观战进程。示例性的,以参战者是第一客户端上的参战用户帐号,观战者是第二客户端上的观战用户帐号为例,观战用户帐号对参战用户帐号所控制的第一参战角色进行观战,在第二客户端上显示以第一参战角色的视角对虚拟环境进行观察得到的虚拟环境画面。

示例性的,第一参战角色运行在第一场景进程中,第二参战角色运行在第二场景进程中,由第一场景进程来进行第一参战角色在战场中的逻辑运算,由第二场景进程来进行第二参战角色在战场中的逻辑运算。

示例性的,如图4所示,是本申请提供的一种将基于虚拟环境的视野数据包发送方法的方法流程图。当观战用户帐号想要观战第一战场时,第二客户端向服务器发送观战请求,服务器将观战请求同步给第二参战角色所在的第二场景进程进行处理,第二场景进程在接收到观战请求后,进行步骤301向世界进程发起请求观战。步骤302,世界进程根据策略为观战用户帐号选择一个观战进程。步骤303,世界进程向选中的观战进程发送占位请求。步骤304,观战进程为观战用户帐号占用一个观战对象位置。步骤305,观战进程向世界进程返回占位成功结果。步骤306,世界进程向第二场景进程提示可以进入观战。步骤307,第二场景进程切换第一客户端的路由,将第一客户端的对接进程从第二场景进程切换为观战进程。步骤308,第二场景进程向世界进程以及观战进程回写观战用户帐号的账号数据。步骤309,第二场景进程向世界进程同步账号数据并进入观战。步骤310,世界进程向观战进程同步账号数据并进入观战。步骤311,观战进程向第一战场所在的第一场景进程请求默认的观战选手,示例性的,每个战场服务器都设定了一个默认观战的参战角色,观战对象进入观战后,默认观战该参战角色,观战对象可以在进入观战后修改观战的参战角色。示例性的,观战进程向第一场景进程获取第一战场的默认观战选手。步骤312,第一场景进程向世界进程返回第一战场的默认观战选手(第一参战角色)。步骤313,当第一参战角色的视野数据发生变化时,第一场景进程将第一参战角色的视野数据同步到世界进程。步骤314,第一场景进程向世界进程发送第一参战角色的视野数据包。步骤315,世界进程通知观战进程上的观战用户帐号的第一观战对象开始观战。

示例性的,如图5所示,是本申请提供的一种将基于虚拟环境的视野数据包发送方法的方法流程图。当观战用户帐号想要停止观战时,步骤401,观战进程向世界进程请求返回观战用户帐号的原场景进程(第二场景进程)。步骤402,世界进程同意观战用户帐号返回第二场景进程。步骤403,观战进程向第二场景进程请求占用参战角色位置。步骤404,第二场景进程进行占位,并向观战进程返回占位成功。步骤405,观战进程注销观战用户帐号的第一观战对象,并将与第一客户端对接的进程从观战进程切换为第二场景进程。步骤406,观战进程向世界进程同步观战对象被销毁的信息。步骤407,世界进程向第二场景进程同步观战对象被销毁的信息,并使第二场景进程构建观战用户帐号的第二参战角色,使第二客户端控制第二参战角色在虚拟环境中进行对战。

图6是本申请一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图。以该方法的执行主体为图2所示出的服务器来举例说明,服务器运行有:场景进程、观战进程和世界进程,该方法至少包括如下步骤。

步骤501,场景进程生成第一参战角色的视野数据包,第一参战角色是运行在场景进程上在虚拟环境中参与对战的虚拟角色。

示例性的,参战角色是场景进程中的逻辑单位,场景进程可以对该逻辑单位进行对局中的逻辑运算。示例性的,参战角色是场景进程中的运算对象。示例性的,参战角色是能够在虚拟环境中活动的虚拟角色。参战角色可以是由客户端控制的虚拟角色,也可以是由服务器控制的虚拟角色。当参战角色是由客户端控制的虚拟角色时,一个用户帐号可以对应有至少一个参战角色。

示例性的,服务器上包括多个逻辑区,一个用户帐号可以在多个逻辑区中创建多个参战角色。示例性的,同一时间在一个客户端上,只能运行一个参战角色。当参战角色是由服务器控制的虚拟角色时,参战角色可以是战场中的野怪、NPC(Non-Player Character,非玩家角色)等。示例性的,场景进程以参战角色为最小逻辑单位,对战场中各个参战角色的活动进行逻辑运算,得到逻辑运算结果,从而使战场根据逻辑规则进行运转。例如,当第一客户端控制第一参战角色向第三参战角色使用第一技能时,场景进程运算第一技能对第三参战角色造成的伤害值,从而根据伤害值对应的减少第三参战角色的生命值。再如,当第一客户端上报第一参战角色的移动方向、移动时间、起点坐标以及终点坐标时,场景进程根据第一参战角色的最大移动速度,来判断第一参战角色本次移动的速度是否大于最大移动速度,进而确定第一参战角色的本次移动是否合法。

示例性的,第一参战角色是第一客户端上登录的参战用户帐号对应的参战角色。示例性的,第一参战角色是参战用户帐号在场景进程上创建的参战角色。场景进程上存储有第一参战角色的角色信息,并由场景进程负责第一参战角色在战场中的逻辑运算。示例性的,在第一客户端上显示的虚拟环境画面,是以第一参战角色的视角对虚拟环境进行观察得到的画面,该视角可以是第一人称视角或第三人称视角。示例性的,第一参战角色是由第一客户端控制的虚拟角色。

示例性的,第一参战角色也可以是由服务器控制的虚拟角色。

示例性的,观战对象是观战进程中的逻辑单位,观战进程对该逻辑单位进行观战的逻辑运算。示例性的,观战对象是观战进程中的运算对象。示例性的,为了使观战进程能够承载更多用户帐号同时进行观战,观战进程会对用户帐号进行精简,提取必要的用户帐号的帐号信息构成观战对象,使用户帐号以观战对象的形式在观战进程中进行观战。相比于场景进程,每个用户帐号在观战进程中存储的数据量更少,从而使观战进程可以容纳更多的用户帐号。示例性的,观战对象是由客户端控制的对象。示例性的,观战对象是用户需要进行观战时,观战进程创建的临时对象,当用户结束观战时,观战进程会注销该对象,使观战进程中只存储正在观战的观战对象,提高观战进程的资源利用率。示例性的,场景进程以观战对象为最小逻辑单位,对用户控制观战对象的指令进行逻辑运算,得到逻辑运算结果。例如,当第二客户端控制第一观战对象观战第一参战角色时,第二客户端请求观战第三参战角色,则观战进程判断第一观战对象是否可以观战第三参战角色,若可以,则将第一观战对象观战的参战角色从第一参战角色切换为第三参战角色。

视野数据是客户端用于显示第一参战角色对应的用户界面的数据。示例性的,用户界面包括虚拟环境画面;或,用户界面包括虚拟环境画面和用户界面控件。示例性的,视野数据可以是逻辑运算结果,客户端根据逻辑运算结果来显示该逻辑运算结果对应的用户界面内容。例如,第一参战角色使用第一技能,服务器在计算第一技能的使用结果后,向客户端发送该使用结果(视野数据),客户端根据该使用结果在用户界面上显示第一技能的使用特效、对第三参战角色造成的伤害值、第一技能的冷却倒计时等。示例性的,视野数据还可以是用户界面的画面数据,客户端直接根据画面数据显示用户界面。例如,第一参战角色使用第一技能,服务器在计算第一技能的使用结果后,根据使用结果生成用户界面的画面数据(图片或视频),将画面数据发送给客户端,客户端根据画面数据来显示用户界面。

示例性的,当第一参战角色的在虚拟环境中活动时,第一参战角色的视野数据发生改变,场景进程就会生成视野数据包,向第一客户端发送该视野数据包,使第一客户端上显示对应的用户界面。或,场景进程周期性地生成第一参战角色的视野数据包,周期性地向世界进程同步视野数据包。示例性的,活动包括:移动、攻击、传送、拾取物品、丢弃物品、使用物品、穿上装备、脱下装备、使用动作中的至少一种。

示例性的,当第一参战角色被观战时,场景进程在向第一客户端发送视野数据包的同时会向世界进程同步该视野数据包。例如,当第一观战对象观战第一参战角色时,场景进程向世界进程同步视野数据包,世界进程再将视野数据包同步给第一观战对象所在的观战进程,由观战进程将视野数据包发送给第一观战对象对应的第二客户端,使第二客户端上也显示与第一客户端相同或相近的用户界面,从而使第二客户端的第二用户观战使用第一客户端的第一用户。

步骤502,场景进程向世界进程同步视野数据包,视野数据包用于在客户端上显示观战第一参战角色的观战界面。

示例性的,当第一参战角色被第一观战对象观战时,场景进程向世界进程同步第一参战角色的视野数据包。

示例性的,步骤502中的客户端是指登录有观战用户帐号的第二客户端。第二客户端根据视野数据包显示第一参战角色的观战界面,第二客户端上显示的观战界面与第一客户端上显示的用户界面相同或相近。

示例性的,观战界面和用户界面中的虚拟环境画面相同,用户界面控件不同。例如,如图7所示,是一种在第二客户端上显示的第一参战角色的观战界面601,在观战界面601的虚拟环境画面中,第一参战角色602位于虚拟环境画面中心位置,第三参战角色603位于第一参战角色602的左侧,第四参战角色604位于第一参战角色602的右侧。在观战界面601上还显示有观战相关的用户界面控件,例如,战绩控件605、战场信息控件606、技能控件607。其中,技能控件607处于锁定状态,无法接收用户的触发操作。如图8所示,是一种在第一客户端上显示的第一参战角色的用户界面701,在用户界面701的虚拟环境画面中,第一参战角色602位于虚拟环境画面中心位置,第三参战角色603位于第一参战角色602的左侧,第四参战角色604位于第一参战角色602的右侧。在用户界面701上还显示有参战相关的用户界面控件,例如,任务控件705、活动控件706、技能控件607。其中,技能控件607处于激活状态,能够接收用户的触发操作,进而根据触发操作控制第一参战角色使用技能。

步骤503,响应于第一观战对象拥有第一参战角色的观战权限,世界进程向观战进程同步视野数据包;第一观战对象是运行在观战进程上观看虚拟环境中的对战的对象。

当世界进程接收到场景进程发送的视野数据包后,查询拥有第一参战角色的观战权限的观战对象,当第一观战对象拥有第一参战角色的观战权限时,世界进程向第一观战对象所在的观战进程同步第一参战角色的视野数据包。

观战权限用于确定正在观战参战角色的观战对象。当观战对象被允许观战参战角色时,观战对象获得该参战角色的观战权限。当观战对象停止观战时,观战权限终止。

示例性的,世界进程中存储有观战关系表,观战关系表用于存储参战角色与观战对象的对应关系,观战对象拥有参战角色的观战权限。如图9所示,步骤503还包括步骤5031和步骤5032。

步骤5031,响应于接收到第一参战角色的视野数据包,世界进程根据观战关系表查询与第一参战角色对应的观战对象。

示例性的,世界进程中存储了观战关系表,观战关系表用于实时记录观战对象和参战角色的对应关系。当有新的观战对象观战了某个参战角色时,世界进程将该观战对象和该参战角色对应地存储到观战关系表中,从而记录该观战对象正在观战该参战角色。示例性的,一个观战对象可以观战一个参战角色,一个参战角色可以被多个观战对象所观战。

示例性的,当世界进程接收到第一参战角色的视野数据包时,世界进程从观战关系表中查询正在观战第一参战角色的观战对象。示例性的,世界进程查到第一观战对象正在观战第一参战角色。

步骤5032,响应于与第一参战角色对应的观战对象包括第一观战对象,世界进程向第一观战对象对应的观战进程同步视野数据包。

示例性的,当第一观战对象正在观战第一参战角色时,世界进程获取第一观战对象所在的观战进程,向该观战进程同步第一参战角色的视野数据包。

步骤504,响应于第一观战对象拥有第一参战角色的观战权限,观战进程向第一观战对象的第一客户端发送视野数据包;第一客户端用于根据视野数据包显示观战界面。

当观战进程接收到世界进程发送的视野数据包后,查询拥有第一参战角色的观战权限的观战对象,当第一观战对象拥有第一参战角色的观战权限时,观战进程向第一观战对象对应的客户端(第二客户端)发送第一参战角色的视野数据包,使客户端根据视野数据包显示第一参战角色对应的观战界面。

示例性的,观战进程中存储有观战关系表,观战关系表用于存储参战角色与观战对象的对应关系,观战对象拥有参战角色的观战权限。如图9所示,步骤504还包括步骤5041和步骤5042。

步骤5041,响应于接收到第一参战角色的视野数据包,观战进程根据观战关系表查询与第一参战角色对应的观战对象。

示例性的,观战进程中存储了观战关系表,观战关系表用于实时记录观战对象和参战角色的对应关系。当有新的观战对象观战了某个参战角色时,观战进程将该观战对象和该参战角色对应地存储到观战关系表中,从而记录该观战对象正在观战该参战角色。

示例性的,观战进程中的观战关系表与世界进程中的观战关系表可以相同也可以不同。示例性的,世界进程中的观战关系表用于存储服务器中全部的观战对象和参战角色的对应关系。示例性的,观战进程中的观战关系表用于存储该观战进程中的观战对象与参战角色的对应关系。即,世界进程中的观战关系表包含观战进程中的观战关系表。

示例性的,当观战进程接收到第一参战角色的视野数据包时,观战进程从观战关系表中查询正在观战第一参战角色的观战对象。示例性的,观战进程查到第一观战对象正在观战第一参战角色。

步骤5042,响应于与第一参战角色对应的观战对象包括第一观战对象。观战进程向第一观战对象的第一客户端发送视野数据包。

示例性的,当第一观战对象正在观战第一参战角色时,观战进程获取第一观战对象对应的客户端(第二客户端),向客户端发送第一参战角色的视野数据包。

综上所述,本实施例提供的方法,通过在服务器中设置观战进程、世界进程、场景进程,将观战者和参战者的逻辑运算分别用两个不同的进程进行运算,世界进程作为观战进程和场景进程间信息交流的中转站,当参战者的视野数据发生变化时,场景进程将参战者的视野数据包同步到世界进程,由世界进程查询具有该参战者的观战权限的观战者,将视野数据包同步给观战者所在的观战进程,再由观战进程将视野数据包发送给观战者的客户端,从而在客户端上显示出参战者视角的战场画面,实现观战。使场景进程、世界进程、观战进程之间只需要同步被观战的参战者的视野数据包,不需要全量同步战场中的全部数据,减少服务器的流量,提高服务器的资源利用率。此外,这种观战方法,服务器可以通过扩展观战进程的方法,来无限扩展可容纳的观战者的数量,使用世界进程来管理多个观战进程与多个场景进程之间的数据流向,从而实现大规模的观战场景。

本实施例提供的方法,通过在世界进程中维护观战关系表,使观战者可以指定某个参战者的视角进行观战。当参战者的视野数据发生变化时,场景进程将视野数据同步到世界进程中,世界进程根据观战关系表来确定观战者所在的观战进程,进而将视野数据同步给观战者,使观战者能够以参战者的第一人称视角对战场进行观察,并且为观战者提供多种观战视角,使观战者可以任选观战的参战角色。

本实施例提供的方法,通过在观战进程中维护观战关系表,使观战者可以指定某个参战者的视角进行观战。当参战者的视野数据发生变化时,世界进程将视野数据同步到观战进程中,观战进程根据观战关系表来确定观战者对应的客户端,进而将视野数据同步给观战者,使观战者能够以参战者的第一人称视角对战场进行观察,并且为观战者提供多种观战视角,使观战者可以任选观战的参战角色。

示例性的,给出一种观战用户帐号请求观战第一参战角色所在的第一战场的示例性实施例。

图10是本申请一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图。以该方法的执行主体为图2所示出的服务器来举例说明。示例性的,服务器运行有至少两个观战进程。服务器运行有至少两个场景进程,位于第一战场中的第一参战角色运行在第一场景进程上,观战用户帐号的第二参战角色运行在第二场景进程上。在步骤501之前,该方法还包括如下步骤。

响应于第二场景进程接收到客户端发送的观战请求,观战进程创建观战用户帐号的第一观战对象;观战请求用于请求观战第一战场。

第二客户端在使用观战用户帐号登录到服务器后,默认进入第二场景进程,使用第二参战角色在虚拟环境中活动。此时,第二客户端向服务器发送的信息,由服务器中的第二场景进程进行处理。当用户要观战第一战场时,第二客户端向服务器发送观战请求,服务器将观战请求同步给第二参战角色所在的第二场景进程进行处理。

示例性的,服务器将参战角色分为了多个逻辑区,每个逻辑区对应有一个场景进程,用户在创建参战角色时会选定其中一个逻辑区,则该参战角色的数据会保存在该逻辑区内,并由该逻辑区对应的场景进程负责该参战角色的逻辑运算。例如,服务器将参战角色分为了多个国家,每个国家对应有一个场景进程,用户在创建参战角色时可以选择其中的一个国家。例如,如图11所示,在第二参战角色的角色信息控件1002中,显示有第二参战角色属于“月”国。

示例性的,当服务器接收到观战请求时,在观战进程中创建观战用户帐号的第一观战对象,使观战用户帐号从第二场景进程中转移至观战进程中,使用第一观战对象进行观战。

观战请求用于向服务器请求允许观战用户帐号观战第一战场。观战请求中包括观战用户帐号和第一战场。示例性的,第一战场是用户选择要观战的战场。第一战场中包括第一参战角色。

例如,如图11所示,给出了一种观战用户帐号使用第二参战角色在虚拟环境中活动的用户界面示意图。第二客户端在登录观战用户帐号后,默认使用第二参战角色在虚拟环境中活动,第二客户端上显示的用户界面中显示有位于虚拟环境中的第二参战角色1001、第二参战角色的角色信息控件1002。当用户控制第二参战角色1001靠近NPC1003时,弹出战场选择界面。如图12所示,在用户界面上弹出战场选择界面,用户可以点击前往观战控件1101,控制第二客户端向服务器发送观战“结义赛”战场的观战请求。

示例性的,观战进程创建第一观战对象的方法包括如下的步骤901至步骤909。

步骤901,响应于接收到第一客户端发送观战请求,第二场景进程向世界进程同步观战请求。

示例性的,服务器中运行有至少两个观战进程,当第二场景进程接收到观战请求后,第二场景进程向世界进程同步该观战请求,请求世界进程为观战用户帐号分配观战进程。

步骤902,世界进程将第一观战进程确定为观战用户帐号的观战进程。

示例性的,世界进程根据观战进程分配策略,为观战用户帐号分配观战进程。示例性的,观战进程的分配策略可以是一个战场对应一个观战进程,也可以秉承资源节约原则,优先使观战对象占满一个观战进程中的观战位置。即,一个观战进程中的多个观战对象可以分别观战不同的战场。例如,服务器中包括两个观战进程,第一观战进程和第二观战进程,每个观战进程中可容纳一万个观战对象,此时,第一观战进程中已经容纳了500个观战对象,第二观战进程中为空闲状态,则服务器可以秉承资源节约原则,优先将用户帐号分配到第一观战进程中,当第一观战进程满载后,再将要观战的用户帐号分配到第二观战进程中。

示例性的,世界进程将第一观战进程选定为观战用户帐号的观战进程。

步骤903,世界进程向第一观战进程同步第一占位请求;第一占位请求用于在第一观战进程中占用观战对象位置。

示例性的,每个观战进程中都设置有一定数量的观战对象位置,观战对象位置的数量小于等于观战进程可容纳的观战对象的最大数量。示例性的,世界进程查询第一观战进程中是否还有空闲的观战对象位置,若有,则观战进程将该观战对象位置确定为观战用户帐号的位置。若第一观战进程中没有空闲的观战对象位置,则世界进程可以继续向下一个观战进程发送占位请求,查询下一个观战进程中是否有空闲的观战对象位置。

响应于占位成功,第一观战进程创建观战用户帐号的第一观战对象。

当第一观战进程中存在空闲的观战对象位置时,第一观战进程为观战用户帐号创建第一观战对象,使观战用户帐号使用第一观战对象观战第一战场。

步骤904,响应于占位成功,第一观战进程向世界进程同步第一占位成功指令。

当第一观战进程中存在空闲的观战对象位置时,第一观战进程为观战用户帐号占用该观战对象位置,并向世界进程发送第一占位成功指令。

步骤905,世界进程向第二场景进程同步第一占位成功指令。

步骤906,第二场景进程将与第一客户端对接的进程从第二场景进程切换为第一观战进程。

当第二场景进程接收到第一占位成功指令时,第二场景进程切换第二客户端的路由,使第二客户端与第一观战进程对接,由第一观战进程处理第二客户端发送给服务器的信息。

步骤907,第二场景进程向世界进程同步观战用户帐号的帐号信息。

帐号信息用于在第一观战进程中创建第一观战对象。示例性的,帐号信息包括观战所必须的信息。例如,观战信息包括:观战用户帐号的ID(Identity Document,身份标识号)、昵称、头像、性别、等级、逻辑区中的至少一种。

步骤908,世界进程向第一观战进程同步帐号信息。

世界进程将接收到的观战用户帐号的帐号信息同步给第一观战进程。

步骤909,第一观战进程根据帐号信息创建观战用户帐号的第一观战对象。

步骤910,响应于在观战进程中创建观战用户帐号的第一观战对象,观战进程向第一战场所在的第一场景进程同步观战指令;观战指令包括第一观战对象观战第一战场。

当观战进程根据帐号信息为观战用户帐号创建第一观战对象后,观战进程向第一观战对象选择观战的第一战场所在的第一场景进程发送观战指令。观战指令用于告知观战进程第一观战对象观战第一战场,并向第一场景进程请求获取第一战场的默认参战角色。示例性的,观战指令包括第一观战对象和第一战场。

默认参战角色是服务器为第一战场指定的被观战的参战角色。观战用户帐号进入观战进程后,默认观战该战场的默认参战角色,若用户想要观战该战场的其他参战角色,可以在开始观战后修改要观战的参战角色。

步骤911,第一场景进程向世界进程同步第一战场的默认参战角色,默认参战角色包括第一参战角色。

示例性的,第一战场的默认参战角色是第一参战角色。第一场景进程在接收到第一观战进程发送的观战指令后,标记第一参战角色被观战,并向世界进程发送第一战场的默认参战角色。示例性的,当第一场景进程将第一参战角色标记为被观战后,每当第一参战角色的视野数据发生变化时,第一场景进程都会向世界进程同步第一参战角色的视野数据包。若第一参战角色没有被标记为被观战,则第一参战角色的视野数据发生变化时,第一场景进程不会向世界进程同步第一参战角色的视野数据包。

步骤912,世界进程将第一观战对象与第一参战角色的第一对应关系添加至观战关系表。

世界进程在接收到第一场景进程发送的默认参战角色后,将第一参战角色与第一观战对象的对应关系添加至观战关系表,当接收到第一场景进程同步的视野数据包时,世界进程可以根据该对应关系将视野数据包转发给第一观战对象所在的观战进程。

步骤913,世界进程向观战进程同步第一对应关系。

示例性的,世界进程还会向第一观战进程发送第一对应关系,使观战进程存储第一对应关系。

步骤914,观战进程将第一对应关系添加至观战关系表。

综上所述,本实施例提供的方法,通过在接收到客户端发送的观战请求后,在观战进程中为观战者创建观战对象,使观战者能够通过观战对象获取参战者的视野数据,由于观战对象的数据量少于参战角色的数据量,为观战者在观战进程创建观战对象,可以减少观战进程的资源浪费,减少流量,提高观战进程可以容纳的观战者数量。

本实施例提供的方法,通过在客户端发送观战请求后,由观战者原本所在的场景进程请求在观战进程中占用一个观战对象位置,在占位成功后,由场景进程将观战所必需的帐号信息同步给观战进程,从而使观战进程能够根据帐号信息创建一个观战对象,使用户帐号通过第一观战对象获取到第一参战角色的视野数据包。

本实施例提供的方法,通过设置多个观战进程的方式,使服务器可以对观战进程进行扩充,从而扩展服务器可容纳的观战者的数量,实现大规模的观战场景。

示例性的,给出一种观战用户帐号结束观战第一参战角色的示例性实施例。

图13是本申请一个示例性实施例提供的基于虚拟环境的视野数据包发送方法的方法流程图。以该方法的执行主体为图2所示出的服务器来举例说明。在步骤504之后,该方法还包括如下步骤。

步骤1201,响应于接收到客户端发送的观战结束请求,观战进程将与客户端对接的进程从观战进程切换为第二场景进程。

响应于接收到客户端发送的观战结束请求,观战进程向第二场景进程发送第二占位请求;第二占位请求在第二场景进程中占用参战角色位置;

响应于占位成功,观战进程将与客户端对接的进程从观战进程切换为第二场景进程。

当第二客户端向服务器发送观战结束请求时,观战进程接收到观战结束请求后,向世界进程请求结束观战,世界进程同意该请求后,观战进程向观战用户帐号原本所在的第二场景进程发送第二占位请求。当占位成功时,观战进程切换第二客户端的路由,使第二场景进程与第二客户端对接,由第二场景进程处理第二客户端发送给服务器的信息。

示例性的,每个场景进程中都设置有一定数量的参战角色位置,参战角色位置的数量小于等于场景进程可容纳的参战角色的最大数量。

步骤1202,观战进程注销第一观战对象,删除观战关系表中的第一对应关系。

示例性的,当观战用户帐号在第二场景进程中占位成功后,观战进程注销第一观战对象,并将第一对应关系从观战关系表中删除。

步骤1203,观战进程向世界进程同步观战结束结果。

观战结束结果包括观战用户帐号结束观战的指令,以及观战用户帐号本次观战的相关信息。观战用户帐号本次观战的相关信息包括:观战的战场、观战的参战角色、观战时长、观战时发送的弹幕、观战时的录屏数据中的至少一种。

步骤1204,世界进程删除观战关系表中的第一对应关系。

世界进程在接收到观战结束结果后,确定观战用户帐号结束观战,将第一对应关系从观战关系表中删除。

示例性的,世界进程向第一场景进程发送观战用户帐号结束观战的指令,使第一场景进程确定观战用户帐号对第一参战角色的观战权限终止,若没有其他观战对象观战第一参战角色,则第一场景进程不再向世界进程同步第一参战角色的视野数据包。

步骤1205,世界进程向第二场景进程同步观战结束结果。

第二场景进程接收观战结束结果,并将本次观战的相关信息存储到观战用户帐号中,以便观战用户帐号查询本次观战的相关信息。

步骤1206,第二场景进程运行观战用户帐号的第二参战角色。

第二场景进程重新运行第二参战角色,使第二客户端上显示以第二参战角色的视角对虚拟环境进行观察得到的虚拟环境画面,第二客户端可以控制第二参战角色在虚拟环境中活动。

综上所述,本实施例提供的方法,通过在接收到客户端发送的观战结束请求时,由观战者所在的观战进程向场景进程发送占位请求,请求返回到场景进程中,当占位成功后,观战进程删除观战者的观战对象,并将对应关系从观战关系表中删除,实现用户帐号从观战对象到参战角色的身份切换,使用户帐号重新回到原本的场景进程中,控制参战角色在虚拟环境中活动。

上述实施例是基于游戏的应用场景对上述方法进行描述,下面以军事仿真的应用场景对上述方法进行示例性说明。

仿真技术是应用软件和硬件通过模拟真实世界的实验,反映系统行为或过程的模型技术。

军事仿真程序是利用仿真技术针对军事应用专门构建的程序,对海、陆、空等作战元素、武器装备性能以及作战行动等进行量化分析,进而精确模拟战场环境,呈现战场态势,实现作战体系的评估和决策的辅助。

在一个示例中,士兵在军事仿真程序所在的终端建立一个虚拟的战场,并以组队的形式进行对战。士兵控制战场虚拟环境中的虚拟对象在战场虚拟环境下进行站立、蹲下、坐下、仰卧、俯卧、侧卧、行走、奔跑、攀爬、驾驶、射击、投掷、攻击、受伤、侦查、近身格斗等动作中的至少一种操作。战场虚拟环境包括:平地、山川、高原、盆地、沙漠、河流、湖泊、海洋、植被中的至少一种自然形态,以及建筑物、交通工具、废墟、训练场等地点形态。虚拟对象包括:虚拟人物、虚拟动物、动漫人物等,每个虚拟对象在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。

基于上述情况,在一个示例中,士兵A控制第一参战角色在虚拟环境中参与对战,士兵B可以通过观战第一对象对第一参战角色进行观战。第一参战角色运行在服务器上的场景进程中,观战对象运行在服务器上的观战进程中。场景进程可以周期性的向世界进程同步第一参战角色的视野数据包,世界进程在接收到第一参战角色的视野数据包后,查询拥有第一参战角色的观战权限的观战对象,当第一观战对象具有第一参战角色的观战权限时,世界进程向第一观战对象所在的观战进程同步第一参战角色的视野数据包,由观战进程将视野数据包发送给士兵B的客户端,在客户端上显示观战第一参战角色的观战界面。

综上所述,在本实施例中,将上述基于虚拟环境的视野数据包发送方法应用在军事仿真程序中,通过在服务器上运行场景进程、世界进程和观战进程,由场景进程向世界进程同步视野数据包,再由世界进程查询观战权限,将视野数据包同步给具有观战权限的观战对象所在的观战进程上,使观战者的客户端接收到第一参战角色的视野数据包,显示观战界面。服务器可以通过增加观战进程的数量,来扩展可容纳的观战人数,从而实现大量士兵同时进行观战,扩展军队组织军事演练以及观摩学习的规模。

以下为本申请的装置实施例,对于装置实施例中未详细描述的细节,可参考上述方法实施例。

图14是本申请一个示例性实施例提供的基于虚拟环境的视野数据包发送装置的框图。该装置包括:

场景模块1301,用于生成第一参战角色的视野数据包,向世界模块1304同步所述视野数据包;所述第一参战角色是运行在所述场景模块1301上在虚拟环境中参与对战的虚拟角色,所述视野数据包用于在客户端上显示观战所述第一参战角色的观战界面;

世界模块1304,用于响应于第一观战对象拥有所述第一参战角色的观战权限,向观战模块1305同步所述视野数据包;所述第一观战对象是运行在所述观战模块1305上观看所述虚拟环境中的对战的对象;

观战模块1305,用于响应于所述第一观战对象拥有所述第一参战角色的所述观战权限,向所述第一观战对象的客户端发送所述视野数据包;所述客户端用于根据所述视野数据包显示所述观战界面。

在一个可选的实施例中,所述世界模块1304中存储有观战关系表,所述观战关系表用于存储参战角色与观战对象的对应关系,所述观战对象拥有所述参战角色的观战权限;

所述世界模块1304,还用于响应于接收到所述第一参战角色的所述视野数据包,根据所述观战关系表查询与所述第一参战角色对应的所述观战对象;

所述世界模块1304,还用于响应于与所述第一参战角色对应的所述观战对象包括所述第一观战对象,向所述第一观战对象对应的所述观战模块1305同步所述视野数据包。

在一个可选的实施例中,所述观战模块1305中存储有观战关系表,所述观战关系表用于存储参战角色与观战对象的对应关系,所述观战对象拥有所述参战角色的观战权限;

所述观战模块1305,还用于响应于接收到所述第一参战角色的所述视野数据包,根据所述观战关系表查询与所述第一参战角色对应的所述观战对象;

所述观战模块1305,还用于响应于与所述第一参战角色对应的所述观战对象包括所述第一观战对象,向所述第一观战对象的客户端发送所述视野数据包。

在一个可选的实施例中,所述场景模块1301包括至少两个场景子模块,位于第一战场中的所述第一参战角色运行在第一场景子模块1302上,观战用户帐号的第二参战角色运行在第二场景子模块1303上;

所述观战模块1305,还用于响应于在所述观战模块1305中创建所述观战用户帐号的所述第一观战对象,向所述第一战场所在的所述第一场景子模块1302同步观战指令;所述观战指令包括所述第一观战对象观战所述第一战场;

所述第一场景子模块1302,用于向所述世界模块1304同步所述第一战场的默认参战角色,所述默认参战角色包括所述第一参战角色;

所述世界模块1304,还用于将所述第一观战对象与所述第一参战角色的第一对应关系添加至所述观战关系表,向所述观战模块1305同步所述第一对应关系;

所述观战模块1305将所述第一对应关系添加至所述观战关系表。

在一个可选的实施例中,所述第二场景子模块1303,还用于接收所述客户端发送的观战请求;

所述观战模块1305,还用于响应于所述第二场景子模块1303接收到所述客户端发送的观战请求,所述观战模块1305创建所述观战用户帐号的所述第一观战对象;所述观战请求用于请求观战所述第一战场。

在一个可选的实施例中,所述观战模块1305包括至少两个观战子模块,所述装置还包括:

所述第二场景子模块1303,还用于响应于接收到所述客户端发送所述观战请求,向所述世界模块1304同步所述观战请求;

所述世界模块1304,还用于将第一观战子模块确定为所述观战用户帐号的观战模块1305,向所述第一观战子模块同步第一占位请求;所述第一占位请求用于在所述第一观战子模块13061305中占用观战对象位置;

所述第一观战子模块,还用于响应于占位成功,创建所述观战用户帐号的所述第一观战对象。

在一个可选的实施例中,所述第一观战子模块,还用于响应于占位成功,向所述世界模块1304同步第一占位成功指令;

所述世界模块1304,还用于向所述第二场景模块1301同步所述第一占位成功指令;

所述第二场景子模块1303,还用于将与所述客户端对接的模块从所述第二场景子模块1303切换为所述第一观战子模块,向所述世界模块1304同步所述观战用户帐号的帐号信息;

所述世界模块1304,还用于向所述第一观战子模块同步所述帐号信息;

所述第一观战子模块,还用于根据所述帐号信息创建所述观战用户帐号的所述第一观战对象。

在一个可选的实施例中,所述观战模块1305,还用于响应于接收到所述客户端发送的观战结束请求,将与所述客户端对接的模块从所述观战模块1305切换为所述第二场景子模块1303,注销所述第一观战对象,删除所述观战关系表中的所述第一对应关系,向所述世界模块1304同步观战结束结果;

所述世界模块1304,还用于删除所述观战关系表中的所述第一对应关系,向所述第二场景子模块1303同步所述观战结束结果;

所述第二场景子模块1303,还用于运行所述观战用户帐号的所述第二参战角色。

在一个可选的实施例中,所述观战模块1305,还用于响应于接收到所述客户端发送的观战结束请求,所向所述第二场景子模块1303发送第二占位请求;所述第二占位请求在所述第二场景子模块1303中占用参战角色位置;

所述观战模块1305,还用于响应于占位成功,将与所述客户端对接的模块从所述观战模块1305切换为所述第二场景子模块1303。

需要说明的是:上述实施例提供的基于虚拟环境的视野数据包发送装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于虚拟环境的视野数据包发送装置与基于虚拟环境的视野数据包发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图15是本申请一个实施例提供的服务器的结构示意图。具体来讲:服务器1400包括中央处理单元(英文:Central Processing Unit,简称:CPU)1401、包括随机存取存储器(英文:Random Access Memory,简称:RAM)1402和只读存储器(英文:Read-Only Memory,简称:ROM)1403的系统存储器1404,以及连接系统存储器1404和中央处理单元1401的系统总线1405。服务器1400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出(I/O,Input/Output)系统1406,和用于存储操作系统1413、应用程序1414和其他程序模块1415的大容量存储设备1407。

基本输入/输出系统1406包括有用于显示信息的显示器1408和用于用户输入信息的诸如鼠标、键盘之类的输入设备1409。其中显示器1408和输入设备1409都通过连接到系统总线1405的输入/输出控制器1410连接到中央处理单元1401。基本输入/输出系统1406还可以包括输入/输出控制器1410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器1410还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备1407通过连接到系统总线1405的大容量存储控制器(未示出)连接到中央处理单元1401。大容量存储设备1407及其相关联的计算机可读介质为服务器1400提供非易失性存储。也就是说,大容量存储设备1407可以包括诸如硬盘或者只读光盘(英文:Compact Disc Read-Only Memory,简称:CD-ROM)驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(英文:Erasable Programmable Read-Only Memory,简称:EPROM)、电可擦除可编程只读存储器(英文:Electrically Erasable Programmable Read-Only Memory,简称:EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(英文:Digital Versatile Disc,简称:DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1404和大容量存储设备1407可以统称为存储器。

根据本申请的各种实施例,服务器1400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1400可以通过连接在系统总线1405上的网络接口单元1411连接到网络1412,或者说,也可以使用网络接口单元1411来连接到其他类型的网络或远程计算机系统(未示出)。

本申请还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任意示例性实施例所提供的基于虚拟环境的视野数据包发送方法。

本申请还提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任意示例性实施例所提供的基于虚拟环境的视野数据包发送方法。

本申请还提供了一种计算机程序产品,其特征在于,所述计算机程序产品中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一所述的基于虚拟环境的视野数据包发送方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:虚拟场景显示方法、装置、计算机设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类