简介

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服务器:

  1. $ cd game-server
  2. $ pomelo start

启动web-server服务器:

  1. $ cd web-server
  2. $ node app

注:在启动过程中可能会有端口号冲突导致启动不成功,只需在config里面修改使用的端口号即可

停止

$ pomelo stop

或者

$ pomelo kill

chat示例

chatofpomelo-websocket是在GITHUB上提供的一个pomelo实时聊天的demo,包含pomelo中比较重要的server服务器管理,demo功能强大、代码量很小,适合对pomelo的入门和原理理解,在项目的下载和安装教程中有较详细的项目功能及代码介绍。

总结

Pomelo作为高性能、分布式游戏服务器开发框架,针对其Network,请求、响应、广播、RPC、session 管理等构成了整个游戏框架,这种流程几乎涵盖了当前流行的所有游戏模式的和玩法的搭建,在学习过程中,最让我兴奋的是分布式架构带来的实时性和扩展性,让游戏可以在很少的代码量下发挥更大的游戏发展空间。

pomelo的更多相关文章

  1. 安装Pomelo 时遇到的坑

    一.Pomelo相关的代码地址 https://github.com/NetEase,这里面包含比较多的项目. 2. https://github.com/NetEase/pomelo/wiki/%E ...

  2. 用Pomelo 搭建一个简易的推送平台

    前言 实际上,个人感觉,pomelo 目前提供的两个默认sioconnector和hybridconnector 使用的协议并不适合用于做手机推送平台,在pomelo的一份公开ppt里面,有提到过, ...

  3. Pomelo:网易开源基于 Node.js 的游戏服务端框架

    Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

  4. Skynet Pomelo Erlang Elixir 的认识

    1.skynet pomelo(node.js) elixir(erlang) 周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于e ...

  5. pomelo架构概览

    pomelo之所以简单易用.功能全面,并且具有高可扩展性.可伸缩性等特点,这与它的技术选型和方案设计是密不可分的.在研究大量游戏引擎设计思路基础上,结合以往游戏开发的经验,确定了pomelo框架的设计 ...

  6. 读pomelo的教程-2

    下面从头到尾记录chat demo的Login的过程 client:点击login按钮,取得username和rid两个值 $("#login").click(function() ...

  7. Windows安装pomelo过程

    安装总要出点状况的.操作系统是win7 64bit. 为了保证顺利,打开的是VS2012命令行提示.运行 npm install -g pomelo 经过一系列输出,最后安装提示完成了.但是输入 po ...

  8. 读pomelo的教程-1

    pomelo教程的例子是一个聊天室,包括一个webserver客户端,和一个gameserver的pomelo服务器.这个例子挺好,一个聊天系统逻辑简单,还包括了用户管理,客户端request,服务器 ...

  9. 选择学习Pomelo

    我之前的项目都是基于http做网络通信,但是做多玩家同时对战的游戏,http短连接不支持服务器的push是个问题,这样客户端就没办法收到服务器的消息. 最简单的方法是定时发起request询问服务器, ...

  10. pomelo windows 环境

    1.先安装 Python; 通过Python 官网 http://www.python.org/getit/ 下载并安装最新版本. 然后将Python 的安装目录(如: C:\Program File ...

随机推荐

  1. STL模板_map

    map -key - value -键值无法重复 multimap -键值可以重复 声明: -map<int, string> m -multimap<int, string> ...

  2. MFC的资源切换AFX_MANAGE_STATE(AfxGetStaticModuleState()

    转载自:http://blog.chinaunix.net/uid-20532101-id-1931929.html 以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的 ...

  3. yii2.0 从控制器到视图的输出

    在controllers/SiteController.php文件中,添加 public function actionSay($message = 'Hello') { return $this-& ...

  4. 数组序列的capacity及size函数

    #include<iostream>#include<vector>using namespace std;int main(){    vector<int> i ...

  5. ios 刷新BUG

    UItextView edited = yes  ; 导致 刷新奇怪: 有些方法不要自己调用: 可能会破坏组件自己的生命周期: 建议模块化开发组件,自己处理自己的事:

  6. python基础学习笔记1

    一.字符串: 1.不可变性.分片赋值对于字符串是不合法的. 2.字符串格式化 % eg: print 'The price is: %d' % 30 print 'The price is: %.2f ...

  7. 在PADS LAYOUT中如何隐藏不需要的鼠线?

    如下图示,将net GPR_0的鼠线隐藏. 鼠标右键,选择网络----选择你要隐藏的网络------右键选择view nets----点击对话框右边View List里你所选的网络-----在右下角t ...

  8. Protel99se教程一:建立一个数据库文件

    学习Protel99 SE的第一步,是建立一个DDB文件,也就是说,使用protel99se进行电路图和PCB设计,以及其它的数据,都存放在一个统一的DDB数据库中的 一.打开protel 99se后 ...

  9. 基于KVM建立虚拟机的步骤及总结说明

    1.前言 目前正在涉足云计算IaaS工作,虚拟化是IaaS的重要部分,因此这段时间对各个虚拟机化技术和工具进行研究,研究的目的不仅仅是为了会使用这个工具,而是通过研究了解技术的实现机制和原理,即知其然 ...

  10. nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException

    You should autowire interface AbstractManager instead of class MailManager. If you have different im ...