//游戲中下載配置文件方法 ?[建議復制粘貼成js文件 看]
/*
先不說獲取數據的實現,簡單來說一下這些數據的意義吧.
游戲里,有大量的數據,包括角色,道具,裝備,活動,關卡,獎勵等等等等這些東西,都是由大量的數據支撐起來的.
通過對這些數據的接觸,自己也有很大的體會,呵呵 點到為止.進入正題
在游戲中 一般數據的保存格式是 .json .這些數據都是由策劃部門進行精細的管理.一般游戲開發團隊都會建立自己的數據管理工具,哪怕是臨時的.
自己在項目開始的時候,也參與過這些管理工具的完善以及維護.主要是文件的讀寫,保存.然后根據服務器去劃分不同的服務器.用的時angularJS框架.這個框架自己
了解的不是很多,我的等級就是會用.深入的沒有去研究.如果有誰有經驗的話,可以寫幾篇文章供參考一下.
數據的結構如果只是看這些json文件的話,而不看這些數據的源文件,你是看不明白的.必須要看策劃的表,xlsx文件.
我解除過一個最復雜的配置文件,策劃和自己溝通數據結構的時候,花費了大概半個小時的時間,自己才明白,
這些數據到底該怎么用.不過在使用的過程中,還是會遺忘一些東西.
不多說了 扯遠了.
還有一個問題就是nodejs中fs模塊的問題,自己在github上node的官方issue中提到過.
fs.readdir and fs.readdirSync is not work like the description on API #9089
*/
//考慮多個服務器的情況 所以在保存數據的時候 是根據服務器名稱保存的
var fs = require('fs');
var http = require('http');
var async = require('async');
var serverType = 'merge';//合并服務器
var configNames = [];
var configNamesWithSuffix = [];
async.waterfall([
function(cb){
http.get('http://192.168.1.1:80000/getConfigNameByServerName?server='+serverType, function(res) {
res.on('data',function(data){
configNamesWithSuffix = JSON.parse(data) || [];//獲取所有配置文件的名稱 []
});
res.on('end',function(){
console.log('獲取配置文件名成功!');
});
cb();
});
},
function(cb){
for(var i = 0;i < configNamesWithSuffix.length; i++){
var index = configNamesWithSuffix[i].indexOf('.')
var name = configNamesWithSuffix[i].substring(0,index);
configNames.push(name);
}
async.mapSeries(configNames,function(item,call){
if(fs.existsSync('./dataConfig/'+item+'.json')){
fs.unlinkSync('./dataConfig/'+item+'.json');
}
call();
},function(err,data){
cb();
});
},function(cb){
async.mapSeries(configNames,function(item,call){
var file = fs.createWriteStream('./dataConfig/'+item+'.json');
http.get('http://192.168.1.1:80000/getConfigByName?name=' + item + '&server='+serverType, function(res) {
res.on('data', function(data) {
file.write(data);
});
res.on('end', function() {
file.end();
call();
});
});
},function(err,result){
cb();
});
}
],function(err,result){
if(!err){
console.log('獲取配置文件成功!');
} else{
console.log(err);
}
})