多参与者游戏体系结构的制作方法

文档序号:7968912阅读:230来源:国知局
专利名称:多参与者游戏体系结构的制作方法
技术领域
本申请涉及一种游戏系统,更特别地,涉及一种基于网络的游戏系统。
背景技术
在线互动数字娱乐近年来得到了很大发展,尤其是在视频游戏方面。例如,用户可以登陆到网站以寻找对手,并且然后查找虚拟世界中的牌类游戏或棋类游戏。由于一个参与者可以与另一个参与者进行对抗,所以通信是双向的。但是,不是所有的视频游戏都可以在线进行。对于棋类游戏,其中走一步棋的时间对于结果不具有立即的和重要的效果,参与者有时间考虑下一步棋、对攻走法、游戏策略等,并且游戏不需要提供实时反馈。但是,在大多数实时视频游戏中,做出决定并根据该决定进行动作所需的时间相对较短,从而使得所涉及的参与者感觉到真实和投入(engagement)。在这种实时游戏中,动作的发生必须极接近于真实生活事件。动作游戏、诸如飞行模拟器的模拟游戏以及运动游戏要求实时动作。在大多数情况下,不能与提供实时的真实和投入一起提供持续的通信、得分、参与者属性等。
基于网络的游戏系统的另一个难点是可扩展性。尽管一些现有的基于网络的系统可以处理数以万计的游戏参与者,但可靠地并同时地将游戏应用实时提供给上百万参与者却是一个严峻的挑战。另一个挑战是提供大量游戏室,每一个游戏室容纳大量游戏参与者。对于基于网络的游戏系统的进一步希望的特征是在实时地响应于大量参与者而维持相同的性能,或者向在统一标准的社会背景和用户身份下的游戏参与者提供许多游戏的同时,为参与者有效地提供宽泛的游戏选择。

发明内容
本系统的实施可以包括以下中的一个或多个。在一个方面,本发明涉及一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中游戏客户端应用中的至少两个加入同一游戏室内;连接到计算机网络的第一服务器,配置为存储能够与多个游戏客户端应用进行通信的游戏引擎应用;连接到计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的协议;以及连接到计算机网络的第二服务器,配置为存储游戏系统接口(GSI)程序,其可以接收来自多个游戏客户端应用的多个第一加密消息,并使用存储在计算机存储设备上的协议对该第一加密消息进行解密。
在另一方面,本发明涉及一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中游戏客户端应用中的至少两个加入同一游戏室内;连接到计算机网络的第一服务器,配置为存储游戏引擎应用,其可以a)在接收来自游戏客户端应用的请求之后,即时响应于该游戏客户端应用,以及b)向该游戏客户端应用发送请求,并且即时接收来自该游戏客户端应用的响应;连接到计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到计算机网络的第二服务器,配置为存储游戏系统接口(GSI)程序,其可以接收来自多个游戏客户端应用的多个第一加密消息,并使用该多个协议中的一个或多个对该第一加密消息进行解密。
在又一方面,本发明涉及一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中游戏客户端应用中的至少两个加入同一游戏室内;连接到计算机网络的第一服务器,配置为存储游戏引擎应用,其可以a)在接收来自游戏客户端应用的请求之后,即时响应于该游戏客户端应用,以及b)向该游戏客户端应用发送请求,并且即时接收来自该游戏客户端应用的响应;连接到计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到计算机网络的第二服务器,配置为存储游戏系统接口(GSI)控制器和GSI模型,其中该GSI控制器可以接收来自多个游戏客户端应用的多个第一加密消息,使用存储在计算机存储设备上的协议中的一个或多个对该第一加密消息进行解密,并对待发送给游戏客户端应用的第二加密消息进行加密,以及该GSI模型可以存储游戏应用逻辑并根据该应用逻辑形成第二加密消息中待加密的响应消息。
系统的实施可以包括以下中的一个或多个。第一服务器可以配置为存储能够在持续的网络连接中与多个游戏客户端应用进行通信的游戏引擎应用。计算机存储设备可以配置为存储用于消息加密和消息解密的多个协议,并且游戏系统接口(GSI)程序可以使用该多个协议中的一个或多个对第一加密消息进行解密。游戏引擎应用可以配置为向同一游戏室内的多个客户端应用进行广播。游戏引擎应用可以配置为接收来自游戏客户端应用的请求并即时响应该请求。第一加密消息可以包括游戏状态信息,该游戏状态信息包括与游戏客户端应用中的至少一个相关联的游戏统计资料(statistics)和游戏配置中的一个或多个。第一加密消息中的至少一个可以包括可以由协议进行序列化的序列化消息。第一加密消息可以包括与游戏客户端应用相关联的用户识别、会话识别和游戏室信息中的一个或多个。基于网络的游戏系统可以进一步包括连接到计算机网络的数据存储设备,其配置为接收来自GSI程序的与第一加密消息相关联的信息,并存储与该第一加密消息相关联的信息。该GSI程序可以配置为接收来自游戏客户端应用的第一加密消息中的请求,并通过向该游戏客户端应用发送第二加密消息来响应该请求。可以使用存储在计算机存储设备上的多个协议中的一个或多个对第二加密消息进行加密。第一加密消息可以包括认证信息,并且第二加密消息包括确认信息。该GSI程序可以包括GSI控制器,其配置为使用存储在计算机存储设备上的协议中的一个或多个对第一加密消息进行解密并对响应消息进行加密。该GSI程序可以包括GSI模型,其存储游戏应用逻辑并配置为根据该应用逻辑形成响应消息。游戏客户端应用可以由安装在计算机设备上的网络(web)浏览器的插件来执行。该GSI程序可以配置为在非持续的网络连接中与游戏客户端应用进行通信。
实施例可以包括以下优点中的一个或多个。本发明的优点之一是所公开的基于网络的游戏系统可以同时向许多远程游戏参与者提供游戏应用。多个游戏参与者可以从对他们方便的不同位置处在同一游戏室内参与同一游戏。许多游戏参与者可以在彼此对抗的同时参与同一游戏应用,或参与独立的游戏应用。持续的通信路径允许在多个远程位置处用没有网络延迟的即时响应来参与游戏应用。
本发明的另一优点是所公开的系统可以使用诸如PHP、XML、AMF、XML-RPC等的不同的序列化加密协议,在计算机网络上向远程游戏参与者提供许多游戏应用。游戏参与者可以基于来自单个基于网络的服务的任何协议来访问游戏应用。游戏应用的选择显著增加。由不同的游戏参与者所使用的不同的游戏应用可以使用不同的加密协议来参与同一游戏或甚至在同一游戏室内参与。
本发明的又一个优点是所公开的系统可以利用持续的网络连接向远程游戏参与者提供游戏应用,同时有效地跟踪并以有效的方式更新每个参与者的游戏状态。所公开的系统包括持续的通信路径,其实时地为游戏应用提供即时消息交换。所公开的系统包括独立通信路径,其可以在不消耗显著的网络资源的情况下对游戏应用的请求进行响应,并将游戏状态信息存储在存储设备中。
本发明的又一个优点是所公开的游戏系统是有效的。所公开的游戏系统包括到游戏客户端的通信路径,其不需要持续整个游戏会话。应答来自游戏客户端的呼叫,并且关闭通信会话和释放网络连接。
由于所公开的系统的有效的通信体系结构,所公开的系统可以容易地扩展,而不像现有技术的系统那样消耗显著的网络带宽。其可以在计算机网络上的上百万游戏会话中容纳上百万的游戏参与者,这比传统的基于网络的游戏系统高出一个或几个数量级。
本发明的另一个优点是其允许在同一游戏室内或不同游戏室内容纳大量游戏参与者的可扩展性。将到游戏客户端应用的通信划分为持续的通信和有效的但非持续的通信路径。使得实时通信的信息量最小化。通过游戏系统接口(GSI)程序的灵活层处理非持续的通信,其允许基于网络的游戏系统处理大量和多种类的游戏客户端应用。
在所附附图和以下描述中陈述了一个或多个实施例的细节。根据该描述和附图并根据权利要求书,本发明的其他特征、目的和优点将变得明显。


图1是根据本发明的基于网络的游戏系统的系统图。
图2示出可以在图1中所示的计算机设备上运行的游戏客户端应用。
图3示出可以在图1中所示的游戏服务器上存储的游戏引擎应用。
图4A示出在根据本发明的实施例的图1中所示的基于网络的游戏系统中的服务器上所存储的游戏系统接口应用。
图4B示出在根据本发明的另一实施例的图1中所示的web服务器上所存储的游戏系统接口应用。
图5示出与图1的基于网络的游戏系统相兼容的持续的且有效的游戏体系结构的系统图。
图6示出与图1的基于网络的游戏系统相兼容的游戏体系结构的系统图。该游戏体系结构能够在多个通信协议下以序列化消息进行通信。
图7示出列出多个游戏引擎的表,该多个游戏引擎可以在不同的序列化协议下进行通信。
图8A和图8B示出用于基于网络的游戏系统中的游戏系统接口应用与游戏客户端应用或游戏引擎之间的通信的流程图。
具体实施例方式
现在将详细参考本发明的优选实施例,其示例在所附附图中图解。尽管将结合优选实施例描述本发明,但可以理解,它们不旨在将本发明局限于这些实施例。相反,本发明旨在覆盖可以包括在由所附权利要求书所限定的本发明的精神和范围内的可选、修改和等同方案。此外,在本发明的以下详细描述中,陈述了大量特定细节,以便提供对本发明的透彻理解。但是,对于本领域的普通技术人员而言,很明显可以在没有这些特定细节的情况下实施本发明。在其他实例中,对公知的方法、过程、部件和电路不进行详细描述,以免使得本发明的方面被不必要地模糊。
如图1中所示,基于网络的游戏系统100可以提供将在许多计算机设备106和107上参与的通信网络105上的游戏应用。该通信网络105可以包括各种有线、无线、卫星通信配置,包括但不限于诸如因特网的广域网、局域网、在诸如2G、2.5G和3G的各种通信协议下的蜂窝电话网、全球移动通信系统(GSM)、通用无线分组业务(GPRS)、EDGE、码分多址(CDMA)、宽带CDMA、TD-SCDMA、通用移动通信系统(UMTS)等,以及Wi-Fi无线通信标准,诸如IEEE802.11、Wi-Max和IEEE 806.16等。计算机设备106和107可以包括个人计算机、便携数字助理(PDA)设备、蜂窝电话、数字图像获取设备和专用游戏设备,诸如微软XBOX、SONY PlayStation ORPS2和/或Nintendo 64、GameCube或GameBoy。
基于网络的游戏系统100可以包括负载平衡器115、一个或多个web服务器121-124、一个或多个会话服务器130、服务器140、一个或多个游戏服务器141-143、数据库150和存储区域网络151。基于网络的游戏系统100可以由诸如美国加利福尼亚Gaia Interactive公司的游戏服务提供者操作。基于网络的游戏系统100可以在因特网上提供诸如www.gaiaonline.com的网站,以容纳游戏社区并提供诸如游戏、讨论群组和邮件等各种游戏服务。参与者可以在该网站处注册以拥有他或她自己的帐户。参与者还可以个性化他或她自己的简介(profile)。如下讨论,基于网络的系统100可以将与参与者相关联的游戏统计资料和其他游戏性质存储在游戏参与者可用的和可更新的网络连接的存储设备中。
游戏参与者可以使用具有web浏览器应用的计算机设备106和107来访问游戏服务提供者的网站。该web浏览器应用可在计算机设备106或107上执行。该web浏览器应用可从若干制造商获得,该制造商包括微软的Internet ExplorerTM、AOL的NetscapeTM以及Mozilla的FireboxTM等。各种因特网浏览应用可用于蜂窝电话、PDA、游戏控制台,这也与所公开的系统和方法相兼容。
游戏客户端应用200可以驻留在计算机设备106或107上,如图2中所示。游戏客户端应用200可以由web浏览器应用的插件来执行。游戏客户端应用200可以包括用于一个或多个游戏的游戏逻辑,并允许用于游戏的动画显示。该web浏览器插件可以使得web浏览器允许音频或视频消息,并适当地显示独立于web浏览器的制造商或版本的矢量图形图像。该web浏览器插件可以允许动画随web浏览器窗口的尺寸改变而适当地缩放。游戏客户端应用200可以使用web浏览器的通信API(应用编程接口),以与基于网络的游戏系统100中的各种服务器和设备(115、121-124、140-143等)进行通信。
具体地,在没有限制的情况下,计算机设备106和107可以安装有由Macromedia公司所生产的Flash插件。Flash是带宽友好且独立于浏览器的矢量图形动画技术。使用一个或多个顺序的其中定义了动作和互动的时间线(timeline)来设计动画。Flash插件附于在计算机设备106和107上运行的web浏览器上,以允许web浏览器播放在网页中所涉及的SWF(Small Web Format)影片剪辑。Macromedia的Flash MX和Freehand应用以及其他Flash文件也可以通过Web浏览器插件(或Flash播放器)或直接访问播放器的多媒体应用来进行查看。Flash文件可以包括声音。Flash可以使用针对源文件的FLA文件和针对Flash影片的SWF文件。与其他影片文件(AVI、MPG等)相比,Flash文件是空间有效的并适于互动。
可以在待加载到web浏览器中的一个或多个SWF影片剪辑中写入游戏客户端应用200。每个游戏客户端应用200可以对应于一个或多个游戏。SWF影片剪辑包括游戏逻辑以及动画、图像和其他效果。SWF影片剪辑可以使用由Macromedia的Flash插件所提供的功能库来与基于网络的游戏系统100中的服务器进行通信。可以针对可在多个游戏中重复使用的SWF影片剪辑开发API库。
图3示出存储在游戏服务器141、142或143上的游戏引擎应用300。游戏引擎应用300负责在游戏会话期间向游戏客户端应用200提供实时响应。在本申请中,术语“实时通信”是指由持续的网络连接所促进的通信的类型。该持续的网络连接允许在网络上的两个部件之间没有网络延迟地进行即时且可靠的通信。
其上存储有游戏引擎应用300的游戏服务器141、142或143可以保持与计算机设备106或107的开放的套接字(socket)连接。游戏引擎应用300和游戏客户端应用200可以通过将数据写入套接字和将数据从套接字读出来彼此发送和接收TCP/IP消息。可以在任何时间从游戏服务器141(或142和143)或者计算机设备106或107发送和接收消息。持续的网络连接允许即时双向通信,并保证在游戏会话期间的所有时间上游戏的实时更新而没有网络延迟。持续的通信中的连接的丢失可以解译为游戏客户端应用200已离开该游戏。
游戏引擎应用300可与不同的服务器软件实现相兼容,诸如在“www.wok2.de”可用的Sushi Multiuser Server、在“www.electrotank.com”可用的ElectroServer 3以及在“www.zona.net”可用的Terazona Network Engine。基于网络的游戏系统100可以包括许多使用不同的服务器软件所开发的游戏引擎应用300。不同的服务器软件可以要求在不同的序列化协议下所加密的序列化消息。由GSI程序400提供具有这些游戏引擎应用300的通信协议。
消息序列化和解序列化用作所公开的系统和方法中的加密和解密方法的示例。该示例用于描述本发明的系统的灵活性和能力。本发明可与其他加密和解密技术以及相关协议相兼容。
基于网络的游戏系统100包括游戏系统接口(GSI)程序400,其可以存储在如图4A中所示的服务器140上、如图4B中所示的web服务器121、122或123上或者连接到该计算机网络的诸如游戏服务器141-143的其他服务器上。GSI程序400所驻留的该服务器可以是单个计算机或负载平衡的服务器集群。对于GSI程序400的每个请求是自治事务,并且因此不要求GSI程序400与其他方(例如游戏客户端应用200或游戏引擎应用300)之间的持续的连接。
响应于请求,GSI程序400向诸如游戏客户端应用200的客户端提供信息,但不发起通信。GSI程序400可以响应来自在计算机设备106和107上运行的游戏客户端应用200的请求。类似地,响应于来自游戏引擎应用300的请求,GSI程序400还可以提供游戏信息。
图5示出在基于网络的游戏系统100中的持续的和有效的游戏体系结构500的系统图。持续的和有效的游戏体系结构500包括游戏客户端应用200、游戏引擎应用300和GSI程序400,其为游戏客户端应用200提供持续的通信路径和有效的但非持续的通信路径。GSI程序400连接到数据库150和存储区域网络151,用于将更新的数据保存在当前游戏中,并从当前和过去的游戏提取(retrieve)数据。游戏在游戏客户端应用200上运行,并通过由游戏客户端应用200所定义的协议与游戏引擎应用300进行通。
所公开的基于网络的游戏系统的有利特征是其包括持续的通信路径和非持续的通信路径,用于远程游戏客户端应用。该持续的通信路径用于交换较短且即时的消息游戏需要进行实时更新,而不需要永久存储在数据存储器上。游戏客户端应用200和游戏引擎应用300之间的实时双向通信是快速的且没有网络延迟。在访问和存储数据存储设备上的交换信息方面不花费周期时间。在游戏客户端应用200和游戏引擎应用300之间的网络连接的持续性通常持续整个游戏会话。
非持续的通信路径是有效的,其使得实时通信的信息量最小化。结果,基于网络的系统可扩展到大量游戏参与者。非持续的通信路径用于传送“长期”用于游戏或游戏参与者并且不要求即时和资源集中的通信的信息。该信息可以包括游戏参与者的属性和统计资料,诸如他或她的游戏分数,他或她所购买的将用于游戏中的装备、他或她从过去和当前游戏中所拥有的“金钱”等。这些信息不仅需要用于当前游戏,而且需要被存储和提取用于将来的游戏。因此游戏客户端应用200和GSI程序400之间交换的信息常常涉及从数据库150和诸如SAN的数据存储设备151中访问或提取数据,以及向数据库150和数据存储设备中写入和保存数据。游戏客户端应用200和GSI程序400之间的互动通常是可以应答的单个请求。然后连接关闭。换句话说,这些通信不要求贯穿游戏会话的持续的网络连接。
如图中5所示的持续和有效的游戏体系结构500不同于某些将不同类型的通信结合到同一应用层的现有技术系统。同一应用层处理实时持续的通信和不需要实时的通信(与持续的和有效的游戏体系结构500中所提供的独立的游戏引擎应用300和GSI 400形成对比)。这种类型的现有技术系统要求持续的网络连接用于贯穿游戏会话的两种类型的服务器通信。每个服务器实例将由比当前所公开的系统更大的和资源更集中的应用层来管理。随着游戏客户端数目或游戏数目的增长,应用层的负担快速增长,这常常增加故障的几率,减慢响应或降低可靠性。此外,与这种类型的现有技术系统相比较,本公开系统可扩展性更好。
每个游戏引擎应用300可以支持一个或多个游戏客户端应用200。GSI程序400可以支持许多游戏客户端应用200和许多游戏引擎应用300。游戏逻辑可以例如以计算机设备106和107上的web浏览器上加载的已编译的flash SWF文件的形式存储在游戏客户端应用200中。
游戏客户端应用200可以经由在计算机设备106和107上运行的web浏览器加载。游戏客户端应用200可以包括许多游戏逻辑以允许参与者参与许多游戏。可选地,游戏参与逻辑还可以远程存储在基于网络的游戏系统100中的服务器(诸如121-124或140-143)上。例如,游戏逻辑可以包括在游戏引擎应用300或GSI程序400中,其通常可以容纳比游戏客户端应用更复杂的游戏逻辑。可以利用服务器(诸如121-124或140-143)上的安全处理,实时地远程激活远程存储的游戏逻辑,或在会话开始之前将该远程存储的游戏逻辑下载到游戏参与者的计算机设备106和107。
为了开始一个游戏,游戏参与者可以访问诸如美国加利福尼亚Gaia Interactive公司所运营的www.gaiaonline.com之类的游戏服务网站。游戏参与者可以通过点击由在计算机设备106或107上运行的web浏览器应用所呈现的网页上的游戏客户端应用200来发起游戏会话。在本发明中,游戏会话是指客户端游戏应用200与存储在基于网络的游戏系统100中的诸如游戏引擎应用300和GSI程序400的其他程序之间的激活的连接。游戏客户端应用200还可以以流媒体(例如Flash SWF)形式,从而在游戏开始时游戏可以保持加载。
在一个实施例中,在用GSI 400认证之后,可以开始游戏并可以直接从游戏客户端应用200向游戏引擎应用300发起游戏会话,而不需要访问网页。
可以将许多游戏客户端应用加载到计算机设备106或107上。每个游戏客户端应用200可以包括用于一个或多个游戏的游戏逻辑。在一个实施例中,游戏客户端应用200可以是由Macromedia所提供的Flash插件。该Flash插件可以下载、安装和附加到web浏览器上。该Flash插件允许web浏览器在网页中涉及的它所找到的web浏览器中播放SWF影片剪辑。每个SWF影片剪辑可以包括唯一的游戏。SWF影片剪辑包含游戏逻辑以及动画、图像和其他效果。SWF影片剪辑可以使用由Macromedia的Flash插件提供的功能库和针对基于网络的游戏系统100所开发的API库,与基于网络的游戏系统100中的服务器进行通信。每个游戏引擎应用300可以支持一个或许多游戏客户端应用200,并因此可以支持许多游戏逻辑。
在游戏会话期间,利用在基于网络的游戏系统100中的持续的连接,每个游戏客户端应用200可以由游戏引擎应用300支持,即,游戏客户端应用200和游戏引擎应用300可以在游戏会话期间的任何时间上彼此发送请求并接收即时响应。游戏客户端应用200和游戏引擎应用300之间的双向通信的停止通常被游戏引擎应用300解译为游戏客户端应用200离开游戏会话。
基于网络的游戏系统100可以包括存储在游戏服务器141-143上的许多游戏引擎应用300。每个游戏引擎应用300可以基于不同的游戏平台,这些游戏平台可以由诸如Gaia Interactive公司的游戏服务提供者开发或源自第三方游戏开发者。因此游戏参与者可以在运行于游戏平台上的许多游戏引擎应用300处访问大范围的基于网络的游戏。在计算机设备上可以安装不同的游戏客户端应用200,以运行由相应的游戏引擎应用300所支持的特定游戏。
在游戏会话期间,游戏客户端应用200可以从游戏引擎应用300得到关于特定的游戏或游戏会话的信息。游戏引擎应用300可以即时地响应请求。游戏引擎应用300还可以利用不需要永久存储的动画或短期游戏信息来更新游戏客户端应用200。例如,该短期信息可以包括正在场地上踢的足球的位置、参与者的化身沿该场地上或该化身所在的当前位置进行移动的路径、以及在游戏室内的参与者之间的包括基于文本的聊天和动画的即时消息聊天通信。游戏室允许多个远程游戏参与者彼此参与同一游戏。游戏参与者可以参与基于团队的对抗游戏,诸如足球、冰球或橄榄球,或者他们可以参与基于个人的游戏,诸如钓鱼、赛车等。
在另一个实施例中,基于网络的游戏系统100可以容纳在共同的游戏会话中参与同一游戏客户端应用的许多游戏参与者。例如,游戏参与者可以在游戏会话中的球类游戏或钓鱼游戏中彼此对抗。游戏参与者的参与还可以描述为在同一游戏室内参与。在多参与者游戏会话中,游戏引擎应用300可以广播对于在同一游戏室内的许多计算机设备106、107上运行的许多游戏客户端应用200的更新。
游戏引擎应用300可以将在同一游戏室内的参与者建立为对等者。通过向同一游戏室内其他对等者的游戏客户端应用广播参与者的动作或在该参与者的游戏客户端应用上的事件,游戏引擎应用300可以实时地进行点对点通信。游戏室内的每个游戏客户端应用200可以构造消息,并请求游戏引擎应用300将该消息转发给同一游戏室内的另一个对等者或所有对等者。
GSI程序400可以响应来自在计算机设备106和107上运行的游戏客户端应用200的请求。GSI程序400通常应答问题,但不发起对游戏客户端应用200的请求。当参与者进入游戏网站或当参与者开始游戏会话时,游戏客户端应用200请求来自GSI程序400的认证。GSI程序400为登陆的用户创建新的会话ID。GSI程序400验证用户ID和会话ID,并返回确认消息以认证该游戏会话。GSI程序400的响应通常不需要是持续的。例如,它们不必须通过SOCKET连接来通信。该灵活性允许GSL程序400应答更多呼叫,并使得基于网络的游戏系统100能够同时处理大量游戏客户端应用和游戏参与者。
游戏客户端应用200询问GSI程序400对于给定的游戏加入哪一个游戏室。GSI程序400检查从游戏引擎应用300所接收的信息,以查看是否为该游戏创建了游戏室。如果该游戏室存在,则游戏客户端应用200进入它。如果该游戏室不存在,则游戏客户端应用200请求游戏引擎应用300创建一个游戏室。游戏引擎应用300创建游戏室并将信息传递给GSI程序400用于验证。GSI程序400进行确认并向游戏引擎应用300返回一个包括新游戏室ID的验证消息,而游戏引擎应用300又将该验证信息返回给游戏客户端应用200。游戏客户端应用进入新游戏室。在该通信顺序下,GSI程序400不发起请求。其仅确认其接收的请求中的信息。
在游戏引擎应用300创建游戏室之后,其将关于该游戏室的信息写回GSI程序400中,并等待GSI程序400确认该游戏室没问题。在从GSI程序400接收确认之后,游戏引擎应用300允许游戏客户端应用进入新游戏室。
然后,游戏客户端应用200请求加载游戏。例如,在web浏览器的请求下,由插件加载SWF文件。SWF由Flash插件执行。SWF中的指令命令其连接到GSI程序400。SWF中的指令还指示其显示游戏环境和运行游戏互动。
GSI程序400将加载游戏所需的变量和用于保存游戏结果的信息返回到游戏客户端应用200。在游戏会话期间,游戏客户端应用200可以请求保存游戏结果。GSI程序400确认待保存的数据,并返回该保存是否成功。GSI程序400还收集关于同一游戏室内的所有参与者的信息,并将该信息广播给该游戏室。通常,GSI程序400可以响应游戏客户端应用200的上百个不同类型的呼叫。GSI程序400通常可以在0.001-0.1毫秒的范围内与游戏客户端应用200通信,取决于网络延迟和处理时间。对于GSI程序400的性能优先考虑的是其能够响应所有请求,但不一定实时。
GSI程序400控制在游戏引擎应用300所驻留的多个游戏服务器141-143之间的游戏室内的参与者的负载平衡以及分布。GSI程序400验证用于给定游戏的游戏室没有无意中重复。在游戏会话期间,游戏客户端应用200利用诸如游戏统计资料和游戏配置的游戏状态信息来更新GSI程序400。例如,游戏统计资料可以包括游戏参与者的游戏分数、参与者所积累的财富和金钱、所参与的游戏的数目等。游戏配置可以包括游戏装备、游戏位置、最喜爱的游戏等。
还可以将令牌和确认密钥从游戏引擎应用300传递到游戏客户端应用200,以确保按正确顺序出现不同的动作,并且不被游戏客户端应用200欺骗。可以要求游戏客户端应用200返回与其他变量相结合的令牌和密钥,以确保不危害游戏的完整性。
GSI程序400将游戏状态信息发送到数据库150和存储区域网络,以将游戏状态信息存储到用户帐户,使得用户即使在特定的游戏会话结束之后也可以保存他或她的记录。
本发明的优点是允许在同一游戏室内或不同的游戏室内扩展到大量游戏参与者。对游戏客户端应用的通信可以划分为持续的实时通信和有效的但非持续的通信。实时通信的信息量被最小化。通过游戏系统接口(GSI)程序的灵活层处理非持续的通信,其允许基于网络的游戏系统处理日益增长的数目和种类的游戏客户端应用。
GSI程序400还可以响应来自游戏引擎应用300的请求,如图5中所示。GSI程序400向游戏引擎应用300提供所请求的信息,但是GSI程序400不向游戏引擎应用300发起消息。游戏引擎应用300将所有参与者和已创建的游戏室通知给GSI程序400。游戏引擎应用300还向GSI程序400发送用户ID、会话ID、游戏室ID用于确认。GSI程序400响应游戏引擎应用300来确认游戏室、游戏会话和用户ID。游戏引擎应用300可以在其自身的本地回送IP地址上与GSI程序400进行通信(由于GSI程序400可以安装和运行在与游戏引擎应用300相同的计算机上),消除了游戏引擎应用300和GSI程序400之间的网络延迟。
图6示出能够在多个通信协议下以序列化消息进行通信的游戏体系结构的系统图。多个游戏客户端应用611-613可以在多个计算机设备106和107上运行,以支持多个游戏参与者参与到相同或不同的游戏室内。每个计算机设备106和107可以容纳多个游戏客户端应用611-613。游戏客户端应用611-613可以在持续整个游戏会话的通信路径中与一个或多个游戏引擎应用621-623进行通信。响应是实时的且没有网络延迟,但是所通信的信息对每个游戏会话是特定的,并且不要求在游戏会话结束后存储。游戏引擎应用621-623可以以由诸如PHP(超文本预处理器)、XML、AMF、XML-RPC(远程过程呼叫)等的序列化通信协议所定义的不同语言进行通信。
游戏客户端应用611-613还可以在有效的通信路径中与游戏系统接口(GSI)程序630进行通信。GSI游戏630旨在提供一种逻辑结构,用于将游戏客户端应用611-613连接到基于网络的游戏系统100中的一个或多个服务器上的应用逻辑。GSI程序630可以响应来自游戏客户端应用611-613和游戏引擎应用621-623的请求。每个请求/响应周期是一个独立的会话,不要求其持续整个游戏会话。此外,到GSI程序630的请求和来自GSI程序630的响应可以是异步通信。GSI程序630包括两个应用层GSI控制器640和GSI模型650。GSI控制器640可以访问游戏协议库660,其可以存储在连接在网络中的存储设备中。游戏协议库660中的示例表700在图7中示出。表700列出了多个游戏ID,诸如“钓鱼”、“足球”、“万圣节”、“寻宝”、“逃生”等。游戏引擎(GE1、GE2、GE3...)支持一个或多个游戏ID。对游戏引擎GE1、GE2、GE3...进行编码,以在可以使用多种因特网协议进行传输的诸如PHP、XML、AMF、XML-RPC和PHP之类的不同的序列化协议下进行通信,该多种因特网协议包括HTTP、SMTP和MIME。通信协议独立于计算机设备106和107上的或基于网络的游戏系统100中的服务器上的操作系统。通信协议可以独立于游戏逻辑、游戏室和游戏引擎应用。不同的游戏客户端应用611-613甚至可以使用许多不同的通信协议来同时进入同一游戏室。GSI程序630提供多个消息序列化协议,允许多个客户端类型通过GSI模型650与游戏引擎应用621-623、数据库670和存储设备671进行通信。
GSI程序630公布了通信协议列表,以提供消息传递的标准化方法。例如,通信协议可以将不同类型的数据的不同表示抽象为序列化的封装,其允许对在不同的计算机设备上使用的不同语言的数据的公共表示。重要地,这使得能够与驻留在计算机上的未知客户端应用进行通信,该未知客户端应用的编程语言对于GSI程序是未知的。
通信协议可以包括用于序列化或解序列化消息的加密规则和解密规则,如图7中所示。利用在不同协议下处理转换的库来构建游戏客户端应用611-613和游戏引擎应用621-623。例如,游戏客户端应用611-613和游戏引擎应用621-623可以将序列化的分组解码为其自身的内部语言,以理解包含在序列化的封装中的数据。类似地,可以在发送到GSI程序630之前,使用这些原本存储的协议对到GSI程序630的请求消息进行加密。游戏客户端应用611-613和游戏引擎应用621-623使用通信协议来调用到GSI程序630的请求,并解译来自GSI程序630的应答消息。
GSI程序630为来自所有游戏客户端应用611-613的请求提供单个进入点。该体系结构允许游戏客户端应用611-613捆绑同一HTTP请求(即,boxcar方法)中的多个异步请求。此外,不同通信协议中的请求可以捆绑在同一HTTP消息中。之后,GSI程序可以在一个捆绑的HTTP响应中响应该捆绑的HTTP请求。boxcar方法允许以较低传输障碍进行有效的信息传输。对比地,如果想要通过不同的进入点来接收该请求,则包括用于游戏客户端应用的多个进入点的游戏体系结构不能允许捆绑不同的请求。
GSI程序630将消息序列化与应用逻辑分离。消息序列化和解序列化由GSI控制器640处理,而应用逻辑由GSI模型650处理。使用包括两个应用层(GSI控制器640和一个或多个GSI模型650)的混合MVC(模型-视图-控制器)体系结构来构建GSI程序630。GSI控制器640是单个网关,负责控制请求并将请求路由到特定的GSI模型650,并然后将响应返回到游戏客户端应用611-613。每个GSI模型包含用于每个特定方法呼叫的应用逻辑。GSI模型650接受参数并返回响应。GSI模型解译由游戏客户端应用611-613或游戏引擎应用621-623所发送的解序列化消息,并使用与初始请求相同的协议对来自模型的响应进行序列化。视图将由客户端应用所发送的消息进行解序列化,并且然后使用与初始请求相同的协议对来自模型的响应进行序列化。总之,GSI控制器640控制呼叫哪个应用逻辑。GSI模型650容纳该应用逻辑。视图将由GSI模型650所提供的信息格式化。
包括GSI程序630的体系结构包括一个或多个优点。GSI程序630允许轻量级客户端到服务器侧的应用逻辑。GSI程序630允许不使用相同的编程语言(诸如Java、Flash ActionScript和PHP)的两个不同服务器的连接。序列化协议使得表示根据各个服务器而不同的数据结构是可能的。对于服务器将使用的接收消息中的数据,必须解序列化该消息,并且将其转换为其自身语言,使得可以处理数据。序列化协议提供数据的只读表示。一旦数据解序列化,则由本机语言方法处理,直到需要返回数据为止。然后进行再序列化并发送。客户端应用可以以不同的消息序列化协议与基于网络的系统100中的服务器进行通信。此外,可访问GSI模型650的应用逻辑可以分解为一系列用于特定信息的离散请求,并且每个方法调用应答一个特定问题。
图8A和图8B示出用于游戏系统接口应用与游戏客户端应用或游戏引擎之间的通信的示例性流程图。游戏客户端应用200、611-613向URL或其他通信层提交请求,由web服务器121-124所接收。在步骤810中,web服务器121-124示例说明(instantiate)GSI控制器640处理请求。在步骤820中,GSI控制器640评估该请求,并确定将使用哪个通信协议。可以在请求消息中的报头中指示通信协议,或在由URL定义的存储位置处存储通信协议。然后GSI控制器640示例说明来自游戏协议库660的视图对象。视图对象可以包括针对该协议的解密和加密规则。GSI控制器640请求视图对象解序列化该请求。在步骤830中,视图对象将该请求解序列化,并将该请求以标准化格式返回给GSI控制器640。在步骤850中,GSI控制器640评估请求。GSI控制器640示例说明GSI模型650处理请求的不同部分。在步骤860中,GSI模型650接受由GSI控制器640所传递的参数,并返回响应。GSI控制器640获取这些操作的结果并将它们传递到视图对象。在步骤870中,视图对象将响应序列化。GSI控制器640将序列化的响应返回到游戏客户端应用200、611-613。GSI程序630关闭请求。来自游戏客户端应用200、611-613的消息常常包括需要存储在参与者的帐户中的游戏状态信息,以允许在游戏会话结束之后这些信息是可用的。游戏状态信息可以包括游戏参与者的游戏分数、参与者所积累的财富和金钱、游戏装备和游戏位置。在步骤880中示例说明DAO(数据访问对象)。在步骤890中,示例说明数据库查询(例如SQL查询),以更新数据库150、670。在步骤895中,将请求中的游戏状态信息写入存储设备671中。在游戏引擎应用300、621-623和GSI程序400、650之间的请求/响应通信周期可以以如上所述的类似方式进行。
尽管已在所附附图中图解并在前面的详细描述中描述了本发明的特定实施例,但可以理解,本发明不限于这里所描述的特别的实施例,而是能够在不偏离本发明的范围的情况下,进行大量的重新配置、修改和替换。以下权利要求书旨在包括多种这样的修改。
权利要求
1.一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中所述游戏客户端应用中的至少两个加入同一游戏室内;连接到所述计算机网络的第一服务器,配置为存储能够与多个游戏客户端应用进行通信的游戏引擎应用;连接到所述计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的协议;以及连接到所述计算机网络的第二服务器,配置为存储游戏系统接口(GSI)程序,所述GSI程序可以接收来自所述多个游戏客户端应用的多个第一加密消息,并使用存储在所述计算机存储设备上的协议对所述第一加密消息进行解密。
2.根据权利要求1所述的基于网络的游戏系统,其中所述第一服务器配置为存储能够在持续的网络连接中与所述多个游戏客户端应用进行通信的游戏引擎应用。
3.根据权利要求1所述的基于网络的游戏系统,其中所述计算机存储设备配置为存储用于消息加密和消息解密的多个协议,并且所述游戏系统接口(GSI)程序可以使用所述多个协议中的一个或多个来对所述第一加密消息进行解密。
4.根据权利要求1所述的基于网络的游戏系统,其中所述游戏引擎应用配置为向同一游戏室内的所述多个客户端应用进行广播。
5.根据权利要求1所述的基于网络的游戏系统,其中所述游戏引擎应用配置为接收来自所述游戏客户端应用的请求,并即时响应所述请求。
6.根据权利要求1所述的基于网络的游戏系统,其中所述第一加密消息包括游戏状态信息,所述游戏状态信息包括与所述游戏客户端应用中的至少一个相关联的游戏统计资料和游戏配置中的一个或多个。
7.根据权利要求1所述的基于网络的游戏系统,其中所述第一加密消息中的至少一个包括可以由所述协议进行序列化的序列化消息。
8.根据权利要求1所述的基于网络的游戏系统,其中所述第一加密消息包括与所述游戏客户端应用相关联的用户识别、会话识别和游戏室信息中的一个或多个。
9.根据权利要求1所述的基于网络的游戏系统,还包括连接到所述计算机网络的数据存储设备,配置为从所述GSI程序接收与所述第一加密消息相关联的信息,并存储与所述第一加密消息相关联的所述信息。
10.根据权利要求1所述的基于网络的游戏系统,其中所述GSI程序配置为接收所述第一加密消息中的来自所述游戏客户端应用的请求,并通过向所述游戏客户端应用发送第二加密消息来响应所述请求。
11.根据权利要求10所述的基于网络的游戏系统,其中使用存储在所述计算机存储设备上的所述多个协议中的一个或多个对所述第二加密消息进行加密。
12.根据权利要求10所述的基于网络的游戏系统,其中所述第一加密消息包括认证信息,并且所述第二加密消息包括确认信息。
13.根据权利要求1所述的基于网络的游戏系统,其中所述GSI程序包括GSI控制器,配置为使用存储在所述计算机存储设备上的所述协议中的一个或多个对所述第一加密消息进行解密并对响应消息进行加密。
14.根据权利要求13所述的基于网络的游戏系统,其中所述GSI程序包括GSI模型,其存储游戏应用逻辑并配置为根据所述应用逻辑来形成所述响应消息。
15.根据权利要求1所述的基于网络的游戏系统,其中所述游戏客户端应用由安装在所述计算机设备上的web浏览器的插件来执行。
16.根据权利要求1所述的基于网络的游戏系统,其中所述GSI程序配置为在非持续的网络连接中与所述游戏客户端应用进行通信。
17.一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中所述游戏客户端应用中的至少两个加入同一游戏室内;连接到所述计算机网络的第一服务器,配置为存储游戏引擎应用,其可以a)在接收来自所述游戏客户端应用的请求之后,即时响应于所述游戏客户端应用,以及b)向所述游戏客户端应用发送请求,并且即时接收来自所述游戏客户端应用的响应;连接到所述计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到所述计算机网络的第二服务器,配置为存储游戏系统接口(GSI)程序,所述GSI程序可以接收来自所述多个游戏客户端应用的多个第一加密消息,并使用所述多个协议中的一个或多个对所述第一加密消息进行解密。
18.根据权利要求17所述的基于网络的游戏系统,其中所述游戏引擎应用配置为向同一游戏室内的所述多个客户端应用进行广播。
19.根据权利要求17所述的基于网络的游戏系统,其中所述第一加密消息包括游戏状态信息,所述游戏状态信息包括与所述游戏客户端应用中的至少一个相关联的游戏统计资料和游戏配置中的一个或多个。
20.一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中所述游戏客户端应用中的至少两个加入同一游戏室内;连接到所述计算机网络的第一服务器,配置为存储游戏引擎应用,其可以a)在接收来自所述游戏客户端应用的请求之后,即时响应于所述游戏客户端应用,以及b)向所述游戏客户端应用发送请求,并且即时接收来自所述游戏客户端应用的响应;连接到所述计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到所述计算机网络的第二服务器,配置为存储游戏系统接口(GSI)控制器和GSI模型,其中所述GSI控制器可以接收来自所述多个游戏客户端应用的多个第一加密消息,使用存储在所述计算机存储设备上的所述协议中的一个或多个对所述第一加密消息进行解密,并对待发送给所述游戏客户端应用的第二加密消息进行加密,以及所述GSI模型可以存储游戏应用逻辑,并根据所述应用逻辑来形成所述第二加密消息中待加密的响应消息。
21.一种基于网络的游戏系统,包括计算机网络;连接到所述计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到所述计算机网络的第一服务器,配置为存储游戏系统接口(GSI)程序,所述GSI程序配置为接收来自在与所述计算机网络进行通信的计算机设备上运行的游戏客户端应用的第一加密消息,并使用所述多个协议中的一个或多个对所述第一加密消息进行解密。
22.根据权利要求21所述的基于网络的游戏系统,其中所述第一加密消息包括序列化消息,并且所述协议中的至少一个包括用于对消息进行序列化和对序列化的消息进行解序列化的规则。
23.根据权利要求21所述的基于网络的游戏系统,其中所述第一加密消息捆绑从所述游戏客户端应用到所述GSI程序的多个请求。
24.根据权利要求23所述的基于网络的游戏系统,其中使用不同的协议对所述第一加密消息中捆绑的至少两个请求进行加密。
25.根据权利要求21所述的基于网络的游戏系统,其中所述第一加密消息包括与在所述计算机设备上运行的游戏客户端应用相关联的用户识别、会话识别和游戏室信息中的一个或多个。
26.根据权利要求21所述的基于网络的游戏系统,其中所述第一加密消息包括游戏状态信息,所述游戏状态信息包括与在所述计算机设备上运行的游戏客户端应用相关联的游戏统计资料和游戏配置中的一个或多个。
27.根据权利要求21所述的基于网络的游戏系统,还包括连接到所述计算机网络的数据存储设备,配置为从所述GSI程序接收与所述第一加密消息相关联的信息,并存储与所述第一加密消息相关联的所述信息。
28.根据权利要求21所述的基于网络的游戏系统,其中所述GSI程序配置为接收所述第一加密消息中的来自所述游戏客户端应用的请求,并通过向所述游戏客户端应用发送第二加密消息来响应所述请求。
29.根据权利要求28所述的基于网络的游戏系统,其中使用存储在所述计算机存储设备上的多个协议中的一个或多个,对所述第二加密消息进行加密。
30.根据权利要求28所述的基于网络的游戏系统,其中所述第一加密消息包括认证信息,并且所述第二加密消息包括验证信息。
31.根据权利要求21所述的基于网络的游戏系统,其中所述GSI程序包括GSI控制器,配置为使用存储在所述计算机存储设备上的所述协议中的一个或多个对所述第一加密消息进行解密和对响应消息进行加密。
32.根据权利要求31所述的基于网络的游戏系统,其中所述GSI程序包括GSI模型,所述GSI模型包括预存储的应用逻辑,其中所述GSI模型配置为根据应用逻辑形成所述响应消息。
33.根据权利要求21所述的基于网络的游戏系统,其中所述游戏客户端应用由安装在所述计算机设备上的web浏览器的插件执行。
34.根据权利要求33所述的基于网络的游戏系统,其中所述游戏客户端应用配置为独立于所述web浏览器的类型而显示矢量图形动画。
35.一种基于网络的游戏系统,包括计算机网络,配置为与多个计算机设备进行通信,每个所述计算机设备运行一个或多个游戏客户端应用;连接到所述计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的多个协议;以及连接到所述计算机网络的第一服务器,配置为存储游戏系统接口(GSI)程序,所述GSI程序配置为接收来自在所述计算机设备上运行的所述游戏客户端应用的多个第一加密消息,并使用所述多个协议中的一个或多个对所述第一加密消息进行解密。
36.根据权利要求35所述的基于网络的游戏系统,其中由所述游戏客户端应用使用所述多个协议对所述第一加密消息进行加密。
37.根据权利要求35所述的基于网络的游戏系统,其中所述协议中的至少一个包括用于对所述第一加密消息进行解序列化的规则。
38.根据权利要求35所述的基于网络的游戏系统,其中所述第一加密消息中的至少一个捆绑从所述游戏客户端应用之一到所述GSI程序的多个请求。
39.一种在计算机网络上提供游戏的方法,包括通过计算机网络,从在计算机设备上运行的游戏客户端应用接收第一加密消息中的请求;由存储在第一服务器上的游戏系统接口(GSI)控制器,使用存储在存储设备上的一个或多个协议,对所述第一加密消息进行解密,其中所述第一服务器和所述存储设备连接到所述计算机网络;根据由游戏系统接口(GSI)模型可访问的游戏应用逻辑,由所述GSI模型形成响应消息;由所述GSI控制器使用与所述第一加密消息相同的协议,对所述响应消息进行加密,以产生第二加密消息;以及由所述GSI控制器将所述第二加密消息发送给所述游戏客户端应用。
40.根据权利要求39所述的方法,还包括从在计算机设备上运行的多个游戏客户端应用接收多个第一加密消息中的请求;由存储在第一服务器上的游戏系统接口(GSI)控制器,使用存储在存储设备上的多个协议,对所述第一加密消息进行解密,其中所述计算机设备、所述第一服务器和所述存储设备连接到所述计算机网络;根据由游戏系统接口(GSI)模型可访问的游戏应用逻辑,由所述GSI模型形成对所述请求的响应消息;由所述GSI控制器使用与对所述第一加密消息中的相应请求进行加密的协议相对应的协议,对所述响应消息进行加密,以产生多个第二加密消息;以及由所述GSI控制器将所述第二加密消息发送给所述游戏客户端应用。
全文摘要
一种基于网络的游戏系统,包括计算机网络,配置为与在多个计算机设备上运行的游戏客户端应用进行通信,其中游戏客户端应用中的至少两个加入同一游戏室内;连接到计算机网络的第一服务器,配置为存储能够与多个游戏客户端应用进行通信的游戏引擎应用;连接到计算机网络的计算机存储设备,配置为存储用于消息加密和消息解密的协议;以及连接到计算机网络的第二服务器,配置为存储游戏系统接口(GSI)程序,其可以从多个游戏客户端应用接收多个第一加密消息,并使用存储在计算机存储设备上的协议对该第一加密消息进行解密。
文档编号H04L29/08GK1949778SQ200610132259
公开日2007年4月18日 申请日期2006年10月13日 优先权日2005年10月14日
发明者德里克·刘, 约翰·洛赫埃 申请人:吉亚互动公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1