pomelo
简介
Pomelo 是基于 Node.js 的高性能、分布式游戏服务器框架。它包括基础的开发框架和相关的扩展组件(库和工具包),可以帮助你省去游戏开发枯燥中的重复劳动和底层逻辑的开发。Pomelo 不但适用于游戏服务器开发, 也可用于开发高实时 Web 应用,它的分布式架构可以使 Pomelo 比普通的实时 Web 框架扩展性更好。
资料
Pomelo API
GITHUB :Home-in-Chinese
Pomelo Framework
使用 WebStorm IDE 调试 Pomelo 应用程序
POMELO常用命令
init: 创建一个新项目,该项目中包含创建pomelo应用的基本文件及pomelo应用的简单示例。
start: 启动应用及服务器。
list: 列出当前应用开启的所有服务器的信息,包括服务器Id、服务器类型、pid、堆使用情况、启动时长。
stop: 关闭应用及服务器或者停止指定的服务器。
kill: 强制关闭应用及服务器。
add: 运行时动态添加服务器。
masterha: 当启用masterha高可用的时候,用来启动master服务器的slave节点。
–version:列出当前使用pomelo的版本信息。
–help:列出所有pomelo支持的命令及使用说明。
安装
准备
1.确保机器可以上网,因为安装过程中需要下载其依赖的包。
2.确保机器上已经安装Node运行环境。
3.虽然pomelo是用Javascript写成,但是pomelo依赖的库中,有使用了C++语言写的扩展,因此安装pomelo的过程中会使用到C++编译器。
注:如果你使用的是Mac OS X系统, 则需要安装Xcode Command Line Tools或者Xcode的完整包以及make工具.
安装pomelo
方法1:
$ npm install pomelo -g
方法2:
$ git clone https://github.com/NetEase/pomelo.git
$ cd pomelo
$ npm install -g
注:安装过程中如出现错误,可能是因为没有获取本机权限,在npm前加sudo,输入密码获取权限后即可正常安装。
HELLO POMELO
环境安装完成后,可在命令行中创建pomelo项目,代码:
$ pomelo init ./HelloWorld
新建项目后,安装项目依赖包:
$npm-install.bat
新项目结构如下:
该目录结构很清楚地展示了游戏项目的前后端分层结构,分别在各个目录下填写相关代码,即可快速开发游戏。
目录结构详解
1.game-server
game-server是用pomelo框架搭建的游戏服务器,以文件app.js作为入口,运行游戏的所有逻辑和功能。在接下来的开发中,所有游戏逻辑、功能、配置等都在该目录下进行。
app子目录
这个目录下放置所有的游戏服务器代码的地方,用户在这里实现不同类型的服务器,添加对应的Handler,Remote等等。
config子目录
game-server下config包括了游戏服务器的所有配置信息。配置信息以JSON文件的格式进行定义,包含有日志、master、server等服务器的配置信息。该目录还可以进行扩展,对数据库配置信息、地图信息和数值表等信息进行定义。总而言之,这里是放着所有游戏服务器相关的配置信息的地方。
logs子目录日志是项目中不可或缺的,可以对项目的运行情况进行很好的备份,也是系统运维的参考数据之一,logs存放了游戏服务器所有的日志信息。
2.shared
shared存放一些前后端、game-server与web-server共用代码,由于都是javascript代码,那么对于一些工具或者算法代码,就可以前后端共用,极大地提高了代码重用性。
web-server
web-server是用express 3.x框架搭建的web服务器,以文件app.js作为入口,当然开发者可以选择Nginx等其他web服务器。如果游戏的客户端不是web的话,如Android平台的话,这个目录就不是必须的了。当然,在这个例子中,我们的客户端是web,所以web服务器还是必须的。
启动
启动game-server服务器:
$ cd game-server$ pomelo start
启动web-server服务器:
$ cd web-server$ node app
注:在启动过程中可能会有端口号冲突导致启动不成功,只需在config里面修改使用的端口号即可
停止
$ pomelo stop
或者
$ pomelo kill
chat示例
chatofpomelo-websocket是在GITHUB上提供的一个pomelo实时聊天的demo,包含pomelo中比较重要的server服务器管理,demo功能强大、代码量很小,适合对pomelo的入门和原理理解,在项目的下载和安装教程中有较详细的项目功能及代码介绍。
总结
Pomelo作为高性能、分布式游戏服务器开发框架,针对其Network,请求、响应、广播、RPC、session 管理等构成了整个游戏框架,这种流程几乎涵盖了当前流行的所有游戏模式的和玩法的搭建,在学习过程中,最让我兴奋的是分布式架构带来的实时性和扩展性,让游戏可以在很少的代码量下发挥更大的游戏发展空间。
pomelo的更多相关文章
- 安装Pomelo 时遇到的坑
		
一.Pomelo相关的代码地址 https://github.com/NetEase,这里面包含比较多的项目. 2. https://github.com/NetEase/pomelo/wiki/%E ...
 - 用Pomelo 搭建一个简易的推送平台
		
前言 实际上,个人感觉,pomelo 目前提供的两个默认sioconnector和hybridconnector 使用的协议并不适合用于做手机推送平台,在pomelo的一份公开ppt里面,有提到过, ...
 - Pomelo:网易开源基于 Node.js 的游戏服务端框架
		
Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese
 - Skynet Pomelo Erlang Elixir 的认识
		
1.skynet pomelo(node.js) elixir(erlang) 周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于e ...
 - pomelo架构概览
		
pomelo之所以简单易用.功能全面,并且具有高可扩展性.可伸缩性等特点,这与它的技术选型和方案设计是密不可分的.在研究大量游戏引擎设计思路基础上,结合以往游戏开发的经验,确定了pomelo框架的设计 ...
 - 读pomelo的教程-2
		
下面从头到尾记录chat demo的Login的过程 client:点击login按钮,取得username和rid两个值 $("#login").click(function() ...
 - Windows安装pomelo过程
		
安装总要出点状况的.操作系统是win7 64bit. 为了保证顺利,打开的是VS2012命令行提示.运行 npm install -g pomelo 经过一系列输出,最后安装提示完成了.但是输入 po ...
 - 读pomelo的教程-1
		
pomelo教程的例子是一个聊天室,包括一个webserver客户端,和一个gameserver的pomelo服务器.这个例子挺好,一个聊天系统逻辑简单,还包括了用户管理,客户端request,服务器 ...
 - 选择学习Pomelo
		
我之前的项目都是基于http做网络通信,但是做多玩家同时对战的游戏,http短连接不支持服务器的push是个问题,这样客户端就没办法收到服务器的消息. 最简单的方法是定时发起request询问服务器, ...
 - pomelo windows 环境
		
1.先安装 Python; 通过Python 官网 http://www.python.org/getit/ 下载并安装最新版本. 然后将Python 的安装目录(如: C:\Program File ...
 
随机推荐
- @AutoWired使用
			
Spring MVC @autowired的使用: spring MVC使用注解配置方式相对于xml配置方式具有很多优势: 充分利用java的反射机制获取类的结构信息,这些信息可以减少配置的工作!Sp ...
 - 排序算法——交换排序(冒泡排序、快速排序)(java)
			
一.冒泡排序 时间复杂度:O(n^2) 公认最慢的排序,每次把最大/最小的放一边,原理: [57,68,59,52] [57,68,59,52] [57,59,68,52] [57,59,52,68] ...
 - Android学习笔记(不定时更新)
			
<2014-03-20>设置按钮的不同状态 1.res/ layout/ [文件名]myselector.xml 2.把两张不同的按钮图片放到drawable-xxxx文件夹里,mysel ...
 - ngrok原理浅析(转载)
			
之前在进行 微信Demo开发时曾用到过 ngrok这个强大的tunnel(隧道)工具,ngrok在其github官方页面上的自我诠释是 "introspected tunnels to lo ...
 - querySelectorAll 和 jQuery选择器
			
参考 http://xahlee.info/js/jquery_diff_querySelectorAll.html http://stackoverflow.com/questions/115035 ...
 - Good Luck in CET-4 Everybody!(博弈)
			
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
 - 发送请求工具—Advanced REST Client
			
Advanced REST Client是Chrome浏览器下的一个插件,通过它能够发送http.https.WebSocket请求.在Chrome商店下搜索Advanced REST Client, ...
 - TRIZ系列-创新原理-21-高速通过原理
			
高速通过原理,有的书也译为"降低有害作用的时间"原理,我比較倾向于叫高速通过原理,这个概念下,适用范围比較大些.高速通过原理的详细描写叙述例如以下:1)很高速的实施有害的或者有危急 ...
 - DevExpress ASP.NET 使用经验谈(5)-通过ASPxGridView实现CRUD操作
			
这节,我们将通过使用DevExpress的ASPxGridView控件,实现对数据的CRUD操作. 首先,我们在解决方案中,添加一个网站: 图一 添加新网站 图二 添加DevExpress.Data. ...
 - 【原创】ASP.NET Web开发,实现打印Log日志,步骤详解
			
添加Log需要四步: 一.引用log4net.dll,详见附件:http://pan.baidu.com/s/1c0hab2g 二.项目根目录下,添加 log4net.xml <?xml ver ...