一、原由
策划用xlsx导出多个json数据之后,需要打包成一个大的json文件,然后这个客户端程序需要用这个文件。那么问题来了,策划不想要每次都需要手动做操作,希望程序写个脚本,每次只要执行脚本,就可以完成一整套动作,最后上传更新到服务器去。
要求:
- 全自动流程
- 不需要更改脚本之类的(比如修改配置路径等等)
二、策划数据流程
这里总结一下策划数据到游戏中使用数据的流程。
1. svn更新最新的策划数据文档和输出的json数据
2. 执行json打包应用程序,生成一个综合大的datas.json文件
3. 删除掉原来svn中的datas.zip文件,并且更新
4. 把datas.json用zip程序压缩成datas.zip
5. 把最新的datas.zip提交到svn去
6. 调用内网服务器,把svn上的datas.zip同步到web服务器去
这里解释一下:
提交到svn去,是给程序用的,程序更新下来就是策划最新的策划数据了。
更新到内网服务器去,是内网游戏用的,也就是正在运行测试的游戏服务器
三、策划数据和svn的目录结构
只有清晰地知道整个项目工程的各种目录结构,才能写出对应的脚本。通过目录的主要目的也是想要写一个脚本,但是不需要策划去更改路径,直接更新下脚本就可以了。
总的svn目录结构,包含客户端资源assets,策划数据data,可以查看目录结构,可以更好地理解脚本为什么没要这样写,为什么可以做到不用写配置等等问题。
进入策划数据,是这样的数据结构:
client是所有的策划表输出的json文件目录
JsonMerge是json打包工具,真正的脚本是写在这里的
可以看到这里有一个AopenJsonMerge.bat的文件了,我们这里的主角。同时还有7z这个压缩软件以及svn程序,放在这里主要是方便脚本调用。
四、bat脚本功能讲解
先介绍单个脚本的用途。
更新当前SVN目录:
%~dp0"svn1.8\svn.exe" up
更新指定的svn目录
%~dp0"svn1.8\svn.exe" up %assets_path%
检测json打包工具程序,如果在任务列表中找不到了,则继续后面的脚本
:check
tasklist /NH | find "JsonMerge.exe">nul && (ping -n 1 127.1>nul&goto check)
注意,JsonMerge执行完是会自动关闭。
压缩json指令
%~dp0"7z\7za.exe" a -tzip %jsonFilePath%\assets\config\cfg.cfg %jsonFilePath%\assets\config\cfg.json
提交svn数据
%~dp0"svn1.8\svn.exe" commit %assets_path%\cfg.cfg -m "update cfg.cfg"
最后调用内网服务器的php脚本,这个脚本的工作是更新服务器上的svn资源,并且复制到指定的web目录下
start http://192.168.1.111:8080/update.php?v=default
最后看下JsonMerge的配置文件,采用了相对目录位置,所以不需要额外配置路径
<root isOpposite="true" input="../client" output="../../assets/config/cfg.json"/>
五、完整bat脚本
这个是实际生产环境中修改而来的脚本,虽然简单,但是完成的功能却不少,真是非常方便。实际项目过程中,总会使用到各种自己写的脚本来提交项目的开发效率。
echo Update the planning data
%~dp0"svn1.8\svn.exe" up ..\data\
%~dp0"svn1.8\svn.exe" up ..
set assets_path=..\..\assets\config
echo del cfg.json
del %assets_path%\cfg.json
del %assets_path%\cfg.cfg
%~dp0"svn1.8\svn.exe" up %assets_path%
del %assets_path%\cfg.cfg
echo JsonMerge json
start %~dp0"JsonMerge.exe"
:check
tasklist /NH | find "JsonMerge.exe">nul && (ping -n 1 127.1>nul&goto check)
cd ..
cd ..
set jsonFilePath=%cd%
cd data
cd JsonMerge
%~dp0"7z\7za.exe" a -tzip %jsonFilePath%\assets\config\cfg.cfg %jsonFilePath%\assets\config\cfg.json
%~dp0"svn1.8\svn.exe" commit %assets_path%\cfg.json -m "update cfg.json"
%~dp0"svn1.8\svn.exe" commit %assets_path%\cfg.cfg -m "update cfg.cfg"
start http://192.168.1.111:8080/update.php?v=default