游戏中下载配置文件方法

作者: 抓不住的风 | 来源:发表于2015-01-24 17:57 被阅读83次

    //游戏中下载配置文件方法  [建议复制粘贴成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);

    }

    })

    相关文章

      网友评论

        本文标题:游戏中下载配置文件方法

        本文链接:https://www.haomeiwen.com/subject/phqkxttx.html