Explorar o código

1.Actor消息判断如果是发向自己的进程则不用通过网络,直接处理即可,大大提升性能
2.修复一个协程锁超时的bug
3.NLog放到Core中,Unity做Server的时候可以用到

tanghai %!s(int64=3) %!d(string=hai) anos
pai
achega
7f438f1175
Modificáronse 53 ficheiros con 326 adicións e 276 borrados
  1. 1 0
      DotNet/Hotfix/DotNet.Hotfix.csproj
  2. 3 3
      Share/Tool/ExcelExporter/ExcelExporter.cs
  3. 4 4
      Share/Tool/Proto2CS/Proto2CS.cs
  4. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Client/Module/Message/NetClientComponentSystem.cs
  5. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Gate.meta
  6. 0 115
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Helper/InnerMessageDispatcherHelper.cs
  7. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Map.meta
  8. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Robot.meta
  9. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Router.meta
  10. 88 39
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Session/NetInnerComponentOnReadEvent.cs
  11. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Session/NetServerComponentOnReadEvent.cs
  12. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Watcher.meta
  13. 9 2
      Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Actor/ActorMessageSenderComponentSystem.cs
  14. 8 5
      Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Message/NetInnerComponentSystem.cs
  15. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Message/NetServerComponentSystem.cs
  16. 0 8
      Unity/Assets/Scripts/Codes/Hotfix/Server/Module/MessageInner.meta
  17. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console.meta
  18. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ConsoleComponentSystem.cs
  19. 0 0
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ConsoleComponentSystem.cs.meta
  20. 1 2
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadConfigConsoleHandler.cs
  21. 0 0
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadConfigConsoleHandler.cs.meta
  22. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadDllConsoleHandler.cs
  23. 1 1
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadDllConsoleHandler.cs.meta
  24. 0 1
      Unity/Assets/Scripts/Codes/Model/Client/Module/Message/NetClientComponent.cs
  25. 1 1
      Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial.meta
  26. 0 0
      Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartProcessConfig.cs
  27. 1 1
      Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartProcessConfig.cs.meta
  28. 0 0
      Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartSceneConfig.cs
  29. 1 1
      Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartSceneConfig.cs.meta
  30. 1 1
      Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial.meta
  31. 37 0
      Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartProcessConfig.cs
  32. 11 0
      Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartProcessConfig.cs.meta
  33. 133 0
      Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartSceneConfig.cs
  34. 11 0
      Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartSceneConfig.cs.meta
  35. 0 1
      Unity/Assets/Scripts/Codes/Model/Server/Module/Message/NetInnerComponent.cs
  36. 0 1
      Unity/Assets/Scripts/Codes/Model/Server/Module/Message/NetServerComponent.cs
  37. 0 8
      Unity/Assets/Scripts/Codes/Model/Server/Module/MessageInner.meta
  38. 1 1
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console.meta
  39. 1 1
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleComponent.cs
  40. 0 0
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleComponent.cs.meta
  41. 1 1
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleHandlerAttribute.cs
  42. 0 0
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleHandlerAttribute.cs.meta
  43. 1 1
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/IConsoleHandler.cs
  44. 0 0
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/IConsoleHandler.cs.meta
  45. 1 1
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ModeContex.cs
  46. 0 0
      Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ModeContex.cs.meta
  47. 0 8
      Unity/Assets/Scripts/Codes/Model/Share/Module/Log.meta
  48. 0 21
      Unity/Assets/Scripts/Codes/Model/Share/Module/Message/IMessage.cs
  49. 1 0
      Unity/Assets/Scripts/Codes/Model/Share/Module/Message/Session.cs
  50. 1 0
      Unity/Assets/Scripts/Core/Module/CoroutineLock/CoroutineLockQueue.cs
  51. 0 0
      Unity/Assets/Scripts/Core/Module/Log/NLogger.cs
  52. 1 1
      Unity/Assets/Scripts/Core/Module/Log/NLogger.cs.meta
  53. 1 1
      Unity/Assets/Scripts/Core/Module/Network/KChannel.cs

+ 1 - 0
DotNet/Hotfix/DotNet.Hotfix.csproj

@@ -37,6 +37,7 @@
     </ItemGroup>
     <ItemGroup>
         <ProjectReference Include="..\..\Share\Analyzer\Share.Analyzer.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
+        <ProjectReference Include="..\App\DotNet.App.csproj" />
         <ProjectReference Include="..\Model\DotNet.Model.csproj" />
     </ItemGroup>
 

+ 3 - 3
Share/Tool/ExcelExporter/ExcelExporter.cs

@@ -334,7 +334,7 @@ namespace ET
                 StringBuilder stringBuilder = new StringBuilder();
                 foreach (Diagnostic t in emitResult.Diagnostics)
                 {
-                    stringBuilder.AppendLine(t.GetMessage());
+                    stringBuilder.Append($"{t.GetMessage()}\n");
                 }
 
                 throw new Exception($"动态编译失败:\n{stringBuilder}");
@@ -451,7 +451,7 @@ namespace ET
         static void ExportExcelJson(ExcelPackage p, string name, Table table, ConfigType configType, string relativeDir)
         {
             StringBuilder sb = new StringBuilder();
-            sb.AppendLine("{\"list\":[");
+            sb.Append("{\"list\":[\n");
             foreach (ExcelWorksheet worksheet in p.Workbook.Worksheets)
             {
                 if (worksheet.Name.StartsWith("#"))
@@ -462,7 +462,7 @@ namespace ET
                 ExportSheetJson(worksheet, name, table.HeadInfos, configType, sb);
             }
 
-            sb.AppendLine("]}");
+            sb.Append("]}\n");
 
             string dir = string.Format(jsonDir, configType.ToString(), relativeDir);
             if (!Directory.Exists(dir))

+ 4 - 4
Share/Tool/Proto2CS/Proto2CS.cs

@@ -93,7 +93,7 @@ namespace ET
                 if (newline.StartsWith("//ResponseType"))
                 {
                     string responseType = line.Split(" ")[1].TrimEnd('\r', '\n');
-                    sb.AppendLine($"\t[ResponseType(nameof({responseType}))]");
+                    sb.Append($"\t[ResponseType(nameof({responseType}))]\n");
                     continue;
                 }
 
@@ -153,7 +153,7 @@ namespace ET
 
                     if (newline.Trim().StartsWith("//"))
                     {
-                        sb.AppendLine(newline);
+                        sb.Append($"{newline}\n");
                         continue;
                     }
 
@@ -179,10 +179,10 @@ namespace ET
             sb.Append("\tpublic static class " + protoName + "\n\t{\n");
             foreach (OpcodeInfo info in msgOpcode)
             {
-                sb.AppendLine($"\t\t public const ushort {info.Name} = {info.Opcode};");
+                sb.Append($"\t\t public const ushort {info.Name} = {info.Opcode};\n");
             }
 
-            sb.AppendLine("\t}");
+            sb.Append("\t}\n");
             
 
             sb.Append("}\n");

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Client/Module/Message/NetClientComponentSystem.cs

@@ -38,7 +38,7 @@ namespace ET.Client
             
             OpcodeHelper.LogMsg(self.DomainZone(), message);
             
-            EventSystem.Instance.Publish(Root.Instance.Scene, new NetClientComponentOnRead() {Session = session, ActorId = actorId, Message = message});
+            EventSystem.Instance.Publish(Root.Instance.Scene, new NetClientComponentOnRead() {Session = session, Message = message});
         }
 
         private static void OnError(this NetClientComponent self, long channelId, int error)

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Gate.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 66739ccf6a4b48b439d742295478a1a9
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 115
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Helper/InnerMessageDispatcherHelper.cs

@@ -1,115 +0,0 @@
-using System;
-using System.IO;
-
-namespace ET.Server
-{
-    public static class InnerMessageDispatcherHelper
-    {
-        public static void HandleIActorResponse(ushort opcode, long actorId, IActorResponse iActorResponse)
-        {
-            ActorMessageSenderComponent.Instance.RunMessage(actorId, iActorResponse);
-        }
-
-        [EnableAccessEntiyChild]
-        public static void HandleIActorRequest(ushort opcode, long actorId, IActorRequest iActorRequest, Action<IActorResponse> reply)
-        {
-            Entity entity = EventSystem.Instance.Get(actorId);
-            if (entity == null)
-            {
-                FailResponse(iActorRequest, ErrorCore.ERR_NotFoundActor, reply);
-                return;
-            }
-
-            MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
-            if (mailBoxComponent == null)
-            {
-                Log.Warning($"actor not found mailbox: {entity.GetType().Name} {actorId} {iActorRequest}");
-                FailResponse(iActorRequest, ErrorCore.ERR_NotFoundActor, reply);
-                return;
-            }
-
-            switch (mailBoxComponent.MailboxType)
-            {
-                case MailboxType.MessageDispatcher:
-                {
-                    async ETTask MessageDispatcherHandler()
-                    {
-                        long instanceId = entity.InstanceId;
-                        using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Mailbox, actorId))
-                        {
-                            if (entity.InstanceId != instanceId)
-                            {
-                                FailResponse(iActorRequest, ErrorCore.ERR_NotFoundActor, reply);
-                                return;
-                            }
-
-                            await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorRequest, reply);
-                        }
-                    }
-                    
-                    MessageDispatcherHandler().Coroutine();
-                    break;
-                }
-                case MailboxType.UnOrderMessageDispatcher:
-                {
-                    ActorMessageDispatcherComponent.Instance.Handle(entity, iActorRequest, reply).Coroutine();
-                    break;
-                }
-            }
-        }
-
-        private static void FailResponse(IActorRequest iActorRequest, int error, Action<IActorResponse> reply)
-        {
-            IActorResponse response = ActorHelper.CreateResponse(iActorRequest, error);
-            reply.Invoke(response);
-        }
-        
-        [EnableAccessEntiyChild]
-        public static void HandleIActorMessage(ushort opcode, long actorId, IActorMessage iActorMessage)
-        {
-            OpcodeHelper.LogMsg(actorId, iActorMessage);
-
-            Entity entity = EventSystem.Instance.Get(actorId);
-            if (entity == null)
-            {
-                Log.Error($"not found actor: {actorId} {iActorMessage}");
-                return;
-            }
-
-            MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
-            if (mailBoxComponent == null)
-            {
-                Log.Error($"actor not found mailbox: {entity.GetType().Name} {actorId} {iActorMessage}");
-                return;
-            }
-
-            switch (mailBoxComponent.MailboxType)
-            {
-                
-                case MailboxType.MessageDispatcher:
-                {
-                    async ETTask MessageDispatcherHandler()
-                    {
-                        long instanceId = entity.InstanceId;
-                        using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Mailbox, actorId))
-                        {
-                            if (entity.InstanceId != instanceId)
-                            {
-                                return;
-                            }
-
-                            await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorMessage, null);
-                        }
-                    }
-                    MessageDispatcherHandler().Coroutine();
-                    break;
-                }
-                case MailboxType.UnOrderMessageDispatcher:
-                {
-                    ActorMessageDispatcherComponent.Instance.Handle(entity, iActorMessage, null).Coroutine();
-                    break;
-                }
-            }
-        }
-    }
-}

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Map.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4fb75b8e9b839d0449358e6584dbe8d3
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Robot.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 0ecd2f3397a43a347b65cda2520a2cf2
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Router.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: c126e57f78333274481c2763119b7d39
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 88 - 39
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Session/NetInnerComponentOnReadEvent.cs

@@ -5,24 +5,27 @@ namespace ET.Server
     [Event(SceneType.Process)]
     public class NetInnerComponentOnReadEvent: AEvent<NetInnerComponentOnRead>
     {
+        [EnableAccessEntiyChild]
         protected override async ETTask Run(Scene scene, NetInnerComponentOnRead args)
         {
-            ushort opcode = 0;
             try
             {
-                Session session = args.Session;
                 long actorId = args.ActorId;
                 object message = args.Message;
 
-                opcode = NetServices.Instance.GetOpcode(message.GetType());
-                InstanceIdStruct instanceIdStruct = new InstanceIdStruct(actorId);
+                InstanceIdStruct instanceIdStruct = new(actorId);
                 int fromProcess = instanceIdStruct.Process;
                 instanceIdStruct.Process = Options.Instance.Process;
                 long realActorId = instanceIdStruct.ToLong();
-
+                
                 // 收到actor消息,放入actor队列
                 switch (message)
                 {
+                    case IActorResponse iActorResponse:
+                    {
+                        ActorMessageSenderComponent.Instance.RunMessage(realActorId, iActorResponse);
+                        break;
+                    }
                     case IActorRequest iActorRequest:
                     {
                         void Reply(IActorResponse response)
@@ -31,54 +34,100 @@ namespace ET.Server
                             // 发回真实的actorId 做查问题使用
                             replySession.Send(realActorId, response);
                         }
-                        InnerMessageDispatcherHelper.HandleIActorRequest(opcode, realActorId, iActorRequest, Reply);
-                        return;
-                    }
-                    case IActorResponse iActorResponse:
-                    {
-                        InnerMessageDispatcherHelper.HandleIActorResponse(opcode, realActorId, iActorResponse);
-                        return;
-                    }
-                    case IActorMessage iactorMessage:
-                    {
-                        // 内网收到外网消息,有可能是gateUnit消息,还有可能是gate广播消息
-                        if (OpcodeTypeComponent.Instance.IsOutrActorMessage(opcode))
+                        
+                        Entity entity = EventSystem.Instance.Get(realActorId);
+                        if (entity == null)
+                        {
+                            IActorResponse response = ActorHelper.CreateResponse(iActorRequest, ErrorCore.ERR_NotFoundActor);
+                            Reply(response);
+                            break;
+                        }
+
+                        MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
+                        if (mailBoxComponent == null)
                         {
-                            Entity entity = EventSystem.Instance.Get(realActorId);
-                            if (entity == null)
+                            Log.Warning($"actor not found mailbox: {entity.GetType().Name} {realActorId} {iActorRequest}");
+                            IActorResponse response = ActorHelper.CreateResponse(iActorRequest, ErrorCore.ERR_NotFoundActor);
+                            Reply(response);
+                            break;
+                        }
+
+                        switch (mailBoxComponent.MailboxType)
+                        {
+                            case MailboxType.MessageDispatcher:
                             {
-                                Log.Error($"not found actor: {session.DomainScene().Name}  {opcode} {realActorId} {message}");
-                                return;
+                                using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Mailbox, realActorId))
+                                {
+                                    if (entity.InstanceId != realActorId)
+                                    {
+                                        IActorResponse response = ActorHelper.CreateResponse(iActorRequest, ErrorCore.ERR_NotFoundActor);
+                                        Reply(response);
+                                        break;
+                                    }
+                                    await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorRequest, Reply);
+                                }
+                                break;
                             }
-                    
-                            if (entity is Session gateSession)
+                            case MailboxType.UnOrderMessageDispatcher:
                             {
-                                // 发送给客户端
-                                gateSession.Send(0, iactorMessage);
-                                return;
+                                await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorRequest, Reply);
+                                break;
                             }
                         }
-                        
-                        InnerMessageDispatcherHelper.HandleIActorMessage(opcode, realActorId, iactorMessage);
-                        return;
-                    }
-                    case IResponse iResponse:
-                    {
-                        session.OnResponse(iResponse);
-                        return;
+                        break;
                     }
-                    default:
+                    case IActorMessage iActorMessage:
                     {
-                        MessageDispatcherComponent.Instance.Handle(session, message);
+                        Entity entity = EventSystem.Instance.Get(realActorId);
+                        if (entity == null)
+                        {
+                            Log.Error($"not found actor: {scene.Name} {realActorId} {message}");
+                            break;
+                        }
+                        
+                        MailBoxComponent mailBoxComponent = entity.GetComponent<MailBoxComponent>();
+                        if (mailBoxComponent == null)
+                        {
+                            Log.Error($"actor not found mailbox: {entity.GetType().Name} {realActorId} {iActorMessage}");
+                            break;
+                        }
+
+                        switch (mailBoxComponent.MailboxType)
+                        {
+                            case MailboxType.MessageDispatcher:
+                            {
+                                using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.Mailbox, realActorId))
+                                {
+                                    if (entity.InstanceId != realActorId)
+                                    {
+                                        break;
+                                    }
+                                    await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorMessage, null);
+                                }
+                                break;
+                            }
+                            case MailboxType.UnOrderMessageDispatcher:
+                            {
+                                await ActorMessageDispatcherComponent.Instance.Handle(entity, iActorMessage, null);
+                                break;
+                            }
+                            case MailboxType.GateSession:
+                            {
+                                if (entity is Session gateSession)
+                                {
+                                    // 发送给客户端
+                                    gateSession.Send(0, iActorMessage);
+                                }
+                                break;
+                            }
+                        }
                         break;
                     }
                 }
-
-                await ETTask.CompletedTask;
             }
             catch (Exception e)
             {
-                Log.Error($"InnerMessageDispatcher error: {opcode}\n{e}");
+                Log.Error($"InnerMessageDispatcher error: {args.Message.GetType().Name}\n{e}");
             }
         }
     }

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Session/NetServerComponentOnReadEvent.cs

@@ -14,7 +14,7 @@
                 return;
             }
 			
-            // 根据消息接口判断是不是Actor消息,不同的接口做不同的处理
+            // 根据消息接口判断是不是Actor消息,不同的接口做不同的处理,比如需要转发给Chat Scene,可以做一个IChatMessage接口
             switch (message)
             {
                 case IActorLocationRequest actorLocationRequest: // gate session收到actor rpc消息,先向actor 发送rpc请求,再将请求结果返回客户端

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Watcher.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 66d5bb078a02c194e90543f7e8f9399e
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 9 - 2
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Actor/ActorMessageSenderComponentSystem.cs

@@ -101,9 +101,16 @@ namespace ET.Server
                 throw new Exception($"actor id is 0: {message}");
             }
             
-            ProcessActorId processActorId = new ProcessActorId(actorId);
+            ProcessActorId processActorId = new(actorId);
+            
+            // 这里做了优化,如果发向同一个进程,则直接处理,不需要通过网络层
+            if (processActorId.Process == Options.Instance.Process)
+            {
+                NetInnerComponent.Instance.HandleMessage(actorId, message);
+                return;
+            }
+            
             Session session = NetInnerComponent.Instance.Get(processActorId.Process);
-
             session.Send(processActorId.ActorId, message);
         }
 

+ 8 - 5
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Message/NetInnerComponentSystem.cs

@@ -75,12 +75,15 @@ namespace ET.Server
             {
                 return;
             }
-
-            session.LastRecvTime = TimeHelper.ClientNow();
-            
-            OpcodeHelper.LogMsg(self.DomainZone(), message);
             
-            EventSystem.Instance.Publish(Root.Instance.Scene, new NetInnerComponentOnRead() {Session = session, ActorId = actorId, Message = message});
+            session.LastRecvTime = TimeHelper.ClientFrameTime();
+
+            self.HandleMessage(actorId, message);
+        }
+
+        public static void HandleMessage(this NetInnerComponent self, long actorId, object message)
+        {
+            EventSystem.Instance.Publish(Root.Instance.Scene, new NetInnerComponentOnRead() { ActorId = actorId, Message = message });
         }
 
         private static void OnError(this NetInnerComponent self, long channelId, int error)

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Message/NetServerComponentSystem.cs

@@ -64,7 +64,7 @@ namespace ET.Server
             
             OpcodeHelper.LogMsg(self.DomainZone(), message);
 			
-            EventSystem.Instance.Publish(Root.Instance.Scene, new NetServerComponentOnRead() {Session = session, ActorId = actorId, Message = message});
+            EventSystem.Instance.Publish(Root.Instance.Scene, new NetServerComponentOnRead() {Session = session, Message = message});
         }
     }
 }

+ 0 - 8
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/MessageInner.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 349bd3cdd0b21c348827734e2c48e5c2
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Console.meta → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: a80e1e82f1631c548a1e1b1e87617941
+guid: fe0c2296b8e188a4cae9c6f010fd0d77
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Console/ConsoleComponentSystem.cs → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ConsoleComponentSystem.cs

@@ -3,7 +3,7 @@ using System.Collections.Generic;
 using System.Threading;
 using System.Threading.Tasks;
 
-namespace ET.Server
+namespace ET
 {
     [FriendOf(typeof(ConsoleComponent))]
     [FriendOf(typeof(ModeContex))]

+ 0 - 0
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Console/ConsoleComponentSystem.cs.meta → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ConsoleComponentSystem.cs.meta


+ 1 - 2
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Console/ReloadConfigConsoleHandler.cs → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadConfigConsoleHandler.cs

@@ -1,7 +1,6 @@
 using System;
-using NLog;
 
-namespace ET.Server
+namespace ET
 {
     [ConsoleHandler(ConsoleMode.ReloadConfig)]
     public class ReloadConfigConsoleHandler: IConsoleHandler

+ 0 - 0
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/Console/ReloadConfigConsoleHandler.cs.meta → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadConfigConsoleHandler.cs.meta


+ 1 - 1
DotNet/App/ReloadDllConsoleHandler.cs → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadDllConsoleHandler.cs

@@ -1,4 +1,4 @@
-namespace ET.Server
+namespace ET
 {
     [ConsoleHandler(ConsoleMode.ReloadDll)]
     public class ReloadDllConsoleHandler: IConsoleHandler

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Helper/InnerMessageDispatcherHelper.cs.meta → Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Console/ReloadDllConsoleHandler.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 2ffe083bff25ebd46b2a92cada67cfe2
+guid: ffe8f82cde98483438673415feab109a
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 0 - 1
Unity/Assets/Scripts/Codes/Model/Client/Module/Message/NetClientComponent.cs

@@ -5,7 +5,6 @@ namespace ET.Client
     public struct NetClientComponentOnRead
     {
         public Session Session;
-        public long ActorId;
         public object Message;
     }
     

+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/ConfigPartial.meta → Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: c1037578a5557244a8590ce65cdbb297
+guid: 390f281261413d847bd6ceb803f5c38a
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/ConfigPartial/StartProcessConfig.cs → Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartProcessConfig.cs


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/ConfigPartial/StartProcessConfig.cs.meta → Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartProcessConfig.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: c7cec4d4a90c3e84dba8898a11f449a7
+guid: 9685de03e39fb524baead6e580a0f4c0
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/ConfigPartial/StartSceneConfig.cs → Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartSceneConfig.cs


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/ConfigPartial/StartSceneConfig.cs.meta → Unity/Assets/Scripts/Codes/Model/Generate/ClientServer/ConfigPartial/StartSceneConfig.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: d21b88d152596d94da27ebebef680d37
+guid: 34e8a007b50be614b91a9f397091514c
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 1 - 1
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Realm.meta → Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 11f58af5cb54d0f4cb8165b54e384cdd
+guid: fea0fd2e70a98ea43b4cadf76f874c28
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 37 - 0
Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartProcessConfig.cs

@@ -0,0 +1,37 @@
+using System.Net;
+
+namespace ET
+{
+    public partial class StartProcessConfig
+    {
+        private IPEndPoint innerIPPort;
+
+        public long SceneId;
+
+        public IPEndPoint InnerIPPort
+        {
+            get
+            {
+                if (this.innerIPPort == null)
+                {
+                    this.innerIPPort = NetworkHelper.ToIPEndPoint($"{this.InnerIP}:{this.InnerPort}");
+                }
+
+                return this.innerIPPort;
+            }
+        }
+
+        public string InnerIP => this.StartMachineConfig.InnerIP;
+
+        public string OuterIP => this.StartMachineConfig.OuterIP;
+
+        public StartMachineConfig StartMachineConfig => StartMachineConfigCategory.Instance.Get(this.MachineId);
+
+        public override void AfterEndInit()
+        {
+            InstanceIdStruct instanceIdStruct = new InstanceIdStruct((int)this.Id, 0);
+            this.SceneId = instanceIdStruct.ToLong();
+            Log.Info($"StartProcess info: {this.MachineId} {this.Id} {this.SceneId}");
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartProcessConfig.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d21748fcd16e9ba4490731de6fb475b7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 133 - 0
Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartSceneConfig.cs

@@ -0,0 +1,133 @@
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Net;
+
+namespace ET
+{
+    public partial class StartSceneConfigCategory
+    {
+        public MultiMap<int, StartSceneConfig> Gates = new MultiMap<int, StartSceneConfig>();
+        
+        public MultiMap<int, StartSceneConfig> ProcessScenes = new MultiMap<int, StartSceneConfig>();
+        
+        public Dictionary<long, Dictionary<string, StartSceneConfig>> ClientScenesByName = new Dictionary<long, Dictionary<string, StartSceneConfig>>();
+
+        public StartSceneConfig LocationConfig;
+
+        public List<StartSceneConfig> Realms = new List<StartSceneConfig>();
+        
+        public List<StartSceneConfig> Routers = new List<StartSceneConfig>();
+        
+        public List<StartSceneConfig> Robots = new List<StartSceneConfig>();
+
+        public StartSceneConfig BenchmarkServer;
+        
+        public List<StartSceneConfig> GetByProcess(int process)
+        {
+            return this.ProcessScenes[process];
+        }
+        
+        public StartSceneConfig GetBySceneName(int zone, string name)
+        {
+            return this.ClientScenesByName[zone][name];
+        }
+
+        public override void AfterEndInit()
+        {
+            foreach (StartSceneConfig startSceneConfig in this.GetAll().Values)
+            {
+                this.ProcessScenes.Add(startSceneConfig.Process, startSceneConfig);
+                
+                if (!this.ClientScenesByName.ContainsKey(startSceneConfig.Zone))
+                {
+                    this.ClientScenesByName.Add(startSceneConfig.Zone, new Dictionary<string, StartSceneConfig>());
+                }
+                this.ClientScenesByName[startSceneConfig.Zone].Add(startSceneConfig.Name, startSceneConfig);
+                
+                switch (startSceneConfig.Type)
+                {
+                    case SceneType.Realm:
+                        this.Realms.Add(startSceneConfig);
+                        break;
+                    case SceneType.Gate:
+                        this.Gates.Add(startSceneConfig.Zone, startSceneConfig);
+                        break;
+                    case SceneType.Location:
+                        this.LocationConfig = startSceneConfig;
+                        break;
+                    case SceneType.Robot:
+                        this.Robots.Add(startSceneConfig);
+                        break;
+                    case SceneType.Router:
+                        this.Routers.Add(startSceneConfig);
+                        break;
+                    case SceneType.BenchmarkServer:
+                        this.BenchmarkServer = startSceneConfig;
+                        break;
+                }
+            }
+        }
+    }
+    
+    public partial class StartSceneConfig: ISupportInitialize
+    {
+        public long InstanceId;
+        
+        public SceneType Type;
+
+        public StartProcessConfig StartProcessConfig
+        {
+            get
+            {
+                return StartProcessConfigCategory.Instance.Get(this.Process);
+            }
+        }
+        
+        public StartZoneConfig StartZoneConfig
+        {
+            get
+            {
+                return StartZoneConfigCategory.Instance.Get(this.Zone);
+            }
+        }
+
+        // 内网地址外网端口,通过防火墙映射端口过来
+        private IPEndPoint innerIPOutPort;
+
+        public IPEndPoint InnerIPOutPort
+        {
+            get
+            {
+                if (innerIPOutPort == null)
+                {
+                    this.innerIPOutPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.InnerIP}:{this.OuterPort}");
+                }
+
+                return this.innerIPOutPort;
+            }
+        }
+
+        private IPEndPoint outerIPPort;
+
+        // 外网地址外网端口
+        public IPEndPoint OuterIPPort
+        {
+            get
+            {
+                if (this.outerIPPort == null)
+                {
+                    this.outerIPPort = NetworkHelper.ToIPEndPoint($"{this.StartProcessConfig.OuterIP}:{this.OuterPort}");
+                }
+
+                return this.outerIPPort;
+            }
+        }
+
+        public override void AfterEndInit()
+        {
+            this.Type = EnumHelper.FromString<SceneType>(this.SceneType);
+            InstanceIdStruct instanceIdStruct = new InstanceIdStruct(this.Process, (uint) this.Id);
+            this.InstanceId = instanceIdStruct.ToLong();
+        }
+    }
+}

+ 11 - 0
Unity/Assets/Scripts/Codes/Model/Generate/Server/ConfigPartial/StartSceneConfig.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2328265af4362554bb7e63612eafcc2e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Message/NetInnerComponent.cs

@@ -18,7 +18,6 @@ namespace ET.Server
     
     public struct NetInnerComponentOnRead
     {
-        public Session Session;
         public long ActorId;
         public object Message;
     }

+ 0 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Message/NetServerComponent.cs

@@ -5,7 +5,6 @@ namespace ET.Server
     public struct NetServerComponentOnRead
     {
         public Session Session;
-        public long ActorId;
         public object Message;
     }
     

+ 0 - 8
Unity/Assets/Scripts/Codes/Model/Server/Module/MessageInner.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 9400345f039cc6146b7de5e57fae27ed
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Console.meta → Unity/Assets/Scripts/Codes/Model/Share/Module/Console.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 3143e3533981e2842a93180f43321a28
+guid: aac5f3c9c8081e643874db9704c945a4
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ConsoleComponent.cs → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleComponent.cs

@@ -1,7 +1,7 @@
 using System.Collections.Generic;
 using System.Threading;
 
-namespace ET.Server
+namespace ET
 {
     public static class ConsoleMode
     {

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ConsoleComponent.cs.meta → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleComponent.cs.meta


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ConsoleHandlerAttribute.cs → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleHandlerAttribute.cs

@@ -1,4 +1,4 @@
-namespace ET.Server
+namespace ET
 {
     public class ConsoleHandlerAttribute: BaseAttribute
     {

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ConsoleHandlerAttribute.cs.meta → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ConsoleHandlerAttribute.cs.meta


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/IConsoleHandler.cs → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/IConsoleHandler.cs

@@ -1,4 +1,4 @@
-namespace ET.Server
+namespace ET
 {
     public interface IConsoleHandler
     {

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/IConsoleHandler.cs.meta → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/IConsoleHandler.cs.meta


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ModeContex.cs → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ModeContex.cs

@@ -1,4 +1,4 @@
-namespace ET.Server
+namespace ET
 {
     [ObjectSystem]
     public class ModeContexAwakeSystem: AwakeSystem<ModeContex>

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Server/Module/Console/ModeContex.cs.meta → Unity/Assets/Scripts/Codes/Model/Share/Module/Console/ModeContex.cs.meta


+ 0 - 8
Unity/Assets/Scripts/Codes/Model/Share/Module/Log.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 93ac0012aeef4bc45a7927fd6ab16564
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 21
Unity/Assets/Scripts/Codes/Model/Share/Module/Message/IMessage.cs

@@ -33,25 +33,4 @@
             set;
         }
     }
-
-    public class ErrorResponse: IResponse
-    {
-        public int Error
-        {
-            get;
-            set;
-        }
-
-        public string Message
-        {
-            get;
-            set;
-        }
-
-        public int RpcId
-        {
-            get;
-            set;
-        }
-    }
 }

+ 1 - 0
Unity/Assets/Scripts/Codes/Model/Share/Module/Message/Session.cs

@@ -125,6 +125,7 @@ namespace ET
         public static void Send(this Session self, long actorId, IMessage message)
         {
             self.LastSendTime = TimeHelper.ClientNow();
+            OpcodeHelper.LogMsg(self.DomainZone(), message);
             NetServices.Instance.SendMessage(self.ServiceId, self.Id, actorId, message);
         }
     }

+ 1 - 0
Unity/Assets/Scripts/Core/Module/CoroutineLock/CoroutineLockQueue.cs

@@ -62,6 +62,7 @@ namespace ET
                 CoroutineLock coroutineLock = CoroutineLock.Create(type, key, level);
 
                 waitCoroutineLock.SetResult(coroutineLock);
+                break;
             }
         }
 

+ 0 - 0
Unity/Assets/Scripts/Codes/Model/Share/Module/Log/NLogger.cs → Unity/Assets/Scripts/Core/Module/Log/NLogger.cs


+ 1 - 1
Unity/Assets/Scripts/Codes/Model/Share/Module/Log/NLogger.cs.meta → Unity/Assets/Scripts/Core/Module/Log/NLogger.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: d4d534cf606d3774a9c68628a3da29e9
+guid: bfdee72346bcdc149b84d5348ba2e350
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 1 - 1
Unity/Assets/Scripts/Core/Module/Network/KChannel.cs

@@ -61,7 +61,7 @@ namespace ET
 			{
 				case ServiceType.Inner:
 					Kcp.KcpNodelay(kcp, 1, 10, 2, 1);
-					Kcp.KcpWndsize(kcp, ushort.MaxValue, ushort.MaxValue);
+					Kcp.KcpWndsize(kcp, 1024, 1024);
 					Kcp.KcpSetmtu(kcp, 1400); // 默认1400
 					Kcp.KcpSetminrto(kcp, 30);
 					break;