网易NodeJS开源游戏框架pomelo访谈

标签: 网易 nodejs 开源游戏 | 发表时间:2012-11-20 15:30 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

被采访者介绍:

谢骋超,网易杭州研究高级程序专家,2006年浙江大学硕士毕业后加入网易,参与过网易博客开发,主持过博客圈子,及开放平台等开发,2年前转向游戏开发领域。 专注于服务端开发技术,对高性能高并发网站(游戏)的架构设计、调优有较丰富经验。 对node.js与java开发有丰富的经验。目前是pomelo开源游戏框架负责人。微博: @圈圈套圈圈 twitter: @xiecc

谢骋超曾在9月份的 HuJS活动中分享过“Node.js游戏服务器开发 ”的话题。目前他准备对相关研究成果pomelo框架进行开源发布,InfoQ对其进行了专访。

InfoQ:能不能介绍一下pomelo的起因及发展历程?

从2011年下半年开始, 我们在游戏开发上有了些积累,希望在游戏服务器上有更前沿的研究,在技术选型时我们比较了erlang, node.js,java等多种语言,发现node很适合做开发游戏服务器,它的事件IO模型与单线程应用模型跟游戏服务器简直是绝配。于是在2011年11月, 我们正式立项并取名项目为pomelo。

项目的开发经历了原型、框架开发、demo开发,性能优化, 不断重构、调优、整理等几个阶段。

我们的原型开发只经历了一个月, 当时做了个很简单的捡宝游戏; 框架的抽取和开发是项目最难的阶段, 要定义抽象出框架模型很难, 而且我们是多进程的应用框架, 完全没有蓝本参考, 到了2012年4月终于完成了框架雏形;之后的demo开发比较快, 我们用了一个半月时间就搭建了一个HTML5客户端的网页版的MMORPG, 并在6月底的node party上小试牛刀了一把;然后我们用了两个月时间做压力测试和性能调优,做了一些性能优化的工具,并把遇到的性能瓶颈都解决了;到了9月之后我们的主要工作就是重构、文档, 不断地优化接口,并在11月20日左右开源我们的框架。

InfoQ:给这个框架命名为“pomelo”的含义是什么?它有什么特点?

pomelo的中文含义是柚子, 当时是想借某水果公司的光环,而且这个名字够短, 读起来也有点酷酷的感觉。我们的logo是切成两半的柚子, 代表着分享、开源。

pomelo包含了框架、工具集、库三部分。它最大的特点是将易用性和可伸缩性结合得非常好,我们会发现写一个非常复杂的多进程游戏运行架构只需要很少的代码。

InfoQ:请介绍一下pomelo在网易的使用情况吧。另外你觉得它最适合的应用领域是什么?

pomelo到现在为止刚刚一年,刚刚可以使用,目前公司内部的一些团队正在试用, 但还没有在网易线上的游戏中使用。 它最适合的应用领域是网页游戏、社交游戏、移动游戏的服务端,开发者会发现pomelo可以用如此少的代码达到强大的扩展性和伸缩性。 当然还不仅仅是游戏,很多人断言未来的web时代是实时web应用的时代, 我们发现用pomelo开发高实时web应用也如此合适, 而且伸缩性比其它框架好。

我们不推荐将pomelo用于大型的MMO rpg游戏开发,尤其是3d游戏, 还是需要象bigworld这样的商用引擎来支撑。

InfoQ:pomelo面向的群体是哪些人?要掌握其使用需要哪些技能?有哪些资源可供开发者学习和应用?

pomelo面向的群体是国内外网页、移动、社交游戏的开发团队,或开发高实时web应用的团队,即使以前没有游戏开发的经验,通过简单的学习也很容易上手。

pomelo的目标是让本来游戏开发经验不多的人能迅速上手开发游戏,而且做出的游戏天然有很强的扩展性和可伸缩性,可直接在产品环境上跑,而不象一些游戏教程只能做出支撑很少在线用户。

开发者需要掌握javascript和node.js的开发知识, 也要学习一下pomelo框架。幸好这几项技术都比较容易上手, node.js的异步事件io需要一点点时间适应, 但这样的学习完全是值的。

node.js的学习可以去node.js官网: nodej.org,cnode社区 cnodej.orginfoq的node社区内容也不错, howtonode是个不错的学习博客,只是最近更新稍慢。

pomelo的学习可以去我们的 wiki, pomelo的 官方网站,和pomelo的 github

InfoQ:现在有没有和pomelo类似的框架?能否请比较一下他们的优势与劣势?

目前没有发现与pomelo完全类似的框架, 尤其将多进程应用架构和服务器扩展做的这么简单,属完全创新。

游戏服务器框架在社区范围里乏善可陈, SmartfoxServer算是一个不错的了,但它是商用的,而且它是基于jvm的单进程架构,可伸缩也打了折扣。

Bigworld则是很强大的商用3d游戏引擎(涵盖服务端、客户端)。Bigworld更适合大规模的游戏开发,但时间,复杂度,成本等比较高。pomelo的优势是开源,简单,快速开发,可以让使用者很快地开发出并发布他们自己的游戏,并能很灵活地规划调整服务器资源,支撑的游戏类型和规模也不错。

在高实时web应用领域,有derby,meteor, SocketStream, 但跟pomelo的关注点很不一样,它们基本都是单进程架构,核心关注点是web应用的实时数据同步。

InfoQ:能否讲讲关于pomelo的理念及实现?

pomelo的第一个理念是让游戏(高实时web应用)服务器的开发变得非常简单, 而不是解决某类算法或系统上的难题。这个设计理念跟rails是很类似的。

第二个理念是重视性能和可伸缩性,用户用pomelo开发出来的游戏天生具有很强的伸缩性,扩展也很容易。我们在性能优化上也花了很多功夫,并且会持续进行。

第三个理念是让第三方很容易扩展,框架用了很多插件式的设计, 组件component、路由规则、甚至管理控制台都可以完全由第三方扩展。

InfoQ:我们注意到pomelo已经准备好了项目英文站点,是打算将pomelo做全球推广吗?

是的, 我们认为目前的开源产品必须走国际化的路线,目前国外的开源环境也比国内好。况且node社区和github是非常活跃的社区, 通过与国外开发者的沟通和交互,可以使我们最快地完善我们的开源框架。

另外,我们的设计理念和架构在国际社区里也是领先的,可以去国际开源社区试一试。

InfoQ:最后一个问题,有没有什么意见或者建议给转用Node的开发者?

首先, 对于非node的开发者,建议无论如何看一看node的开发模型,了解一下,也许哪天你就会用到;异步编程也没那么可怕,很多关于异步代码太丑, 甚至异步反人性的言论, 只是因为他们还没有深入去用,用node完全可以写出很漂亮的代码。

对于node的开发者,

一、多看资料,多实践 。对于入门学习的,可以看node.js in action等书籍,如果过了入门阶段,建议去mailing list或youtube上看视频可以学到更深入的内容。

二、多来社区交流, node社区, cnode社区,node party,jsconf中国(今年叫沪js,明年可能叫京js),github,沟通很重要。

谢骋超之后会对pomelo框架的技术细节做详尽解析。请关注InfoQ的后续技术文章。

另外, QCon北京2013亦与时俱进,新增了Node专场。Node现在到底只吸引了眼球,还是在企业中已经成熟落地广为应用?敬请关注此次QCon,聆听诸多一线专家在各个场景应用Node的经验。11月25日前报名,可享6折优惠。

您可能也会喜欢

相关 [网易 nodejs 开源游戏] 推荐:

网易NodeJS开源游戏框架pomelo访谈

- - InfoQ cn
谢骋超,网易杭州研究高级程序专家,2006年浙江大学硕士毕业后加入网易,参与过网易博客开发,主持过博客圈子,及开放平台等开发,2年前转向游戏开发领域. 专注于服务端开发技术,对高性能高并发网站(游戏)的架构设计、调优有较丰富经验. 对node.js与java开发有丰富的经验. 目前是pomelo开源游戏框架负责人.

nodejs快速入门

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
主要介绍了一下node.js的发展, 现状, 安装, 使用.

NodeJS学习笔记

- - Web前端 - ITeye博客
今天开始学习NodeJS,在这里做个笔记,记录一下我的学习历程,也方便以后参考. Node.js® 是一个基于  Chrome V8 引擎 的 JavaScript 运行时. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.

NodeJS与Mysql的交互

- - CSDN博客推荐文章
把Mysql Module装到 NodeJS中.   JS脚本 mysqlTest.js. //加载mysql Module  .   //要创建的数据库名  .     //要创建的表名  . 作者:qxs965266509 发表于2013-8-17 9:47:35 原文链接. 阅读:0 评论:0 查看评论.

[译]你不知道的NodeJS

- - 掘金前端
更新:这篇文章现在是我的书《Node.js进阶》的一部分. 在 jscomplete.com/node-beyond…中阅读此内容的更新版本以及有关Node.js的更多信息. 在今年的Forward.js会议(关于JavaScript的会议)上,我分享了题为“你不知道的NodeJS”的演讲. 在那次演讲中,我向观众提出了一系列有关Nodejs运行时的问题,大多数有技术背景的观众无法回答其中大多数问题.

nodejs web开发入门: Simple-TODO Nodejs 实现版

- Aleafs - CNode社区
看到simple todo的各种python版本实现, 我也来凑凑热闹…. 既然已经有这么多python版本了, 我就对比实现了一个Simple-TODO的nodejs版本: Node TODO, 模版和樣式全部copy自web.py版本.. 源代码: https://github.com/fengmk2/todo.

無痛安裝 NodeJS 和 Node Framework Express

- Hming - 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
直接到官網下載 Stable 的版本吧,目前是 node-v0.4.10.tar.gz,也可以先看看 API Document. 安裝 Ububtu 相關套件. 下面會使用最原始的編譯方式,所以必須安裝 g++ 套件,否則下 ./configure 的時候,會吐出來沒有安裝過的套件. 兩種方法:1.用 apt-get install nodejs 2.

nodejs-post文件上传原理详解

- never-online - CNode社区
浅谈HTTP中Get与Post的区别. 其中请求报文中的开始行和首部行包含了常见的各种信息,比如http协议版本,方法(GET/POST),accept-language,cookie等等. 而’实体主体’一般在post中使用,比如我们用表单上传文件,文件数据就是在这个’实体主体’当中. 写这篇教程的起因是因为在学习nodejs的过程中,想要自己实现一些文件上传的功能,于是不得不去研究POST.

eclipse配置nodejs开发环境

- - CSDN博客云计算推荐文章
首先说明一下本人的开发环境,个人兴趣爱好问题,这边使用的很多环境都是基于Linux系统下做的,这次也不例外. 前提条件:NodeJs已经在系统中正确安装. 1、下载安装eclipse,地址: http://www.eclipse.org/downloads/. Eclipse Standard 版本即可.

nodejs上HTML分析利器node-jquery

- - 博客园_首页
      首先描述产生这篇随笔的场景:我需要获取项目在jenkins构建的最新Javascript Coverage显示在供管理层次查看的项目情况Report上,但是由于jenkins没有直接的API取得数据所需数据,所以我们只能从自建的容器发布Javascript Coverage数据API,供Report项目使用.