通过服务端发送客户端补丁到玩家电脑中自动安装
这是一个试验性功能.可以让玩家自动的安装特定的补丁后才可进入游戏.下面说明一下这个功能的用法.
服务端根目录下的patches
文件夹用于存放更新补丁.
正常情况下.玩家使用wow.exe[zhCN,12340]
可以正常进入游戏.
但是如果服务端更新了一些内容需要玩家安装新的补丁.
那么,可以在patches
创建一个新的mpq
:命名为12340-zhCN.mpq
,下称安装包.
重启authserver.exe
,服务器就会加载安装包12340-zhCN.mpq
.
当这个时候,玩家如果使用wow.exe[zhCN,12340]
登陆
那么服务器将开始把安装包12340-zhCN.mpq
发送到玩家的客户端中
玩家只需要点击确认安装即可
安装包的制作:
安装包与一般的魔兽世界mpq补丁不一样
我们可以把安装包当作一个压缩包来理解.我们可以在它里面放入任何的文件.
而它里面需要包含一个文档prepatch.lst
,用于告诉wow.exe
在玩家接收到这个安装包的时候应该如何安装这个补丁
这是一个简易的安装包结构
- 12340-zhCN.mpq 文件目录
- prepatch.lst
- Installer-12340.exe
prepatch.lst
的内容
extract Installer-12340.exe
execute Installer-12340.exe
很好理解,第一行解压Installer-12340.exe
,第二行执行Installer-12340.exe
.这就是一个很简单的安装包了
其中Installer-12340.exe
是一个安装程序:
这是使用老外的一个开源项目做的.可以把补丁打包成一个安装程序.(看起来更有官方的样子)
ps:execute
不单仅仅只能执行.exe
,也支持.bat
所以我们可以使用更简便的方式:
- 12340-zhCN.mpq的内容
- prepatch.lst
- patch-zhCN-6.MPQ
- patch.bat
- wow.exe
prepatch.lst
的内容
extract patch-zhCN-6.MPQ
extract patch.bat
execute patch.bat
extract wow.exe
execute wow.exe
这个的安装过程是:解压MPQ补丁
和patch.bat
,执行patch.bat
,bat剪切补丁到应该放置的目录,解压wow.exe
,运行wow.exe
ps:因为是使用wow.exe
的build号
判定是否需要更新,所以更新后的wow.exe
的build
需要和之前的不一样.所以这里采取更换了一个wow.exe.
当然,你也可以使用我之前折腾的wowVer.exe
工具,就不需要吧这个wow.exe包进去了(我就是为了实现这个服务端发送补丁的功能才搞的那个工具 - -).这样可以大幅减少安装包的大小.wowVer.exe
只有7.50KB,对比wow.exe
7.34MB无疑把安装包的大小减少了很多.
所以优化一下:
- 12340-zhCN.mpq的内容
- prepatch.lst
- patch-zhCN-6.MPQ
- run.bat
- wowVer.exe
prepatch.lst
的内容
extract patch-zhCN-6.MPQ
extract wowVer.MPQ
extract run.bat
execute run.bat
prepatch.lst
的过程很好理解,解压补丁patch-zhCN-6.MPQ
,wowver.exe
和run.bat
,并执行run.bat
run.bat
的内容
move /y "patch-zhCN-6.MPQ" "data/zhCN/patch-zhCN-6.MPQ"
ping -n 1 127.0.0.1>nul
wowver.exe wow.exe 3 3 5 12341 1
同样也很简单,移动补丁patch-zhCN-6.MPQ
到data/zhCN
中,延时1秒(防止wow.exe
没来得及关闭导致被占用而使得wowver.exe
不能对其修改),使用wowver.exe
修改wow.exe
的build.
这样就完成了安装包的制作了,在玩家登入的时候,就会自动安装这个安装包以更新玩家的客户端.
不过这个时候还有一个步骤,就是数据库auth.game_build_list 表格中需要新加一条数据12341
.添加完成后重启authserver.exe
那么玩家就能通过新的版本12341
进入游戏了.
后记
总之,这个功能算是完成了..
制作安装包的过程第一次是比较麻烦的.不过做好了之后只要东西放着.做一个基础的.mpq
,每次只要复制一个新的,把东西丢进去,改个名字就ok了.
不过吧.这个功能其实就是看着好玩罢了,实用性不高.
emmmmmmmmm
即便如此,我还是弄好了这个玩意.
对于大多数人来说,把补丁放到网盘让玩家下载安装其实就可以了.
事实上.一些模型,贴图等还是弄网盘比较好.
这个热更新更适用
于dbc方面的更新.
比如使用我提供的wow.exe
,可以直接在客户端根目录中建立文件夹DBFilesClient
然后dbc只要解压到这里就行了,连mpq都不用.
这是比较理想的.
其实我想做一个dbc比对,用两个dbc做比较,A与B有什么差异,然后生成一个应用到A补丁.然后A使用后可以变成B
同样道理.服务端更新了,新的dbc和旧的dbc比对,生成补丁,弄到安装包中,玩家接收到,应用补丁到原有的dbc上.就变成和服务端一样的最新dbc了.
当然这个工具也不单单是为了更新补丁的,如果弄出来的话,可以记录dbc从头到尾经过了什么修改.
en 如果搞定了的话.. 这发送的安装包大小估计会更小.不过懒得做啊 (¬з¬)