SmartFoxServer 是专门为Adobe Flash设计的跨平台socket服务器,让开发者高效地开发多人应用及游戏. 该服务器主要用来创建多玩家游戏。并提供强大的制作工具,各种回合制游戏和实时游戏都可以胜任。 SmartFoxServer 支持的播放器从Flash player6版到最新的Flash Player 9,并提供丰富的Actionscript 1.0, 2.0 and 3.0 APIs,同时也支持 Flex Builder 2 and 3. 该产品带有详细的帮助文档, 大约 36 个带源代码的示例 还有强大的远程管理工具。
SmartFoxServer专门用于多用户联机游戏开发,支持Flash/Flex/Air, Java, .Net, Unity3D, Apple iPhone 开发。
目前有3个版本:SFS Lite 此版本免费,只支持AS1.0 和 2.0 不支持AS3.0。可以迅速配置服务器,适合初学者。当然,不支持服务器扩展。
SFS Basic 此版本应该适合小型游戏开发,不支持服务器扩展,收费产品。
SFS Professional 此版本为专业版,支持服务器扩展,适合开发大型游戏,收费。
 

总体来说,如果是想做一个比较简单的虚拟现实服务,拿sfs来做还是很方便的,省去了前期构造服务器网络,实现数据库接口,数据同步等等一些基础功能的时间,可以一上来就直奔主题,开发自己项目相关的功能.

Sfs的接口封装也比较简单,基本上看到接口名就能知道是做什么用的,参数是什么意义,而且他的文档也比较详细,对于非服务器开发专业人员也比较方便.sfs的定义也主要在此,比如他最早支持的flash客户端api.

而随着sfs的成功,也开始将目标转向了目前新兴的iphone, android, sillverlight, unity等 客户端.这次使用c# client api做了一个winform测试程序,使用起来也是非常的方便.

第一次拿sfs做商业项目,也还是遇到了一些问题,总结一下,另外还有一些未完善的地方,后面再花时间继续实现.

CustomLogin的处理在zone extension里,必须先join room才能使用xt message.所以需要先写一个zone extension,在这里处理登录验证,注意验证成功后需要向客户端发送room list, 客户端必须收到room list消息才能做后面的操作,这是sfs限制死了的.

本来我想在extension里让客户端验证成功后直接join room,未果,调试良久才发现,客户端未收到room list,不能join room.

Sfs的user variables只支持bool, integer, string类型,其他类型的数据不能同步.这个问题困扰了我差不多一个小时,最后在客户端一步步跟踪属性同步过程时才发现,其他类型的variable都被忽略掉了.

于是,为了同步float坐标数据,我不得不加上了float.toString(),数据量又大了不少.

Sfs消息定义的方式,不要像sample里那样,直接写字符串名字,改用枚举或者常量定义.每个extension name和command name都只有一个字节,在枚举中也可以定义出128个,完全够用.

这样可以省不少带宽占用量,可以在client上开启debug message开关,看一下一个简单的消息发送会占多少字节.

如果想同时在eclipse和netbeans下对一个项目进行开发,注意文件编码的问题.eclipse下创建的文件默认编码为gbk,netbeans下创建的文件默认为utf-8,而在eclipse下导入文件时他并不会自动检测文件的编码,所以,你需要在文件的属性里手动设置一下编码方式.另外,netbeans下要在文件中显示中文字符只能使用utf-8,使用gbk会出乱码,如果出现此类错误,修改一下文件编码方式以及指定新的编码即可.

要关于利用IDE编译环境.在项目最开始的一周里,我使用trace来进行调试,一次次的通过trace打印出中间变量,然后再修改代码,再启动服务器,再看trace信息……在我快要陷入崩溃绝望之时,终于,决定建一个好用的集成调试环境.在尝试eclipse失败后,我成功的在netbeans中打下了断点,单kh步跟踪,于是,整个世界变得清静多了……

使用JAVA与SmartFoxServer来实现游戏服务器概述的更多相关文章

  1. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  2. Java游戏服务器成长之路——感悟篇

    又是一个美好的周末啊,现在一到周末,早上就起得晚,下午困了又会睡一两个小时,上班的时候,早上起来喝一杯咖啡,然后就能高效的工作一整天,然而到了周末人就懒散了,哈哈. 最近刚跳槽,到新公司已经干了有两周 ...

  3. Java游戏服务器搭建

    一.前言 此游戏服务器架构是一个单服的形式,也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器.战斗服务器.世界服务器等.此架构已成功应用在了多款页游服务器 .在此框架中没有实现相关业务逻辑,只有简 ...

  4. 游戏服务器菜鸟之C#初探一游戏服务

    本人80后程序猿一枚,原来搞过C++/Java/C#,因为工作原因最后选择一直从事C#开发,因为读书时候对游戏一直比较感兴趣,机缘巧合公司做一个手游的项目,我就开始游戏服务器的折腾之旅. 游戏的构架是 ...

  5. 游戏服务器生成全局唯一ID的几种方法

    在服务器系统开发时,为了适应数据大并发的请求,我们往往需要对数据进行异步存储,特别是在做分布式系统时,这个时候就不能等待插入数据库返回了取自动id了,而是需要在插入数据库之前生成一个全局的唯一id,使 ...

  6. 使用Java管理千台规模Linux服务器_入门

    http://www.oschina.net/code/snippet_222919_11734 代码分享 当前位置: 代码分享 » Java  » 网络编程 搜 索   [饶过] 使用Java管理千 ...

  7. Pomelo分布式游戏服务器框架

    Pomelo介绍&入门 目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json ...

  8. unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计

    unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计 最近做玩票性质的游戏项目,客户端技术是 unity3d 和 android. ...

  9. Netty构建游戏服务器(一)--基本概念与原理

    一,Netty是什么 1,Netty是由 JBOSS提供的一个 java开源框架. 2,Netty是JAR包,一般使用ALL-IN-ONE的JAR包就可以开发了. 3,Netty不需要运行在Tomca ...

随机推荐

  1. iOS中JavaScript和OC交互

    转载自:http://www.devzeng.com/blog/ios-uiwebview-interaction-with-javascript.html 还可参考的文章:http://blog.c ...

  2. qrcode-php生成二维码

    调用PHP QR Code非常简单,如下代码即可生成一张内容为"http://www.baidu.com"的二维码. include 'phpqrcode.php'; QRcode ...

  3. 3 - testng.xml

    TestNG的调用有以下几种方式: testng.xml ant 命令行 这部分主要介绍testng.xml的格式. 当前testng.xml的DTD(文档类型定义(Document Type Def ...

  4. HTML5有语义的内联元素详解

    HTML5有语义的内联元素详解 time标签 time 元素表示一个时间值,比如 5:35 P.M., EST, April 23, 2007.例如: Example Source Code:< ...

  5. linux 定时执行shell

    第一步:安装 crontab ,命令 yum -y install vixie-cron                扩展:service crond start //启动服务            ...

  6. MySQL中删除重复数据只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 SELECT ...

  7. web字体格式转换

    @font-face { font-family: 'emotion'; src: url('emotion.eot'); /* IE9*/ src: url('emotion.eot?#iefix' ...

  8. [r]Ubuntu Linux系统下apt-get命令详解

    Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...

  9. Linux服务器集群技术的概述

    目前,越来越多的网站采用Linux操作系统,提供邮件.Web.文件存储.数据库等服务.也有非常多的公司在企业内部网中利用Linux服务器提供这些服务.随着人们对Linux服务器依赖的加深,对其可靠性. ...

  10. iscc2016-basic-心灵鸡汤

    用winhex打开发现 ISCCCongratulations! You need remember: DEath IS JUST A PaRT oF lIFE,sOMeTHInG wE'RE aLL ...