Darkstar SUN 开源游戏服务器端项目开源项目

我要开发同款
匿名用户2009年04月10日
31阅读
开发技术Java
所属分类游戏/娱乐、游戏模拟器/工具/引擎
授权协议未知

作品详情

Sungameserver,简称(sgs)是sun公司的一个开源项目,主要目标是针对mmo游戏的服务器端开发.

SGS提供的主要功能:

l服务器端的扩展:传统的扩展方法是将整个游戏区域分成多个区,不同的区运行在不同的游戏服务器上.这带来两个问题,一个是处于不同区的玩家不能互相交互,另外一个是如果某个区发生的动作较少时,会出现服务器资源未被充分利用的情况.而在sgs的处理方式下,所有的处理被分割成为一个个小的执行单元(称为task),这些task可以在组成网络的任何sgs服务器上执行,当用户增加时,系统自动增加处理线程,不再需要为了扩展而将不同的区分配到不同的服务器上面.这样既提高了资源利用率,又可以让所有的玩家进行交互.

l数据完整性:sgs提供了一个分布式的数据存储,一个task需要访问数据时,通过数据存储api进行访问,数据访问具有事务支持,当两个task发生冲突时,sgs会自动协调,较年轻的task重新调度等待执行,而年老的task将会执行并直到结束.当前版本中的sgs数据存储未使用关系数据库,而是使用了berkeleydb.任何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.

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论