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

谢骋超介绍网易自研游戏服务器开发框架pomelo的起源、发展历程、特性和应用领域,强调其简单易用性和高效性能。此外,文章讨论了与类似框架的对比,指出pomelo的独特优势,并提供了学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

被采访者介绍:

\

谢骋超,网易杭州研究高级程序专家,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折优惠。

pomelo 是由网易开发的基于node.js开发的高性能、分布式游戏服务器框架, 也可作为高实时web应用框架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 标签:开发框架  游戏框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值