There was an error while loading. Please reload this page.
Pomelo是为了实现一个多进程,单线程的符合大型游戏开发的基于node的轻量级游戏框架。
该框架的总体架构如下图:
该框架启动的模型如下图:
在使用pomelo进行游戏开发时,game-server目录中的app.js是整个游戏服务器的入口,pomelo的启动也是从app.js的运行进入。app.js创建项目并启动的代码如下:
var pomelo = require('pomelo'); var app = pomelo.createApp(); app.set('name', 'nameofproject'); app.set('dirname', __dirname); app.defaultConfiguration(); app.start();
从上面的代码可以看出,用户首先需要在项目中引入pomelo,然后创建application,接着完成一些基本的应用配置,最后应用就可以启动了。当app.js运行起来后,pomelo会根据游戏的配置启动不同的服务器及相关组件。
在启动应用后,首先会加载组件,组件主要包括:handler, filter, master, monitor, proxy, remote, server, sync, connection。组件是连接pomelo和pomelo相关依赖库的桥梁,不同的服务器会选择性加载不同的组件;用户可以根据应用的需求,对不同服务器进行配置从而加载不同的组件,另外用户可以自己开发组件。
组件同时是具有生命周期的,其生命周期可以包括before start, start, after start, stop等。在组件中可以定义这些方法,应用服务器会在不同的运行阶段执行组件不同生命周期的方法。
master服务器首先会加载master组件,在master组件中会启动master服务器。当master服务器启动后,它首先会启动系统的adminConsole,然后根据用户的配置启动其它所有的服务器。其它服务器的启动过程和master服务器一样,从app.js进入,然后加载对应的组件,最后完成启动。