Some reminiscences, some memories

Just another boring day
« 29万是个什么概念呢?
在 Ubuntu 下查询内存的型号 »

4

Dec

在 Netbeans 6.5 中运行和调试基于 Darkstar 的服务器程序

mikespook 

Web game 一直以来被大家认为是开发技术门槛低,推广容易的一种游戏形式。但是在我1年来开发 web game 积累下来的经验来看,没有服务器端的 web game 只能被当作玩具,而不是一个可以运营的游戏(当然关于 Web game 技术考量关于这个话题,是我可能要写的另外一篇文章了)。为了这个目的,最近特意研究了一下 Darkstar。

Darkstar 是 SUN 公司支持的一个开源的多人在线游戏(MMO)架构,它提供了任务、数据、信道以及会话管理等一系列的功能。使得开发人员可以更加专注的设计开发游戏相关逻辑,而不是服务器基本功能设计或负载调优等等重复的体力活。关于 Darkstar 的详细介绍,可能要写 N 篇文章来说明。先有个大概了解就好了。

基于 Darkstar 开发服务器端的时候,不需要自己写主类。只要按照 Darkstar 提供的标准实现如 AppListener 等等的接口,就可以将开发人员实现的相关功能加入 Darkstar 架构中执行。Darkstar 分别在 *nix 系统和 windows 系统提供了 sgs.sh 和 sgs.bat 两个脚本,以方便使用。

Netbeans 6.5 的发布,给沉闷的开发带来了一丝生气。即使是我那 512M 内存的运行 xubuntu 的笔记本,跑起 Netbeans 也如行云流水般流畅(Eclipse 的粉丝别砸我,Eclipse 我开都不敢开)。我一般是使用 Netbeans 编写 java 代码,上网找了一下,netbeans 的一个 Darkstar 插件已经有一些时候没有更新了。这使得在 Netbeans 中开发 Darkstar 很不方便,不能直接运行,也不能调试。在研究了 sgs.sh 和 sgs.bat 之后发现,这两个脚本实际上只是设置了 java 命令的一些参数,使得 Darkstar 可以执行。那么将这些参数移入 Netbeans 就可以在其中直接运行和调试了(这篇帖子验证了这个想法)。

首先添加库的时候,除了设置类路径和 javadoc 外,还应将 sgs-server-0.9.7-sources.jar 设置到源中去,方便开发和调试。

然后在“项目属性”中找到“运行”,按照下表填写:

主类:com.sun.sgs.impl.kernel.Kernel

参数:foobar.properties

工作目录:F:\java\FoobarServer\data

VM 选项:-Djava.library.path=F:\java\libs\sgs\sgs-server-0.9.7\lib\bdb\win32-x86

其中主类是在项目导入的 sgs-server.jar 中的类。在任何环境下都只可以填写这个 Kernel 类。

参数是项目的配置文件,这个文件一般有下面的内容:

com.sun.sgs.app.name=HelloFoobar
com.sun.sgs.app.root=F:/java/FoobarServer/data/
com.sun.sgs.app.port=1139
com.sun.sgs.app.listener=com.xxiyy.game.server.FoobarServer

name 是项目名称。root 是项目根目录,跟目录必须含有子目录 dsdb,用来存储序列会对象数据。port 是服务器监听的端口。listener 即是实现 AppListener 接口的用户类了。需要注意的是,如果不是用绝对路径,properties 文件是相对于工作目录来说的。

工作目录需要对应 properties 文件中的 root 选项。一定要注意,工作目录必须含有子目录 dsdb。否则运行的时候会提示无法找到路径的错误。

VM 选项是因为 Darkstar 默认使用了Berkeley db,需要加载动态库文件。对于windows 就是 bdb 所带 win32-x86 目录中的 libdb_java45.dll。对于 32 位 linux 就是 linux-x86 目录中的 libdb-4.5.so 和 libdb_java-4.5.so。其他不同系统类推。如果你在运行后出现 java.lang.UnsatisfiedLinkError: no libdb_java45 in java.library.path 这样的异常,说明你的 java.library.path 没有设置正确。

确定后,就可以像普通 java 程序那样在 netbeans 中直接运行或调试 Darkstar 程序了。

This entry was posted on Thursday, December 4th, 2008 at 08:43 and is filed under NetBeans. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

3 Responses to “ 在 Netbeans 6.5 中运行和调试基于 Darkstar 的服务器程序 ”

  1. # 1 小路 Says:
    December 5th, 2008 at 12:11

    BDB? 汗..

    可以用其他的DB吗? 例如mysql或者oracle之类的

    MMO game用BDB是不是显得有点不大适合……

    BDB用来作为局部的缓存式数据存放还行..整体用BDB..不太适合MMO GAME这种复杂业务逻辑的吧..

  2. # 2 mikespook Says:
    December 7th, 2008 at 05:14

    哈哈,路神的问题的确精辟。前面说了 Darkstar 是一个架构,不是MMO框架,所以涉及业务逻辑的游戏数据并不由 Darkstar 处理。BDB 在 Darkstar 中也仅仅是存储一些持久化对象。这些对象在 server restarting 的时候被 Darkstar 加载。

  3. # 3 ninny Says:
    May 2nd, 2009 at 04:35

    我已经换成1G内存了~~~

Leave a Reply

Trackback URI | Comments RSS

 

July 2010
M T W T F S S
« Jun    
 1234
567891011
12131415161718
19202122232425
262728293031  

Recent Comments

  • Rebill on 我们精通精通
  • 食品楼8 on ucweb 面试记
  • nio on 我们精通精通
  • Some reminiscences, some memories » Blog Archive » [翻译]Akihabara 指南,第四部分:地图的卷动 on [翻译]Akihabara 指南,第二部分:精灵的移动
  • Some reminiscences, some memories » Blog Archive » [翻译]Akihabara 指南,第四部分:地图的卷动 on [翻译]Akihabara 指南,第三部分:基本的地图

Tags

乱码 协程 地震 备案 安装 广州 异步 性能 我爱发明 扯淡 招聘 游戏 漏洞 翻译 豆瓣 39.com Adobe akihabara config countdown Demo Flash game engine golang google html5 issue linux Micromedia MongoDB mysql NetBeans nginx NoSQL oracle PHP phpunit Python trac ubuntu xdebug xml xubuntu yield Zend Framework

Blogroll

  • Blog on 27th Floor
  • DBA notes
  • Tim[后端技术]
  • 唐海燕
  • 抚琴居
  • 某人的栖息地
  • 番茄’s Blog
  • 網站製作學習誌
  • 纸老虎传媒

Old friends

  • cbf107

Only

  • 媚惑桃花

OurPNP

  • Biaoest:标的最高级
  • flexsns-官方博客
  • PNP University
  • PNP街坊
  • smallfish 鱼哥的窝子
  • 冰山日志
  • 墙外的光神V5
  • 夜雨's Blog
  • 小冬kobe
  • 小路的奇异世界
  • 广州萌芽工作室
  • 老甘blog
  • 赖勇浩的编程私伙局

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Powered by WordPress
mikespook.com 粤ICP备09065095号