使用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 打造 多人对战游戏服务器(初级入门)
原文地址:http://www.cnblogs.com/bainiu/p/7541454.html