nodejs 打造 多人对战游戏服务器(初级入门)
使用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 打造 多人对战游戏服务器(初级入门)的更多相关文章
- 用NodeJS打造多人在线聊天室(NodeJS & SocketIO & Express & EJS & MongoDB & Gulp)
项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概是做出类似QQ的在线聊天系统.想要在线体验可以点击在线演示. 项目使用PM2进行部署和管理,功能在不断的迭代开发中.如果你觉得这个项目比较有 ...
- 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
2013年04月19日 14:09:37 MJiao 阅读数:4614 深入浅出node.js游戏服务器开发1——基础架构与框架介绍 游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...
- nodejs开发游戏服务器遇到的性能问题
问题描述: 使用nodejs开发了一个游戏服务器,为了尽可能提高服务器的性能,服务器采用多进程的架构,前面处理玩家socket连接的是多个nodejs进程,使用 child_process 模块,服务 ...
- 类似于QQ游戏百万人同时在线的服务器架构实现
http://blog.csdn.net/sodme/article/details/213995 —————————————————————————————————————————————————— ...
- unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计
unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计 最近做玩票性质的游戏项目,客户端技术是 unity3d 和 android. ...
- Pomelo分布式游戏服务器框架
Pomelo介绍&入门 目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json ...
- FPS游戏服务器设计的问题 【转】
一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击游戏),你是要用TCP呢还是要用UDP,说明理由 . 二.学习 这是两篇网上找到的文章,写非常不错. 当时笔试的时 ...
- (转)FPS游戏服务器设计的问题
FPS游戏服务器设计的问题出处:http://www.byteedu.com/thread-20-1-1.html一.追溯 去gameloft笔试,有一个题目是说: 叫你去设计一个FPS(第一人称射击 ...
- Centos环境下部署游戏服务器-常用命令
图1 在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...
随机推荐
- TOT 傅立叶变换 FFT 入门
HDU 1402,计算很大的两个数相乘. FFT 只要78ms,这里: 一些FFT 入门资料:http://wenku.baidu.com/view/8bfb0bd476a20029bd642d85. ...
- luogu P2085 最小函数值
题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个 ...
- K8S label 操作
在部署完成 node 节点集群之后,为了更灵活的操控 node 节点,有时候需要对 node 节点进行对各个 node 节点进行 lable 标签标记. 查看各个节点的信息 [root@porxy02 ...
- [scrapy]Item Loders
Items Items就是结构化数据的模块,相当于字典,比如定义一个{"title":"","author":""},i ...
- C语言枚举类型(Enum)
在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...
- 具体解释window.history
Window.history保存用户在一个会话期间的站点訪问记录,用户每次訪问一个新的URL即创建一个新的历史记录. history.go().history.back().history.forwa ...
- C语言的代码内存布局具体解释
一个程序本质上都是由 BSS 段.data段.text段三个组成的.这种概念在当前的计算机程序设计中是非常重要的一个基本概念,并且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统执行时的内存大小分配, ...
- swift,demo,ios8
swift交流群:342581988,欢迎增加. 刚刚写的小 demo.搞得还是不是太好.请大家拍砖! 能够直接复制执行 import UIKit class ViewController: UIVi ...
- YII RBAC基于角色的访问控制
基于角色的访问控制( Role-Based Access Control ),是一种简单的而又强大的集中访问控制.基于Yii Framework 的 authManager 组件实现了分等级的 RBA ...
- RAC改动归档文件夹
逐个节点改动 关闭全部节点,启动单节点(rac1)到mount状态 SQL> startup mount; 改动server參数配置 SQL> alter system set clust ...