CN102067102A - 通过对等网络实现已安装的游戏软件的共享 - Google Patents
通过对等网络实现已安装的游戏软件的共享 Download PDFInfo
- Publication number
- CN102067102A CN102067102A CN2009801210714A CN200980121071A CN102067102A CN 102067102 A CN102067102 A CN 102067102A CN 2009801210714 A CN2009801210714 A CN 2009801210714A CN 200980121071 A CN200980121071 A CN 200980121071A CN 102067102 A CN102067102 A CN 102067102A
- Authority
- CN
- China
- Prior art keywords
- version
- game package
- group member
- game
- group
- 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.)
- Pending
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A63F13/10—
-
- A63F13/12—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/34—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using peer-to-peer connections
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/45—Controlling the progress of the video game
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/552—Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Child & Adolescent Psychology (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
对存储在第一位置的游戏软件的运行版本进行升级,包括:使得第一群组成员在该第一位置存储具有第一游戏包的第一版本;保留具有第二包的第二游戏版本,第二包的一些在所述第一包里缺失;从所述第一群组成员接收针对第二版本的升级请求;识别缺失的包;以及将指向其他群组成员的信息提供给所述第一群组成员,每个其他群组成员在第二位置对缺失的游戏包进行驻存,其中该第二位置用于存储该游戏的运行版本;使得所述第一群组成员从该第二位置取回缺失的包并将它们存储在第一位置的至少一部分中,因此而在升级期间避免额外存储的耗用。
Description
技术领域
本发明涉及游戏软件,特别是涉及游戏软件的升级。
背景技术
已知的游戏软件的升级方法包括将安装器与相关的新的游戏软件包(piece)一起从供给群组成员(donor swarm member)传送到接收群组成员(recipient swarm member)。这就需要在供给群组成员处将安装器的副本与所需的游戏包一起保留。结果是,在供给群组成员处必须分派存储空间。
同时,跟随着该升级过程,该安装器留在该接收群组成员处。结果是,在该接收群组成员处会耗用不必要的空间。
已知的安装方法是与具体的版本匹配的。典型的安装器一般会将接收群组成员从版本n升级为版本n+1。如果人们希望从版本n升级到版本n+m,通常需要进行m次单独的安装。这也使得升级的分发变得更为复杂。
发明内容
在本发明的一个方面中,给出一种由计算机实施的方法,用于对存储在第一存储位置处的游戏软件的运行(run-time)版本进行升级。该方法包括以下步骤:使得第一群组成员在该第一存储位置存储该游戏软件的第一版本,该第一版本具有第一组多个游戏包;保留(maintain)该游戏软件的第二版本,该第二版本具有第二组多个游戏包,其中至少一个游戏包在所述第一组多个游戏包里缺失;从所述第一群组成员接收升级到该游戏软件的第二版本的请求,该请求识别该第一版本;基于该第一版本的身份,识别缺失的游戏包的集合,该集合包括从该第一版本升级到该第二版本所需的游戏包;以及将指向(leading to)其他群组成员的子集的信息提供给所述第一群组成员,该子集中的每个其他群组成员在第二存储位置对至少一个缺失的游戏包进行驻存(host),其中该第二存储位置用于存储该游戏软件的运行版本。结果是,第一群组成员得到这样的能力:识别属于该子集的其他群组成员,并从彼处请求缺失的游戏包。该方法还包括以下步骤:使得所述第一群组成员从该第二存储位置取回(retrieve)缺失的游戏包并将它们存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本,因此而在该游戏软件的升级期间避免额外存储的耗用。在提及游戏软件时使用的术语“第一”和“第二”用来标识游戏软件的不同版本(尽管不一定是连续的)。
在某些实践中,所取回的缺失的游戏包包括针对介于该运行游戏软件的该第一版本和该第二版本之间的版本的游戏包。
本升级方法的其他实践包括:从一个或多个其他群组成员接收识别对该游戏软件的版本进行驻存的该群组成员的消息;以及生成由该一个或多个其他群组成员驻存的该游戏版本的列表。这些实践包括的升级方法还包括:将包括在所述第一群组成员的升级请求中的该第二版本与包含由所述其他群组成员驻存的该游戏版本的列表进行比较;以及基于该比较,识别对该第二版本中包括的至少一个游戏包进行驻存的其他群组成员的子集。
本方法的其他实践包括:从所述第一群组成员接收收到缺失游戏包的消息,其中该消息包括该游戏软件的与所述游戏包相关的版本,以及使得所述第一群组成员与其他群组成员直接从所述第一群组成员的第一存储位置分享取回的游戏包。
在本方法的附加实践中,包括这样的内容:于现场(in-place)升级中在群组成员间传送一个或多个游戏包,其中在传送中所述游戏包的状态和传送后由该游戏软件使用的该包的状态是相同的。
在可选的实践中,使得所述第一群组成员在该第一存储位置的至少一部分中存储缺失的游戏包的步骤还包括:使得所述第一群组成员在这样的位置存储缺失的游戏包,在玩游戏期间将从该位置访问缺失的游戏包。
本方法的其他实践包括:使得所述第一群组成员取回缺失的游戏包的步骤包括:使得所述第一群组成员建立与所述一个或多个其他群组成员的连接;以及当所述第一群组成员和所连接的其他群组成员已经取回所有缺失的游戏包时,使得所述第一群组成员中断该连接。
本方法的其他实践包括:所述缺失的游戏包包括一个或多个不存在于该游戏软件的第一版本中的游戏包,以及所述缺失的游戏包包括一个或多个针对所述第一组多个游戏包的替代游戏包。
另外的实践包括:该第一版本是刚好处在该第二版本之前的版本,以及在该第一版本与第二版本之间至少存在第三版本。
本升级方法的其他实践包括:给所述第一群组成员提供指向识别一个或多个机器的信息,该(些)机器在第三存储位置驻存有至少一个缺失的游戏包,其中该第三存储位置用于存储该游戏软件的运行版本;所述第一群组成员因此而得到从上述机器处请求缺失的游戏包的能力;以及使得所述第一群组成员从该第三存储位置取回所述缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本。
在另一个方面中,本发明给出一种其上编码有用于对游戏软件的运行版本进行升级的软件的计算机可读介质,该游戏软件被存储在第一位置。该软件包括使得计算机执行以下步骤的指令:使得第一群组成员在该第一存储位置存储该游戏软件的第一版本,该第一版本具有第一组多个游戏包;保留该游戏软件的第二版本,该第二版本具有第二组多个游戏包,至少一个游戏包在所述第一组多个游戏包里缺失;从所述第一群组成员接收升级到该游戏软件的第二版本的请求,该请求识别该第一版本;基于该第一版本的身份,识别缺失的游戏包的集合,该集合包括从该第一版本升级到该第二版本所需的游戏包;以及将指向其他群组成员的子集的信息提供给所述第一群组成员,该子集中的每个其他群组成员在第二存储位置对至少一个缺失的游戏包进行驻存,其中该第二存储位置用于存储该游戏软件的运行版本;第一群组成员因此而得到这样的能力:识别属于该子集的其他群组成员,并从彼处请求缺失的游戏包;使得所述第一群组成员从该第二存储位置取回缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本,因此而在该游戏软件的升级期间避免额外存储的耗用。
其他实施例将使得计算机执行以下步骤的指令在计算机可读介质上编码:从一个或多个其他群组成员接收识别对该游戏软件的版本进行驻存的该群组成员的消息;以及生成由该一个或多个群组成员驻存的该游戏版本的列表。
这些实施例包括的计算机可读介质还包括使得计算机执行以下步骤的指令:将包括在所述第一群组成员的升级请求中的该第二版本与包含由所述其他群组成员驻存的该游戏版本的列表进行比较;以及基于该比较,识别对该第二版本中包括的至少一个游戏包进行驻存的其他群组成员的子集。
本发明的计算机可读介质的其他实施例将使得计算机执行以下步骤的指令在其上编码:从所述第一群组成员接收收到缺失游戏包的消息,其中该消息包括该游戏软件的与该游戏包相关的版本;以及包括使得计算机执行以下步骤的指令:使得所述第一群组成员与其他群组成员直接从所述第一群组成员的第一存储位置分享取回的游戏包。
在附加的实施例中,还包括使得计算机执行以下步骤的指令:于现场升级中在群组成员间传送一个或多个游戏包,其中在传送中所述游戏包的状态和传送后由该游戏软件使用的该包的状态是相同的。
在可选的实施例中,使得计算机进行使得所述第一群组成员在该第一存储位置的至少一部分中存储所述缺失的游戏包的指令还包括使得计算机执行以下步骤的指令:使得所述第一群组成员在这样的位置存储所述缺失的游戏包,在玩游戏期间将从该位置访问所述缺失的游戏包。
本发明的计算机可读介质的其他实施例还包括这样的指令:使得所述第一群组成员建立与所述一个或多个其他群组成员的连接;以及当所述第一群组成员和所连接的其他群组成员已经取回所有缺失的游戏包时,使得所述第一群组成员中断该连接。
本发明的计算机可读介质的其他实施例包括:其中所述缺失的游戏包包括一个或多个不存在于该游戏软件的第一版本中的游戏包,以及其中所述缺失的游戏包包括一个或多个针对所述第一组多个游戏包的替代游戏包。
其他实施例包括:其中该第一版本是刚好处在该第二版本之前的版本,以及其中在该第一版本与第二版本之间至少存在第三版本。
本发明的计算机可读介质的其他实施例将使得计算机执行以下步骤的指令在其上编码:给所述第一群组成员提供指向识别一个或多个机器的消息,该(些)机器在第三存储位置驻存有至少一个缺失的游戏包,其中该第三存储位置用于存储该游戏软件的运行版本;所述第一群组成员因此而得到从上述机器处请求缺失的游戏包的能力;以及使得所述第一群组成员从该第三存储位置取回所述缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一位置用于存储该游戏软件的第一版本。
在另一个方面中,响应于来自所述第一群组成员的升级到第二版本的请求,所述第一群组成员从一个或多个其他群组成员接收对驻存有该游戏软件的版本的该群组成员进行识别的消息,并生成由该一个或多个其他群组成员驻存的该游戏版本的列表。将包括在所述第一群组成员的升级请求中的该第二版本与包含由所述其他群组成员驻存的该游戏版本的列表进行比较。基于该比较,识别对至少一个该第二版本中包括的游戏包进行驻存的其他群组成员的子集。
在另一个方面中,由所述第一群组成员取回的缺失的游戏包包括针对介于该运行游戏软件的该第一版本和该第二版本之间的版本的升级。取回的缺失的游戏包还可与该游戏软件的最近版本相关。当所述第一群组成员接收到缺失的游戏包时,所述第一群组成员发送这样的消息,此消息包括与该游戏包相关的该游戏软件的版本。
在另一个方面中,所述第一群组成员与其他群组成员直接从所述第一群组成员的第一存储位置分享取回的游戏包。于现场升级中在群组成员间传送一个或多个游戏包,其中在传送中所述游戏包的状态和传送后由该游戏软件使用的该包的状态是相同的。
在另一个方面中,所述第一群组成员在这样的位置存储缺失的游戏包,在玩游戏期间将从该位置访问缺失的游戏包。所述第一群组成员还建立与所述一个或多个其他群组成员的连接;以及当所述第一群组成员和其连接的其他群组成员已经取回所有缺失的游戏包时,中断该连接。
在另一个方面中,所述缺失的游戏包包括一个或多个不存在于该游戏软件的第一版本中的游戏包。所述缺失的游戏包还可包括一个或多个针对所述第一组多个游戏包的替代游戏包。该第一版本是刚好处在该第二版本之前的版本。在该第一版本与第二版本之间至少存在第三版本。
在另一个方面中,向所述第一群组成员提供指向识别一个或多个机器的消息,该(些)机器在第三存储位置驻存有至少一个缺失的游戏包,其中该第三存储位置用于存储该游戏软件的运行版本,并且所述第一群组成员得到从上述机器处请求缺失的游戏包的能力,以及从该第三存储位置取回所述缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本。
在下文中结合附图对本发明的一个或多个实施例进行具体描述,根据所述描述、附图和权利要求,本发明的其他特征和优点将变得显而易见。
附图说明
图1是游戏升级过程的方框图;
图2是在客户机和服务器之间进行通信的示意图;
图3是活跃客户机表的实例;
图4-图5是在客户机和服务器之间进行通信的示意图;
图6是在客户机和服务器之间进行通信的示意图;
图7是在客户机之间进行通信的示意图;
图8是在群组和服务器之间进行通信的示意图;
图9是在种子(seeder)和客户机之间互动的流程图;
图10是在种子和客户机之间互动的流程图;并且
各图中相同的附图标记表示相同的元件。
具体实施方式
在游戏环境中,游戏供应商通过分发过程(称为游戏升级过程)来给其客户机分发游戏软件的运行版本的游戏升级。游戏软件的运行版本包括在玩游戏期间使用的软件版本。因为是在玩游戏期间用到此软件,游戏的执行依赖于客户机对游戏软件的运行版本的驻存。在图1所示的具体实施例中,游戏升级过程100使用游戏供应商驻存的许多服务器和许多玩游戏的客户机来对升级客户机上的游戏软件进行升级。
参阅图1,客户机102通过与状态服务器104通信得知升级的可获性(availability)。客户机102(现在称为“升级”客户机)从元数据源106(例如元数据HTTP源或其他类型的元数据源)接收与游戏升级有关的元数据。升级客户机102使用所获得的元数据与追踪器(tracker)108接触,以识别具有一个或多个完成升级所需的游戏包的其他客户机(称为对等点(peer)110)。这里所用到的“游戏包”包括图像数据、动画短片(clips)、音效文件、可执行文件和补丁。
升级客户机102与这些对等点建立连接,以收集必要的包。所述包被传送到客户机102,并且在不安装所述包的情形下将其直接应用至客户机的其他包或游戏文件。所传送的包包含针对此包的所有累积升级。结果是,并非以重复的方式进行包的升级。
在某些实例中,因为游戏在其运行期间使用所有升级包,所以对等点包含升级中所包括的所有包。因此,对等点有可能得以传送所有完成升级所需的包并能够将这些包直接传送至客户机102。如果对等点加在一起都不能提供所有必需的包,升级客户机102接触种子112来请求任何缺失的包。该种子112将缺失的包直接发送至升级客户机102,或者将含有缺失的包的重定向(redirect)HTTP源114的HTTP位置发送至升级客户机102。
客户机向状态服务器的登记
根据游戏升级的可获性,游戏供应商116通过将升级邀请发送至客户机102而通报客户机102。在某些实施例中,游戏供应商使用状态服务器104来发送升级邀请。游戏供应商116能够在诸如计算机和便携式装置等多种类型的机器上实现。在某些实例中,游戏供应商与服务器104(未示出)集成在一起。
参阅图2,为了接收升级邀请,客户机102首先通过向状态服务器104发送启始消息(stratup message)120来向状态服务器104进行登记,启始消息120将客户机102能够接收升级邀请126的情形通知服务器104。
因为状态服务器104与多个客户机互动,每个客户机102都具有全局唯一识别码GUID。启始消息120包含客户机的全局唯一识别码(GUID),以此来允许客户机102向服务器104唯一地标识自己。在某些实例中,启始消息120包含诸如客户机互联网协议(IP)地址和监听端口等附加客户机信息。
参阅图3,为了对能够接收升级邀请126的客户机102进行追踪,服务器104保留有将每个活跃客户机与其GUID 132相关联的活跃客户机表130。当从客户机接收到启始消息120时,服务器104将客户机GUID添加至活跃客户机表130。在某些实施例中,附加信息被存储在该活跃客户机表130中。这些信息包括一个或多个客户机IP地址138、客户机监听端口134和与要接收的升级邀请126的类型相关的客户机偏好。在一个实例中,客户机102接收仅与其已驻存的游戏相关而不是与所有可用游戏相关的升级邀请126。在这些例子中,客户机的启始消息120包含有(且活跃客户机表130存储有)在客户机102上驻存的游戏表。
服务器104通过向客户机发送初始状态消息122来响应启始消息120。初始状态消息122包含内容供应商的数据的当前状态。客户机102使用初始状态消息122来验证服务器对启始消息120的接收。因此,在某些实例中,如果客户机102在特定时段内尚未接收到初始状态消息122,客户机102再次发送启始消息120(第二启始消息)。第二启始消息120触发服务器向客户机102发送附加初始状态消息122。
在登记之后,客户机102继续通过附加消息(称为心跳(heartbeat)消息124)而与服务器104通信,每个心跳消息124将客户机102仍与其连接且能够接收升级邀请126的情形通知服务器104。发送心跳消息124的客户机102保持为活跃客户机,且因此而留在活跃客户机表130上。针对活跃客户机表130上的每个活跃客户机,服务器可选地保留“接收上一个心跳消息的时间”140。
在某些实施例中,状态服务器104以预定时间间隔(称为心跳间隔)(例如每分钟或每2分钟)从其活跃客户机接收心跳消息124。在指定时间间隔内发送心跳消息124的客户机102会保持活跃性并留在活跃客户机表130上。未能这么做的客户机102则变得不活跃并从活跃客户机表130移出。例如,参阅图3,如果客户机102需要每分钟发送心跳消息124来保持活跃性,而具有GUID“3\5353”的客户机在上午2:16:45未能发送消息,由于其上一个心跳消息124是在一分钟之前于上午2:15:45发送的,因此将该客户机从活跃客户机表130移出。
状态服务器104通过监视内容供应商的数据变化来检测游戏升级的存在。当游戏升级可用时,服务器104针对其活跃客户机而发送升级邀请126。在某些实施例中,升级邀请126未能到达客户机102。为了确保客户机102接收到所有升级邀请126,每个升级邀请126都包括顺序编排的识别数码。客户机102在心跳消息124中将其已经顺序接收的最高的识别数码返给服务器104。服务器104将最近发送的升级邀请126的识别数码与最近接收到的心跳消息124中包含的识别数码进行比较。这两个识别数码之间的差异表示客户机102尚未接收到所有升级邀请126。在此情形下,服务器104再次发送在最后的心跳消息124之后发送过的所有升级邀请126,所述最后的心跳消息124由客户机102在其心跳消息124中确认。
例如,参阅图4,从服务器104接收到的第一邀请126a具有识别数码1(ID=1),第二邀请126b具有识别数码2(ID=2),而第三邀请126c具有识别数码3(ID=3)。在接收到第一邀请126a和第二邀请126b时,客户机102将携带识别数码1的第一心跳消息124a和携带识别数码2的第二心跳消息124b发送给服务器104。然而,第三邀请126c未能到达客户机102(如图4中的虚线所示)。因此客户机的第三心跳消息124c就具有识别数码2,其指示第二邀请126b是最后接收到的邀请。
第三心跳消息124c因此而将客户机102未能接收到第三邀请126c的情形告警服务器104。因此,服务器104再次发送第三邀请126c。当最后接收到第三邀请时,客户机发送含有识别数码3的第四心跳消息124d,因此表明客户机102已经成功地接收到第三邀请126c。
由于服务器104是向许多客户机发送升级邀请的,服务器能够向不同的客户机发送具有不同识别数码的升级邀请。在一个具体的实例中,一个客户机(“客户机A”)未能接收到具有识别数码3的升级邀请(126c),而另一个客户机(“客户机B”)接收到了该升级邀请126c。因此,当如图4所示服务器再次发送第三邀请126c给客户机A时,服务器将具有识别数码4的下一个顺序的升级邀请发送给客户机B。
客户机102忽略任何重复的邀请。为了允许再次传送,服务器将所述邀请保留一心跳间隔的持续时段。
游戏升级
每个游戏升级都用全局唯一识别码(GUID)加以识别,该GUID区别于与客户机关联的GUID。GUID与游戏升级的关联被称作GUID升级。升级邀请126中包含的GUID升级将新的游戏版本警示给客户机102。参阅图5,客户机102通过保留其所完成的升级GUID 150的记录来追踪其游戏的当前版本。如图5所示,具有GUID 12345(156)的升级C是最后完成的升级。
当接收到升级邀请126时,通过对客户机的最后完成的升级GUID与在升级邀请126中包含的升级GUID进行比较,客户机102确定其是否需要获得新的游戏升级。在一个实例中,客户机102已经完成了三个游戏升级。第一游戏升级是升级A,其具有的升级GUID(152)是123。第二升级是升级B,其具有的升级GUID(154)是1234。第三(也是最近完成的)游戏升级是升级C,其具有的升级GUID(156)是12345。当新的游戏升级(升级D)变为可用时,客户机102从状态服务器104接收标识升级D的升级GUID的升级邀请126。然后客户机102确定,为了升级D,必须获得用于升级D而新添加的游戏文件,并且该游戏文件不是由客户机102作为升级C的结果而得到的。在此实例中,存在于升级C和升级D之间的新的数据定义为“升级GUID级差”。
因为在某些例子中升级是彼此关联地建立的,为了得到最新的游戏版本,缺失先前的多次升级的客户机102需要将这些先前的升级与最近的升级一起安装。使用上述实例,如果客户机102仅完成了升级B,则客户机随后需要获得升级C和升级D这两者来彻底变成当前版本。在第二个实例中,升级GUID级差由存在于升级B和升级D之间的游戏数据包(即,其为部分的升级D而不是升级B)构成。
元数据HTTP源
如果客户机102确定需要游戏升级,其初始化与元数据HTTP源106的通信,该元数据HTTP源106包含用于变化的升级GUID级差的元数据。通过进行游戏升级,每次当数据升级可用时,元数据HTTP源106产生元数据。如图1所示,游戏供应商116将新的游戏升级通报给数据源106。
参阅图6,并且使用上述实例,元数据源生成将客户机102当前使用的升级A、升级B或升级C升级到当前的升级D所需要的元数据(164、166、168)。在某些实例中,元数据HTTP源106通过与元数据对应的升级GUID来识别元数据。例如,元数据(164)是123,123456,其表示将系统从升级GUID 123升级到当前的升级GUID 123456所需要的元数据。
在某些实例中,元数据包括状态数据的长度、在该状态数据中的第一游戏包的索引、由状态数据横跨(span)的游戏包的数目、每个数据包中的字节数、以及针对游戏包的哈希值串(concatenation)。
邀请126包含元数据HTTP源106的HTTP位置。客户机102和元数据HTTP源106通过请求消息160和响应消息162来通信。针对与期望的升级对应的元数据,客户机102向元数据HTTP源106发送请求160。具体而言,在一个实例中,请求消息160包括:最近完成的升级的升级GUID、以及所期望升级的升级GUID。
基于升级GUID级差,元数据HTTP源106发送响应消息162(其包含用于所期望升级的元数据),因此而向客户机102提供包的列表,客户机需要收集列表中的包才能完成所期望的升级。
在某些客户机102中,在客户机102内被称为“服务状态客户机”的组件接收和处理升级邀请。在此实施例中,区别于服务状态客户机被称为“升级客户机”的组件与元数据HTTP源106通信。升级客户机是客户机102上的软件模块。在某些实例中,升级客户机被分成两个模块:可执行主模块和传送库模块。当升级客户机正在运行时,可执行主模块运行。其仅包含能让内容供应商的服务器意识到其存在、从其对等点客户机接收连接、以及处理来自服务状态客户机的通报所需的最小编码。当升级GUID被传送至客户机时,上传传送库模块。当不需要数据传送时,在休止一段时间后,卸载这个库,以减小驻留内存占用(footprint)。在某些实例中,此休止时段是15分钟。为了维护用户的交互体验,升级客户机以低于正常水平的线程优先级(thread priority)来运行,允许任何前端(foreground)应用程序根据需要而运行。进而,升级客户机监控客户机网络接口卡(interface card)上的网络流量,并仅当流量很低或不存在时使用网络。
在某些实例中,为了确保返回至客户机的元数据的完整性能,使用公用/私用密钥机制来对元数据进行数字标记。在某些实施例中,将安全哈希运算(SHA1)用作哈希编码。
参阅图7,使用在元数据HTTP源的响应162中识别的元数据、客户机102a、102b建立完成期望的升级所需要的游戏包的列表。这个列表被称为“包列表”170a、170b。例如,包列表170a示出将客户机102a从GUID 1234升级至GUID 123456所需要的三个游戏包(包A、B和C)。类似地,包列表170b示出将客户机102b从GUID 1234升级至GUID 123456所需要的五个包(包A1、A2、A、B和C)。在某些实例中,客户机将元数据与其本地数据进行比较,以确定其是否已经具有任何在元数据(未示出)中已识别出的包。例如,如果客户机102开始过升级但未能完成,这就导致了部分升级,客户机102可能已经具有某些在元数据HTTP源的响应162中识别出的包。
追踪器
在某些实例中,升级客户机102是包括有其他客户机的群组(swarm)的成员,所有这些客户机都驻存有某些版本的游戏。在此情形下,升级客户机102从这些其他群组成员或从对等点110获得缺失的包。群组内的每个客户机被称为“群组成员”。例如,参阅图8,群组成员包括A、B、C、D和E(102a-102e)。群组成员驻存有游戏供应商的游戏的不同版本,并通过群组成员的升级GUID来识别具体版本。例如,群组成员B 102b驻存有升级GUID版本1234。群组成员C 102c和D 102d驻存有升级GUID版本123456。群组成员E 102e驻存有升级GUID版本12345。
追踪器108识别每个群组成员使用的游戏版本。追踪器108通过将群组成员102a-102e与其各自的升级GUID相关联来做到这一点。然而,在某些实例中,追踪器108是版本服务器,且并不识别设置在群组成员102a-102e上的具体游戏包。因此,对那些具有升级GUID的某些但不是全部游戏包的群组成员和那些具有升级GUID的全部游戏包的群组成员,追踪器108并不进行区分。如果群组成员102a-102e具有升级GUID的至少一些游戏包,追踪器108就将该成员识别为在使用该升级GUID。例如,参阅表1,追踪器108将成员C和D(102c,102d)识别为驻存有由升级GUID 123456识别的游戏版本,将成员B(102b)识别为驻存有由升级GUID 1234识别的游戏版本,并将成员A和E(102a,102e)识别为驻存有由升级GUID 12345识别的游戏版本。
群组成员GUID | 升级GUID |
A | 12345 |
B | 1234 |
C | 123456 |
D | 123456 |
E | 12345 |
表1
在加入群组102b-102e时,成员102a向追踪器108发送消息,在该消息中对追踪器108登记并将其向其他群组成员提供游戏包的意愿通报给追踪器108。群组成员102b-102e将周期性的追踪器升级消息180b-180e发送给追踪器108。来自群组成员的追踪器升级消息180b-180e将群组成员仍是活跃的且能够给其他群组成员提供游戏包的情形通知追踪器108。追踪器升级消息180b-180e还包括该成员用到的游戏版本(由升级GUID指示)。如果追踪器升级消息包括与先前关联于该成员的升级GUID不同的升级GUID,追踪器108将该成员的关联升级GUID变为更近的那一个。在一个实例中,参阅上面的表1,成员A最初是与升级GUID 1234(未示出)相关联。后继的升级消息180b-180e指示成员A正在使用更近的具有升级GUID 12345的游戏版本。追踪器108更新成员A的关联升级GUID以反映成员A使用的是具有升级GUID 12345的版本。追踪器108保留这些定期发送追踪器升级消息180b-180e的群组成员表。在某些实施例中,群组成员102b-102e以预定的间隔(称为超时(time-out)间隔)(例如每分钟或每2分钟)发送追踪器升级消息180b-180e。追踪器108将那些在超时间隔内没有从该群组成员接收到消息的群组成员从其表中移出。例如,如果发送追踪器升级消息的超时间隔是1分钟,而群组成员在1分钟后尚未发送追踪器升级消息,则中断该群组成员与该追踪器108的连接,且将该群组成员移出该活跃群组成员表。
在追踪器108是版本服务器的系统中,追踪器升级消息180b-180e包含群组成员所使用的升级GUID。消息180b-180e还包含诸如群组成员的IP地址和监听端口等群组成员的接触信息。
活跃群组成员表还保留每个成员的做种(seeding)数据和升级数据这两者。“做种数据”是指群组成员上传至其他群组成员的游戏包。“升级数据”数据是指群组成员当前正下载到其系统上的游戏包。为了做种,追踪器108记录该成员正在做种的游戏升级表、以及自从该成员开始做种以来用于升级而上传的总字节数。为了升级,追踪器108保留该成员当前正在下载的游戏升级表、以及自从该成员开始下载以来用于此次升级而下载的总字节数、以及剩余要下载的字节数。
追踪器108和群组成员102a-102e通过请求消息182和响应消息184而进行通信。请求消息182来自升级群组成员,其包含针对该群组成员所期望的游戏升级的升级GUID。当接收到升级请求时,追踪器108将该群组成员所期望的升级的升级GUID与其他群组成员102b-102e的升级GUID进行比较。然后追踪器108发送响应消息184给升级群组成员,该响应消息184包含升级群组成员102a可从彼处获得所需升级GUID的其他群组成员的列表。例如,参阅图8,群组成员102a在其请求消息182中识别其需要的升级GUID 123456。在响应184中,追踪器108将群组成员C(102c)和D(102d)这两者均在使用升级GUID 123456的情形通知群组成员102a。
响应消息184还包括群组成员的接触信息。结果是,群组成员102a-102e能与其他成员直接通信。因此,响应消息184列出成员升级GUID、IP地址和监听端口、以及可选的IP地址。在某些实施例中,在追踪器108上可以配置返回的对等点的最大数目。这就允许群组成员可以避免接收升级GUID满足该成员需要的升级GUID的所有群组成员的通知。
对等点
参阅图7,使用包含在追踪器的响应消息184中的成员信息,升级群组成员102a建立与这些群组成员102b-102e的对等连接172a-172e,升级群组成员102a期望从这些群组成员102b-102e收集游戏包来完成其升级。
当建立对等连接时,成员102a-102e交换与每个成员已获取的或需要的升级GUID的游戏包有关的信息。经由对等连接在群组成员102a-102e之间传送游戏包。每个包包括针对该包的累积升级,这就允许成员省掉所有中间版本而仅需单个步骤来升级至最近的版本。因为游戏包不是安装器的一部分,所传送的游戏包被直接存放到升级群组成员用于驻存游戏包的位置中,或者存放到升级群组成员的游戏文件中。因为成员102a-102e不需要下载和执行安装器,成员的系统上无需为这些无关紧要的文件献出磁盘空间。
在一个实例中,因为追踪器108已经将群组成员D(102d)和C(102c)含有升级GUID 123456(群组成员A需要的升级GUID)的情形通知给群组成员102a,该群组成员A通过信道172a和172d与群组成员D和C通信,请求它们识别所驻存的升级GUID 123456游戏包。因此,群组成员D和C用所驻存的升级GUID 123456的游戏包来响应。类似地,群组成员B进行更大跨度的升级,在该升级中其从升级GUID 1234一直跳到升级GUID 123456。因为群组成员A、C和D都包括群组成员B完成其升级GUID 123456所需的游戏包,群组成员B建立与群组成员A、C和D的信道172b、172c和172e。
基于这些成员交换,通过添加详述有其他群组成员拥有的游戏包的可获性地图(availability map),群组成员添加它们的“包列表”170a、170。参阅表2,稀缺性分值(rarity score)表示每个游戏包在群组内出现的频率。在某些实例中,稀缺性分值是驻存有针对特定升级GUID的游戏包的群组成员数目与使用该特定升级GUID的群组成员的数目的比率。例如,当从升级GUID 12345转至升级GUID 123456时,三个游戏包完成该升级:包a、包b和包c。使用上述实例,成员D已经将它具有全部三个包的情形通报成员A。类似地,成员C已经将它具有包b和包c的情形通报成员A。因为使用升级GUID 123456的两个成员(成员C和D)中只有一个成员(成员D)具有游戏包a,则包a的稀缺性分值是1∶2。
表2
群组成员持续地和同时地请求它们需要的游戏产品来完成它们各自的升级。在这么做时,它们首先请求最稀缺的包。这就确保了稀缺的包通过在整个群组中的迅速传播而不再长久地保持稀缺。
在群组成员(“请求群组成员”)请求游戏包之后,供给群组成员接收到该请求并执行数据推送来将所请求的游戏包传送至该请求群组成员。游戏包被直接应用至升级成员驻存游戏包的位置,以替代对应于该游戏包的先前版本(如果有的话)。因为游戏包被直接应用至该成员的游戏文件,该游戏包在游戏中自动可用而无需安装、下载或执行任何附加文件(例如安装文件)。当接收到游戏包时,请求群组成员更新其可获性地图来指示其不再需要该游戏包。此外,因为现在新获得了游戏包,请求群组成员现在能够在整个群组重新分发该包,因此而加快游戏包的传播。当继续该传播时,稀缺的游戏包就变得不那么稀缺了。
当接收到游戏包时,请求群组成员通过向其他群组成员通报其具有对等连接来初始化传播过程,使得这些其他群组成员更新它们的可获性地图和稀缺性分值,并从请求群组成员(其现在可充当供给群组成员)请求该游戏包。供给群组成员不使用安装器而将游戏包直接传送至请求群组成员。结果是,不需要为单独的安装器保留空间。此外,因为没有使用安装器,就不再能如现有技术那样仅仅通过删除该安装器而淡出作为供给群组成员。
例如,参阅图7,在成员A接收到包a之后,成员A将它现在驻存有升级GUID 123456的包a的情形通报给成员B。因此,如果成员B尚未收到包a,成员B更新其可获性地图来表明成员A现在驻存有包a,并且将包a的稀缺性分值改变为3∶3,从而表示使用升级GUID 123456的三个成员(成员A、B和C)中,三个成员全部都包含包a。
群组成员周期性地且成批地(例如一批5个)建立对等连接。群组成员能够建立的对等连接的数目受限于该群组成员和其潜在对等点能够支持的连接数目(其部分依赖于连接类型和带宽容量)。
一旦建立连接,群组成员在每个对等连接上保留一些未完成的请求以加快下载过程。当下载一个游戏包后,因为对第二个游戏包的请求已经由群组成员发送并由对等点接收,所以对第二个游戏包的下载被自动初始化。如果对等连接并不包含未完成的请求,当对一个游戏包的下载完成后,群组成员将请求第二个游戏包。在具有高BDP(带宽延时产出、高等待期或高带宽)的连上,这将导致实际性能的损失。
成员之间的持续分享
如先前所讨论,成员通过彼此之间直接传送包来进行现场升级。在现场升级期间,在传送中包的状态和传送后在游戏中使用的包的状态是相同的。也就是说,无需附加安装器或安装文件,在成员间传送的包呈初始状态:即包在游戏中使用的状态。
此外,成员通常需要所有升级包来适当运行游戏。因为游戏包是以其驻存时相同的状态来传送的,通过仅仅将游戏包进行驻存,该成员将游戏包传播至其他成员。结果是,在多数情况下,升级所需要的所有游戏包都被保留在群组中并在成员间传播。
对等点成员间的遏制(choking)
在某些实施例中,群组成员忽略或拒绝其他群组成员对游戏包的请求。基于这一点,群组成员保留它们的对等连接的状态信息,该状态信息指示对等点的接收能力。当对等点拒绝升级群组成员的请求时,对等点的请求拒绝被称为“遏制”升级群组成员。当被对等点遏制时,升级群组成员避免将对游戏包的请求发送至该对等点,因为该对等点拒绝那些请求。
有几种进行遏制的原因,其中一个是拥塞控制(例如传输控制协议(TCP))的失败。当一次性通过多个对等连接传送游戏包时,TCP拥塞控制表现得很差。遏制限制了同时上传的数目也因此限制了对等连接的数据,因而提升了良好的TCP性能。
当使用TCP拥塞控制时,群组成员还能够识别它想要与之建立连接的对等点。例如,群组成员经常选择将游戏包发送至之前向它发送过游戏包的对等点,交换称为“互换(reciprocation)”。因此,群组成员不会遏制其互换对等点。此外,群组成员也不会遏制能够快速上传数据的对等点,因为这些对等点不会构成拥塞。
群组成员通常最有兴趣与这样的对等点,即驻存有群组成员需要的任何游戏版本的对等点,建立通信。因此,群组成员从那些不对它遏制并且针对它所需要的那些游戏包具有低稀缺性分值的对等点请求游戏包。
对每个群组成员来说重要的是保持将有关于它是否对它的对等点有兴趣的情形通知给这些对等点。每个群组成员对它所有的对等点,包括那些当前对它遏制的对等点,保持这一状态信息的及时更新。这使每个对等点得以知晓取消对群组成员的遏制是否会使得它开始下载。
种子
除了从其他群组成员(即,对等点)接收升级GUID的游戏包之外,升级客户机102还从种子112接收游戏包。因为大多成员驻存有所有升级的游戏包进行,并如先前所讨论的那样直接与其他成员共享这些升级,成员并不经常从种子112请求包。
当升级变得可用时,游戏供应商116将相应的游戏包放置在种子112上。种子112保留列出对应于每次升级的游戏包的表格。针对升级客户机,种子112就像是正在上传游戏包给它的另一个群组成员。在某些实施例中,由多个种子112来执行上述功能。
当整个群组都缺少特定的游戏包时,群组被认为针对该游戏包“缺货”。在此情形下,升级客户机102直接从种子112获得游戏包。
当升级客户机遭受来自群组成员的不理想的下载吞吐量(throughput)时,种子112也参与进来。在此情形下,客户机通过从种子112获得附加游戏包来补偿其下载速度。然而,为了确保种子112的效率,种子112可限制其因为不理想的下载速度而要供给客户机102的游戏包的数目。在不理想的下载吞吐量得以缓解的情形下,种子112也会限制游戏包的数目,在此情形下客户机102可从其对等点获得游戏包。参阅图9,通过将其无法通过群组获得的游戏包列表发送给种子112(190),客户机102对从种子112取回游戏包进行初始化。从这些被客户机识别出的游戏包,种子112选择将最稀缺的游戏包(即,具有最少的供给次数的游戏包)供给客户机(192)。如先前所讨论,这就促进了稀缺数据包在整个群组的传播。因此,如果大多群组成员具有该游戏包且客户机能够很容易地从群组获得该游戏包的话,种子112避免对此游戏包进行分发。然而,对于全新的游戏,没有群组成员拥有该游戏包。因此,种子112进行该游戏包的初始分发。
响应于客户机的请求,种子112将其已经选择供给客户机的游戏包告知给客户机(194)。客户机随后继续请求游戏包196。在某些实例中,种子112通过直接将该游戏包提供至客户机200来响应该请求。然而,在其他实例中,种子进行将HTTP位置(“重定向源”,图1的114)通知给客户机的“种子重定向”(198),其中游戏包在该HTTP位置处是可获的。在某些实例中,种子112通过在其对客户机的请求的响应中包括重定向URL来这么做。在某些例子中,当种子接近其上传容量时出现种子重定向。客户机随后接触该HTTP位置以下载该包。
种子112或HTTP种子重定向源将游戏包直接传送至客户机的游戏文件,使得客户机能够立即开始使用该游戏包。当从种子112或HTTP种子重定向源接收到游戏包后,客户机更新其“包列表”170a、170b以表明其不再需要该新获得的游戏包。此外,客户机将该新获得的游戏包通知给与其连接的其他群组成员,允许它们更新它们各自的包列表,并且视需要从该客户机请求该游戏包。以此方式,稀缺的游戏包得以在整个群组传播而无须附加种子的介入。
因为升级客户机102与多个群组成员保持接触,同时仍然与种子112连接,在其他群组成员从种子112接收到新的游戏包并通知该客户机102之后,升级客户机将需要的来自种子112的游戏包数目可能发生变化。
例如,参阅图10,在时刻T1,客户机A 102a和客户机B 102b这两者均需要升级GUID 123456的包x和y。在时刻T2,客户机B 102b从种子112请求包x和y。因为包x在整个群组出现的频率较少,在时刻T3,种子112将包x发送给客户机B 102b。在当前时刻T3,客户机A(已经被通报了客户机B已接收到包x)从种子请求包x和y这两者。然而,在时刻T4,客户机B将其对包x的接收通报客户机A。从而,客户机A更新其可获性地图来指示现在可从客户机B而不是从种子获得包x。在时刻T5,因为此包尚未在整个群组传播,而客户机A不能轻易从其他地方获得该包,种子将包y发送至客户机A。包y被直接传送至客户机的游戏文件,运行该包或在玩游戏期间使用该包时无须进一步的动作。客户机A随后在时刻T6从客户机B请求包x并在时刻T7接收该包x。以刚刚描述的方式将包x直接传送至客户机A。结果是,客户机A不再需要如其初始请求那样从种子获得这个包。
在某些例子中,升级客户机102从种子102请求游戏包,该游戏包最近刚由种子112分发给其他群组成员。这发生在当客户机102(在接收到其他群组成员的已经接收到该游戏包的通报消息之前)从种子请求游戏包之时。图10中在时刻T3示出这种情形,其中客户机A没有意识到其他客户机(客户机B 102b)已经具有包a,而从种子请求包a。这可能发生在当种子几乎是在客户机A从种子请求该包的同一时间将包a提供给客户机B之时。
为了避免这种无效性,在某些实施例中,种子112追踪游戏包的最近分发时间,并避免在进行其最近的分发的预定等待间隔内对同一游戏包进行重新分发。因此,如果客户机在该等待间隔内请求先前分发的游戏包,种子112并不会将数据包上传给该客户机。
如上所述,当群组针对请求的游戏包缺货时,或当从其他群组成员请求该游戏包将会导致不理想的下载吞吐量时,客户机102可访问种子112。种子的吞吐量根据接触种子112的原因而改变。在第一种情形下,因为群组不能提供所请求的游戏包,当群组针对游戏包缺货时,吞吐量没有变小。然而,在第二种情形下,因为升级客户机102接触种子112不是绝对必要的,所以减小升级客户机的吞吐量以阻碍其不必要地接触种子112。这就节省了种子的资源。
在某些实施例中,将种子的功能分布在群组成员之中,且通过每个群组成员在本地实现。因为每个群组成员都知道稀缺性分值,所以每个群组成员都知道游戏包在它的对等点中的可获性。结果是,群组成员能够在本地做出关于其需要请求什么游戏包的智能决定。群组成员随后能够从重定向HTTP源直接请求这些包,而无需使用种子112。这种不需要专用种子112的实施例被称为具有“无种”机制。
淡出(opt-out)的HTTP源
在某些实施例中,升级客户机淡出群组,并谢绝使用追踪器108、种子112或任何其他对等点来获得游戏包。作为替代,客户机使用升级GUID的元数据并从淡出的源直接获得游戏包,该淡出的源诸如能够分发游戏包的HTTP源或任何形式数据源。如图1所示,对于每个新的游戏升级而言,游戏供应商116用升级的游戏包来升级该淡出的源。参阅图1,在某些实例中,该淡出的HTTP源114是种子重定向源114的同一个源。在此淡出的情形下,淡出的HTTP源114使用低吞吐量来阻碍客户机直接与其接触。
对等连接的中断
当两个群组成员已经完成了它们各自的升级时,两个成员间的对等连接中断。因此,因为群组成员能够持续接收到新的游戏包,如果至少一个群组成员没有完成其升级,即使其他成员没有所需的游戏包,对等连接也保持打开(open)。这就确保了未来在群组成员将要驻存另一个连接上的群组成员所需要的包时,对等连接的可用性。
结束游戏
当下载几乎结束时,最后的几个游戏包会趋于下载得更慢一些。为了避免如此,升级客户机针对其缺失的所有游戏包向其所有对等点发送请求,并在接收到游戏包后向其对等点发送针对此游戏包的取消消息。这个过程被称为“结束游戏”。当所有游戏包已经被请求后,某些升级群组成员进入结束游戏。其他成员则一直等待到仍然需要的游戏包的数目低于传输中的数据包的数目为止。
已经对本发明的多个实施例加以描述。然而,须知可以进行各种不会背离本发明精神和保护范围的改进。从而,其他实施例落在所附权利要求的保护范围内。在一个实例中,同一物理机器包括状态服务器、种子、追踪器、元数据HTTP源或它们的任何组合。在另一个实例中,前述逻辑元件在彼此的数据通信中跨过两个或多个物理机器而分布。
虽然已参照缺失的游戏包而对升级过程加以描述,可以理解的是,上面的描述也可应用至对不同游戏包的升级。例如,第二次升级可给先前的游戏包添加新的特征或功能。然而,第二次升级不得改变在一个版本内包含的游戏包的数目。作为替代,此第二次升级用包括新的特征或功能的新游戏包替代先前的游戏包。因此,这些不同的游戏包包括替换游戏包。
已经参照对游戏包的运行版本进行的升级来对升级过程加以描述,可以理解的是,这里描述的升级过程也可应用至升级所有类型的软件,包括升级软件的版本和作为软件升级的一部分而对缺失的或不同的软件包的升级、或它们的任意组合。
Claims (30)
1.一种由计算机实施的用于升级游戏软件的运行版本的方法,该游戏软件被存储在第一存储位置,该方法包括以下步骤:
使第一群组成员在该第一存储位置存储该游戏软件的第一版本,该第一版本具有第一组多个游戏包;
保留该游戏软件的第二版本,该第二版本具有第二组多个游戏包,其中至少一个游戏包在所述第一组多个游戏包里缺失;
从所述第一群组成员接收升级到该游戏软件的第二版本的请求,该请求识别该第一版本;
基于该第一版本的身份,识别缺失的游戏包的集合,该集合包括从该第一版本升级到该第二版本所需的游戏包;以及
将指向其他群组成员的子集的信息提供给所述第一群组成员,该子集中的每个其他群组成员都在第二存储位置对至少一个缺失的游戏包进行驻存,该第二存储位置用于存储该游戏软件的运行版本;
所述第一群组成员因此而得到这样的能力:识别属于该子集的其他群组成员,并从彼处请求缺失的游戏包;
使所述第一群组成员从该第二存储位置取回缺失的游戏包并将它们存储在该第一存储位置的至少一部分中,其中该第一位置曾用于存储该游戏软件的第一版本,因此而在该游戏软件的升级期间避免额外存储的耗用。
2.根据权利要求1的方法,其中使所述第一群组成员取回缺失的游戏包的步骤包括:取回与介于该运行游戏软件的第一版本和该第二版本之间的版本的升级对应的一个或多个游戏包。
3.根据权利要求1的方法,还包括以下步骤:
从一个或多个其他群组成员接收识别对该游戏软件的版本进行驻存的该群组成员的消息;以及
生成由该一个或多个其他群组成员驻存的该游戏版本的列表。
4.根据权利要求3的方法,还包括以下步骤:
将包括在所述第一群组成员的升级请求中的该第二版本与包含由所述其他群组成员驻存的该游戏版本的列表进行比较;以及
基于该比较,识别对该第二版本中包括的至少一个游戏包进行驻存的其他群组成员的子集;
从所述第一群组成员接收收到缺失游戏包的消息,其中该消息包括该游戏软件的与所述游戏包相关的版本。
5.根据权利要求1的方法,还包括以下步骤:
从所述第一群组成员接收收到缺失游戏包的消息,其中该消息包括该游戏软件的与该游戏包相关的版本。
6.根据权利要求1的方法,其中使所述第一群组成员取回缺失的游戏包的步骤包括:取回一个或多个与该游戏软件的最近版本相关的游戏包。
7.根据权利要求1的方法,还包括以下步骤:
使所述第一群组成员与其他群组成员直接从所述第一群组成员的第一存储位置分享取回的游戏包。
8.根据权利要求1的方法,还包括以下步骤:
于现场升级中在群组成员间传送一个或多个游戏包,其中在传送中所述游戏包的状态和传送后由该游戏软件使用的该包的状态是相同的。
9.根据权利要求1的方法,其中使所述第一群组成员在该第一存储位置的至少一部分中存储缺失的游戏包的步骤还包括:
使所述第一群组成员在这样的位置存储缺失的游戏包,在玩游戏期间将从该位置访问缺失的游戏包。
10.根据权利要求1的方法,其中使所述第一群组成员取回缺失的游戏包的步骤还包括:
使所述第一群组成员建立与所述一个或多个其他群组成员的连接;以及
当所述第一群组成员和其连接的其他群组成员已经取回所有缺失的游戏包时,使所述第一群组成员中断该连接。
11.根据权利要求1的方法,其中所述缺失的游戏包包括一个或多个不存在于该游戏软件的第一版本中的游戏包。
12.根据权利要求1的方法,其中所述缺失的游戏包包括一个或多个针对所述第一组多个游戏包的替代游戏包。
13.根据权利要求1的方法,其中该第一版本是刚好处在该第二版本之前的版本。
14.根据权利要求1的方法,其中在该第一版本与第二版本之间至少存在第三版本。
15.根据权利要求1的方法,还包括以下步骤:
给所述第一群组成员提供指向识别一个或多个机器的信息,所述一个或多个机器在第三存储位置驻存有至少一个缺失的游戏包,其中该第三存储位置用于存储该游戏软件的运行版本;
所述第一群组成员因此而得到从所述一个或多个机器处请求缺失的游戏包的能力;以及
使所述第一群组成员从该第三存储位置取回所述缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本。
16.一种其上编码有用于对游戏软件的运行版本进行升级的软件的计算机可读介质,该游戏软件被存储在第一存储位置,该计算机程序产品包括使计算机执行以下步骤的指令:
使第一群组成员在该第一存储位置存储该游戏软件的第一版本,该第一版本具有第一组多个游戏包;
保留该游戏软件的第二版本,该第二版本具有第二组多个游戏包,至少一个游戏包在所述第一组多个游戏包里缺失;
从所述第一群组成员接收升级到该游戏软件的第二版本的请求,该请求识别该第一版本;
基于该第一版本的身份,识别缺失的游戏包的集合,该集合包括从该第一版本升级到该第二版本所需的游戏包;以及
将指向其他群组成员的子集的信息提供给所述第一群组成员,该子集中的每个其他群组成员在第二存储位置对至少一个缺失的游戏包进行驻存,其中该第二存储位置用于存储该游戏软件的运行版本;
所述第一群组成员因此而得到这样的能力:识别属于该子集的其他群组成员,并从彼处请求缺失的游戏包;
使所述第一群组成员从该第二存储位置取回缺失的游戏包并将它们存储在该第一存储位置的至少一部分中,其中该第一存储位置用于存储该游戏软件的第一版本,因此而在该游戏软件的升级期间避免额外存储的耗用。
17.根据权利要求16的计算机可读介质,其中使取回缺失的游戏包的指令包括用于取回这样的游戏包的指令,这些游戏包用于介于该运行游戏软件的第一版本和该第二版本之间的版本的升级。
18.根据权利要求16的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
从一个或多个其他群组成员接收识别对该游戏软件的版本进行驻存的该群组成员的消息;以及
生成由该一个或多个其他群组成员驻存的该游戏版本的列表。
19.根据权利要求18的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
将包括在所述第一群组成员的升级请求中的该第二版本与包含由所述其他群组成员驻存的该游戏版本的列表进行比较;以及
基于该比较,识别对该第二版本中包括的至少一个游戏包进行驻存的其他群组成员的子集。
20.根据权利要求16的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
从所述第一群组成员接收收到缺失游戏包的消息,其中该消息包括该游戏软件的与该游戏包相关的版本。
21.根据权利要求16的计算机可读介质,其中使取回缺失的游戏包的软件包括用于取回与该游戏软件的最近版本相关的游戏包的指令。
22.根据权利要求16的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
使所述第一群组成员与其他群组成员直接从所述第一群组成员的第一存储位置分享取回的游戏包。
23.根据权利要求16的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
于现场升级中在群组成员间传送一个或多个游戏包,其中在传送中所述游戏包的状态和传送后由该游戏软件使用的该包的状态是相同的。
24.根据权利要求16的计算机可读介质,其中使计算机进行使所述第一群组成员在该第一存储位置的至少一部分中存储所述缺失的游戏包的指令包括使计算机执行以下步骤的指令:
使所述第一群组成员在这样的位置存储所述缺失的游戏包,在玩游戏期间将从该位置访问所述缺失的游戏包。
25.根据权利要求16的计算机可读介质,其中使计算机进行使所述第一群组成员取回缺失的游戏包的指令包括使计算机执行以下步骤的指令:
使所述第一群组成员建立与所述一个或多个其他群组成员的连接;以及
当所述第一群组成员和所连接的其他群组成员已经取回所有缺失的游戏包时,使所述第一群组成员中断该连接。
26.根据权利要求16的计算机可读介质,其中用于取回缺失的游戏包的指令包括用于取回一个或多个不存在于该游戏软件的第一版本中的游戏包的指令。
27.根据权利要求16的计算机可读介质,其中所述缺失的游戏包包括一个或多个针对所述第一组多个游戏包的替代游戏包。
28.根据权利要求16的计算机可读介质,其中该第一版本是刚好处在该第二版本之前的版本。
29.根据权利要求16的计算机可读介质,其中在该第一版本与第二版本之间至少存在第三版本。
30.根据权利要求16的计算机可读介质,其中该软件还包括使计算机执行以下步骤的指令:
给所述第一群组成员提供指向识别一个或多个机器的消息,所述一个或多个机器在第三存储位置驻存有至少一个缺失的游戏包,其中该第三存储位置用于存储该游戏软件的运行版本;
所述第一群组成员因此而得到从所述一个或多个机器处请求缺失的游戏包的能力;以及
使所述第一群组成员从该第三存储位置取回所述缺失的游戏包并将其存储在该第一存储位置的至少一部分中,其中该第一位置用于存储该游戏软件的第一版本。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/134,927 US20090305778A1 (en) | 2008-06-06 | 2008-06-06 | Installed game software sharing via peer-to-peer network |
US12/134,927 | 2008-06-06 | ||
PCT/US2009/046239 WO2009149247A2 (en) | 2008-06-06 | 2009-06-04 | Installed game software sharing via peer-to-peer networkfield of the invention |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102067102A true CN102067102A (zh) | 2011-05-18 |
Family
ID=41398861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801210714A Pending CN102067102A (zh) | 2008-06-06 | 2009-06-04 | 通过对等网络实现已安装的游戏软件的共享 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20090305778A1 (zh) |
EP (1) | EP2291758A4 (zh) |
KR (1) | KR20110050424A (zh) |
CN (1) | CN102067102A (zh) |
AU (1) | AU2009256125A1 (zh) |
CA (1) | CA2726593A1 (zh) |
WO (1) | WO2009149247A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015081905A1 (zh) * | 2013-12-02 | 2015-06-11 | 腾讯科技(深圳)有限公司 | 数据更新的方法、用户端及数据更新系统 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10277683B2 (en) | 2009-03-16 | 2019-04-30 | Apple Inc. | Multifunctional devices as virtual accessories |
US8713098B1 (en) * | 2010-10-01 | 2014-04-29 | Google Inc. | Method and system for migrating object update messages through synchronous data propagation |
GB201021875D0 (en) * | 2010-12-23 | 2011-02-02 | Antix Labs Ltd | Methods of distributing software |
US9015224B2 (en) * | 2011-10-09 | 2015-04-21 | LabTech, LLC | Interactive response of a remote monitoring and management system |
US8965958B2 (en) | 2011-10-27 | 2015-02-24 | Microsoft Corporation | File fetch from a remote client device |
US9055091B2 (en) | 2011-11-16 | 2015-06-09 | LabTech, LLC | Adaptive timing of distributed device response to maximize channel capacity utilization |
TWI495999B (zh) * | 2012-07-05 | 2015-08-11 | Compal Electronics Inc | 切換資料傳輸路徑以傳輸資料的方法及儲存裝置 |
US20140025738A1 (en) * | 2012-07-23 | 2014-01-23 | Tarun Anand | System and method for communicating data to multiple communication devices |
JP5702432B2 (ja) * | 2013-04-30 | 2015-04-15 | グリー株式会社 | サーバ、その制御プログラム、及びシステム |
US10404781B2 (en) * | 2015-01-14 | 2019-09-03 | Cisco Technology, Inc. | Flow characteristic based peer-to-peer system |
CN108345472A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 血糖仪数据处理的方法和装置、血糖仪 |
US11065546B1 (en) * | 2018-01-11 | 2021-07-20 | Amazon Technologies, Inc. | Distributed authority for peer gaming |
EP3746880B1 (en) * | 2018-01-30 | 2024-07-03 | Volkswagen Aktiengesellschaft | Method for distributing a software to a plurality of motor vehicles, corresponding system, motor vehicle, and data storage medium |
US11113249B2 (en) | 2019-04-05 | 2021-09-07 | Sap Se | Multitenant application server using a union file system |
US11232078B2 (en) | 2019-04-05 | 2022-01-25 | Sap Se | Multitenancy using an overlay file system |
US10942723B2 (en) * | 2019-04-05 | 2021-03-09 | Sap Se | Format for multi-artefact software packages |
US10956140B2 (en) | 2019-04-05 | 2021-03-23 | Sap Se | Software installation through an overlay file system |
US11115269B1 (en) * | 2020-10-20 | 2021-09-07 | Metactix Llc | System and method for updating an application for a population of computers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020160833A1 (en) * | 2000-10-25 | 2002-10-31 | Lloyd David B. | Adapting a game state to be compatible with a new version of a game |
US20040111484A1 (en) * | 2000-06-27 | 2004-06-10 | Electronics Arts Inc. | Episodic delivery of content |
JP2005148956A (ja) * | 2003-11-12 | 2005-06-09 | Denso It Laboratory Inc | 情報配布方法及び情報配布処理用プログラム |
CN1790266A (zh) * | 2004-12-14 | 2006-06-21 | 微软公司 | 用于下载更新的方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018747A (en) * | 1997-11-26 | 2000-01-25 | International Business Machines Corporation | Method for generating and reconstructing in-place delta files |
US20030233455A1 (en) * | 2002-06-14 | 2003-12-18 | Mike Leber | Distributed file sharing system |
US20070005743A1 (en) * | 2005-07-01 | 2007-01-04 | Metacafe Inc. | Signal-type dependent real-time fax relay |
US20070204003A1 (en) * | 2006-02-28 | 2007-08-30 | Maven Networks, Inc. | Downloading a file over HTTP from multiple servers |
US8316364B2 (en) * | 2007-02-28 | 2012-11-20 | Red Hat, Inc. | Peer-to-peer software update distribution network |
-
2008
- 2008-06-06 US US12/134,927 patent/US20090305778A1/en not_active Abandoned
-
2009
- 2009-06-04 CA CA2726593A patent/CA2726593A1/en not_active Abandoned
- 2009-06-04 WO PCT/US2009/046239 patent/WO2009149247A2/en active Application Filing
- 2009-06-04 KR KR1020117000364A patent/KR20110050424A/ko not_active Application Discontinuation
- 2009-06-04 EP EP09759406A patent/EP2291758A4/en not_active Withdrawn
- 2009-06-04 CN CN2009801210714A patent/CN102067102A/zh active Pending
- 2009-06-04 AU AU2009256125A patent/AU2009256125A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111484A1 (en) * | 2000-06-27 | 2004-06-10 | Electronics Arts Inc. | Episodic delivery of content |
US20020160833A1 (en) * | 2000-10-25 | 2002-10-31 | Lloyd David B. | Adapting a game state to be compatible with a new version of a game |
JP2005148956A (ja) * | 2003-11-12 | 2005-06-09 | Denso It Laboratory Inc | 情報配布方法及び情報配布処理用プログラム |
CN1790266A (zh) * | 2004-12-14 | 2006-06-21 | 微软公司 | 用于下载更新的方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015081905A1 (zh) * | 2013-12-02 | 2015-06-11 | 腾讯科技(深圳)有限公司 | 数据更新的方法、用户端及数据更新系统 |
US9588757B2 (en) | 2013-12-02 | 2017-03-07 | Tencent Technology (Shenzhen) Company Limited | Data update method, user terminal, and data update system |
Also Published As
Publication number | Publication date |
---|---|
US20090305778A1 (en) | 2009-12-10 |
KR20110050424A (ko) | 2011-05-13 |
CA2726593A1 (en) | 2009-12-10 |
AU2009256125A1 (en) | 2009-12-10 |
WO2009149247A8 (en) | 2010-01-28 |
WO2009149247A3 (en) | 2010-03-18 |
WO2009149247A2 (en) | 2009-12-10 |
EP2291758A4 (en) | 2011-08-31 |
EP2291758A2 (en) | 2011-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102067102A (zh) | 通过对等网络实现已安装的游戏软件的共享 | |
CN102037678B (zh) | 分发在多个接收机处可用的内容的映射图的系统和方法 | |
US9635107B2 (en) | System and method for managing data delivery in a peer-to-peer network | |
US6714992B1 (en) | Method and system for embedded network device installation | |
US10637960B2 (en) | Method for bridging publish/subscribe brokers for guaranteed low-latency delivery | |
KR101485610B1 (ko) | 네트워크 구조를 고려한 분산형 컨텐트 전달 시스템 및 그 방법 | |
CN101075879B (zh) | 一种数据下载方法 | |
JPH09511115A (ja) | スケーラブル分散計算環境 | |
CN102118263A (zh) | 配置信息的发布方法及系统 | |
CN101674257A (zh) | 一种消息存储方法、装置及一种消息处理系统 | |
CN102065136B (zh) | 一种p2p网络安全数据传输方法及其系统 | |
CN101262487A (zh) | 点对点客户端的数据传输处理方法及装置 | |
CN112104740B (zh) | 基于国产cpu和os的软件自动推送升级系统及方法 | |
CN101321123A (zh) | 嵌入式传输动态数据的系统及其传输方法 | |
KR20110063083A (ko) | 해시를 이용한 게시-구독 네트워크 구성 방법 및 통신 지원 방법 | |
CN101873344B (zh) | 集中式块交换p2p文件共享系统及其促使节点供种的方法 | |
CN101610289A (zh) | 下载数据的方法、装置和系统及节点 | |
Barber et al. | Bladerunner: Stream processing at scale for a live view of backend data mutations at the edge | |
KR101257579B1 (ko) | 실시간 스트리밍 서비스를 위한 피어-투-피어 오버레이 통신 시스템 및 방법 | |
CN110262999A (zh) | 一种自动化数据流转和数据处理方法、共享文件服务器 | |
CN116302618B (zh) | 一种会话信息处理方法及装置 | |
JP5498447B2 (ja) | ソフトウェアイメージ配信方法、ソフトウェアイメージ配信システム、サーバ、およびプログラム | |
JP2008191904A (ja) | 分散データ管理システムおよび方法 | |
KR20080047162A (ko) | P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 | |
CN115514731A (zh) | 一种消息推送方法、装置、介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1155533 Country of ref document: HK |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110518 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1155533 Country of ref document: HK |