Sun game server ,
简称
(sgs)
是
sun
公司的一个开源项目
,
主要目标是针对
mmo
游戏的服务器端开发
.
最初是从
Nighthaven
的博客文章
(http://nighthaven.iteye.com/blog/181431
)
上了解到
sgs
项目
,
在大致了解了一下它提供的功能后
,
对其发生了兴趣
,
经过一段时间的研究
,
有了一些心得
.
下面就是这些心得的一个总结
,
最后提供一个使用
sgs
做服务器的对战俄罗斯
.
SGS
提供的主要功能
:
<!---->l
<!---->服务器端的扩展
:
传统的扩展方法是将整个游戏区域分成多个区
,
不同的区运行在不同的游戏服务器上
.
这带来两个问题
,
一个是处于不同区的玩家不能互相交互
,
另外一个是如果某个区发生的动作较少时
,
会出现服务器资源未被充分利用的情况
.
而在
sgs
的处理方式下
,
所有的处理被分割成为一个个小的执行单元
(
称为
task),
这些
task
可以在组成网络的任何
sgs
服务器上执行
,
当用户增加时
,
系统自动增加处理线程
,
不再需要为了扩展而将不同的区分配到不同的服务器上面
.
这样既提高了资源利用率
,
又可以让所有的玩家进行交互
.
<!---->l
<!---->数据完整性
: sgs
提供了一个分布式的数据存储
,
一个
task
需要访问数据时
,
通过数据存储
api
进行访问
,
数据访问具有事务支持
,
当两个
task
发生冲突时
,sgs
会自动协调
,
较年轻的
task
重新调度等待执行
,
而年老的
task
将会执行并直到结束
.
当前版本中的
sgs
数据存储未使用关系数据库
,
而是使用了
berkeley db.
任何
java
对象
,
只要实现了
ManagedObject
标志接口
和
Serializable
接口后即可自动透明存储
.(sgs
的存储机制好像是可扩展的
,
论坛上已经看到有人在讨论
mysql
的存储插件
)
<!---->l
<!---->简单的编程模型
:
从应用开发的角度来看
,sgs
提供了
api
屏蔽了多数的底层复杂性
,
例如线程调度
,
事务处理
,
等等
,
应用程序只需要开发并装配自己的对象
,
监听响应客户端事件
,
自己管理持久化的
ManagedObject
对象生命周期即可
.
<!---->l
<!---->两种通信模型
:
一种是
client/server
的通信
,
即每个
client
只和
server
通信
,
由
server
来负责数据的处理和转发
.
另外一种是
channel
机制
(
类似一对多的广播
),channel
由
server
创建并维护
,
每个
channel
可以添加多个
client,server
可以监听
channel
中的所有通信或者具体某个
client
的通信
.
也可以给
channel
中的全部或者部分
client
发送消息
.
加入
channel
的
client
可以收到其它任何
client
发送的消息
.channel
下面
client
之间的通信不需要
server
端的介入
.
由于所有通信的数据格式都是字节数组
,
所以应用程序需要开发自己的应用层协议
.
<!---->l
<!---->可扩展的机制
: sgs
应用程序访问数据
,
使用
channel,
创建
task
都是通过
”Manager”
来进行的
.
目前一共有三种缺省的
”Manager”
,DataManager,ChannelManager,Taskmanager.
但可以扩展开发自己的
Manager,
例如在
sgs
中要求
task
应该是尽量快的执行
(task
允许执行的时间上限可以配置
) ,
所以如果出现调用可能导致阻塞的系统方法时
,
就需要开发一个扩展的
Manager.
目前
sgs
提供了
c
和
java
的客户端库
,
但协议是开放的
,
已经有人开发出了支持
as3
和
python
的客户端库
(https://darkstar-as-client.dev.java.net/
).
下面是一个实际的
sgs
应用例子
:
一个支持两人对战的俄罗斯方块
.
客户端改编自一个开源的
flash/as3
的方块游戏
(http://flashgamecode.net/tetris
).
为了简单起见
,
目前服务器端启动后仅有一个房间
,
房间只允许二人对战
,
客户端连接上后如果房间已经有两人并且都开始了游戏
,
则游戏开始
,
否则等待
.
更多的功能
,
例如对方状态显示
,
房间列表
,
支持更多人对战等
,
考虑在以后逐步添加
.
下面是使用说明
:
一共是两个包
server.zip,client.zip. server.zip
中是一个
eclipse
的
project
目录
,
其中包含了一个
bat
文件
: runserver.bat.
解压后运行
,
如果看到
:
“sgsApp: application is ready”
说明服务器程序已经正常启动
,
可以等待连接了
.
Client.zip
中包含了
fla
文件和响应的
as
文件
. Blox.swf
是已经编译好的程序
,
运行两次
,
然后分别开始游戏
,
可以看到只有两个程序同时连接上后
,
游戏才开始
.
和普通的俄罗斯对战一样
,
如果某一方连续消除了
n
行
,
那么对方就会自动在底部增加
n-1
行
,
如图
:
Config.conf
是配置文件
,
目前有两项配置
,
服务器主机
(host),
连接端口
(port).
缺省配置是
localhost,1139,
即默认服务器和客户端在同一机器上
,
如果想在另外一台机器上运行客户端
,
更改配置即可
.
在运行时
flash
会报安全沙箱问题
,
解决方法请参见我的另外一篇文章
“
解决开发环境下的
flash player
安全沙箱问题
” (http://duker.iteye.com/admin/blogs/150579
)
server
端如果运行第二次以上
,
会出现
exception,
这可能是
sgs
的
bug
导致
,
不影响正常发挥功能
.
- 大小: 119.7 KB
- 大小: 14.5 KB
分享到:
相关推荐
"SGS"(可能代表"Sun Game Server")是一个强大的游戏服务器平台,它提供了基础架构来支持大规模并发玩家在线游戏。它可能包含了诸如网络协议处理、游戏逻辑执行、数据存储与同步、负载均衡以及安全性管理等核心功能...
### Sun xVM Server 使用指南详解 #### 一、概述 Sun xVM Server 是一款由Sun Microsystems开发的基于开源Xen Hypervisor技术的虚拟化平台。它支持多种操作系统,并且能够在一个物理服务器上运行多个隔离的操作...
SUN Directory Server是Sun Microsystems(现已被Oracle收购)开发的一款强大的 Lightweight Directory Access Protocol (LDAP) 目录服务器,主要用于管理和存储组织的各种网络资源信息,如用户账号、权限、配置数据...
根据给定的文件信息,我们可以提炼出以下与Sun App Server相关的关键知识点: ### 1. 概述 Sun Java System Application Server Platform Edition 9(以下简称Sun App Server 9)是Sun Microsystems公司推出的一款...
Sun ONE (Open Network Environment) Directory Server,是Sun Microsystems公司(现已被甲骨文公司收购)推出的一款企业级的目录服务软件。它是一个基于 Lightweight Directory Access Protocol (LDAP) 的目录服务...
Sun One Directory Server 5.2 是一款由Sun Microsystems(后被Oracle公司收购)开发的企业级目录服务软件。这款产品在2000年代初期广泛应用于组织的网络基础设施中,用以管理和存储用户身份、权限和其他元数据。...
Sun Directory Server 是一款基于 Lightweight Directory Access Protocol (LDAP) 的目录服务软件,由 Sun Microsystems 开发。在进行 Sun Directory Server 的安装教程中,有几个关键的知识点是必须了解的,这些...
com.sun.net.httpserver
### Sun Java System Directory Server Enterprise Edition 6.3 管理指南 #### 一、概述 Sun Java System Directory Server Enterprise Edition 6.3 是一款高度可扩展且安全的身份存储库解决方案,它支持企业级...
Sun Java System Directory Server 5.2 是一款由Sun Microsystems开发的企业级 Lightweight Directory Access Protocol (LDAP) 服务器。作为目录服务的核心组件,它被设计用于存储、管理和检索大量结构化数据,如...
Sun Directory Server,也被称为Sun One Directory Server,是Sun Microsystems(现已被Oracle公司收购)开发的一款强大的 Lightweight Directory Access Protocol (LDAP) 服务器。LDAP是一种开放标准的目录服务协议...
在Java中,我们可以使用多种库来实现HTTP通信,其中包括`com.sun.net.httpserver`包,这是一个内置的轻量级HTTP服务器,适用于测试、原型设计以及简单的应用。本示例将详细介绍如何使用`com.sun.net.httpserver`包...
### Sun Java System Application Server 9.1 管理指南 #### 一、入门与概述 **Sun Java System Application Server 9.1**是一款由Sun Microsystems公司开发的企业级应用程序服务器,旨在提供强大的运行环境,支持...
Sun Enterprise Server Alternate Pathing 2.3.1 -34 是一款由Sun Microsystems公司推出的针对企业级服务器的存储路径管理软件。这个版本主要是为了解决数据中心的冗余路径和故障切换问题,确保在硬件故障或其他网络...