Răsfoiți Sursa

1.定义个ERR_Exception = 1000,1000以下错误不抛异常,以上抛异常,开发者根据自己逻辑选择
2.更新readme

tanghai 8 ani în urmă
părinte
comite
5e0fbb0fa7

+ 11 - 5
README.md

@@ -30,15 +30,17 @@ erlang语言一大优势就是位置透明的消息机制,用户完全不用
 ### 6.提供服务器不停服动态更新逻辑功能  
 热更是游戏服务器不可缺少的功能,ET框架使用的组件设计,可以做成守望先锋的设计,组件只有成员,无方法,将所有方法做成扩展方法放到热更dll中,运行时重新加载dll即可热更所有逻辑。
 ### 7.客户端热更新一键切换  
-因为ios的限制,之前unity热更新一般使用lua,导致unity3d开发人员要写两种代码,麻烦的要死。之后幸好出了ILRuntime库,利用ILRuntime库,unity3d可以利用C#语言加载热更新dll进行热更新。ILRuntime一个缺陷就是开发时候不支持VS debug,这有点不爽。ET框架使用了一个预编译指令ILRuntime,可以无缝切换。平常开发的时候不使用ILRuntime,而是使用Assembly.Load加载热更新动态库,这样可以方便用VS单步调试。在发布的时候,定义预编译指令ILRuntime就可以无缝切换成使用ILRuntime加载热更新动态库。这样开发起来及其方便,再也不用使用狗屎lua了
-### 8.客户端服务端用同一种语言,并且共享代码  
+因为ios的限制,之前unity热更新一般使用lua,导致unity3d开发人员要写两种代码,麻烦的要死。之后幸好出了ILRuntime库,利用ILRuntime库,unity3d可以利用C#语言加载热更新dll进行热更新。ILRuntime一个缺陷就是开发时候不支持VS debug,这有点不爽。ET框架使用了一个预编译指令ILRuntime,可以无缝切换。平常开发的时候不使用ILRuntime,而是使用Assembly.Load加载热更新动态库,这样可以方便用VS单步调试。在发布的时候,定义预编译指令ILRuntime就可以无缝切换成使用ILRuntime加载热更新动态库。这样开发起来及其方便,再也不用使用狗屎lua了  
+### 8.客户端全热更新  
+客户端可以实现所有逻辑热更新,包括协议  
+### 9.客户端服务端用同一种语言,并且共享代码  
 下载ET框架,打开服务端工程,可以看到服务端引用了客户端很多代码,通过引用客户端代码的方式实现了双端共享代码。例如客户端服务端之间的网络消息两边完全共用一个文件即可,添加一个消息只需要修改一遍。  
-### 9.KCP ENET TCP协议无缝切换  
+### 10.KCP ENET TCP协议无缝切换  
 ET框架不但支持TCP,而且支持可靠的UDP协议(ENET跟KCP),ENet是英雄联盟所使用的网络库,其特点是快速,并且网络丢包的情况下性能也非常好,这个我们做过测试TCP在丢包5%的情况下,moba游戏就卡的不行了,但是使用ENet,丢包20%仍然不会感到卡。非常强大。框架还支持使用KCP协议,KCP也是可靠UDP协议,据说比ENET性能更好,使用kcp请注意,需要自己加心跳机制,否则20秒没收到包,服务端将断开连接。三种协议可以无缝切换。  
-### 10.打包工具  
+### 11.打包工具  
 ET框架带有一整套打包工具,完全傻瓜式。一键打包,自动分析共享资源。对比md5更新  
 
-### 11.还有很多很多功能,我就不详细介绍了  
+### 12.还有很多很多功能,我就不详细介绍了  
 a.及其方便检查CPU占用和内存泄漏检查,vs自带分析工具,不用再为性能和内存泄漏检查而烦恼  
 b.使用NLog库,打log及其方便,平常开发时,可以将所有服务器log打到一个文件中,再也不用一个个文件搜索log了  
 c.统一使用Mongodb的bson做序列化,消息和配置文件全部都是bson或者json,并且以后使用mongodb做数据库,再也不用做格式转换了。  
@@ -59,6 +61,10 @@ ET框架的服务端是一个强大灵活的分布式服务端架构,完全可
 [框架demo介绍](http://www.jianshu.com/p/f2ea0d26c7c1)  
 [linux部署](http://gad.qq.com/article/detail/35973)  
 [linux部署,mongo安装,资源服搭建](http://www.tinkingli.com/?p=25)  
+[ET框架心跳包组件开发](http://www.tinkingli.com/?p=111)  
+[ET框架Actor使用与心得](http://www.tinkingli.com/?p=117)  
+[基于ET框架和UGUI的简单UI框架实现(渐渐写)](http://www.tinkingli.com/?p=124)  
+[ET框架笔记 (笑览世界写)](http://www.tinkingli.com/?p=76)  
 
 群友demo:  
 [斗地主(客户端服务端)](https://github.com/Viagi/LandlordsCore)  

+ 2 - 2
Unity/Assets/Scripts/Entity/Session.cs

@@ -192,7 +192,7 @@ namespace Model
 					Type responseType = opcodeTypeComponent.GetType(packetInfo.Opcode);
 					object message = this.Network.MessagePacker.DeserializeFrom(responseType, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);
 					IResponse response = (IResponse)message;
-					if (response.Error > 100)
+					if (response.Error > ErrorCode.ERR_Exception)
 					{
 						throw new RpcException(response.Error, response.Message);
 					}
@@ -226,7 +226,7 @@ namespace Model
 					Type responseType = opcodeTypeComponent.GetType(packetInfo.Opcode);
 					object message = this.Network.MessagePacker.DeserializeFrom(responseType, packetInfo.Bytes, packetInfo.Index, packetInfo.Length);
 					IResponse response = (IResponse)message;
-					if (response.Error > 100)
+					if (response.Error > ErrorCode.ERR_Exception)
 					{
 						throw new RpcException(response.Error, response.Message);
 					}

+ 11 - 11
Unity/Assets/Scripts/Module/Message/ErrorCode.cs

@@ -2,20 +2,20 @@ namespace Model
 {
 	public static class ErrorCode
 	{
-		// 框架内部错误
 		public const int ERR_Success = 0;
 		public const int ERR_NotFoundActor = 2;
 
-		public const int ERR_RpcFail = 101;
-		public const int ERR_SocketDisconnected = 102;
-		public const int ERR_ReloadFail = 103;
-		public const int ERR_ActorLocationNotFound = 104;
+		public const int ERR_AccountOrPasswordError = 102;
+		public const int ERR_SessionActorError = 103;
+		public const int ERR_NotFoundUnit = 104;
+		public const int ERR_ConnectGateKeyError = 105;
 
-		// 逻辑相关错误
-		public const int ERR_AccountOrPasswordError = 202;
-		public const int ERR_ConnectGateKeyError = 203;
-		public const int ERR_NotFoundUnit = 204;
-		public const int ERR_SessionActorError = 207;
-		
+		// 大于这个错误抛异常
+		public const int ERR_Exception = 1000;
+
+		public const int ERR_RpcFail = 2001;
+		public const int ERR_SocketDisconnected = 2002;
+		public const int ERR_ReloadFail = 2003;
+		public const int ERR_ActorLocationNotFound = 2004;
 	}
 }