码迷,mamicode.com
首页 > Web开发 > 详细

nodejs 打造 多人对战游戏服务器(初级入门)

时间:2017-09-18 10:48:12      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:target   script   null   lis   新手   error   定义   信息   use   

技术分享 使用socket.set 和 socket.get 在存取玩家信息

百牛信息技术bainiu.ltd整理发布于博客园

socket.get(‘playerinfo‘, function (err, player) {
            if(player == null) {
                console.log("[new player]",data.name);
                var player = new Player(socket, data);
            }
            else
            {
                 console.log("[wait player visit again]",data.name);
                socket.emit(‘error‘, "you have registered");
                return ;
            }
            socket.set(‘playerinfo‘, player, function () {
            usersWS.push(player);
            console.log("[wait player numer]",usersWS.length);
//这在里如果玩家状态和数量满足要求就可以开始游戏了
              Physic.CreatePhysicWorld(p1, p2);
//通知client 启动 游戏
         …………..
         }); //set
    }); //get
})    //socket.on

转发 和处理 玩家的输入

 socket.on(‘sync‘, function (data) {
    socket.get(‘playerinfo‘, function (err, player) {
            if(player != null) {
                //var target = usersWS[i].socket;
                var room = player.room;
                for(var i=0;i<room.players.length;i++)
                {
                       if(room.players[i].id ==player.id) 
                        {
                        //console.log("this is msg from id:",room.players[i].id) 
                        }
                        else
                        {
                        room.players[i].socket.emit(‘sync‘, data);
                        //console.log("send to id:",room.players[i].id)
                        }
                        //room.players[i].socket.emit(‘sync‘, data);
                }
            }//if
           else
           {
            socket.emit(‘error‘,"no session");
           } 
        }); //get
    }); //socket.on

}); //Network.on

定义一个简单的玩家对象

function Player(socket, data)
{
var newplayer = {
    socket: socket,
    id: player_next_id++,
    tankType: 0,
    name: data.name,
    isMain: data.isMain,
    ip: socket.remoteAddress,
    status: ‘未准备‘,

// isAI: false, room: null }; newplayer.proto = Player.prototype; return newplayer; }

定义一个游戏房间对象

function Room(title)
{
var newroom = {
    id: room_next_id++,
    is_in_game: false,            // 判断改房间的游戏是否已经开始
    players: [],
    map: 0,
    title: title,
    game: null
};
room_list.push(newroom);
newroom.__proto__ = Room.prototype;
return newroom;

}

最后感言: 本人是新手,发篇文章互动一下实属不易。不周之处,还望高手轻点儿拍砖。

nodejs 打造 多人对战游戏服务器(初级入门)

标签:target   script   null   lis   新手   error   定义   信息   use   

原文地址:http://www.cnblogs.com/bainiu/p/7541454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!