当前位置: 首页 > 软件库 > 程序开发 > 游戏开发包 >

Pomelo

网易游戏服务器开发框架
授权协议 MIT
开发语言 JavaScript
所属分类 程序开发、 游戏开发包
软件类型 开源软件
地区 国产
投 递 者 班承德
操作系统 跨平台
开源组织 网易
适用人群 未知
 软件概览

Pomelo 是由网易开发的基于 Node.js 开发的高性能、分布式游戏服务器框架, 也可作为高实时 Web 应用框架。

Pomelo

Pomelo的应用范围

pomelo最适合的应用领域是网页游戏、社交游戏、移动游戏的服务端,开发者会发现pomelo可以用如此少的代码达到强大的扩展性和伸缩性。当然还不仅仅是游戏,很多人断言未来的web时代是实时web应用的时代, 我们发现用pomelo开发高实时web应用也如此合适, 而且伸缩性比其它框架好。目前不推荐将pomelo用于大型的MMO rpg游戏开发,尤其是3d游戏, 还是需要象bigworld这样的商用引擎来支撑。

Pomelo的理念

pomelo的第一个理念是让游戏(高实时web应用)服务器的开发变得非常简单, 而不是解决某类算法或系统上的难题。这个设计理念跟rails是很类似的;第二个理念是重视性能和可伸缩性,用户用pomelo开发出来的游戏天生具有很强的伸缩性,扩展也很容易。我们在性能优化上也花了很多功夫,并且会持续进行;第三个理念是让第三方很容易扩展,框架用了很多插件式的设计, 组件component、路由规则、甚至管理控制台都可以完全由第三方扩展。

Pomelo的框架组成

pomelo包括三部分:

  • 框架, pomelo的核心, 与以往单进程的游戏框架不同, 它是高性能、分布式的游戏服务器框架,并且使用很简单

  • 库, 包括了开发游戏的常用工具库, 如人工智能(ai), 寻路, aoi等

  • 工具包, 包括管理控制台, 命令行工具, 压力测试工具等

pomelo特性

  • 快速、易上手的游戏开发模型和api

  • 高可伸缩的多进程架构, 支持MMO的场景分区和其它各类分区策略

  • 方便的服务器扩展机制,可快速扩展服务器类型和数量

  • 方便的请求、响应、广播、服务器通讯机制, 无需任何配置

  • 注重性能,在性能、可伸缩性上做了大量的测试、优化

  • 提供了较多扩展组件,包括游戏开发常用的库和工具包

  • 提供了完整的MMO demo代码(客户端html5),可以作为很好的开发参考

  • 基于socket.io开发,支持socket.io支持的多种语言客户端

为什么使用pomelo?

高并发、高实时的游戏服务器的开发是很复杂的工作。跟web应用一样, 一个好的开源容器或开发框架可以大大减少游戏开发的复杂性,让开发变得更加容易。
遗憾的是目前在游戏服务器开发领域一直没有太好的开源解决方案。 pomelo将填补这个空白, 打造一款完全开源的高性能(并发)游戏服务器框架。 pomelo的优势有以下几点:

  • 架构的可伸缩性好。 采用多进程单线程的运行架构,扩展服务器非常方便, node.js的网络io优势提供了高可伸缩性。

  • 使用非常容易, 开发模型与web应用的开发类似,基于convention over configuration的理念, 几乎零配置, api的设计也很精简, 很容易上手。

  • 框架的松耦合和可扩展性好, 遵循node.js微模块的原则, framework本身只有很少的代码,所有component、库、工具都可以用npm module的形式扩展进来。任何第三方都可以根据自己的需要开发自定义module。

  • 提供完整的开源MMO游戏demo参考(基于HTML 5)。 一个超过1万行代码的游戏demo,使开发者可以随时借鉴demo的设计与开发思路。

在线演示:http://pomelo.netease.com/demo.html

    • Pomelo 是网易基于Node.js开发的一套游戏服务器框架,具有简单易用、高性能、可伸缩、分布式多进程等特点。Pomelo 中包括了一个核心的网络基础开发框架和一系列工具和库,可以帮助开发者处理大量常见的、重复的底层及网络相关逻辑,使开发者可以更多的去专注于游戏逻辑处理,从而提高开发效率。因笔者近期参与一个 Pomelo 项目,特推出 Pomelo 系列文章,以做学习整理。 Pomelo 构成

    • 前端服务器 connector pomelo是按约定来编程的,是微内核+插件实现方式。按照网络服务器流程,首先需要监听、绑定主机和端口,才有连接进来,连接建立后才有数据收发和编码解码。 connector是Pomelo的一个组件,俗称前端服务器。connector的网络处理是基于事件的,这也符合node.js的设计。connector是一个component,根据pomelo约定,componen

    • 最近发现了一个比较好玩的东西pomelo。地址:点击打开链接 这个东西是网易开发的一套基于node.js的高性能,分布式游戏服务器框架。这套框架不仅可以用来开发游戏服务器,也可用于开发高实时web应用。 去看pomelo的wiki,有点小小的吃惊了。第一次见到国内的开源项目有这么详细的文档。虽然某些说明文档里还有些小误差,但整体而言,能看出是用了心在做这个东西。 网易的云风大神,不知道英文名叫什么

    • 会话Session Session会话是指一个客户端连接的抽象,Pomelo框架中有三个session会话的概念分别是Session、FrontendSession、BackendSession。 会话字段结构 { id:<session id>//readonly frontendId: <frontend server id> //readonly uid: <bound uid>

    • 之前一直用pm2管理nodejs项目和pomelo项目,直到前天我用pm2启动pomelo项目之后,pm2下面的所有项目全部挂掉了。 于是老大一气之下不准我用pm2管理pomelo项目了,我至今不知道为什么会导致这样。于是昨天自己看下pomelo 的命令行,虽然命令行不多,但是坑还是有很多的。 1,pomelo的启动 pomelo start -e development | production

    • 前面的文章已经讲过了pomelo框架是如何进行rpc调用的,不过主要涉及到的是客户端方面,例如rpc调用的消息格式等。。。那么这篇文章就来讲讲rpc的server部分究竟是怎么运行的。。。 在开始之前,我们先来看看pomelo的配置信息: {"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "clientPort": 3050,

    • Pomelo中有四种消息类型的消息,分别是request、response、notify、push。 Pomelo客户端和服务器之间的通讯方式分为三种形式 request/response请求响应是一组,由服务器接收客户端request请求,处理完逻辑后做出response响应。 Pomelo中最常见的场景是Request/Response模式,客户端发送请求服务器异步响应。客户端的请求发送形式类

    • https://github.com/koalaylj/pomelo-client-proto-test  pomelo客户端测试工具 Failed at the toobusy@0.2.2 install script.(rm -rf ~/.node-gyp and npm cache clean, then try again.) //buff转字节数组 Buffer.prototype.to

    • 连接组件connection connection连接组件是一个功能相对简单的组件,仅被前端服务器加载,为connectionService连接服务提供一个组件包装。 connection连接组件主要进行连接的统计,当连接组件接收到客户端连接请求时、客户端离线时、用户登录下线等情况都会向其汇报。 连接服务connectionService 获取连接服务 const connectionServic

    •                 一 连接流程 client到gate服务器获取connector服务器的ip和port; 二 通讯类型 client和server通讯分三种: 1 request - response 客户端发送请求, 服务器异步响应。 方法: pomelo.request(url, msg, callback); 参数: url: 请求地址, 完整地址三个部分: 服务器类型、 服

    • 配置文件 $ vim /game-server/config/mysql.json { "development": { "host": "127.0.0.1", "port": 3306, "user": "root", "password":"root", "charset": "utf8mb4", "database": "pomelo"

    • 在使用pomelo的RPC功能时,由于不清楚它的尿性,最后的回调没有传入,导致一个问题 服务器上总是有 rpc request timeout rpc callback timeout 的错误输出。但是却不影响业务,于是去代码里面搜索 在mailbox那个文件中有这个输出 原因是在每个rpc调用的时候会设置一个callback的timeout。 若是在这个timeout内没有调用callback,

    • 创建Pomelo应用后,可以在game-server/app.js文件中对应用做一些配置。包括配置每个组件选项配置、加载配置文件、启用/禁用Pomelo特性等框架配置。 app.js文件 app.configure() - 配置服务器 访问上下文变量 禁用/启用特性 加载配置文件 加载组件 配置路由 配置过滤器 配置模块 服务器配置文件 1. app.js文件 app.js文件是Pomelo应用的

    • 今天开始跟着金大牛看基于Nel的网络游戏开发。死胖子推荐了Nel网络游戏的开源项目:一个是轻量级的Pomelo,另一个是ryzom。 鉴于pomelo有中文文档因此,先学习这个了就。 首先了解了一下pomelo的架构:首先它选择了node.js 作为服务端开发基础,这除了node.js的可扩展性还有其它一些优势。当然还介绍了下游戏服务器和web服务器的区别。 然后就是试着安装, 首先安装pytho

    • Pomelo源码及wiki网址:https://github.com/NetEase/pomelo 在中文wiki中有两种安装方式:  第一种是: npm install pomelo -g         cd /home/server  #目录可以自定义 第二种是: git clone https://github.com/NetEase/pomelo.git cd pomelo npm

    • pomelo是网易出的一款网游服务器框架,使用nodejs编写。网址:http://pomelo.netease.com/ ,github:https://github.com/NetEase/pomelo。兼容多种客户端,我使用的是unity作为客户端,官方建议使用libpomelo2作为客户端插件,本人实际测试,libpomelo2不太适合作为unity的客户端插件,调试的时候经常卡死unit

    • 前面的一片文章分析了master服务器的启动: 主要就是载入和启动组件,而且master的具体工作还是在其的console,对于master究竟在干些什么东西,并没有看的太多,以后涉及到了再细看吧。。那么这篇文章就来看看其余的server是怎么启动的,顺便还要看看他们是怎么进行工作的。。。。 好吧,还是首先从application的创建开始吧: Pomelo.createApp = functio

    • 日志管理 pomelo 日志是通过 pomelo-logger 模块来管理的,pomelo-logger 是对 log4js 的简单封装,并提供了一些非常有用的 feature。 日志是通过 category 来进行管理与维护的,可以在log4js.json文件中进行配置 { "appenders": [ { "type": "console" }, {

    • 1、---------------------------------------------------------- pomelo目前提供了hybridconnector和sioconnector,其中hybridconnector支持socket(TCP)和websocket,sioconnector支持socket.io(websocket的封装)。 sioconnector使用socke

    • 声明:本人纯服务器开发新手菜鸟,分析的不一定正确,分析的也没啥技术含量,主要是mysql的使用比较分散,集中到一起给新手看着省事,也可能会误导大家,自己小心点。 准备工作: 1.先创建mysql.json配置文件,里面放数据库名子 帐号密码端口。 2.用mysql命令行创建个跟配置文件中名字相同的数据库,然后创建个表,启动数据库。 3.npm install mysql,npm install g

    • route是用来标识一个具体服务或客户端接受服务端推送消息的位置,对服务器来说,其形式一般是:chat.chatHandler.send,其中chat是服务器类型,chatHandler是chat服务器中定义的一个Handler,send则是这个Handler中的一个handler方法。 对客户端来说,其路由形式一般为onXXX,当服务端请求到达后,前端服务器会将用户客户端请求派发到后端服务器,这

     相关资料
    • 已寄,发个面经攒攒人品 9.6 一面 40min 手撕了六道题(包括改错、选择、填空、算法),无八股。 9.8 二面 50min 纯八股拷打,无手撕 1.docker的运行原理是什么?(操作系统层面) 2.docker如何做到资源的隔离?隔离了哪些资源 3.docker如何分配各个服务(容器)的占用的资源? 4.Linux的内存布局?每一个段的作用是什么?用于分配哪些资源? 5.new/mallo

    • 技术面面完了,一个小时 1、自我介绍 2、项目介绍,介绍了简历上的一个高并发内存池项目,说的磕磕巴巴的 3、介绍其它几个项目 4、用哪几种语言,C++与Python的区别 5、面向对象三大特性,就让我我介绍了一下,我还以为要问多态中的 6、进程地址空间中的有哪些分区,堆栈、代码、常量、共享内存 7、进程间如何通信,共享内存忘说了 8、网络的那些UDP/TCP,我没学过直接说不会 9、哪些数据结构,

    • 1.自我介绍 2.算法题:8位数字首位相连成一个环,每位数字都是0或者1,输入一个8位数字,每次可以将一位翻转, 翻转时,这一位的前后各一位也会同时翻转,求最少的翻转次数,能够将输入的8位数转换为全0 3.实习相关项目介绍 4.项目相关问题 5.协程 6.reactor 剩下记不住了 #友塔游戏##C/C++##面经一面面经##游戏开发#

    • 第一部分测试常规八股 一道简单编程,求CPU占用最长时间。 复杂编程,吃豆子。 游戏场景用例设计 综合题(20分):日志处理。 总体来看,设计的很测试,符合测试试卷。整的挺好的,感觉是为测试专门设计的很不错。 345比较耗时间,建议先做4在做5最后3.如果是编程大佬可以直接做3。45的问题主要是要打很多字,题干比较长,读的累。当然3题干也蛮长的。过了20%,最后没AC,浪费了点时间没写完5,写了伪

    • nebula3 是一个游戏引擎和开发框架,可移植的特性支持多平台,包括 iPhone。 http://code.google.com/p/nebula3-engine/

    • 我试图建立一个通用服务器总是在连接的客户端。 该体系结构由4个主要组件组成 有状态应用程序服务器 工艺流程 客户端连接到网关 我正在使用JavaNetty作为网关。appserver也是用Java编写的。 我很想说这个设计像Mongrel2,但我不能完全确定。我想说,这更符合城市飞艇氦边缘服务器的设计(http://urbanairship.com/blog/2010/08/24/c500k-in

    • 太菜了,完全没想到能过网易雷火笔试,笔试题难到ma都不认识,面试官问我为什么不复习mysql,实不相瞒我已经转到嵌入式开发的赛道了哈哈哈 面试官的意思是游戏研发大家在学校很那接触,所以更关注基础知识的掌握,大家加油! 题目1: 概率问题,比较简单 题目二: C++类对象大小,主要是虚函数表、菱形继承、虚拟继承 题目三:不会哈哈哈哈 数据库,两个表联合查询,结果排序 题目四: 小顶堆建堆过程+中序遍

    • 一面 自我介绍 进程和线程的区别 上下文切换? 快排 链表、二叉树、哈希表的特点 项目中的难点 最大的收获 对游戏后端开发的了解 对游戏行业的了解 反问: 技术栈(需要转 Erlang,C++和 lua 实现帧同步) 二面拒 #诗悦网络##秋招#