文件名称:通用网络游戏通讯平台
文件大小:1.08MB
文件格式:GZ
更新时间:2014-12-16 09:51:47
游戏服务器后台开发 C++
BS.Play 是一套开放源代码的通用网络游戏通讯平台,目的用于快速构建高效稳定的可扩展网络游戏 通讯模型。 BS.Play 遵守 GPLv3 协议,您可以免费获取、修改源代码,将项目应用于生产环境中。您可以提交 bug、修改意见、新功能需求到开发团队,也可以加入开发团队与我们一起为其工作。 目前 BS.Play 为 BS.Group 团队开发维护,并应用于其它商业项目中。 BS.Play 提供 AS3 的客户端 API,完成和 libcomoroclient 同样的功能。由于 BS.Play 非常适合制作 Flash 联机网络游戏,所以 AS3 的 API 也是比较完整的,同时登录服务器也提供了对安全砂箱的支 持,可以在最新的 Flash Player 上正常使用所有网络功能。 BS.Play 支持 LUA 编写的游戏逻辑脚本。LUA 是一种轻巧、高效的嵌入式脚本语言,非常适合于编 写复杂的配置参数和逻辑计算过程。所有的脚本由 Center Server 负责执行,服务器提供了对 LUA 语言本身的扩展,使其支持对内存存储池的直接读写、定时器、网络数据发送、数据库操作等功能。 尤其是,LUA 逻辑脚本可以在 Center Server 不停机的状态下实现动态重载,这给临时修改游戏逻辑 和参数提供了非常大的方便条件。 BS.Play 的核心服务器部分 Comoro ,运行于*NIX 平台上,使用 C 语言开发,采用单进程静态多线程的事件 驱动模型,可以作为普通应用程序和守护进程执行。 Comoro 可以分别部署为 Coin Server、Login Server、Base Server 和 Center Server,在小规模实现中,Base Server 和 Center Server 可以合并在一起。 Coin Server 用来对外提供虚拟币的查询和转账接口,通过标准的HTTP方式操作,Banker(包括游戏的虚拟币源及各级代理)可以向下级代理或游戏用户转账。 Login Server 用来处理用户的登录操作,完成用户登录验证、session 生成、服务器列表及状态反馈 等工作,并可以为 Flash 客户端提供安全砂箱。 Base Server 为基础的连接服务,提供所有客户端通讯连接,目前支持 TCP 协议,Base Server 会 提供安全有效的简单加密连接,并对所有命令做完整性校验。 Center Server 为 Comoro 的核心逻辑服务器,一个或多个 Base Server 可以连接在其上,将客户端 的命令及参数转发,由 Center Server 将客户端数据作为输入送入由 LUA 编写的逻辑脚本中执行, 并将脚本的执行结果反馈回 Base Server。Center Server 中包含基于用户的数据存储池、LUA 状态 机,并提供逻辑脚本对 MySQL 数据库的操作能力。同时,Center Server 中包含一个嵌入式的 WebServer,用于服务器状态的查看、控制,也可以作为普通的 WebServer 提供 HTTP 服务。 Login Server、Base Server 和 Center Server 由一种叫做 Bridge 的机制连接在一起。通常一个完整 的实现中包括一个 Login Server,一个 Center Server 和若干的 Base Server。Base Server 的数量 可以根据需要增减,或者将唯一的 Base Server 和 Center Server 通过非网络连接的 Bridge 绑定在 一起,提供最大程度的灵活伸缩性。
【文件预览】:
Comoro
----autogen.sh(4KB)
----preinstall_scripts()
--------bspd.conf.in(2KB)
--------db.sql(3KB)
--------bspd.conf.in~(1KB)
--------db.sql~(3KB)
--------demo_runner()
----config.guess(44KB)
----configure.ac.bak(6KB)
----config.sub(33KB)
----AUTHORS(64B)
----COPYING(34KB)
----libcomoroclient()
--------test.c(3KB)
--------comoro.h(3KB)
--------Makefile.am(183B)
--------comoro.c(12KB)
--------Makefile.am.bak(171B)
--------Makefile.in(17KB)
----aclocal.m4(312KB)
----INSTALL(12KB)
----autom4te.cache()
--------traces.0(36KB)
--------requests(3KB)
--------output.0(425KB)
----install-sh(13KB)
----Makefile.am(448B)
----configure(423KB)
----missing(11KB)
----test()
--------bench_mark()
--------flash_client()
----depcomp(18KB)
----config.h.in(2KB)
----client_api()
--------actionscript3()
--------python()
----NEWS(57B)
----comoro.anjuta(1KB)
----Makefile.am.bak(446B)
----configure.ac(6KB)
----TODO.tasks(161B)
----comoro()
--------center.h(2KB)
--------base.h(2KB)
--------func.h(2KB)
--------log.h(1KB)
--------db_mysql.c(7KB)
--------status.c(12KB)
--------bridge.c(8KB)
--------coin.h(1KB)
--------conf.h(2KB)
--------bspd.h(3KB)
--------libcomoroclient()
--------bspd.c(7KB)
--------login.c(12KB)
--------center.c(12KB)
--------Makefile.am(722B)
--------runner.c(10KB)
--------db_mysql.h(2KB)
--------func.c(13KB)
--------conn.h(5KB)
--------runner.h(2KB)
--------mempool.h(4KB)
--------queue.c(6KB)
--------package.h(2KB)
--------bridge.h(2KB)
--------coin.c(15KB)
--------package.c(9KB)
--------Makefile.am.bak(711B)
--------base.c(12KB)
--------.cvsignore(132B)
--------conn.c(25KB)
--------queue.h(2KB)
--------thread.c(6KB)
--------Makefile.in(17KB)
--------login.h(2KB)
--------conf.c(10KB)
--------log.c(2KB)
--------status.h(2KB)
--------thread.h(2KB)
--------mempool.c(15KB)
----doc.pdf(686KB)
----Makefile.in(25KB)
----README(199B)
----ltmain.sh(238KB)
----ChangeLog(3KB)
----status_files()
--------LOOP_BASE.tpl(2KB)
--------LOOP_RUNNER.tpl(536B)
--------INDEX.tpl(5KB)