EA公司哪些游戏使用了smartfoxserver教程做服务器

SmartFoxServer 2X Extension 调试方法 - 使用IntelliJ - 简书
SmartFoxServer 2X Extension 调试方法 - 使用IntelliJ
SmartFoxServer 2X 使用一个Extension来实现服务器端所有的逻辑,Extension使用jar包的形式,需要放到SFS 2X安装目录中的extension文件夹里面,Server在启动时会加载所有扩展。开发者自然关心到怎么进行调试,如果只能使用log输出的形式,未免也太影响开发效率。当然有简单的办法,借助ID E的远程调试(Remote Debug),可以轻松实现调试代码。关于SmartFoxServer 2X与Unity结合的例子可以参考,总结的笔记在。下面记录的是调试过程中的具体步骤和注意事项。使用到的相关软件环境如下:
SmartFoxServer 2.12.0
IntelliJ Community 2017.1
Unity 5.4.0
Visual Studio Community 2015
编写服务器端扩展
这里仅做一个简单的例子说明问题。服务器端一共有三个源文件,其中:
MyTestExtension.java 是Extention的主文件,扩展自SFSExtension类。该类重写了Extension的初始化和销毁的方法。在初始化的时候对服务器事件和客户端请求绑定处理类。
import com.smartfoxserver.v2.core.SFSEventT
import com.smartfoxserver.v2.extensions.SFSE
public class MyTestExtension extends SFSExtension {
public void init() {
trace("test in init");
addRequestHandler("sum", SumHandler.class);
addEventHandler(SFSEventType.USER_JOIN_ROOM, JoinRoomEventHandler.class);
public void destroy(){
trace("text from destroy");
JoinRoomEventHandler.java 负责处理JoinRoom事件,扩展自BaseServerEventHandler类。在客户端发出加入房间的请求之后触发。类似的,可以自定义服务器事件的处理类。
import com.smartfoxserver.v2.core.ISFSE
import com.smartfoxserver.v2.core.SFSEventP
import com.smartfoxserver.v2.entities.R
import com.smartfoxserver.v2.entities.U
import com.smartfoxserver.v2.entities.data.ISFSO
import com.smartfoxserver.v2.entities.data.SFSO
import com.smartfoxserver.v2.exceptions.SFSE
import com.smartfoxserver.v2.extensions.BaseServerEventH
public class JoinRoomEventHandler extends BaseServerEventHandler {
public void handleServerEvent(ISFSEvent isfsEvent) throws SFSException {
MyTestExtension testExt = (MyTestExtension)getParentExtension();
User user = (User)isfsEvent.getParameter(SFSEventParam.USER);
Room room = (Room)isfsEvent.getParameter(SFSEventParam.ROOM);
trace(user);
trace(room);
SumHandler.java 负责处理客户端自定义请求,扩展自BaseClientRequestHandler类。服务器与客户端通过SFSObject来传递参数,SFSObject封装了各种类型的数据在里面。
import com.smartfoxserver.v2.entities.U
import com.smartfoxserver.v2.entities.data.ISFSO
import com.smartfoxserver.v2.entities.data.SFSO
import com.smartfoxserver.v2.extensions.BaseClientRequestH
public class SumHandler extends BaseClientRequestHandler{
public void handleClientRequest(User user, ISFSObject sfsobj) {
int numA = sfsobj.getInt("NumA");
int numB = sfsobj.getInt("NumB");
SFSObject objout = new SFSObject();
objout.putInt("NumC", numA+numB);
send("SumNumber",objout,user);
使用IntelliJ打成jar包
打开源代码工程的菜单File-&Project Structure,在"Project Settings/Artifacts"中新建一个JAR-&from modules with dependencies,这里需要设置输出目录以及添加sfs2x的依赖库,主要是sfs2x.jar和sfs2x-core.jar两个jar包,见下图:
ProjectStructure
需要注意的是,jar包的命名必须以Extension结尾,不然sfs会找不到。
确保代码无误,工程编译通过后,选择菜单“Build-&Build Artifacts”,生成jar包。生成成功以后,要把jar包拷贝到sfs的扩展文件夹下面,在程序安装路径C:\Program Files\SmartFoxServer_2X\SFS2X\extensions。注意新建一个文件夹及其命名规范。当然也可以让IntelliJ把jar包直接生成在这个文件夹里面。
需要重新启动服务器才能使改动生效。
使用Admin Tool配置扩展
SmartFoxServer 2X自带一个界面管理工具,安装成功以后,默认地址是 Configurator里面配置Zone或者Room的Extension,才能使扩展生效。
需要注意的是,Zone或者Room的Extension作用范围不同,当然Zone的作用范围更大,这里只需要指定一个就够了。如果两个都指定了的话,对于用户加入房间这种事件则会触发两次。
ZoneConfigurator
配置完成点击Submit生效,有的时候不行的话,也要重启服务。
使用Admin Tool配置调试选项
在Admin Tool中选择Server Congfigurator选项卡,JVM Setting选项卡,在JVM options里面添加下面三个选项:
-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
ServerConfigurator
配置完成点击Submit生效,有的时候不行的话,也要重启服务。
在IntelliJ中配置远程调试
打开Run/Debug Configurations对话框,新添加一个Remote Debug,名字可以随意起,主要是端口这里要改成8787,与上步中的JVM选项要保持一致。
RemoteDebug
配置完成之后,启动远程调试,可以看到控制台中输出以下文字,说明远程连接成功。
Connected to the target VM, address: 'localhost:8787', transport: 'socket'
记得在工程中的代码文件上打上断点,不然可是停不下来。
客户端发送请求
至此,服务器端远程调试配置完成,万事俱备,只欠东风。下面就需要在客户端中发送请求了,这里使用Unity的C#客户端,给出一些关键代码如下。
添加扩展响应事件监听,服务器响应之后的回调处理
sfs.AddEventListener(SFSEvent.EXTENSION_RESPONSE,OnExtensionRespose);
客户端发出加入房间的请求,服务器端会进入事件处理程序
sfs.Send(new Sfs2X.Requests.JoinRoomRequest("The Lobby"));
客户端发送扩展请求,服务器端进入SumHandler请求处理程序
ISFSObject obj = new SFSObject();
obj.PutInt("NumA", 1);
obj.PutInt("NumB", 2);
sfs.Send(new ExtensionRequest("sum",obj));
服务器端处理完成后,客户端进入回调函数
private void OnExtensionRespose(BaseEvent evt)
string cmd = (string)evt.Params["cmd"];
ISFSObject objIn = (SFSObject)evt.Params["params"];
if (cmd.Equals("SumNumber"))
int c = objIn.GetInt("NumC");
Debug.Log(c);
好了,代码里加上断点,就可以自由活动了!
面对节奏快、竞争强、信息量大的现代社会,我们浮躁、焦虑、迷茫!
想要记住所有接触到的信息对我们来说很困难,一方面要处理越来越多的信息,TMI(too much information),信息疲劳、信息焦虑以及信息过剩;一方面随着年龄的增长,原本就很可怜的记忆力更加捉襟见肘。“好脑筋不如烂笔头”,那么就动手记下来吧:)  SmartFoxServer 是专门为Adobe Flash设计的跨平台socket服务器,让开发者高效地开发多人应用及游戏. 该服务器主要用来创建家游戏。并提供强大的制作工具,各种回合制游戏和实时游戏都可以胜任。 SmartFoxServer 支持的播放器从Flash player6版到最新的Flash Player 9,并提供丰富的Actionscript 1.0, 2.0 and 3.0 APIs,同时也支持
2 and 3. 该产品带有详细的帮助文档, 大约 36 个带源代码的示例 还有强大的远程管理工具。
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:2次
参与编辑人数:2位
最近更新时间: 13:31:24
申请可获得以下专属权利:
贡献光荣榜网站已改版,请使用新地址访问:
sfs2x.src smartFoxServer源码,破解后的 ,主要用在棋牌游戏中 Game Program
238万源代码下载-
&文件名称: sfs2x.src
& & & & &&]
&&所属分类:
&&开发工具: Java
&&文件大小: 377 KB
&&上传时间:
&&下载次数: 21
&&提 供 者:
&详细说明:smartFoxServer源码,破解后的smartFoxServer,主要用在棋牌游戏中-smartFoxServer source
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&META-INF\MANIFEST.MF&&com\smartfoxserver\bitswarm\boot\BootLogFormatter.java&&...\..............\........\....\BootLogFilesCleaner.java&&...\..............\........\....\SystemPropertiesEnumerator.java&&...\..............\........\....\BootLoggerConfig.java&&...\..............\........\....\BootLoggerConfigurator.java&&...\..............\........\clustering\DefaultClusterManager.java&&...\..............\........\..........\ClusterEvents.java&&...\..............\........\..........\AbstractClusterEventHandler.java&&...\..............\........\..........\AbstractClusterManager.java&&...\..............\........\..........\IpBasedNodeNameGenerator.java&&...\..............\........\..........\TCEventListener.java&&...\..............\........\..........\IClusterManager.java&&...\..............\........\..........\DataStore.java&&...\..............\........\..........\ConfigBasedNodeNameGenerator.java&&...\..............\........\..........\ClusterEventListener.java&&...\..............\........\..........\IClusterEventHandler.java&&...\..............\........\..........\IClusterEventListener.java&&...\..............\........\..........\IUniqueNodeNameGenerator.java&&...\..............\........\..........\handlers\NodeShutDownHandler.java&&...\..............\........\..........\........\HelloHandler.java&&...\..............\........\..........\........\SendMessageHandler.java&&...\..............\........\.onfig\SocketConfig.java&&...\..............\........\......\EngineConfiguration.java&&...\..............\........\......\EngineConstants.java&&...\..............\........\......\ControllerConfig.java&&...\..............\........\...trollers\IController.java&&...\..............\........\...........\DefaultControllerManager.java&&...\..............\........\...........\IControllerManager.java&&...\..............\........\...........\AbstractController.java&&...\..............\........\...........\SimpleController.java&&...\..............\........\...........\RequestComparator.java&&...\..............\........\..re\SocketWriter.java&&...\..............\........\....\IMethodDispatcher.java&&...\..............\........\....\EngineEventHandler.java&&...\..............\........\....\ISocketReader.java&&...\..............\........\....\AdvancedSocketWriter.java&&...\..............\........\....\ISocketWriter.java&&...\..............\........\....\AbstractMethodDispatcher.java&&...\..............\........\....\ISocketAcceptor.java&&...\..............\........\....\EngineDelayedTaskHandler.java&&...\..............\........\....\BitSwarmEngine.java&&...\..............\........\....\EngineIOEventHandler.java&&...\..............\........\....\SocketAcceptor.java&&...\..............\........\....\SocketReader.java&&...\..............\........\....\security\EngineThread.java&&...\..............\........\....\........\ISecurityManager.java&&...\..............\........\....\........\ThreadComparisonType.java&&...\..............\........\....\........\IConnectionFilter.java&&...\..............\........\....\........\IAllowedThread.java&&...\..............\........\....\........\DefaultSecurityManager.java&&...\..............\........\....\........\DefaultConnectionFilter.java&&...\..............\........\data\IPacketBuffer.java&&...\..............\........\....\BufferType.java&&...\..............\........\....\MultiSegmentPacketBuffer.java&&...\..............\........\....\BindableSocket.java&&...\..............\........\....\MessagePriority.java&&...\..............\........\....\IPacket.java&&...\..............\........\....\TransportType.java&&...\..............\........\....\Packet.java&&...\..............\........\events\SFSClusterEvents.java&&...\..............\........\......\IEvent.java&&...\..............\........\......\Event.java&&...\..............\........\......\IEventDispatcher.java&&...\..............\........\......\BitSwarmEvents.java&&...\..............\........\......\BitSwarmEventParam.java&&...\..............\........\......\IEventListener.java&&...\..............\........\.xceptions\BitSwarmEngineRuntimeException.java&&...\..............\........\..........\BitSwarmEngineException.java&&...\..............\........\..........\SessionReconnectionException.java&&...\..............\........\..........\RefusedAddressException.java&&...\..............\........\..........\PacketQueueWarning.java&&...\..............\........\..........\BootSequenceException.java&&...\..............\........\..........\RequestQueueFullException.java&&...\..............\........\..........\MessageQueueFullException.java&&...\..............\........\io\Response.java&&...\..............\........\..\IFilterSupport.java&&...\..............\........\..\Request.java&&...\..............\........\..\AbstractIOHandler.java&&...\..............\........\..\IResponse.java&&...\..............\........\..\IRequest.java&&...\..............\........\..\IProtocolCodec.java&&...\..............\........\..\AbstractEngineMessage.java&&...\..............\........\..\IOHandler.java&&...\..............\........\..\IEngineMessage.java&&...\..............\........\..\filter\IFilter.java&&...\..............\........\..\......\IFilterChain.java&&...\..............\........\..\protocols\ProtocolType.java&&...\..............\........\..\.........\AbstractProtocolCodec.java&&...\..............\........\..\.........\text\TextIOHandler.java&&...\..............\........\..\.........\....\TextProtocolCodec.java&&...\..............\........\service\BaseCoreService.java&&...\..............\........\.......\ISimpleService.java&&...\..............\........\.......\IService.java&&...\..............\........\..ssions\NonBlockingPacketQueue.java&&...\..............\........\........\ISessionManager.java&&...\..............\........\........\SessionType.java&&...\..............\........\........\DefaultSessionManager.java&&...\..............\........\........\DefaultReconnectionManager.java&&...\..............\........\........\Session.java
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 这是纸牌游戏斗地主,算法完整,可以单机,网络连线玩.
&[] - SmartFoxServer2.x 例子
&[] - 棋牌游戏平台服务端的设计与实现
代码实现游戏大厅与客户端登陆
chat-room-client
chat-room-server
fivechess-client
fivechess-commons
fivechess-server
GameHall-Client
&[] - 一个服务器端和一个客户端,扎金花棋牌网络游戏
&[] - 这个一个java开发的网络斗地主,服务器端用java开发,客户端也是用java开发,但是客户端如果转成flex效果是一样的,也相当方便,里面还集成了斗地主的算法,对大家的开发有一定的帮助的
&[] - SmartFoxServer教程 可以学习如何使用SmartFoxServer,并且学会如果开发游戏
&[] - SmartFoxServer .Net / Unity3D 客户端API源码
&[] - sfs2x 的游戏扩展,学习SFS的可以下载来看看!C++游戏服务器异常宕机
我们的游戏服务器是基于Windows平台的,其中日本版本的服务器程序宕机频率在1礼拜左右,每次宕机产生的dump文件大小都是0,由于这个版本之前的开发都不是我自己做的,看了之前开发代码的改动目前也没看出什么问题,请求大神指导如何才能更好的找到宕机的原因。
回复讨论(解决方案
15:43&&&[]
大家好!小弟是做网游服务器的,最近服务器要部署到其他平台的机子上,为防止私服,所以要给程序加个类似会过期的文件证书的东西。想问下大家这方面有现成可用的实现方式吗?
回复讨论(解决方案)
应该是要取机子的硬件信息作为依据的
在自己的地方,加一个版本服务器,通过官方的配置文件,把官方的自己的
-15:03&&&[]
请教:C\C++&游戏服务器开发
开发游戏服务器或者webgame服务器,用C++语言,现在比较流行的架构或库什么的有什么?
开发服务器,具体要怎么展开,流程是怎么的?
回复讨论(解决方案)
编程模型Win下用IOCP,Linux用epoll
网上有开源魔兽
21:12&&&[]
###游戏服务器代码: http://git.oschina.net/liyonghelpme/GameServerCsharp ###游戏服务器优化主要考虑以下几个问题: CPU 运算; 水平扩展能力; 内存使用; 网络IO数据流量; 硬盘使用; ###性能分析 任何性能优化之前需要首先对性能
22:30&&&[]
①游戏服务器与传统互联网的服务器比起来是更复杂还是更简单? ②游戏服务器对于 & 响应时间和吞吐量 是否关心? ③游戏服务器是否需要支持事务?是否需需要使用数据网格?
10:51&&&[]
的内存碎片& 。对于游戏服务器而言,好的方法是用内存池,生成装备池、卡牌池、技能池等,不够时增量增加,如果需要释放,采用tcmalloc是一个不错的选择。 & &&&&&&& 目前能想到的就这么多,以后再继续
13:01&&&[]
整个UDP服务器架构,&我设计成&一个recvfrom线程,&一个sendto线程,&剩余就是并行的数据处理线程若干.&采用无锁机制,&线程与线程之间是独立互不影响的.&CPU单频越快,&越多,&运行效率也会
21:13&&&[]
用Static集合来管理桌子和局面旁观用户,决定哪些信息局部共享,哪些信息全局共享。
昨天迷迷糊糊的居然写了那么,我是做c++起步,c#和java对我来说太慢了。主线就是我开始考虑写服务器时最先想到最难得问题开始说的。对于一个游戏服务器可以多线程并发并快速读写数据是最优先考虑的问题
15:52&&&[]
-18:23&&&[]
我想去做C++&服务器程序员&,请问需要路怎么走呢?
我现在是一个windows程序员,就会MFC&数据库懂点&&&
目前在学习windows网络通信编程&多线程编程掌握的还可以
回复讨论(解决方案)
至少也得有公司肯
-15:53&&&[]
现在我觉得java做游戏服务器满好的&如果在有unity3d一起开发&那就爽了
回复讨论(解决方案)
关键是现在的技术很少啊
也不知道为什么国内很少有人使用unity3d的&3d的效果是非常的好&可能是现在一般的设备室满足不了的
-18:17&&&[]
在大型网络游戏中,经常会有这样一个场面:如在“闹市区”,有很多个玩家在那里走动、发言。这时服务器、客户端是以什么样的方式在通信?我认为如果是单播的话,肯定将使用大量的网络带宽,可能不是个好办法;如果多播,我又觉得不太现实:从书本了解到,跨网络的多播通信需要硬件支持、多播地址(这个地址应该是全球唯一
-17:37&&&[]介绍发展基础SmartFoxServer 2X - wickenden的博客 - CSDN博客
介绍发展基础SmartFoxServer 2X
SmartFoxServer
介绍发展基础
在本节中,我们将引导您了解使用SmartFoxServer 2X的多人开发的基本概念。从一般的角度看,无论多人游戏,MMORPG,MMORTS,虚拟世界等多种游戏类型,多人游戏和应用都非常相似。
实质上,它们都包括通过持久连接(使用TCP协议)连接到负责维护游戏状态并使玩家彼此同步的中央服务器的客户端。
在SmartFoxServer下,我们使用Zone的概念来表示专用于特定应用程序的服务器的一部分,允许开发人员运行多个不同的游戏和应用程序,而不会互相干扰。
您可以将Zones视为HTTP服务器下的不同“虚拟主机”,您可以在适当的隔离的同时运行多个Web应用程序。
>>三个基本步骤
SFS2X客户端通常将遵循几个简单的步骤来开始与服务器的通信:
尝试与服务器的连接
登录一个可用的区域
发送和接收请求到服务器的“系统控制器”或可用的扩展和处理服务器事件
在SmartFoxServer文档的这一部分中,我们将详细分析每个阶段,为每个步骤提供代码示例,建议和说明高级选项。
>>服务器控制器
每当客户端向服务器发送请求时,他正在与服务器控制器通信,服务器控制器是负责处理请求和发送用户更新的服务器。在SFS2X下,我们有以下两个主控制器。
系统控制器:这是主要的,负责处理客户端API中记录的所有常见客户端请求,如登录,连接,创建房间和所有其他调用。换句话说,该控制器将所有公共SFS2X API公开给所连接的用户。这包括高级功能,如Game API和Buddy List API。感谢SFS2X提供的特权经理,您还可以限制特定类型的用户(访客,常规,主持人等)访问某些控制器的功能。
扩展控制器:该控制器专门用于处理定向到服务器扩展的客户端请求。换句话说,这项服务会将自定义请求路由到您的服务器端代码,并以事件的形式返回响应。该控制器还能够通过UDP协议进行通信,从而实现对实时游戏的更新更新(有关更多信息,请参阅使用UDP协议文档)。
SFS2X客户端API负责将客户端请求引导到幕后的相应控制器,因此开发者没有必要采取特定的操作。
我的热门文章

我要回帖

更多关于 smartfoxserver unity 的文章

 

随机推荐