一种网络游戏版本更新方法

文档序号:6341386阅读:352来源:国知局
专利名称:一种网络游戏版本更新方法
技术领域
本发明涉及网络在线游戏的运营支持领域,特别涉及一种网络游戏版本更新方法。
背景技术
在各种网络游戏运营中,客户端的版本更新是一个非常基础也非常重要的环节。 游戏产品会通过频繁的更新版本来修正漏洞(bug),改善玩家体验,并增加新的游戏内容。 更新机制的稳定高效,决定了玩家是否能快速完成更新,正常进入游戏。现有的各种网络游戏,大多采用完整包的更新方案,例如完美时空的《诛仙》,畅游 的《天龙八部》,网易的《梦幻西游》等。假设客户端版本为1. 0,服务器版本为1. 2,完整包更新的过程包括以下步骤a、根据服务器信息文件判断当前客户端版本和服务器版本是否一致,如果不一 致,申请更新;b、客户端依次申请下载1. 0到1. 1的更新包,1. 1到1. 2的更新包,将更新包内的文件更新到客户端。可见,采用完整包的更新方案,不够高效,当需要跨版本更新时,频繁的版本更新 可能会造成大量冗余文件被反复下载;此外采用完整包的更新方案难以支持修复功能,客 户端若有损坏,很难提供独立的文件更新,只能重新安装。完整包的更新方案不够灵活,无 法支持逆向更新,如果网络游戏存在体验服,一般比正式服版本高,升级到体验服后就无法 快速回退到正式服了,因此,难以实现不同版本之间的切换。

发明内容
有鉴于此,本发明的目的在于提供一种网络游戏版本更新方法,该方法能够减少 冗余文件的反复下载。为了达到上述目的,本发明提供了一种网络游戏版本更新方法,该方法包括以下 步骤A、当检测确定需要进行客户端版本更新时,下载目标服务器中的服务器文件列 表;B、从服务器文件列表中读取一条文件信息,判断在本地文件列表中是否存在与该 条文件信息相对应的文件信息,如果是,则执行步骤C ;否则执行步骤D ;C、判断该条文件信息中的MD5值是否与在本地文件列表中与该条文件信息相对 应的文件信息中的MD5值相同,如果不相同,则执行步骤D ;否则,在该条文件信息是服务器文件列表中最后一条文件信息时,执行步骤E,在 该条文件信息不是服务器文件列表中最后一条文件信息时,返回步骤B执行;D、将该条文件信息中的文件名放入待更新文件列表;E、将待更新文件列表中的文件下载,并将下载后的待更新文件放入资源包,完成本次更新。步骤A所述检测确定需要进行客户端网络游戏版本更新的方法为下载目标服务 器中的服务器信息文件,判断服务器信息文件中的版本号与客户端版本号是否相同,如果 不相同,则需要进行版本更新。步骤A所述下载目标服务器中的服务器文件列表的方法为向目标服务器发送超 文本传输协议http请求,请求下载目标服务器中的服务器文件列表;所述下载目标服务器中的服务器信息文件的方法为向目标服务器发送http请 求,请求下载目标服务器中的服务器信息文件。执行步骤A之后,执行步骤B之前进一步包括判断是否是客户端网络游戏版本的 第一次更新,如果是,则遍历客户端版本的所有相关文件,生成本地文件列表。步骤B所述判断在本地文件列表中是否存在与该条文件信息相对应的文件信息 的方法为将该条文件信息中的文件名与本地文件列表中的所有文件信息中的文件名逐一 进行比较,如果在本地文件列表中存在一条文件信息中的文件名与该条文件信息中的文件 名相同,则本地文件列表中存在与该条文件信息对应的文件信息,否则,本地文件列表中不 存在与该条文件信息对应的文件信息。该方法进一步预先设置核心文件列表;步骤C判断该条文件信息中的MD5值与在本地文件列表中与该条文件信息相对应 的文件信息中的MD5值相同后,执行步骤B或E之前进一步包括CO、判断预设的核心文件列表中是否存在与该条文件信息对应的文件,如果存在, 则执行步骤Cl,否则,根据该条文件信息是否是服务器文件列表中的最后一条文件信息执 行步骤B或E ;Cl、计算该条文件信息对应的核心文件列表中的文件的文件内容的MD5值,判断 计算得到的MD5值与该条文件信息中的MD5值是否相同,如果不相同,则执行步骤D,否则, 根据该条文件信息是否是服务器文件列表中的最后一条文件信息执行步骤B或E。所述核心文件列表中存储重要文件的文件名;步骤CO所述判断预设的核心文件列表中是否存在与该条文件信息对应的文件的 方法为将该条文件信息中的文件名与核心文件列表中的所有文件名逐一进行比较,如果 有与该条文件信息中的文件名相同的文件名,则所述预设的核心文件列表中存在该条文件 信息对应的文件,否则,所述预设的核心文件列表中不存在该条文件信息对应的文件。步骤E所述将待更新文件列表中的文件下载的方法为采用多线程,每个线程从 待更新文件列表中获取一个或多个文件,向目标服务器发送http请求申请打包下载。步骤E所述将待更新文件列表中的文件下载后进一步包括将下载后的待更新文 件备份;所述将下载后的待更新文件放入资源包时进一步包括修改本地文件列表中待更 新文件的文件信息;所述将下载后的待更新文件放入资源包之后,完成本次更新之前进一步包括更 新客户端网络游戏的版本信息。步骤A所述当检测确定需要进行客户端网络游戏版本更新后,进一步包括下载 目标服务器中的待删除文件列表;
步骤E所述将下载后的待更新文件放入资源包之后,完成本次更新之前进一步包 括将待删除文件列表中的文件从客户端文件中删除,并将被删除文件在本地文件列表中 对应的文件信息删除。由上面的技术方案可知,本发明的这种网络游戏版本更新方法,通过对比服务器 文件列表和本地文件列表中文件信息的不同,将文件内容MD5值发生变化的及服务器文件 列表与本地文件列表相比新增的文件的文件名放入待更新文件列表,将待更新文件列表中 的文件下载下来并放入客户端资源包,完成版本更新。应用本发明不需要将当前客户端版 本和当前服务器版本之间的多个版本中的更新文件反复下载,只需要将当前客户端版本和 当前服务器版本相比发生改变的以及新增的文件下载,因此,能够减少冗余文件下载。


图1本发明实施例实现网络游戏版本更新方法的流程示意图;图2是应用本发明实现网络游戏版本自修复方法的流程示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例, 对本发明进行详细说明。本发明的主要思想是通过对比服务器文件列表和本地文件列表中文件信息的不 同,将文件内容发生改变的以及新增的文件重新下载并放入本地客户端资源包中,完成更 新。应用本发明,能够减少网络游戏版本更新过程中的冗余文件下载。参见图1,图1是本发明实施例网络游戏版本更新方法的流程示意图,包括以下步 骤步骤101、下载服务器信息文件,从服务器信息文件中读取服务器版本号。这里,服务器版本号存储在目标服务器中的服务器信息文件中,目标服务器中的 服务器版本的每个文件都是采用二进制加密压缩的方式存储;下载到本地后进行解密,加 密和解密均采用现有技术。下载服务器信息文件可以按照现有技术的多种方法下载,本实 施例中采用向目标服务器发送超文本传输协议(http)请求,请求下载服务器信息文件的 方式,这里的目标服务器是HTTP服务器。步骤102、判断客户端版本号和服务器版本号是否一致,如果是,则执行步骤114, 否则,执行步骤103。本步骤中,将读取的服务器版本号与客户端版本号进行比较,如果不一致,则开始 更新流程。步骤103、下载目标服务器中存储的服务器文件列表和待删除文件列表。这里,服务器文件列表和待删除文件列表存放在目标服务器中,服务器文件列表 与现有技术相同,存储的是与当前服务器版本相关的所有文件的文件信息,每条文件信息 代表其中一个文件,包含文件名、文件最后修改时间、文件大小、文件MD5值等相关信息,其 中文件MD5值是按照现有技术计算MD5值的方法根据文件内容计算得到的,本发明中所有 提到的消息摘要算法第五版(MD5)值的计算方法均相同;待删除文件列表与现有技术相 同,存储的是在当前版本之前的各版本中出现过且当前版本中不再需要的待删除文件信息,包括所有待删除文件的文件名,由服务器预先生成。本步骤中,下载服务器文件列表和待删除文件列表可以按照现有技术的多种方法 下载,本实施例中采用向目标服务器发送http请求的方式,请求下载服务器文件列表和待 删除文件列表。步骤104、从服务器文件列表中读取一条文件信息。这里的服务器文件列表中的文件信息可以按照二进制的方式存储,具体文件信息 的存储格式,是实现的问题,不再赘述。步骤105、判断本地文件列表中是否存在与该条文件信息对应的文件信息,如果 是,则执行步骤106,否则,执行步骤110。这里,本地文件列表中存储的是与当前客户端版本相关的所有文件的文件信息, 每条文件信息代表其中一个文件,包含文件名、文件最后修改时间、文件大小、文件MD5值 等相关信息,其中文件MD5值是根据文件内容计算得到的。需要说明的是,在客户端版本第一次更新时,本地文件列表并不存在,因此,需要 在执行本步骤前遍历与客户端版本相关的所有文件,生成本地文件列表。在更新过程中,根 据对客户端版本的更新同时更新本地文件列表,生成新的本地文件列表,因此,在执行本步 骤前,需要先判断本次更新是否是第一次进行版本更新,如果不是,则本地文件列表已经存 在,不需要在执行本步骤前遍历与客户端版本相关的所有文件,生成本地文件列表,否则, 需要遍历与客户端版本相关的所有文件,生成本地文件列表。本步骤中,判断本地文件列表中是否存在与该条文件信息对应的文件信息的方法 为将该条文件信息中的文件名与本地文件列表中的所有文件信息中的文件名逐一进行比 较,如果本地文件列表中存在一条文件信息中的文件名与该条文件信息中的文件名相同, 则本地文件列表中存在与该条文件信息对应的文件信息,否则,本地文件列表中不存在与 该条文件信息对应的文件信息。步骤106、判断该条文件信息中的MD5值与本地文件列表中对应的文件信息中的 MD5值是否相同,如果相同,则执行步骤107,否则执行步骤110。步骤107、判断核心文件列表中是否存在该条文件信息对应的文件,如果是,则执 行步骤108,否则,执行步骤111。这里,核心文件列表是由根据实际情况预先设置在客户端的,并且在此后版本中 不变,用于在网络游戏版本更新时,对核心文件列表中的文件进行进一步的检测,以防被恶 意替换。核心文件列表中存储的是网络游戏版本中实现核心功能的所有重要文件的文件 名,将该条信息中的文件名与核心文件列表中的文件名逐一进行比较,如果核心文件列表 中存在该条文件信息中的文件名,则核心文件列表中存在该条文件信息对应的文件。步骤108、计算该条文件信息对应的客户端版本的核心文件的MD5值。本步骤中,如果该条文件信息所对应的文件是客户端版本的核心文件,则需要重 新根据当前客户端版本中的该核心文件的文件内容重新计算其MD5值。步骤109、判断计算得到的MD5值与该条文件信息中的MD5值是否一致,如果是,则 执行步骤111,否则,执行步骤110。本步骤中,将根据当前在客户端版本中的该条文件信息所对应的核心文件的文件 内容重新计算得到的MD5值与服务器端的MD5值进行比较,以验证该核心文件是否需要更新。步骤110、将该条文件信息中的文件名放入待更新文件列表。本步骤中,当从服务器文件列表中取出的一条文件信息在本地文件列表中不存在 时,说明是新增文件,需要放入待更新文件列表中;当服务器文件列表中取出的一条文件信 息与在本地文件列表中对应的文件信息中的MD5值不相同时,说明文件发生改变,需要放 入待更新文件列表中;当从服务器文件列表中取出的一条文件信息是核心文件列表中的重 要文件时,如果根据在客户端的该核心文件的文件内容计算得到的MD5值与该条文件信息 中的MD5值不相同时,说明该核心文件内容发生改变,需要放入待更新文件列表。步骤111、判断该条文件信息是否是服务器文件列表中最后一条文件信息,如果 是,则执行步骤112,否则,返回步骤104执行。本步骤中,判断该条文件信息是否是服务器文件列表中最后一条文件信息方法可 以有多种,例如判断文件指针是否已经到达文件结尾。步骤112、将待更新文件列表中的文件下载并生成备份文件,将下载后文件放入资 源包,更新客户端的版本信息。本步骤中,将待更新文件列表中的文件下载的方式为采用多线程,每个线程从待 更新文件列表中获取一个或多个文件,向目标服务器发送http请求申请打包下载;目标服 务器接收到http请求后,会将申请的一个或多个文件打包发送回来。向目标服务器申发送 http请求申请打包下载的方法与现有技术相同,不再赘述。待更新文件下载到客户端后,将下载的待更新文件放入客户端资源包,这里,为了 防止待更新文件放入资源包的过程中出现错误,还需要将下载的待更新文件进行备份,以 便出现所述错误时进行文件修复。将所有待更新文件放入资源包后,还需要进一步对本地文件列表进行更新,将所 有进行更新的文件在本地文件列表中对应的文件信息修改为更新后的文件信息;将当前客 户端的版本信息更新为当前更新到的新版本。这里,如果在将待更新文件放入资源包时,发现资源包本身损坏导致无法将待更 新文件放入资源包,则还可以触发客户端自修复功能,客户端的自修复功能实现将在图2 中进行详细说明。步骤113、将待删除文件列表中的待删除文件从本地客户端文件中删除,生成新的 本地文件列表。本步骤中,在客户端文件中逐一查找待删除文件列表中的文件名对应的文件,如 果存在,则删除该文件;删除文件后,还需要删除本地文件列表中的被删除文件对应的文件 信息。至此,更新后客户端版本的新的的本地文件列表生成。步骤114、本次更新结束。上面给出了本发明实施例实现网络游戏版本更新的方案,下面结合图2对利用本 发明实现客户端版本自修复功能的实现方法。参见图2,图2是应用本发明实现客户端版本自修复功能的方法流程图,包括以下 步骤步骤201、判断客户端资源包是否损坏,如果是,则执行步骤208,否则,执行步骤 202。
本步骤中,根据客户端资源包是否可以打开确定其是否已经损坏,如果能打开,说 明客户端资源包未损坏,否则,客户端资源包损坏。步骤202、从客户端资源包中选择一个未检测过的文件,计算该被选择的文件的文 件内容的MD5值。步骤203、判断计算出的MD5值与该被选择的文件的文件头信息中的MD5值是否相 同,如果是,则执行步骤207,否则执行步骤204。这里,资源包中的所有文件中都包括文件头信息和文件内容两部分内容,文件头 信息中存放的是与该文件相关的内容,如该文件内容的MD5值、该文件内容长度等。本步骤中,如果两个MD5值相同,说明文件未损坏,否则,说明损坏。步骤204、判断上次更新该被选择的文件时生成的该被选择的文件的备份文件是 否损坏,如果是,则执行步骤206,否则,执行步骤205 ;步骤205、根据备份文件恢复该被选择的文件的内容。本步骤中,备份文件没有损坏,则将该被选择的文件的内容替换为备份文件的内 容,修改该被选择的文件。步骤206、删除该被选择的文件。步骤207、判断是否已经遍历完客户端资源包中的所有文件,如果是,择执行步骤 209,否则,返回步骤202执行。步骤208、删除该客户端资源包。步骤209、重新生成新的本地文件列表。步骤210、调用更新程序对客户端版本进行更新。本步骤中,调用更新程序,也即是调用图1中给出的技术方案对客户端版本进行 更新,达到客户端版本自修复的目的。这里,如果客户端资源包损坏,则重新生成的本地文件列表中将没有任何文件信 息,因此,在更新时会将服务器中与服务器版本相关的所有文件下载下来,完成修复;如果 客户端资源包中的文件损坏,在检测到文件损坏时,如果无法利用备份信息修复,则删除该 文件,重新生成的本地文件列表中将没有该文件对应的文件信息,因此,在更新时会作为新 增文件从服务器中下载下来,完成修复。由上面的实施例可知,采用本发明,只需要比较客户端的本地文件列表和服务器 端的服务器文件列表,将本地文件列表中与服务器文件列表中MD5值相比发生变化的文 件,及在本地文件列表中不存的在文件,下载更新必要的文件到资源包即可实现任意版本 间的升级和降级,也可以实现跨版本升级;本发明采用基于多线程下载技术,可以有效提高 下载效率,减少玩家等待时间;此外,本发明也天然的支持了客户端自修复功能。除了更新 程序本身的任何资源文件损坏,只要激活修复功能,通过修复检测算法,更新损坏文件,就 可以重新恢复出完整的客户端。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种网络游戏版本更新方法,其特征在于,该方法包括以下步骤A、当检测确定需要进行客户端版本更新时,下载目标服务器中的服务器文件列表;B、从服务器文件列表中读取一条文件信息,判断在本地文件列表中是否存在与该条文 件信息相对应的文件信息,如果是,则执行步骤C ;否则执行步骤D ;C、判断该条文件信息中的MD5值是否与在本地文件列表中与该条文件信息相对应的 文件信息中的MD5值相同,如果不相同,则执行步骤D ;否则,在该条文件信息是服务器文件列表中最后一条文件信息时,执行步骤E,在该条 文件信息不是服务器文件列表中最后一条文件信息时,返回步骤B执行;D、将该条文件信息中的文件名放入待更新文件列表;E、将待更新文件列表中的文件下载,并将下载后的待更新文件放入资源包,完成本次更新。
2.如权利要求1所述的网络游戏版本更新方法,其特征在于,步骤A所述检测确定需要 进行客户端网络游戏版本更新的方法为下载目标服务器中的服务器信息文件,判断服务 器信息文件中的版本号与客户端版本号是否相同,如果不相同,则需要进行版本更新。
3.如权利要求2所述的网络游戏版本更新方法,其特征在于,步骤A所述下载目标服务 器中的服务器文件列表的方法为向目标服务器发送超文本传输协议http请求,请求下载 目标服务器中的服务器文件列表;所述下载目标服务器中的服务器信息文件的方法为向目标服务器发送http请求,请 求下载目标服务器中的服务器信息文件。
4.如权利要求3所述的网络游戏版本更新方法,其特征在于,执行步骤A之后,执行步 骤B之前进一步包括判断是否是客户端网络游戏版本的第一次更新,如果是,则遍历客户 端版本的所有相关文件,生成本地文件列表。
5.如权利要求1或4所述的网络游戏版本更新方法,其特征在于,步骤B所述判断在本 地文件列表中是否存在与该条文件信息相对应的文件信息的方法为将该条文件信息中的 文件名与本地文件列表中的所有文件信息中的文件名逐一进行比较,如果在本地文件列表 中存在一条文件信息中的文件名与该条文件信息中的文件名相同,则本地文件列表中存在 与该条文件信息对应的文件信息,否则,本地文件列表中不存在与该条文件信息对应的文 件fe息。
6.如权利要求5所述的网络游戏版本更新方法,其特征在于,该方法进一步预先设置 核心文件列表;步骤C判断该条文件信息中的MD5值与在本地文件列表中与该条文件信息相对应的文 件信息中的MD5值相同后,执行步骤B或E之前进一步包括CO、判断预设的核心文件列表中是否存在与该条文件信息对应的文件,如果存在,则执 行步骤Cl,否则,根据该条文件信息是否是服务器文件列表中的最后一条文件信息执行步 骤B或E ;Cl、计算该条文件信息对应的核心文件列表中的文件的文件内容的MD5值,判断计算 得到的MD5值与该条文件信息中的MD5值是否相同,如果不相同,则执行步骤D,否则,根据 该条文件信息是否是服务器文件列表中的最后一条文件信息执行步骤B或E。
7.如权利要求6所述的网络游戏版本更新方法,其特征在于,所述核心文件列表中存储重要文件的文件名;步骤CO所述判断预设的核心文件列表中是否存在与该条文件信息对应的文件的方法 为将该条文件信息中的文件名与核心文件列表中的所有文件名逐一进行比较,如果有与 该条文件信息中的文件名相同的文件名,则所述预设的核心文件列表中存在该条文件信息 对应的文件,否则,所述预设的核心文件列表中不存在该条文件信息对应的文件。
8.如权利要求7所述的网络游戏版本更新方法,其特征在于,步骤E所述将待更新文件 列表中的文件下载的方法为采用多线程,每个线程从待更新文件列表中获取一个或多个 文件,向目标服务器发送http请求申请打包下载。
9.如权利要求8所述的网络游戏版本更新方法,其特征在于,步骤E所述将待更新文件 列表中的文件下载后进一步包括将下载后的待更新文件备份;所述将下载后的待更新文件放入资源包时进一步包括修改本地文件列表中待更新文 件的文件信息;所述将下载后的待更新文件放入资源包之后,完成本次更新之前进一步包括更新客 户端网络游戏的版本信息。
10.如权利要求9所述的网络游戏版本更新方法,其特征在于,步骤A所述当检测确 定需要进行客户端网络游戏版本更新后,进一步包括下载目标服务器中的待删除文件列 表;步骤E所述将下载后的待更新文件放入资源包之后,完成本次更新之前进一步包括 将待删除文件列表中的文件从客户端文件中删除,并将被删除文件在本地文件列表中对应 的文件信息删除。
全文摘要
本发明提供了一种网络游戏版本更新方法。本发明的这种网络游戏版本更新方法,通过对比服务器文件列表和本地文件列表中文件信息的不同,将文件内容MD5值发生变化的及服务器文件列表与本地文件列表相比新增的文件的文件名放入待更新文件列表,将待更新文件列表中的文件下载下来并放入客户端资源包,完成版本更新。应用本发明不需要将当前客户端版本和当前服务器版本之间的多个版本中的更新文件反复下载,只需要将当前客户端版本和当前服务器版本相比发生改变的以及新增的文件下载,因此,能够减少冗余文件下载。
文档编号G06F9/445GK102053853SQ20101062367
公开日2011年5月11日 申请日期2010年12月30日 优先权日2010年12月30日
发明者刘毅, 王洪彦, 钟文杰 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1